main.map 4.73 MB
Newer Older
silver47gin's avatar
silver47gin committed
1
{"version":3,"sources":["__prelude__","/Users/wolwo/repo/wolwo-app/node_modules/metro-runtime/src/polyfills/require.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native/polyfills/console.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native/polyfills/error-guard.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native/polyfills/Object.es7.js","/Users/wolwo/repo/wolwo-app/node_modules/metro/src/node-haste/DependencyGraph/assets/empty-module.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/extends.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/index.js","/Users/wolwo/repo/wolwo-app/node_modules/invariant/browser.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/warnOnce.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/createClass.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/get.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/superPropBase.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/inherits.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/typeof.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/vendor/emitter/_EventEmitter.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/vendor/emitter/_EmitterSubscription.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/vendor/emitter/_EventSubscription.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/vendor/emitter/_EventSubscriptionVendor.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/BatchedBridge/NativeModules.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/toConsumableArray.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/iterableToArray.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/nonIterableSpread.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/vendor/core/ErrorUtils.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Performance/Systrace.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/stringifySafe.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/defineLazyObjectProperty.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js","/Users/wolwo/repo/wolwo-app/node_modules/react/jsx-runtime.js","/Users/wolwo/repo/wolwo-app/node_modules/react/cjs/react-jsx-runtime.production.min.js","/Users/wolwo/repo/wolwo-app/node_modules/object-assign/index.js","/Users/wolwo/repo/wolwo-app/node_modules/react/index.js","/Users/wolwo/repo/wolwo-app/node_modules/react/cjs/react.production.min.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/Platform.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/NativePlatformConstantsIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/PixelRatio.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/Dimensions.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/NativeDeviceInfo.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImageStylePropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedColorPropType.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/normalizeColor.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native/normalize-color/base.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypes.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/processColor.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedLayoutPropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/prop-types/index.js","/Users/wolwo/repo/wolwo-app/node_modules/prop-types/factoryWithThrowingShims.js","/Users/wolwo/repo/wolwo-app/node_modules/prop-types/lib/ReactPropTypesSecret.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedShadowPropTypesIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTransformPropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/deprecatedPropType.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/UIManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/DummyUIManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/PaperUIManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/NativeUIManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/UIManagerProperties.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextStylePropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewStylePropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/processTransform.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/MatrixMath.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/View/View.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/View/ViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/codegenNativeCommands.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Renderer/shims/ReactNative.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/InitializeCore.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpGlobals.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpPerformance.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpSystrace.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpErrorHandling.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/ExceptionsManager.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/isNativeFunction.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/construct.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/NativeExceptionsManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/Devtools/parseErrorStack.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/Devtools/parseHermesStack.js","/Users/wolwo/repo/wolwo-app/node_modules/stacktrace-parser/dist/stack-trace-parser.cjs.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/polyfillPromise.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/PolyfillFunctions.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Promise.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/node_modules/promise/setimmediate/es6-extensions.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/node_modules/promise/setimmediate/core.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/node_modules/promise/setimmediate/done.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/node_modules/promise/setimmediate/finally.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpRegeneratorRuntime.js","/Users/wolwo/repo/wolwo-app/node_modules/regenerator-runtime/runtime.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpTimers.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/Timers/JSTimers.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/Timers/NativeTiming.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpXHR.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Network/XMLHttpRequest.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/BlobManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/NativeBlobModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/Blob.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/BlobRegistry.js","/Users/wolwo/repo/wolwo-app/node_modules/event-target-shim/dist/event-target-shim.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/GlobalPerformanceLogger.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/createPerformanceLogger.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/infoLog.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Network/RCTNetworking.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Network/NativeNetworkingIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Network/convertRequestBody.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/binaryToBase64.js","/Users/wolwo/repo/wolwo-app/node_modules/base64-js/index.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Network/FormData.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Network/fetch.js","/Users/wolwo/repo/wolwo-app/node_modules/whatwg-fetch/dist/fetch.umd.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/WebSocket/WebSocket.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/WebSocket/NativeWebSocketModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/WebSocket/WebSocketEvent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/File.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/FileReader.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/NativeFileReaderModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Blob/URL.js","/Users/wolwo/repo/wolwo-app/node_modules/abort-controller/dist/abort-controller.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpAlert.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Alert/Alert.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Alert/RCTAlertManager.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Alert/NativeAlertManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpNavigator.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpBatchedBridge.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/HeapCapture/HeapCapture.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/HeapCapture/NativeJSCHeapCapture.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Performance/SamplingProfiler.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Performance/NativeJSCSamplingProfiler.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/RCTLog.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/JSDevSupportModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/NativeJSDevSupport.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/HMRClientProdShim.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/setUpSegmentFetcher.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/EventEmitter/RCTEventEmitter.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/getNativeComponentAttributes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/processColorArray.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/resolveAssetSource.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native/assets/registry.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/AssetSourceResolver.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native/assets/path-support.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/NativeModules/specs/NativeSourceCode.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/View/ReactNativeViewViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/RCTSinglelineTextInputViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Core/ReactFiberErrorDialog.js","/Users/wolwo/repo/wolwo-app/node_modules/scheduler/index.js","/Users/wolwo/repo/wolwo-app/node_modules/scheduler/cjs/scheduler.production.min.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/registerGeneratedViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/verifyComponentAttributeEquivalence.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Text/TextAncestor.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/codegenNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Button.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Text/Text.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Text/TextInjection.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Text/TextNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/View/ReactNativeViewAttributes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextPropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedStyleSheetPropType.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/deprecatedCreateStrictShapeTypeChecker.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/Touchable.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/BoundingDimensions.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/PooledClass.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/Position.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Sound/SoundManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Sound/NativeSoundManager.js","/Users/wolwo/repo/wolwo-app/node_modules/nullthrows/nullthrows.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Pressability/Pressability.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Pressability/HoverState.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/Rect.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Pressability/PressabilityDebug.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/Animated.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/AnimatedMock.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/AnimatedEvent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedValue.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedNode.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/NativeAnimatedHelper.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/NativeAnimatedModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/NativeAnimatedTurboModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedWithChildren.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/InteractionManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/TaskQueue.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/AnimatedImplementation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedAddition.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedDiffClamp.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedDivision.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedModulo.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedMultiplication.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedStyle.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedTransform.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedSubtraction.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedTracking.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/nodes/AnimatedValueXY.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/animations/DecayAnimation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/animations/Animation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/animations/SpringAnimation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/SpringConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/animations/TimingAnimation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/Easing.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/bezier.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/createAnimatedComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/setAndForwardRef.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/components/AnimatedFlatList.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/FlatList.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/VirtualizedList.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/VirtualizedListContext.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/Batchinator.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/FillRateHelper.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollResponder.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewCommands.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/FrameRateLogger.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/NativeFrameRateLogger.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Keyboard/Keyboard.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/dismissKeyboard.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Keyboard/NativeKeyboardObserver.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/processDecelerationRate.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/splitLayoutProps.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewContext.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/ViewabilityHelper.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/VirtualizeUtils.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/components/AnimatedImage.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/Image.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/regenerator/index.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/NativeImageLoaderIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/ImageViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/ImageViewViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImagePropType.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImageSourcePropType.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/ImageAnalyticsTagContext.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/components/AnimatedScrollView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/components/AnimatedSectionList.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/SectionList.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/components/AnimatedText.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Animated/components/AnimatedView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/ImageBackground.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/MaskedView/MaskedViewIOS.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/MaskedView/RCTMaskedViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Modal/Modal.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Modal/NativeModalManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Modal/RCTModalHostViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/AppContainer.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/RootTag.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/I18nManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/NativeI18nManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Picker/Picker.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Picker/PickerAndroid.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Picker/PickerIOS.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Picker/RCTPickerNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Picker/RCTPickerViewConfig.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Pressable/Pressable.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Pressable/useAndroidRippleForView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Pressability/usePressability.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ProgressViewIOS/RCTProgressViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Slider/Slider.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Slider/SliderNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/StatusBar/StatusBar.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Switch/Switch.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Switch/AndroidSwitchNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Switch/SwitchNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/TextInput.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextInputPropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ActionSheetIOS/NativeActionSheetManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/Appearance.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/NativeAppearance.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/DebugEnvironment.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/AppRegistry.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/HeadlessJsTaskError.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/BugReporting/BugReporting.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/NativeModules/specs/NativeRedBox.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/BugReporting/NativeBugReporting.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/BugReporting/dumpReactTree.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/SceneTracker.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/ReactNative/renderApplication.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/PerformanceLoggerContext.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/BackHandler.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Renderer/shims/ReactFabric.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/AppState/AppState.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/logError.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/AppState/NativeAppState.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Storage/AsyncStorage.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Storage/NativeAsyncLocalStorage.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Storage/NativeAsyncSQLiteDBStorage.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Clipboard/Clipboard.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/Clipboard/NativeClipboard.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/DatePickerAndroid/DatePickerAndroid.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/DeviceInfo.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/DevSettings.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/NativeModules/specs/NativeDevSettings.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/ImagePickerIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/NativeImagePickerIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Linking/Linking.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Linking/NativeLinkingManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Linking/NativeIntentAndroid.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/LogBox/LogBox.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/PanResponder.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Interaction/TouchHistoryMath.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/PermissionsAndroid/NativePermissionsAndroid.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Settings/Settings.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Settings/NativeSettingsManager.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Share/Share.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Share/NativeShareModule.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/useColorScheme.js","/Users/wolwo/repo/wolwo-app/node_modules/use-subscription/index.js","/Users/wolwo/repo/wolwo-app/node_modules/use-subscription/cjs/use-subscription.production.min.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Utilities/useWindowDimensions.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/UTFSequence.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Vibration/Vibration.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Vibration/NativeVibration.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/YellowBox/YellowBoxDeprecated.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedPointPropType.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/page.js","/Users/wolwo/repo/wolwo-app/node_modules/lodash/lodash.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/router.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/CommonActions.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/BaseRouter.tsx","/Users/wolwo/repo/wolwo-app/node_modules/nanoid/non-secure/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/StackRouter.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/TabRouter.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/DrawerRouter.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/routers/src/types.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/BaseNavigationContainer.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/EnsureSingleNavigator.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/UnhandledActionContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/NavigationBuilderContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/NavigationStateContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/NavigationRouteContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/NavigationContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useScheduleUpdate.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useChildListeners.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useKeyedChildListeners.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useOptionsGetters.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useEventEmitter.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useSyncState.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/checkSerializable.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/createNavigatorFactory.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/Screen.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/NavigationHelpersContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/CurrentRenderContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useNavigationBuilder.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-is/index.js","/Users/wolwo/repo/wolwo-app/node_modules/react-is/cjs/react-is.production.min.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useComponent.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useRegisterNavigator.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useDescriptors.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/SceneView.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/StaticContainer.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useNavigationCache.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useRouteCache.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useNavigationHelpers.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/types.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useOnAction.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useOnPreventRemove.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useFocusEvents.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useOnRouteFocus.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useFocusedListenersChildrenAdapter.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useOnGetState.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/isArrayEqual.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useCurrentRender.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useNavigation.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useRoute.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useFocusEffect.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useIsFocused.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/useNavigationState.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/getStateFromPath.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/node_modules/escape-string-regexp/index.js","/Users/wolwo/repo/wolwo-app/node_modules/query-string/index.js","/Users/wolwo/repo/wolwo-app/node_modules/query-string/node_modules/strict-uri-encode/index.js","/Users/wolwo/repo/wolwo-app/node_modules/decode-uri-component/index.js","/Users/wolwo/repo/wolwo-app/node_modules/split-on-first/index.js","/Users/wolwo/repo/wolwo-app/node_modules/filter-obj/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/checkLegacyPathConfig.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/getPathFromState.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/getActionFromState.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/core/src/getFocusedRouteNameFromRoute.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/NavigationContainer.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/theming/ThemeProvider.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/theming/ThemeContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/theming/DefaultTheme.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/LinkingContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useThenable.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useLinking.native.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/extractPathFromURL.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/node_modules/escape-string-regexp/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useDocumentTitle.native.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useBackButton.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useScrollToTop.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/theming/DarkTheme.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/theming/useTheme.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/Link.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useLinkProps.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useLinkTo.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/useLinkBuilder.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/ServerContainer.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/ServerContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/native/src/types.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/TransitionConfigs/CardStyleInterpolators.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-iphone-x-helper/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/conditional.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/TransitionConfigs/HeaderStyleInterpolators.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/TransitionConfigs/TransitionSpecs.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/TransitionConfigs/TransitionPresets.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/navigators/createStackNavigator.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Stack/StackView.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-safe-area-context/src/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-safe-area-context/src/SafeAreaContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-safe-area-context/src/NativeSafeAreaProvider.native.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-safe-area-context/src/SafeAreaView.native.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-safe-area-context/src/InitialWindow.native.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-safe-area-context/src/SafeArea.types.ts","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/GestureHandler.ios.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/GestureHandlerNative.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/index.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/Directions.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/State.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/gestureHandlerRootHOC.tsx","/Users/wolwo/repo/wolwo-app/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/GestureHandlerRootView.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/handlers/gestureHandlers.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/handlers/createHandler.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/node_modules/fbjs/lib/areEqual.js","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/RNGestureHandlerModule.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/PlatformConstants.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/handlers/createNativeWrapper.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/handlers/NativeViewGestureHandler.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/GestureButtons.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/GestureHandlerButton.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/touchables/index.ts","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/touchables/TouchableNativeFeedback.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/touchables/TouchableWithoutFeedback.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/touchables/GenericTouchable.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/touchables/TouchableOpacity.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/touchables/TouchableHighlight.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/GestureComponents.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/Swipeable.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-gesture-handler/src/components/DrawerLayout.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/GestureHandlerRefContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Stack/CardStack.tsx","/Users/wolwo/repo/wolwo-app/node_modules/react-native-screens/src/index.native.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Screens.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Header/HeaderSegment.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Header/HeaderBackButton.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/MaskedView.ios.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/MaskedViewNative.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-native-community/masked-view/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-native-community/masked-view/js/MaskedView.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/TouchableItem.ios.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/assets/back-icon.png","/Users/wolwo/repo/wolwo-app/node_modules/react-native/Libraries/Image/AssetRegistry.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/assets/back-icon-mask.png","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Header/HeaderBackground.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/HeaderShownContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/memoize.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Stack/CardContainer.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx","/Users/wolwo/repo/wolwo-app/node_modules/color/index.js","/Users/wolwo/repo/wolwo-app/node_modules/color-string/index.js","/Users/wolwo/repo/wolwo-app/node_modules/color-name/index.js","/Users/wolwo/repo/wolwo-app/node_modules/simple-swizzle/index.js","/Users/wolwo/repo/wolwo-app/node_modules/simple-swizzle/node_modules/is-arrayish/index.js","/Users/wolwo/repo/wolwo-app/node_modules/color-convert/index.js","/Users/wolwo/repo/wolwo-app/node_modules/color-convert/conversions.js","/Users/wolwo/repo/wolwo-app/node_modules/color-convert/node_modules/color-name/index.js","/Users/wolwo/repo/wolwo-app/node_modules/color-convert/route.js","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Stack/CardSheet.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/CardAnimationContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/getDistanceForDirection.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/getInvertedMultiplier.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/HeaderHeightContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/PreviousSceneContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/KeyboardManager.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Header/HeaderContainer.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Header/Header.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/Header/HeaderTitle.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/debounce.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/views/SafeAreaProviderCompat.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/useCardAnimation.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/useHeaderHeight.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/stack/src/utils/useGestureHandlerRef.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/navigators/createBottomTabNavigator.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabView.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/SafeAreaProviderCompat.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/ResourceSavingScene.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabBar.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabItem.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/TabBarIcon.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/views/Badge.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightCallbackContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/utils/useWindowDimensions.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/utils/useIsKeyboardShown.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightContext.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@react-navigation/bottom-tabs/src/utils/useBottomTabBarHeight.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/rootNavigation.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/utils/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/TabBar.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/tabBarUtils.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/TabBarItem.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/Badge.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/HeadTitle.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/Loading.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/view/BackButton.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/provider.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/tabBar.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/router-rn/dist/navigationBar.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/utils.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/app.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/components-rn/dist/components/Provider/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/provider/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@babel/runtime/helpers/createSuper.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/locale-provider/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/portal/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/portal/portal.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/portal/portal-consumer.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/portal/portal-host.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/portal/portal-manager.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/style/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/node_modules/deepmerge/dist/cjs.js","/Users/wolwo/repo/wolwo-app/node_modules/shallowequal/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@ant-design/react-native/lib/style/themes/default.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/current.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/emmiter.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/EventChannel.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/hooks.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/runtime-rn/dist/compute.js","/Users/wolwo/repo/wolwo-app/src/app.ts","/Users/wolwo/repo/wolwo-app/src/app.scss","/Users/wolwo/repo/wolwo-app/src/pages/index/index.tsx","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/components-rn/dist/components/View/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/components-rn/dist/utils/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/components-rn/dist/components/ClickableSimplified/index.js","/Users/wolwo/repo/wolwo-app/node_modules/@tarojs/components-rn/dist/components/Text/index.js","/Users/wolwo/repo/wolwo-app/src/pages/index/index.scss","/Users/wolwo/repo/wolwo-app/src/app.config.ts","/Users/wolwo/repo/wolwo-app/src/pages/index/index.config.ts"],"sourcesContent":["var __BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.now(),__DEV__=false,process=this.process||{},__METRO_GLOBAL_PREFIX__='';process.env=process.env||{};process.env.NODE_ENV=process.env.NODE_ENV||\"production\";","/**\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 * @polyfill\n *\n * @format\n */\n\"use strict\";\n/* eslint-disable no-bitwise */\n\nglobal.__r = metroRequire;\nglobal[`${__METRO_GLOBAL_PREFIX__}__d`] = define;\nglobal.__c = clear;\nglobal.__registerSegment = registerSegment;\nvar modules = clear(); // Don't use a Symbol here, it would pull in an extra polyfill with all sorts of\n// additional stuff (e.g. Array.from).\n\nconst EMPTY = {};\nconst _ref = {},\n  hasOwnProperty = _ref.hasOwnProperty;\n\nif (__DEV__) {\n  global.$RefreshReg$ = () => {};\n\n  global.$RefreshSig$ = () => type => type;\n}\n\nfunction clear() {\n  modules = Object.create(null); // We return modules here so that we can assign an initial value to modules\n  // when defining it. Otherwise, we would have to do \"let modules = null\",\n  // which will force us to add \"nullthrows\" everywhere.\n\n  return modules;\n}\n\nif (__DEV__) {\n  var verboseNamesToModuleIds = Object.create(null);\n  var initializingModuleIds = [];\n}\n\nfunction define(factory, moduleId, dependencyMap) {\n  if (modules[moduleId] != null) {\n    if (__DEV__) {\n      // (We take `inverseDependencies` from `arguments` to avoid an unused\n      // named parameter in `define` in production.\n      const inverseDependencies = arguments[4]; // If the module has already been defined and the define method has been\n      // called with inverseDependencies, we can hot reload it.\n\n      if (inverseDependencies) {\n        global.__accept(moduleId, factory, dependencyMap, inverseDependencies);\n      }\n    } // prevent repeated calls to `global.nativeRequire` to overwrite modules\n    // that are already loaded\n\n    return;\n  }\n\n  const mod = {\n    dependencyMap,\n    factory,\n    hasError: false,\n    importedAll: EMPTY,\n    importedDefault: EMPTY,\n    isInitialized: false,\n    publicModule: {\n      exports: {}\n    }\n  };\n  modules[moduleId] = mod;\n\n  if (__DEV__) {\n    // HMR\n    mod.hot = createHotReloadingObject(); // DEBUGGABLE MODULES NAMES\n    // we take `verboseName` from `arguments` to avoid an unused named parameter\n    // in `define` in production.\n\n    const verboseName = arguments[3];\n\n    if (verboseName) {\n      mod.verboseName = verboseName;\n      verboseNamesToModuleIds[verboseName] = moduleId;\n    }\n  }\n}\n\nfunction metroRequire(moduleId) {\n  if (__DEV__ && typeof moduleId === \"string\") {\n    const verboseName = moduleId;\n    moduleId = verboseNamesToModuleIds[verboseName];\n\n    if (moduleId == null) {\n      throw new Error(`Unknown named module: \"${verboseName}\"`);\n    } else {\n      console.warn(\n        `Requiring module \"${verboseName}\" by name is only supported for ` +\n          \"debugging purposes and will BREAK IN PRODUCTION!\"\n      );\n    }\n  } //$FlowFixMe: at this point we know that moduleId is a number\n\n  const moduleIdReallyIsNumber = moduleId;\n\n  if (__DEV__) {\n    const initializingIndex = initializingModuleIds.indexOf(\n      moduleIdReallyIsNumber\n    );\n\n    if (initializingIndex !== -1) {\n      const cycle = initializingModuleIds\n        .slice(initializingIndex)\n        .map(id => (modules[id] ? modules[id].verboseName : \"[unknown]\")); // We want to show A -> B -> A:\n\n      cycle.push(cycle[0]);\n      console.warn(\n        `Require cycle: ${cycle.join(\" -> \")}\\n\\n` +\n          \"Require cycles are allowed, but can result in uninitialized values. \" +\n          \"Consider refactoring to remove the need for a cycle.\"\n      );\n    }\n  }\n\n  const module = modules[moduleIdReallyIsNumber];\n  return module && module.isInitialized\n    ? module.publicModule.exports\n    : guardedLoadModule(moduleIdReallyIsNumber, module);\n}\n\nfunction metroImportDefault(moduleId) {\n  if (__DEV__ && typeof moduleId === \"string\") {\n    const verboseName = moduleId;\n    moduleId = verboseNamesToModuleIds[verboseName];\n  } //$FlowFixMe: at this point we know that moduleId is a number\n\n  const moduleIdReallyIsNumber = moduleId;\n\n  if (\n    modules[moduleIdReallyIsNumber] &&\n    modules[moduleIdReallyIsNumber].importedDefault !== EMPTY\n  ) {\n    return modules[moduleIdReallyIsNumber].importedDefault;\n  }\n\n  const exports = metroRequire(moduleIdReallyIsNumber);\n  const importedDefault =\n    exports && exports.__esModule ? exports.default : exports; // $FlowFixMe The metroRequire call above will throw if modules[id] is null\n\n  return (modules[moduleIdReallyIsNumber].importedDefault = importedDefault);\n}\n\nmetroRequire.importDefault = metroImportDefault;\n\nfunction metroImportAll(moduleId) {\n  if (__DEV__ && typeof moduleId === \"string\") {\n    const verboseName = moduleId;\n    moduleId = verboseNamesToModuleIds[verboseName];\n  } //$FlowFixMe: at this point we know that moduleId is a number\n\n  const moduleIdReallyIsNumber = moduleId;\n\n  if (\n    modules[moduleIdReallyIsNumber] &&\n    modules[moduleIdReallyIsNumber].importedAll !== EMPTY\n  ) {\n    return modules[moduleIdReallyIsNumber].importedAll;\n  }\n\n  const exports = metroRequire(moduleIdReallyIsNumber);\n  let importedAll;\n\n  if (exports && exports.__esModule) {\n    importedAll = exports;\n  } else {\n    importedAll = {}; // Refrain from using Object.assign, it has to work in ES3 environments.\n\n    if (exports) {\n      for (const key in exports) {\n        if (hasOwnProperty.call(exports, key)) {\n          importedAll[key] = exports[key];\n        }\n      }\n    }\n\n    importedAll.default = exports;\n  } // $FlowFixMe The metroRequire call above will throw if modules[id] is null\n\n  return (modules[moduleIdReallyIsNumber].importedAll = importedAll);\n}\n\nmetroRequire.importAll = metroImportAll;\nlet inGuard = false;\n\nfunction guardedLoadModule(moduleId, module) {\n  if (!inGuard && global.ErrorUtils) {\n    inGuard = true;\n    let returnValue;\n\n    try {\n      returnValue = loadModuleImplementation(moduleId, module);\n    } catch (e) {\n      // TODO: (moti) T48204692 Type this use of ErrorUtils.\n      global.ErrorUtils.reportFatalError(e);\n    }\n\n    inGuard = false;\n    return returnValue;\n  } else {\n    return loadModuleImplementation(moduleId, module);\n  }\n}\n\nconst ID_MASK_SHIFT = 16;\nconst LOCAL_ID_MASK = ~0 >>> ID_MASK_SHIFT;\n\nfunction unpackModuleId(moduleId) {\n  const segmentId = moduleId >>> ID_MASK_SHIFT;\n  const localId = moduleId & LOCAL_ID_MASK;\n  return {\n    segmentId,\n    localId\n  };\n}\n\nmetroRequire.unpackModuleId = unpackModuleId;\n\nfunction packModuleId(value) {\n  return (value.segmentId << ID_MASK_SHIFT) + value.localId;\n}\n\nmetroRequire.packModuleId = packModuleId;\nconst moduleDefinersBySegmentID = [];\nconst definingSegmentByModuleID = new Map();\n\nfunction registerSegment(segmentId, moduleDefiner, moduleIds) {\n  moduleDefinersBySegmentID[segmentId] = moduleDefiner;\n\n  if (__DEV__) {\n    if (segmentId === 0 && moduleIds) {\n      throw new Error(\n        \"registerSegment: Expected moduleIds to be null for main segment\"\n      );\n    }\n\n    if (segmentId !== 0 && !moduleIds) {\n      throw new Error(\n        \"registerSegment: Expected moduleIds to be passed for segment #\" +\n          segmentId\n      );\n    }\n  }\n\n  if (moduleIds) {\n    moduleIds.forEach(moduleId => {\n      if (!modules[moduleId] && !definingSegmentByModuleID.has(moduleId)) {\n        definingSegmentByModuleID.set(moduleId, segmentId);\n      }\n    });\n  }\n}\n\nfunction loadModuleImplementation(moduleId, module) {\n  if (!module && moduleDefinersBySegmentID.length > 0) {\n    var _definingSegmentByMod;\n\n    const segmentId =\n      (_definingSegmentByMod = definingSegmentByModuleID.get(moduleId)) !==\n        null && _definingSegmentByMod !== void 0\n        ? _definingSegmentByMod\n        : 0;\n    const definer = moduleDefinersBySegmentID[segmentId];\n\n    if (definer != null) {\n      definer(moduleId);\n      module = modules[moduleId];\n      definingSegmentByModuleID.delete(moduleId);\n    }\n  }\n\n  const nativeRequire = global.nativeRequire;\n\n  if (!module && nativeRequire) {\n    const _unpackModuleId = unpackModuleId(moduleId),\n      segmentId = _unpackModuleId.segmentId,\n      localId = _unpackModuleId.localId;\n\n    nativeRequire(localId, segmentId);\n    module = modules[moduleId];\n  }\n\n  if (!module) {\n    throw unknownModuleError(moduleId);\n  }\n\n  if (module.hasError) {\n    throw moduleThrewError(moduleId, module.error);\n  } // `metroRequire` calls into the require polyfill itself are not analyzed and\n  // replaced so that they use numeric module IDs.\n  // The systrace module will expose itself on the metroRequire function so that\n  // it can be used here.\n  // TODO(t9759686) Scan polyfills for dependencies, too\n\n  if (__DEV__) {\n    var Systrace = metroRequire.Systrace,\n      Refresh = metroRequire.Refresh;\n  } // We must optimistically mark module as initialized before running the\n  // factory to keep any require cycles inside the factory from causing an\n  // infinite require loop.\n\n  module.isInitialized = true;\n  const _module = module,\n    factory = _module.factory,\n    dependencyMap = _module.dependencyMap;\n\n  if (__DEV__) {\n    initializingModuleIds.push(moduleId);\n  }\n\n  try {\n    if (__DEV__) {\n      // $FlowFixMe: we know that __DEV__ is const and `Systrace` exists\n      Systrace.beginEvent(\"JS_require_\" + (module.verboseName || moduleId));\n    }\n\n    const moduleObject = module.publicModule;\n\n    if (__DEV__) {\n      moduleObject.hot = module.hot;\n      var prevRefreshReg = global.$RefreshReg$;\n      var prevRefreshSig = global.$RefreshSig$;\n\n      if (Refresh != null) {\n        const RefreshRuntime = Refresh;\n\n        global.$RefreshReg$ = (type, id) => {\n          RefreshRuntime.register(type, moduleId + \" \" + id);\n        };\n\n        global.$RefreshSig$ =\n          RefreshRuntime.createSignatureFunctionForTransform;\n      }\n    }\n\n    moduleObject.id = moduleId; // keep args in sync with with defineModuleCode in\n    // metro/src/Resolver/index.js\n    // and metro/src/ModuleGraph/worker.js\n\n    factory(\n      global,\n      metroRequire,\n      metroImportDefault,\n      metroImportAll,\n      moduleObject,\n      moduleObject.exports,\n      dependencyMap\n    ); // avoid removing factory in DEV mode as it breaks HMR\n\n    if (!__DEV__) {\n      // $FlowFixMe: This is only sound because we never access `factory` again\n      module.factory = undefined;\n      module.dependencyMap = undefined;\n    }\n\n    if (__DEV__) {\n      // $FlowFixMe: we know that __DEV__ is const and `Systrace` exists\n      Systrace.endEvent();\n\n      if (Refresh != null) {\n        registerExportsForReactRefresh(Refresh, moduleObject.exports, moduleId);\n      }\n    }\n\n    return moduleObject.exports;\n  } catch (e) {\n    module.hasError = true;\n    module.error = e;\n    module.isInitialized = false;\n    module.publicModule.exports = undefined;\n    throw e;\n  } finally {\n    if (__DEV__) {\n      if (initializingModuleIds.pop() !== moduleId) {\n        throw new Error(\n          \"initializingModuleIds is corrupt; something is terribly wrong\"\n        );\n      }\n\n      global.$RefreshReg$ = prevRefreshReg;\n      global.$RefreshSig$ = prevRefreshSig;\n    }\n  }\n}\n\nfunction unknownModuleError(id) {\n  let message = 'Requiring unknown module \"' + id + '\".';\n\n  if (__DEV__) {\n    message +=\n      \" If you are sure the module exists, try restarting Metro. \" +\n      \"You may also want to run `yarn` or `npm install`.\";\n  }\n\n  return Error(message);\n}\n\nfunction moduleThrewError(id, error) {\n  const displayName = (__DEV__ && modules[id] && modules[id].verboseName) || id;\n  return Error(\n    'Requiring module \"' + displayName + '\", which threw an exception: ' + error\n  );\n}\n\nif (__DEV__) {\n  metroRequire.Systrace = {\n    beginEvent: () => {},\n    endEvent: () => {}\n  };\n\n  metroRequire.getModules = () => {\n    return modules;\n  }; // HOT MODULE RELOADING\n\n  var createHotReloadingObject = function() {\n    const hot = {\n      _acceptCallback: null,\n      _disposeCallback: null,\n      _didAccept: false,\n      accept: callback => {\n        hot._didAccept = true;\n        hot._acceptCallback = callback;\n      },\n      dispose: callback => {\n        hot._disposeCallback = callback;\n      }\n    };\n    return hot;\n  };\n\n  let reactRefreshTimeout = null;\n\n  const metroHotUpdateModule = function(\n    id,\n    factory,\n    dependencyMap,\n    inverseDependencies\n  ) {\n    const mod = modules[id];\n\n    if (!mod) {\n      if (factory) {\n        // New modules are going to be handled by the define() method.\n        return;\n      }\n\n      throw unknownModuleError(id);\n    }\n\n    if (!mod.hasError && !mod.isInitialized) {\n      // The module hasn't actually been executed yet,\n      // so we can always safely replace it.\n      mod.factory = factory;\n      mod.dependencyMap = dependencyMap;\n      return;\n    }\n\n    const Refresh = metroRequire.Refresh;\n    const refreshBoundaryIDs = new Set(); // In this loop, we will traverse the dependency tree upwards from the\n    // changed module. Updates \"bubble\" up to the closest accepted parent.\n    //\n    // If we reach the module root and nothing along the way accepted the update,\n    // we know hot reload is going to fail. In that case we return false.\n    //\n    // The main purpose of this loop is to figure out whether it's safe to apply\n    // a hot update. It is only safe when the update was accepted somewhere\n    // along the way upwards for each of its parent dependency module chains.\n    //\n    // We perform a topological sort because we may discover the same\n    // module more than once in the list of things to re-execute, and\n    // we want to execute modules before modules that depend on them.\n    //\n    // If we didn't have this check, we'd risk re-evaluating modules that\n    // have side effects and lead to confusing and meaningless crashes.\n\n    let didBailOut = false;\n    const updatedModuleIDs = topologicalSort(\n      [id], // Start with the changed module and go upwards\n      pendingID => {\n        const pendingModule = modules[pendingID];\n\n        if (pendingModule == null) {\n          // Nothing to do.\n          return [];\n        }\n\n        const pendingHot = pendingModule.hot;\n\n        if (pendingHot == null) {\n          throw new Error(\n            \"[Refresh] Expected module.hot to always exist in DEV.\"\n          );\n        } // A module can be accepted manually from within itself.\n\n        let canAccept = pendingHot._didAccept;\n\n        if (!canAccept && Refresh != null) {\n          // Or React Refresh may mark it accepted based on exports.\n          const isBoundary = isReactRefreshBoundary(\n            Refresh,\n            pendingModule.publicModule.exports\n          );\n\n          if (isBoundary) {\n            canAccept = true;\n            refreshBoundaryIDs.add(pendingID);\n          }\n        }\n\n        if (canAccept) {\n          // Don't look at parents.\n          return [];\n        } // If we bubble through the roof, there is no way to do a hot update.\n        // Bail out altogether. This is the failure case.\n\n        const parentIDs = inverseDependencies[pendingID];\n\n        if (parentIDs.length === 0) {\n          // Reload the app because the hot reload can't succeed.\n          // This should work both on web and React Native.\n          performFullRefresh(\"No root boundary\", {\n            source: mod,\n            failed: pendingModule\n          });\n          didBailOut = true;\n          return [];\n        } // This module can't handle the update but maybe all its parents can?\n        // Put them all in the queue to run the same set of checks.\n\n        return parentIDs;\n      },\n      () => didBailOut // Should we stop?\n    ).reverse();\n\n    if (didBailOut) {\n      return;\n    } // If we reached here, it is likely that hot reload will be successful.\n    // Run the actual factories.\n\n    const seenModuleIDs = new Set();\n\n    for (let i = 0; i < updatedModuleIDs.length; i++) {\n      // Don't process twice if we have a cycle.\n      const updatedID = updatedModuleIDs[i];\n\n      if (seenModuleIDs.has(updatedID)) {\n        continue;\n      }\n\n      seenModuleIDs.add(updatedID);\n      const updatedMod = modules[updatedID];\n\n      if (updatedMod == null) {\n        throw new Error(\"[Refresh] Expected to find the updated module.\");\n      }\n\n      const prevExports = updatedMod.publicModule.exports;\n      const didError = runUpdatedModule(\n        updatedID,\n        updatedID === id ? factory : undefined,\n        updatedID === id ? dependencyMap : undefined\n      );\n      const nextExports = updatedMod.publicModule.exports;\n\n      if (didError) {\n        // The user was shown a redbox about module initialization.\n        // There's nothing for us to do here until it's fixed.\n        return;\n      }\n\n      if (refreshBoundaryIDs.has(updatedID)) {\n        // Since we just executed the code for it, it's possible\n        // that the new exports make it ineligible for being a boundary.\n        const isNoLongerABoundary = !isReactRefreshBoundary(\n          Refresh,\n          nextExports\n        ); // It can also become ineligible if its exports are incompatible\n        // with the previous exports.\n        // For example, if you add/remove/change exports, we'll want\n        // to re-execute the importing modules, and force those components\n        // to re-render. Similarly, if you convert a class component\n        // to a function, we want to invalidate the boundary.\n\n        const didInvalidate = shouldInvalidateReactRefreshBoundary(\n          Refresh,\n          prevExports,\n          nextExports\n        );\n\n        if (isNoLongerABoundary || didInvalidate) {\n          // We'll be conservative. The only case in which we won't do a full\n          // reload is if all parent modules are also refresh boundaries.\n          // In that case we'll add them to the current queue.\n          const parentIDs = inverseDependencies[updatedID];\n\n          if (parentIDs.length === 0) {\n            // Looks like we bubbled to the root. Can't recover from that.\n            performFullRefresh(\n              isNoLongerABoundary\n                ? \"No longer a boundary\"\n                : \"Invalidated boundary\",\n              {\n                source: mod,\n                failed: updatedMod\n              }\n            );\n            return;\n          } // Schedule all parent refresh boundaries to re-run in this loop.\n\n          for (let j = 0; j < parentIDs.length; j++) {\n            const parentID = parentIDs[j];\n            const parentMod = modules[parentID];\n\n            if (parentMod == null) {\n              throw new Error(\"[Refresh] Expected to find parent module.\");\n            }\n\n            const canAcceptParent = isReactRefreshBoundary(\n              Refresh,\n              parentMod.publicModule.exports\n            );\n\n            if (canAcceptParent) {\n              // All parents will have to re-run too.\n              refreshBoundaryIDs.add(parentID);\n              updatedModuleIDs.push(parentID);\n            } else {\n              performFullRefresh(\"Invalidated boundary\", {\n                source: mod,\n                failed: parentMod\n              });\n              return;\n            }\n          }\n        }\n      }\n    }\n\n    if (Refresh != null) {\n      // Debounce a little in case there are multiple updates queued up.\n      // This is also useful because __accept may be called multiple times.\n      if (reactRefreshTimeout == null) {\n        reactRefreshTimeout = setTimeout(() => {\n          reactRefreshTimeout = null; // Update React components.\n\n          Refresh.performReactRefresh();\n        }, 30);\n      }\n    }\n  };\n\n  const topologicalSort = function(roots, getEdges, earlyStop) {\n    const result = [];\n    const visited = new Set();\n\n    function traverseDependentNodes(node) {\n      visited.add(node);\n      const dependentNodes = getEdges(node);\n\n      if (earlyStop(node)) {\n        return;\n      }\n\n      dependentNodes.forEach(dependent => {\n        if (visited.has(dependent)) {\n          return;\n        }\n\n        traverseDependentNodes(dependent);\n      });\n      result.push(node);\n    }\n\n    roots.forEach(root => {\n      if (!visited.has(root)) {\n        traverseDependentNodes(root);\n      }\n    });\n    return result;\n  };\n\n  const runUpdatedModule = function(id, factory, dependencyMap) {\n    const mod = modules[id];\n\n    if (mod == null) {\n      throw new Error(\"[Refresh] Expected to find the module.\");\n    }\n\n    const hot = mod.hot;\n\n    if (!hot) {\n      throw new Error(\"[Refresh] Expected module.hot to always exist in DEV.\");\n    }\n\n    if (hot._disposeCallback) {\n      try {\n        hot._disposeCallback();\n      } catch (error) {\n        console.error(\n          `Error while calling dispose handler for module ${id}: `,\n          error\n        );\n      }\n    }\n\n    if (factory) {\n      mod.factory = factory;\n    }\n\n    if (dependencyMap) {\n      mod.dependencyMap = dependencyMap;\n    }\n\n    mod.hasError = false;\n    mod.error = undefined;\n    mod.importedAll = EMPTY;\n    mod.importedDefault = EMPTY;\n    mod.isInitialized = false;\n    const prevExports = mod.publicModule.exports;\n    mod.publicModule.exports = {};\n    hot._didAccept = false;\n    hot._acceptCallback = null;\n    hot._disposeCallback = null;\n    metroRequire(id);\n\n    if (mod.hasError) {\n      // This error has already been reported via a redbox.\n      // We know it's likely a typo or some mistake that was just introduced.\n      // Our goal now is to keep the rest of the application working so that by\n      // the time user fixes the error, the app isn't completely destroyed\n      // underneath the redbox. So we'll revert the module object to the last\n      // successful export and stop propagating this update.\n      mod.hasError = false;\n      mod.isInitialized = true;\n      mod.error = null;\n      mod.publicModule.exports = prevExports; // We errored. Stop the update.\n\n      return true;\n    }\n\n    if (hot._acceptCallback) {\n      try {\n        hot._acceptCallback();\n      } catch (error) {\n        console.error(\n          `Error while calling accept handler for module ${id}: `,\n          error\n        );\n      }\n    } // No error.\n\n    return false;\n  };\n\n  const performFullRefresh = (reason, modules) => {\n    /* global window */\n    if (\n      typeof window !== \"undefined\" &&\n      window.location != null &&\n      typeof window.location.reload === \"function\"\n    ) {\n      window.location.reload();\n    } else {\n      // This is attached in setUpDeveloperTools.\n      const Refresh = metroRequire.Refresh;\n\n      if (Refresh != null) {\n        var _modules$source$verbo,\n          _modules$source,\n          _modules$failed$verbo,\n          _modules$failed;\n\n        const sourceName =\n          (_modules$source$verbo =\n            (_modules$source = modules.source) === null ||\n            _modules$source === void 0\n              ? void 0\n              : _modules$source.verboseName) !== null &&\n          _modules$source$verbo !== void 0\n            ? _modules$source$verbo\n            : \"unknown\";\n        const failedName =\n          (_modules$failed$verbo =\n            (_modules$failed = modules.failed) === null ||\n            _modules$failed === void 0\n              ? void 0\n              : _modules$failed.verboseName) !== null &&\n          _modules$failed$verbo !== void 0\n            ? _modules$failed$verbo\n            : \"unknown\";\n        Refresh.performFullRefresh(\n          `Fast Refresh - ${reason} <${sourceName}> <${failedName}>`\n        );\n      } else {\n        console.warn(\"Could not reload the application after an edit.\");\n      }\n    }\n  }; // Modules that only export components become React Refresh boundaries.\n\n  var isReactRefreshBoundary = function(Refresh, moduleExports) {\n    if (Refresh.isLikelyComponentType(moduleExports)) {\n      return true;\n    }\n\n    if (moduleExports == null || typeof moduleExports !== \"object\") {\n      // Exit if we can't iterate over exports.\n      return false;\n    }\n\n    let hasExports = false;\n    let areAllExportsComponents = true;\n\n    for (const key in moduleExports) {\n      hasExports = true;\n\n      if (key === \"__esModule\") {\n        continue;\n      }\n\n      const desc = Object.getOwnPropertyDescriptor(moduleExports, key);\n\n      if (desc && desc.get) {\n        // Don't invoke getters as they may have side effects.\n        return false;\n      }\n\n      const exportValue = moduleExports[key];\n\n      if (!Refresh.isLikelyComponentType(exportValue)) {\n        areAllExportsComponents = false;\n      }\n    }\n\n    return hasExports && areAllExportsComponents;\n  };\n\n  var shouldInvalidateReactRefreshBoundary = (\n    Refresh,\n    prevExports,\n    nextExports\n  ) => {\n    const prevSignature = getRefreshBoundarySignature(Refresh, prevExports);\n    const nextSignature = getRefreshBoundarySignature(Refresh, nextExports);\n\n    if (prevSignature.length !== nextSignature.length) {\n      return true;\n    }\n\n    for (let i = 0; i < nextSignature.length; i++) {\n      if (prevSignature[i] !== nextSignature[i]) {\n        return true;\n      }\n    }\n\n    return false;\n  }; // When this signature changes, it's unsafe to stop at this refresh boundary.\n\n  var getRefreshBoundarySignature = (Refresh, moduleExports) => {\n    const signature = [];\n    signature.push(Refresh.getFamilyByType(moduleExports));\n\n    if (moduleExports == null || typeof moduleExports !== \"object\") {\n      // Exit if we can't iterate over exports.\n      // (This is important for legacy environments.)\n      return signature;\n    }\n\n    for (const key in moduleExports) {\n      if (key === \"__esModule\") {\n        continue;\n      }\n\n      const desc = Object.getOwnPropertyDescriptor(moduleExports, key);\n\n      if (desc && desc.get) {\n        continue;\n      }\n\n      const exportValue = moduleExports[key];\n      signature.push(key);\n      signature.push(Refresh.getFamilyByType(exportValue));\n    }\n\n    return signature;\n  };\n\n  var registerExportsForReactRefresh = (Refresh, moduleExports, moduleID) => {\n    Refresh.register(moduleExports, moduleID + \" %exports%\");\n\n    if (moduleExports == null || typeof moduleExports !== \"object\") {\n      // Exit if we can't iterate over exports.\n      // (This is important for legacy environments.)\n      return;\n    }\n\n    for (const key in moduleExports) {\n      const desc = Object.getOwnPropertyDescriptor(moduleExports, key);\n\n      if (desc && desc.get) {\n        // Don't invoke getters as they may have side effects.\n        continue;\n      }\n\n      const exportValue = moduleExports[key];\n      const typeID = moduleID + \" %exports% \" + key;\n      Refresh.register(exportValue, typeID);\n    }\n  };\n\n  global.__accept = metroHotUpdateModule;\n}\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 * @polyfill\n * @nolint\n * @format\n */\n\n/* eslint-disable no-shadow, eqeqeq, curly, no-unused-vars, no-void, no-control-regex  */\n\n/**\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n */\nconst inspect = (function() {\n  // Copyright Joyent, Inc. and other Node contributors.\n  //\n  // Permission is hereby granted, free of charge, to any person obtaining a\n  // copy of this software and associated documentation files (the\n  // \"Software\"), to deal in the Software without restriction, including\n  // without limitation the rights to use, copy, modify, merge, publish,\n  // distribute, sublicense, and/or sell copies of the Software, and to permit\n  // persons to whom the Software is furnished to do so, subject to the\n  // following conditions:\n  //\n  // The above copyright notice and this permission notice shall be included\n  // in all copies or substantial portions of the Software.\n  //\n  // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  // USE OR OTHER DEALINGS IN THE SOFTWARE.\n  //\n  // https://github.com/joyent/node/blob/master/lib/util.js\n\n  function inspect(obj, opts) {\n    var ctx = {\n      seen: [],\n      formatValueCalls: 0,\n      stylize: stylizeNoColor,\n    };\n    return formatValue(ctx, obj, opts.depth);\n  }\n\n  function stylizeNoColor(str, styleType) {\n    return str;\n  }\n\n  function arrayToHash(array) {\n    var hash = {};\n\n    array.forEach(function(val, idx) {\n      hash[val] = true;\n    });\n\n    return hash;\n  }\n\n  function formatValue(ctx, value, recurseTimes) {\n    ctx.formatValueCalls++;\n    if (ctx.formatValueCalls > 200) {\n      return `[TOO BIG formatValueCalls ${ctx.formatValueCalls} exceeded limit of 200]`;\n    }\n\n    // Primitive types cannot have properties\n    var primitive = formatPrimitive(ctx, value);\n    if (primitive) {\n      return primitive;\n    }\n\n    // Look up the keys of the object.\n    var keys = Object.keys(value);\n    var visibleKeys = arrayToHash(keys);\n\n    // IE doesn't make error fields non-enumerable\n    // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n    if (\n      isError(value) &&\n      (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)\n    ) {\n      return formatError(value);\n    }\n\n    // Some type of object without properties can be shortcutted.\n    if (keys.length === 0) {\n      if (isFunction(value)) {\n        var 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.toString.call(value), 'date');\n      }\n      if (isError(value)) {\n        return formatError(value);\n      }\n    }\n\n    var base = '',\n      array = false,\n      braces = ['{', '}'];\n\n    // Make Array say that they are Array\n    if (isArray(value)) {\n      array = true;\n      braces = ['[', ']'];\n    }\n\n    // Make functions say that they are functions\n    if (isFunction(value)) {\n      var n = value.name ? ': ' + value.name : '';\n      base = ' [Function' + n + ']';\n    }\n\n    // Make RegExps say that they are RegExps\n    if (isRegExp(value)) {\n      base = ' ' + RegExp.prototype.toString.call(value);\n    }\n\n    // Make dates with properties first say the date\n    if (isDate(value)) {\n      base = ' ' + Date.prototype.toUTCString.call(value);\n    }\n\n    // Make error with message first say the error\n    if (isError(value)) {\n      base = ' ' + formatError(value);\n    }\n\n    if (keys.length === 0 && (!array || value.length == 0)) {\n      return braces[0] + base + braces[1];\n    }\n\n    if (recurseTimes < 0) {\n      if (isRegExp(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n      } else {\n        return ctx.stylize('[Object]', 'special');\n      }\n    }\n\n    ctx.seen.push(value);\n\n    var output;\n    if (array) {\n      output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n    } else {\n      output = keys.map(function(key) {\n        return formatProperty(\n          ctx,\n          value,\n          recurseTimes,\n          visibleKeys,\n          key,\n          array,\n        );\n      });\n    }\n\n    ctx.seen.pop();\n\n    return reduceToSingleString(output, base, braces);\n  }\n\n  function formatPrimitive(ctx, value) {\n    if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n    if (isString(value)) {\n      var simple =\n        \"'\" +\n        JSON.stringify(value)\n          .replace(/^\"|\"$/g, '')\n          .replace(/'/g, \"\\\\'\")\n          .replace(/\\\\\"/g, '\"') +\n        \"'\";\n      return ctx.stylize(simple, 'string');\n    }\n    if (isNumber(value)) return ctx.stylize('' + value, 'number');\n    if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');\n    // For some reason typeof null is \"object\", so special case here.\n    if (isNull(value)) return ctx.stylize('null', 'null');\n  }\n\n  function formatError(value) {\n    return '[' + Error.prototype.toString.call(value) + ']';\n  }\n\n  function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n    var output = [];\n    for (var i = 0, l = value.length; i < l; ++i) {\n      if (hasOwnProperty(value, String(i))) {\n        output.push(\n          formatProperty(\n            ctx,\n            value,\n            recurseTimes,\n            visibleKeys,\n            String(i),\n            true,\n          ),\n        );\n      } else {\n        output.push('');\n      }\n    }\n    keys.forEach(function(key) {\n      if (!key.match(/^\\d+$/)) {\n        output.push(\n          formatProperty(ctx, value, recurseTimes, visibleKeys, key, true),\n        );\n      }\n    });\n    return output;\n  }\n\n  function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n    var name, str, desc;\n    desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]};\n    if (desc.get) {\n      if (desc.set) {\n        str = ctx.stylize('[Getter/Setter]', 'special');\n      } else {\n        str = ctx.stylize('[Getter]', 'special');\n      }\n    } else {\n      if (desc.set) {\n        str = ctx.stylize('[Setter]', 'special');\n      }\n    }\n    if (!hasOwnProperty(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, null);\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(function(line) {\n                return '  ' + line;\n              })\n              .join('\\n')\n              .substr(2);\n          } else {\n            str =\n              '\\n' +\n              str\n                .split('\\n')\n                .map(function(line) {\n                  return '   ' + line;\n                })\n                .join('\\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      } else {\n        name = name\n          .replace(/'/g, \"\\\\'\")\n          .replace(/\\\\\"/g, '\"')\n          .replace(/(^\"|\"$)/g, \"'\");\n        name = ctx.stylize(name, 'string');\n      }\n    }\n\n    return name + ': ' + str;\n  }\n\n  function reduceToSingleString(output, base, braces) {\n    var numLinesEst = 0;\n    var length = output.reduce(function(prev, cur) {\n      numLinesEst++;\n      if (cur.indexOf('\\n') >= 0) numLinesEst++;\n      return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n    }, 0);\n\n    if (length > 60) {\n      return (\n        braces[0] +\n        (base === '' ? '' : base + '\\n ') +\n        ' ' +\n        output.join(',\\n  ') +\n        ' ' +\n        braces[1]\n      );\n    }\n\n    return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n  }\n\n  // NOTE: These type checking functions intentionally don't use `instanceof`\n  // because it is fragile and can be easily faked with `Object.create()`.\n  function isArray(ar) {\n    return Array.isArray(ar);\n  }\n\n  function isBoolean(arg) {\n    return typeof arg === 'boolean';\n  }\n\n  function isNull(arg) {\n    return arg === null;\n  }\n\n  function isNullOrUndefined(arg) {\n    return arg == null;\n  }\n\n  function isNumber(arg) {\n    return typeof arg === 'number';\n  }\n\n  function isString(arg) {\n    return typeof arg === 'string';\n  }\n\n  function isSymbol(arg) {\n    return typeof arg === 'symbol';\n  }\n\n  function isUndefined(arg) {\n    return arg === void 0;\n  }\n\n  function isRegExp(re) {\n    return isObject(re) && objectToString(re) === '[object RegExp]';\n  }\n\n  function isObject(arg) {\n    return typeof arg === 'object' && arg !== null;\n  }\n\n  function isDate(d) {\n    return isObject(d) && objectToString(d) === '[object Date]';\n  }\n\n  function isError(e) {\n    return (\n      isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error)\n    );\n  }\n\n  function isFunction(arg) {\n    return typeof arg === 'function';\n  }\n\n  function objectToString(o) {\n    return Object.prototype.toString.call(o);\n  }\n\n  function hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n  }\n\n  return inspect;\n})();\n\nconst OBJECT_COLUMN_NAME = '(index)';\nconst LOG_LEVELS = {\n  trace: 0,\n  info: 1,\n  warn: 2,\n  error: 3,\n};\nconst INSPECTOR_LEVELS = [];\nINSPECTOR_LEVELS[LOG_LEVELS.trace] = 'debug';\nINSPECTOR_LEVELS[LOG_LEVELS.info] = 'log';\nINSPECTOR_LEVELS[LOG_LEVELS.warn] = 'warning';\nINSPECTOR_LEVELS[LOG_LEVELS.error] = 'error';\n\n// Strip the inner function in getNativeLogFunction(), if in dev also\n// strip method printing to originalConsole.\nconst INSPECTOR_FRAMES_TO_SKIP = __DEV__ ? 2 : 1;\n\nfunction getNativeLogFunction(level) {\n  return function() {\n    let str;\n    if (arguments.length === 1 && typeof arguments[0] === 'string') {\n      str = arguments[0];\n    } else {\n      str = Array.prototype.map\n        .call(arguments, function(arg) {\n          return inspect(arg, {depth: 10});\n        })\n        .join(', ');\n    }\n\n    // TRICKY\n    // If more than one argument is provided, the code above collapses them all\n    // into a single formatted string. This transform wraps string arguments in\n    // single quotes (e.g. \"foo\" -> \"'foo'\") which then breaks the \"Warning:\"\n    // check below. So it's important that we look at the first argument, rather\n    // than the formatted argument string.\n    const firstArg = arguments[0];\n\n    let logLevel = level;\n    if (\n      typeof firstArg === 'string' &&\n      firstArg.slice(0, 9) === 'Warning: ' &&\n      logLevel >= LOG_LEVELS.error\n    ) {\n      // React warnings use console.error so that a stack trace is shown,\n      // but we don't (currently) want these to show a redbox\n      // (Note: Logic duplicated in ExceptionsManager.js.)\n      logLevel = LOG_LEVELS.warn;\n    }\n    if (global.__inspectorLog) {\n      global.__inspectorLog(\n        INSPECTOR_LEVELS[logLevel],\n        str,\n        [].slice.call(arguments),\n        INSPECTOR_FRAMES_TO_SKIP,\n      );\n    }\n    if (groupStack.length) {\n      str = groupFormat('', str);\n    }\n    global.nativeLoggingHook(str, logLevel);\n  };\n}\n\nfunction repeat(element, n) {\n  return Array.apply(null, Array(n)).map(function() {\n    return element;\n  });\n}\n\nfunction consoleTablePolyfill(rows) {\n  // convert object -> array\n  if (!Array.isArray(rows)) {\n    var data = rows;\n    rows = [];\n    for (var key in data) {\n      if (data.hasOwnProperty(key)) {\n        var row = data[key];\n        row[OBJECT_COLUMN_NAME] = key;\n        rows.push(row);\n      }\n    }\n  }\n  if (rows.length === 0) {\n    global.nativeLoggingHook('', LOG_LEVELS.info);\n    return;\n  }\n\n  var columns = Object.keys(rows[0]).sort();\n  var stringRows = [];\n  var columnWidths = [];\n\n  // Convert each cell to a string. Also\n  // figure out max cell width for each column\n  columns.forEach(function(k, i) {\n    columnWidths[i] = k.length;\n    for (var j = 0; j < rows.length; j++) {\n      var cellStr = (rows[j][k] || '?').toString();\n      stringRows[j] = stringRows[j] || [];\n      stringRows[j][i] = cellStr;\n      columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n    }\n  });\n\n  // Join all elements in the row into a single string with | separators\n  // (appends extra spaces to each cell to make separators  | aligned)\n  function joinRow(row, space) {\n    var cells = row.map(function(cell, i) {\n      var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n      return cell + extraSpaces;\n    });\n    space = space || ' ';\n    return cells.join(space + '|' + space);\n  }\n\n  var separators = columnWidths.map(function(columnWidth) {\n    return repeat('-', columnWidth).join('');\n  });\n  var separatorRow = joinRow(separators, '-');\n  var header = joinRow(columns);\n  var table = [header, separatorRow];\n\n  for (var i = 0; i < rows.length; i++) {\n    table.push(joinRow(stringRows[i]));\n  }\n\n  // Notice extra empty line at the beginning.\n  // Native logging hook adds \"RCTLog >\" at the front of every\n  // logged string, which would shift the header and screw up\n  // the table\n  global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.info);\n}\n\nconst GROUP_PAD = '\\u2502'; // Box light vertical\nconst GROUP_OPEN = '\\u2510'; // Box light down+left\nconst GROUP_CLOSE = '\\u2518'; // Box light up+left\n\nconst groupStack = [];\n\nfunction groupFormat(prefix, msg) {\n  // Insert group formatting before the console message\n  return groupStack.join('') + prefix + ' ' + (msg || '');\n}\n\nfunction consoleGroupPolyfill(label) {\n  global.nativeLoggingHook(groupFormat(GROUP_OPEN, label), LOG_LEVELS.info);\n  groupStack.push(GROUP_PAD);\n}\n\nfunction consoleGroupCollapsedPolyfill(label) {\n  global.nativeLoggingHook(groupFormat(GROUP_CLOSE, label), LOG_LEVELS.info);\n  groupStack.push(GROUP_PAD);\n}\n\nfunction consoleGroupEndPolyfill() {\n  groupStack.pop();\n  global.nativeLoggingHook(groupFormat(GROUP_CLOSE), LOG_LEVELS.info);\n}\n\nfunction consoleAssertPolyfill(expression, label) {\n  if (!expression) {\n    global.nativeLoggingHook('Assertion failed: ' + label, LOG_LEVELS.error);\n  }\n}\n\nif (global.nativeLoggingHook) {\n  const originalConsole = global.console;\n  // Preserve the original `console` as `originalConsole`\n  if (__DEV__ && originalConsole) {\n    const descriptor = Object.getOwnPropertyDescriptor(global, 'console');\n    if (descriptor) {\n      Object.defineProperty(global, 'originalConsole', descriptor);\n    }\n  }\n\n  global.console = {\n    error: getNativeLogFunction(LOG_LEVELS.error),\n    info: getNativeLogFunction(LOG_LEVELS.info),\n    log: getNativeLogFunction(LOG_LEVELS.info),\n    warn: getNativeLogFunction(LOG_LEVELS.warn),\n    trace: getNativeLogFunction(LOG_LEVELS.trace),\n    debug: getNativeLogFunction(LOG_LEVELS.trace),\n    table: consoleTablePolyfill,\n    group: consoleGroupPolyfill,\n    groupEnd: consoleGroupEndPolyfill,\n    groupCollapsed: consoleGroupCollapsedPolyfill,\n    assert: consoleAssertPolyfill,\n  };\n\n  Object.defineProperty(console, '_isPolyfilled', {\n    value: true,\n    enumerable: false,\n  });\n\n  // If available, also call the original `console` method since that is\n  // sometimes useful. Ex: on OS X, this will let you see rich output in\n  // the Safari Web Inspector console.\n  if (__DEV__ && originalConsole) {\n    Object.keys(console).forEach(methodName => {\n      const reactNativeMethod = console[methodName];\n      if (originalConsole[methodName]) {\n        console[methodName] = function() {\n          originalConsole[methodName](...arguments);\n          reactNativeMethod.apply(console, arguments);\n        };\n      }\n    });\n\n    // The following methods are not supported by this polyfill but\n    // we still should pass them to original console if they are\n    // supported by it.\n    ['clear', 'dir', 'dirxml', 'profile', 'profileEnd'].forEach(methodName => {\n      if (typeof originalConsole[methodName] === 'function') {\n        console[methodName] = function() {\n          originalConsole[methodName](...arguments);\n        };\n      }\n    });\n  }\n} else if (!global.console) {\n  function stub() {}\n  const log = global.print || stub;\n\n  global.console = {\n    debug: log,\n    error: log,\n    info: log,\n    log: log,\n    trace: log,\n    warn: log,\n    assert(expression, label) {\n      if (!expression) {\n        log('Assertion failed: ' + label);\n      }\n    },\n    clear: stub,\n    dir: stub,\n    dirxml: stub,\n    group: stub,\n    groupCollapsed: stub,\n    groupEnd: stub,\n    profile: stub,\n    profileEnd: stub,\n    table: stub,\n  };\n\n  Object.defineProperty(console, '_isPolyfilled', {\n    value: true,\n    enumerable: false,\n  });\n}\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 * @format\n * @flow strict\n * @polyfill\n */\n\nlet _inGuard = 0;\n\ntype ErrorHandler = (error: mixed, isFatal: boolean) => void;\ntype Fn<Args, Return> = (...Args) => Return;\n\n/**\n * This is the error handler that is called when we encounter an exception\n * when loading a module. This will report any errors encountered before\n * ExceptionsManager is configured.\n */\nlet _globalHandler: ErrorHandler = function onError(\n  e: mixed,\n  isFatal: boolean,\n) {\n  throw e;\n};\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\nconst ErrorUtils = {\n  setGlobalHandler(fun: ErrorHandler): void {\n    _globalHandler = fun;\n  },\n  getGlobalHandler(): ErrorHandler {\n    return _globalHandler;\n  },\n  reportError(error: mixed): void {\n    _globalHandler && _globalHandler(error, false);\n  },\n  reportFatalError(error: mixed): void {\n    // NOTE: This has an untyped call site in Metro.\n    _globalHandler && _globalHandler(error, true);\n  },\n  applyWithGuard<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    context?: ?mixed,\n    args?: ?TArgs,\n    // Unused, but some code synced from www sets it to null.\n    unused_onError?: null,\n    // Some callers pass a name here, which we ignore.\n    unused_name?: ?string,\n  ): ?TOut {\n    try {\n      _inGuard++;\n      // $FlowFixMe: TODO T48204745 (1) apply(context, null) is fine. (2) array -> rest array should work\n      return fun.apply(context, args);\n    } catch (e) {\n      ErrorUtils.reportError(e);\n    } finally {\n      _inGuard--;\n    }\n    return null;\n  },\n  applyWithGuardIfNeeded<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    context?: ?mixed,\n    args?: ?TArgs,\n  ): ?TOut {\n    if (ErrorUtils.inGuard()) {\n      // $FlowFixMe: TODO T48204745 (1) apply(context, null) is fine. (2) array -> rest array should work\n      return fun.apply(context, args);\n    } else {\n      ErrorUtils.applyWithGuard(fun, context, args);\n    }\n    return null;\n  },\n  inGuard(): boolean {\n    return !!_inGuard;\n  },\n  guard<TArgs: $ReadOnlyArray<mixed>, TOut>(\n    fun: Fn<TArgs, TOut>,\n    name?: ?string,\n    context?: ?mixed,\n  ): ?(...TArgs) => ?TOut {\n    // TODO: (moti) T48204753 Make sure this warning is never hit and remove it - types\n    // should be sufficient.\n    if (typeof fun !== 'function') {\n      console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n      return null;\n    }\n    const guardName = name ?? fun.name ?? '<generated guard>';\n    function guarded(...args: TArgs): ?TOut {\n      return ErrorUtils.applyWithGuard(\n        fun,\n        context ?? this,\n        args,\n        null,\n        guardName,\n      );\n    }\n\n    return guarded;\n  },\n};\n\nglobal.ErrorUtils = ErrorUtils;\n\nexport type ErrorUtilsT = typeof ErrorUtils;\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 * @format\n * @polyfill\n * @nolint\n */\n\n(function() {\n  'use strict';\n\n  const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n  /**\n   * Returns an array of the given object's own enumerable entries.\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n   */\n  if (typeof Object.entries !== 'function') {\n    Object.entries = function(object) {\n      // `null` and `undefined` values are not allowed.\n      if (object == null) {\n        throw new TypeError('Object.entries called on non-object');\n      }\n\n      const entries = [];\n      for (const key in object) {\n        if (hasOwnProperty.call(object, key)) {\n          entries.push([key, object[key]]);\n        }\n      }\n      return entries;\n    };\n  }\n\n  /**\n   * Returns an array of the given object's own enumerable entries.\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n   */\n  if (typeof Object.values !== 'function') {\n    Object.values = function(object) {\n      // `null` and `undefined` values are not allowed.\n      if (object == null) {\n        throw new TypeError('Object.values called on non-object');\n      }\n\n      const values = [];\n      for (const key in object) {\n        if (hasOwnProperty.call(object, key)) {\n          values.push(object[key]);\n        }\n      }\n      return values;\n    };\n  }\n})();\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 * @format\n *\n */\n\"use strict\";\n","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @format\n * @flow\n */\n\n'use strict';\n\n// Components\nimport typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo';\nimport typeof ActivityIndicator from './Libraries/Components/ActivityIndicator/ActivityIndicator';\nimport typeof Button from './Libraries/Components/Button';\nimport typeof DatePickerIOS from './Libraries/Components/DatePicker/DatePickerIOS';\nimport typeof DrawerLayoutAndroid from './Libraries/Components/DrawerAndroid/DrawerLayoutAndroid';\nimport typeof FlatList from './Libraries/Lists/FlatList';\nimport typeof Image from './Libraries/Image/Image';\nimport typeof ImageBackground from './Libraries/Image/ImageBackground';\nimport typeof InputAccessoryView from './Libraries/Components/TextInput/InputAccessoryView';\nimport typeof KeyboardAvoidingView from './Libraries/Components/Keyboard/KeyboardAvoidingView';\nimport typeof MaskedViewIOS from './Libraries/Components/MaskedView/MaskedViewIOS';\nimport typeof Modal from './Libraries/Modal/Modal';\nimport typeof Picker from './Libraries/Components/Picker/Picker';\nimport typeof PickerIOS from './Libraries/Components/Picker/PickerIOS';\nimport typeof Pressable from './Libraries/Components/Pressable/Pressable';\nimport typeof ProgressBarAndroid from './Libraries/Components/ProgressBarAndroid/ProgressBarAndroid';\nimport typeof ProgressViewIOS from './Libraries/Components/ProgressViewIOS/ProgressViewIOS';\nimport typeof RefreshControl from './Libraries/Components/RefreshControl/RefreshControl';\nimport typeof SafeAreaView from './Libraries/Components/SafeAreaView/SafeAreaView';\nimport typeof ScrollView from './Libraries/Components/ScrollView/ScrollView';\nimport typeof SectionList from './Libraries/Lists/SectionList';\nimport typeof SegmentedControlIOS from './Libraries/Components/SegmentedControlIOS/SegmentedControlIOS';\nimport typeof Slider from './Libraries/Components/Slider/Slider';\nimport typeof StatusBar from './Libraries/Components/StatusBar/StatusBar';\nimport typeof Switch from './Libraries/Components/Switch/Switch';\nimport typeof Text from './Libraries/Text/Text';\nimport typeof TextInput from './Libraries/Components/TextInput/TextInput';\nimport typeof Touchable from './Libraries/Components/Touchable/Touchable';\nimport typeof TouchableHighlight from './Libraries/Components/Touchable/TouchableHighlight';\nimport typeof TouchableNativeFeedback from './Libraries/Components/Touchable/TouchableNativeFeedback';\nimport typeof TouchableOpacity from './Libraries/Components/Touchable/TouchableOpacity';\nimport typeof TouchableWithoutFeedback from './Libraries/Components/Touchable/TouchableWithoutFeedback';\nimport typeof View from './Libraries/Components/View/View';\nimport typeof VirtualizedList from './Libraries/Lists/VirtualizedList';\nimport typeof VirtualizedSectionList from './Libraries/Lists/VirtualizedSectionList';\n\n// APIs\nimport typeof ActionSheetIOS from './Libraries/ActionSheetIOS/ActionSheetIOS';\nimport typeof Alert from './Libraries/Alert/Alert';\nimport typeof Animated from './Libraries/Animated/Animated';\nimport typeof Appearance from './Libraries/Utilities/Appearance';\nimport typeof AppRegistry from './Libraries/ReactNative/AppRegistry';\nimport typeof AppState from './Libraries/AppState/AppState';\nimport typeof AsyncStorage from './Libraries/Storage/AsyncStorage';\nimport typeof BackHandler from './Libraries/Utilities/BackHandler';\nimport typeof Clipboard from './Libraries/Components/Clipboard/Clipboard';\nimport typeof DatePickerAndroid from './Libraries/Components/DatePickerAndroid/DatePickerAndroid';\nimport typeof DeviceInfo from './Libraries/Utilities/DeviceInfo';\nimport typeof DevSettings from './Libraries/Utilities/DevSettings';\nimport typeof Dimensions from './Libraries/Utilities/Dimensions';\nimport typeof Easing from './Libraries/Animated/Easing';\nimport typeof ReactNative from './Libraries/Renderer/shims/ReactNative';\nimport typeof I18nManager from './Libraries/ReactNative/I18nManager';\nimport typeof ImagePickerIOS from './Libraries/Image/ImagePickerIOS';\nimport typeof InteractionManager from './Libraries/Interaction/InteractionManager';\nimport typeof Keyboard from './Libraries/Components/Keyboard/Keyboard';\nimport typeof LayoutAnimation from './Libraries/LayoutAnimation/LayoutAnimation';\nimport typeof Linking from './Libraries/Linking/Linking';\nimport typeof LogBox from './Libraries/LogBox/LogBox';\nimport typeof NativeDialogManagerAndroid from './Libraries/NativeModules/specs/NativeDialogManagerAndroid';\nimport typeof NativeEventEmitter from './Libraries/EventEmitter/NativeEventEmitter';\nimport typeof Networking from './Libraries/Network/RCTNetworking';\nimport typeof PanResponder from './Libraries/Interaction/PanResponder';\nimport typeof PermissionsAndroid from './Libraries/PermissionsAndroid/PermissionsAndroid';\nimport typeof PixelRatio from './Libraries/Utilities/PixelRatio';\nimport typeof PushNotificationIOS from './Libraries/PushNotificationIOS/PushNotificationIOS';\nimport typeof Settings from './Libraries/Settings/Settings';\nimport typeof Share from './Libraries/Share/Share';\nimport typeof StatusBarIOS from './Libraries/Components/StatusBar/StatusBarIOS';\nimport typeof StyleSheet from './Libraries/StyleSheet/StyleSheet';\nimport typeof Systrace from './Libraries/Performance/Systrace';\nimport typeof ToastAndroid from './Libraries/Components/ToastAndroid/ToastAndroid';\nimport typeof * as TurboModuleRegistry from './Libraries/TurboModule/TurboModuleRegistry';\nimport typeof UIManager from './Libraries/ReactNative/UIManager';\nimport typeof useColorScheme from './Libraries/Utilities/useColorScheme';\nimport typeof useWindowDimensions from './Libraries/Utilities/useWindowDimensions';\nimport typeof UTFSequence from './Libraries/UTFSequence';\nimport typeof Vibration from './Libraries/Vibration/Vibration';\nimport typeof YellowBox from './Libraries/YellowBox/YellowBoxDeprecated';\n\n// Plugins\nimport typeof {DynamicColorIOS} from './Libraries/StyleSheet/PlatformColorValueTypesIOS';\nimport typeof NativeModules from './Libraries/BatchedBridge/NativeModules';\nimport typeof Platform from './Libraries/Utilities/Platform';\nimport typeof {PlatformColor} from './Libraries/StyleSheet/PlatformColorValueTypes';\nimport typeof processColor from './Libraries/StyleSheet/processColor';\nimport typeof RCTDeviceEventEmitter from './Libraries/EventEmitter/RCTDeviceEventEmitter';\nimport typeof RCTNativeAppEventEmitter from './Libraries/EventEmitter/RCTNativeAppEventEmitter';\nimport typeof {RootTagContext} from './Libraries/ReactNative/RootTag';\n\n// Prop Types\nimport typeof DeprecatedColorPropType from './Libraries/DeprecatedPropTypes/DeprecatedColorPropType';\nimport typeof DeprecatedEdgeInsetsPropType from './Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType';\nimport typeof DeprecatedPointPropType from './Libraries/DeprecatedPropTypes/DeprecatedPointPropType';\nimport typeof DeprecatedViewPropTypes from './Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes';\n\nimport type {HostComponent as _HostComponentInternal} from './Libraries/Renderer/shims/ReactNativeTypes';\n\nexport type HostComponent<T> = _HostComponentInternal<T>;\n\nconst invariant = require('invariant');\nconst warnOnce = require('./Libraries/Utilities/warnOnce');\n\nmodule.exports = {\n  // Components\n  get AccessibilityInfo(): AccessibilityInfo {\n    return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo');\n  },\n  get ActivityIndicator(): ActivityIndicator {\n    return require('./Libraries/Components/ActivityIndicator/ActivityIndicator');\n  },\n  get Button(): Button {\n    return require('./Libraries/Components/Button');\n  },\n  // $FlowFixMe[value-as-type]\n  get DatePickerIOS(): DatePickerIOS {\n    warnOnce(\n      'DatePickerIOS-merged',\n      'DatePickerIOS has been merged with DatePickerAndroid and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. \" +\n        'See https://github.com/react-native-datetimepicker/datetimepicker',\n    );\n    return require('./Libraries/Components/DatePicker/DatePickerIOS');\n  },\n  // $FlowFixMe[value-as-type]\n  get DrawerLayoutAndroid(): DrawerLayoutAndroid {\n    return require('./Libraries/Components/DrawerAndroid/DrawerLayoutAndroid');\n  },\n  get FlatList(): FlatList {\n    return require('./Libraries/Lists/FlatList');\n  },\n  get Image(): Image {\n    return require('./Libraries/Image/Image');\n  },\n  get ImageBackground(): ImageBackground {\n    return require('./Libraries/Image/ImageBackground');\n  },\n  get InputAccessoryView(): InputAccessoryView {\n    return require('./Libraries/Components/TextInput/InputAccessoryView');\n  },\n  get KeyboardAvoidingView(): KeyboardAvoidingView {\n    return require('./Libraries/Components/Keyboard/KeyboardAvoidingView');\n  },\n  get MaskedViewIOS(): MaskedViewIOS {\n    warnOnce(\n      'maskedviewios-moved',\n      'MaskedViewIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-masked-view/masked-view' instead of 'react-native'. \" +\n        'See https://github.com/react-native-masked-view/react-native-masked-view',\n    );\n    return require('./Libraries/Components/MaskedView/MaskedViewIOS');\n  },\n  get Modal(): Modal {\n    return require('./Libraries/Modal/Modal');\n  },\n  get Picker(): Picker {\n    warnOnce(\n      'picker-moved',\n      'Picker has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-picker/picker' instead of 'react-native'. \" +\n        'See https://github.com/react-native-picker/react-native-picker',\n    );\n    return require('./Libraries/Components/Picker/Picker');\n  },\n  // $FlowFixMe[value-as-type]\n  get PickerIOS(): PickerIOS {\n    warnOnce(\n      'pickerios-moved',\n      'PickerIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-picker/picker' instead of 'react-native'. \" +\n        'See https://github.com/react-native-picker/react-native-picker',\n    );\n    return require('./Libraries/Components/Picker/PickerIOS');\n  },\n  get Pressable(): Pressable {\n    return require('./Libraries/Components/Pressable/Pressable').default;\n  },\n  // $FlowFixMe[value-as-type]\n  get ProgressBarAndroid(): ProgressBarAndroid {\n    warnOnce(\n      'progress-bar-android-moved',\n      'ProgressBarAndroid has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/progress-bar-android' instead of 'react-native'. \" +\n        'See https://github.com/react-native-progress-view/progress-bar-android',\n    );\n    return require('./Libraries/Components/ProgressBarAndroid/ProgressBarAndroid');\n  },\n  // $FlowFixMe[value-as-type]\n  get ProgressViewIOS(): ProgressViewIOS {\n    warnOnce(\n      'progress-view-ios-moved',\n      'ProgressViewIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/progress-view' instead of 'react-native'. \" +\n        'See https://github.com/react-native-progress-view/progress-view',\n    );\n    return require('./Libraries/Components/ProgressViewIOS/ProgressViewIOS');\n  },\n  get RefreshControl(): RefreshControl {\n    return require('./Libraries/Components/RefreshControl/RefreshControl');\n  },\n  get SafeAreaView(): SafeAreaView {\n    return require('./Libraries/Components/SafeAreaView/SafeAreaView');\n  },\n  get ScrollView(): ScrollView {\n    return require('./Libraries/Components/ScrollView/ScrollView');\n  },\n  get SectionList(): SectionList {\n    return require('./Libraries/Lists/SectionList');\n  },\n  // $FlowFixMe[value-as-type]\n  get SegmentedControlIOS(): SegmentedControlIOS {\n    warnOnce(\n      'segmented-control-ios-moved',\n      'SegmentedControlIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/segmented-control' instead of 'react-native'. \" +\n        'See https://github.com/react-native-segmented-control/segmented-control',\n    );\n    return require('./Libraries/Components/SegmentedControlIOS/SegmentedControlIOS');\n  },\n  get Slider(): Slider {\n    warnOnce(\n      'slider-moved',\n      'Slider has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/slider' instead of 'react-native'. \" +\n        'See https://github.com/callstack/react-native-slider',\n    );\n    return require('./Libraries/Components/Slider/Slider');\n  },\n  get StatusBar(): StatusBar {\n    return require('./Libraries/Components/StatusBar/StatusBar');\n  },\n  get Switch(): Switch {\n    return require('./Libraries/Components/Switch/Switch');\n  },\n  get Text(): Text {\n    return require('./Libraries/Text/Text');\n  },\n  get TextInput(): TextInput {\n    return require('./Libraries/Components/TextInput/TextInput');\n  },\n  get Touchable(): Touchable {\n    return require('./Libraries/Components/Touchable/Touchable');\n  },\n  get TouchableHighlight(): TouchableHighlight {\n    return require('./Libraries/Components/Touchable/TouchableHighlight');\n  },\n  get TouchableNativeFeedback(): TouchableNativeFeedback {\n    return require('./Libraries/Components/Touchable/TouchableNativeFeedback');\n  },\n  get TouchableOpacity(): TouchableOpacity {\n    return require('./Libraries/Components/Touchable/TouchableOpacity');\n  },\n  get TouchableWithoutFeedback(): TouchableWithoutFeedback {\n    return require('./Libraries/Components/Touchable/TouchableWithoutFeedback');\n  },\n  get View(): View {\n    return require('./Libraries/Components/View/View');\n  },\n  get VirtualizedList(): VirtualizedList {\n    return require('./Libraries/Lists/VirtualizedList');\n  },\n  get VirtualizedSectionList(): VirtualizedSectionList {\n    return require('./Libraries/Lists/VirtualizedSectionList');\n  },\n\n  // APIs\n  get ActionSheetIOS(): ActionSheetIOS {\n    return require('./Libraries/ActionSheetIOS/ActionSheetIOS');\n  },\n  get Alert(): Alert {\n    return require('./Libraries/Alert/Alert');\n  },\n  get Animated(): Animated {\n    return require('./Libraries/Animated/Animated');\n  },\n  get Appearance(): Appearance {\n    return require('./Libraries/Utilities/Appearance');\n  },\n  get AppRegistry(): AppRegistry {\n    return require('./Libraries/ReactNative/AppRegistry');\n  },\n  get AppState(): AppState {\n    return require('./Libraries/AppState/AppState');\n  },\n  // $FlowFixMe[value-as-type]\n  get AsyncStorage(): AsyncStorage {\n    warnOnce(\n      'async-storage-moved',\n      'AsyncStorage has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-async-storage/async-storage' instead of 'react-native'. \" +\n        'See https://github.com/react-native-async-storage/async-storage',\n    );\n    return require('./Libraries/Storage/AsyncStorage');\n  },\n  get BackHandler(): BackHandler {\n    return require('./Libraries/Utilities/BackHandler');\n  },\n  get Clipboard(): Clipboard {\n    warnOnce(\n      'clipboard-moved',\n      'Clipboard has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/clipboard' instead of 'react-native'. \" +\n        'See https://github.com/react-native-clipboard/clipboard',\n    );\n    return require('./Libraries/Components/Clipboard/Clipboard');\n  },\n  get DatePickerAndroid(): DatePickerAndroid {\n    warnOnce(\n      'DatePickerAndroid-merged',\n      'DatePickerAndroid has been merged with DatePickerIOS and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. \" +\n        'See https://github.com/react-native-datetimepicker/datetimepicker',\n    );\n    return require('./Libraries/Components/DatePickerAndroid/DatePickerAndroid');\n  },\n  get DeviceInfo(): DeviceInfo {\n    return require('./Libraries/Utilities/DeviceInfo');\n  },\n  get DevSettings(): DevSettings {\n    return require('./Libraries/Utilities/DevSettings');\n  },\n  get Dimensions(): Dimensions {\n    return require('./Libraries/Utilities/Dimensions');\n  },\n  get Easing(): Easing {\n    return require('./Libraries/Animated/Easing');\n  },\n  get findNodeHandle(): $PropertyType<ReactNative, 'findNodeHandle'> {\n    return require('./Libraries/Renderer/shims/ReactNative').findNodeHandle;\n  },\n  get I18nManager(): I18nManager {\n    return require('./Libraries/ReactNative/I18nManager');\n  },\n  get ImagePickerIOS(): ImagePickerIOS {\n    warnOnce(\n      'imagePickerIOS-moved',\n      'ImagePickerIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"Please upgrade to use either '@react-native-community/react-native-image-picker' or 'expo-image-picker'. \" +\n        \"If you cannot upgrade to a different library, please install the deprecated '@react-native-community/image-picker-ios' package. \" +\n        'See https://github.com/rnc-archive/react-native-image-picker-ios',\n    );\n    return require('./Libraries/Image/ImagePickerIOS');\n  },\n  get InteractionManager(): InteractionManager {\n    return require('./Libraries/Interaction/InteractionManager');\n  },\n  get Keyboard(): Keyboard {\n    return require('./Libraries/Components/Keyboard/Keyboard');\n  },\n  get LayoutAnimation(): LayoutAnimation {\n    return require('./Libraries/LayoutAnimation/LayoutAnimation');\n  },\n  get Linking(): Linking {\n    return require('./Libraries/Linking/Linking');\n  },\n  get LogBox(): LogBox {\n    return require('./Libraries/LogBox/LogBox');\n  },\n  get NativeDialogManagerAndroid(): NativeDialogManagerAndroid {\n    return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid')\n      .default;\n  },\n  get NativeEventEmitter(): NativeEventEmitter {\n    return require('./Libraries/EventEmitter/NativeEventEmitter').default;\n  },\n  get Networking(): Networking {\n    return require('./Libraries/Network/RCTNetworking');\n  },\n  get PanResponder(): PanResponder {\n    return require('./Libraries/Interaction/PanResponder');\n  },\n  get PermissionsAndroid(): PermissionsAndroid {\n    return require('./Libraries/PermissionsAndroid/PermissionsAndroid');\n  },\n  get PixelRatio(): PixelRatio {\n    return require('./Libraries/Utilities/PixelRatio');\n  },\n  get PushNotificationIOS(): PushNotificationIOS {\n    warnOnce(\n      'pushNotificationIOS-moved',\n      'PushNotificationIOS has been extracted from react-native core and will be removed in a future release. ' +\n        \"It can now be installed and imported from '@react-native-community/push-notification-ios' instead of 'react-native'. \" +\n        'See https://github.com/react-native-push-notification-ios/push-notification-ios',\n    );\n    return require('./Libraries/PushNotificationIOS/PushNotificationIOS');\n  },\n  get Settings(): Settings {\n    return require('./Libraries/Settings/Settings');\n  },\n  get Share(): Share {\n    return require('./Libraries/Share/Share');\n  },\n  get StatusBarIOS(): StatusBarIOS {\n    warnOnce(\n      'StatusBarIOS-merged',\n      'StatusBarIOS has been merged with StatusBar and will be removed in a future release. Use StatusBar for mutating the status bar',\n    );\n    return require('./Libraries/Components/StatusBar/StatusBarIOS');\n  },\n  get StyleSheet(): StyleSheet {\n    return require('./Libraries/StyleSheet/StyleSheet');\n  },\n  get Systrace(): Systrace {\n    return require('./Libraries/Performance/Systrace');\n  },\n  // $FlowFixMe[value-as-type]\n  get ToastAndroid(): ToastAndroid {\n    return require('./Libraries/Components/ToastAndroid/ToastAndroid');\n  },\n  get TurboModuleRegistry(): TurboModuleRegistry {\n    return require('./Libraries/TurboModule/TurboModuleRegistry');\n  },\n  get UIManager(): UIManager {\n    return require('./Libraries/ReactNative/UIManager');\n  },\n  get unstable_batchedUpdates(): $PropertyType<\n    ReactNative,\n    'unstable_batchedUpdates',\n  > {\n    return require('./Libraries/Renderer/shims/ReactNative')\n      .unstable_batchedUpdates;\n  },\n  get useColorScheme(): useColorScheme {\n    return require('./Libraries/Utilities/useColorScheme').default;\n  },\n  get useWindowDimensions(): useWindowDimensions {\n    return require('./Libraries/Utilities/useWindowDimensions').default;\n  },\n  get UTFSequence(): UTFSequence {\n    return require('./Libraries/UTFSequence');\n  },\n  get Vibration(): Vibration {\n    return require('./Libraries/Vibration/Vibration');\n  },\n  get YellowBox(): YellowBox {\n    return require('./Libraries/YellowBox/YellowBoxDeprecated');\n  },\n\n  // Plugins\n  get DeviceEventEmitter(): RCTDeviceEventEmitter {\n    return require('./Libraries/EventEmitter/RCTDeviceEventEmitter').default;\n  },\n  get DynamicColorIOS(): DynamicColorIOS {\n    return require('./Libraries/StyleSheet/PlatformColorValueTypesIOS')\n      .DynamicColorIOS;\n  },\n  get NativeAppEventEmitter(): RCTNativeAppEventEmitter {\n    return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter');\n  },\n  get NativeModules(): NativeModules {\n    return require('./Libraries/BatchedBridge/NativeModules');\n  },\n  get Platform(): Platform {\n    return require('./Libraries/Utilities/Platform');\n  },\n  get PlatformColor(): PlatformColor {\n    return require('./Libraries/StyleSheet/PlatformColorValueTypes')\n      .PlatformColor;\n  },\n  get processColor(): processColor {\n    return require('./Libraries/StyleSheet/processColor');\n  },\n  get requireNativeComponent(): <T>(\n    uiViewClassName: string,\n  ) => HostComponent<T> {\n    return require('./Libraries/ReactNative/requireNativeComponent');\n  },\n  get unstable_RootTagContext(): RootTagContext {\n    return require('./Libraries/ReactNative/RootTag').RootTagContext;\n  },\n  get unstable_enableLogBox(): () => void {\n    return () =>\n      console.warn(\n        'LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.',\n      );\n  },\n  // Prop Types\n  // $FlowFixMe[value-as-type]\n  get ColorPropType(): DeprecatedColorPropType {\n    return require('./Libraries/DeprecatedPropTypes/DeprecatedColorPropType');\n  },\n  get EdgeInsetsPropType(): DeprecatedEdgeInsetsPropType {\n    return require('./Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType');\n  },\n  get PointPropType(): DeprecatedPointPropType {\n    return require('./Libraries/DeprecatedPropTypes/DeprecatedPointPropType');\n  },\n  get ViewPropTypes(): DeprecatedViewPropTypes {\n    return require('./Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes');\n  },\n};\n\nif (__DEV__) {\n  // $FlowFixMe This is intentional: Flow will error when attempting to access ART.\n  Object.defineProperty(module.exports, 'ART', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ART has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/art' instead of 'react-native'. \" +\n          'See https://github.com/react-native-art/art',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access ListView.\n  Object.defineProperty(module.exports, 'ListView', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ListView has been removed from React Native. ' +\n          'See https://fb.me/nolistview for more information or use ' +\n          '`deprecated-react-native-listview`.',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access SwipeableListView.\n  Object.defineProperty(module.exports, 'SwipeableListView', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'SwipeableListView has been removed from React Native. ' +\n          'See https://fb.me/nolistview for more information or use ' +\n          '`deprecated-react-native-swipeable-listview`.',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access WebView.\n  Object.defineProperty(module.exports, 'WebView', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'WebView has been removed from React Native. ' +\n          \"It can now be installed and imported from 'react-native-webview' instead of 'react-native'. \" +\n          'See https://github.com/react-native-webview/react-native-webview',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access NetInfo.\n  Object.defineProperty(module.exports, 'NetInfo', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'NetInfo has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/netinfo' instead of 'react-native'. \" +\n          'See https://github.com/react-native-netinfo/react-native-netinfo',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access CameraRoll.\n  Object.defineProperty(module.exports, 'CameraRoll', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'CameraRoll has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/cameraroll' instead of 'react-native'. \" +\n          'See https://github.com/react-native-cameraroll/react-native-cameraroll',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access ImageStore.\n  Object.defineProperty(module.exports, 'ImageStore', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ImageStore has been removed from React Native. ' +\n          'To get a base64-encoded string from a local image use either of the following third-party libraries:' +\n          \"* expo-file-system: `readAsStringAsync(filepath, 'base64')`\" +\n          \"* react-native-fs: `readFile(filepath, 'base64')`\",\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access ImageEditor.\n  Object.defineProperty(module.exports, 'ImageEditor', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ImageEditor has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/image-editor' instead of 'react-native'. \" +\n          'See https://github.com/callstack/react-native-image-editor',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access TimePickerAndroid.\n  Object.defineProperty(module.exports, 'TimePickerAndroid', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'TimePickerAndroid has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/datetimepicker' instead of 'react-native'. \" +\n          'See https://github.com/react-native-datetimepicker/datetimepicker',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access ToolbarAndroid.\n  Object.defineProperty(module.exports, 'ToolbarAndroid', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ToolbarAndroid has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/toolbar-android' instead of 'react-native'. \" +\n          'See https://github.com/react-native-toolbar-android/toolbar-android',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access ViewPagerAndroid.\n  Object.defineProperty(module.exports, 'ViewPagerAndroid', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'ViewPagerAndroid has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/viewpager' instead of 'react-native'. \" +\n          'See https://github.com/callstack/react-native-viewpager',\n      );\n    },\n  });\n\n  // $FlowFixMe This is intentional: Flow will error when attempting to access CheckBox.\n  Object.defineProperty(module.exports, 'CheckBox', {\n    configurable: true,\n    get() {\n      invariant(\n        false,\n        'CheckBox has been removed from React Native. ' +\n          \"It can now be installed and imported from '@react-native-community/checkbox' instead of 'react-native'. \" +\n          'See https://github.com/react-native-checkbox/react-native-checkbox',\n      );\n    },\n  });\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst warnedKeys: {[string]: boolean, ...} = {};\n\n/**\n * A simple function that prints a warning message once per session.\n *\n * @param {string} key - The key used to ensure the message is printed once.\n *                       This should be unique to the callsite.\n * @param {string} message - The message to print\n */\nfunction warnOnce(key: string, message: string) {\n  if (warnedKeys[key]) {\n    return;\n  }\n\n  console.warn(message);\n\n  warnedKeys[key] = true;\n}\n\nmodule.exports = warnOnce;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport RCTDeviceEventEmitter from '../../EventEmitter/RCTDeviceEventEmitter';\nimport NativeAccessibilityManager from './NativeAccessibilityManager';\n\nconst CHANGE_EVENT_NAME = {\n  announcementFinished: 'announcementFinished',\n  boldTextChanged: 'boldTextChanged',\n  grayscaleChanged: 'grayscaleChanged',\n  invertColorsChanged: 'invertColorsChanged',\n  reduceMotionChanged: 'reduceMotionChanged',\n  reduceTransparencyChanged: 'reduceTransparencyChanged',\n  screenReaderChanged: 'screenReaderChanged',\n};\n\ntype ChangeEventName = $Keys<{\n  announcementFinished: string,\n  boldTextChanged: string,\n  change: string,\n  grayscaleChanged: string,\n  invertColorsChanged: string,\n  reduceMotionChanged: string,\n  reduceTransparencyChanged: string,\n  screenReaderChanged: string,\n  ...\n}>;\n\nconst _subscriptions = new Map();\n\n/**\n * Sometimes it's useful to know whether or not the device has a screen reader\n * that is currently active. The `AccessibilityInfo` API is designed for this\n * purpose. You can use it to query the current state of the screen reader as\n * well as to register to be notified when the state of the screen reader\n * changes.\n *\n * See https://reactnative.dev/docs/accessibilityinfo.html\n */\nconst AccessibilityInfo = {\n  /**\n   * Query whether bold text is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when bold text is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#isBoldTextEnabled\n   */\n  isBoldTextEnabled: function(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (NativeAccessibilityManager) {\n        NativeAccessibilityManager.getCurrentBoldTextState(resolve, reject);\n      } else {\n        reject(reject);\n      }\n    });\n  },\n\n  /**\n   * Query whether grayscale is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when grayscale is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#isGrayscaleEnabled\n   */\n  isGrayscaleEnabled: function(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (NativeAccessibilityManager) {\n        NativeAccessibilityManager.getCurrentGrayscaleState(resolve, reject);\n      } else {\n        reject(reject);\n      }\n    });\n  },\n\n  /**\n   * Query whether inverted colors are currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when invert color is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#isInvertColorsEnabled\n   */\n  isInvertColorsEnabled: function(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (NativeAccessibilityManager) {\n        NativeAccessibilityManager.getCurrentInvertColorsState(resolve, reject);\n      } else {\n        reject(reject);\n      }\n    });\n  },\n\n  /**\n   * Query whether reduced motion is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when a reduce motion is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#isReduceMotionEnabled\n   */\n  isReduceMotionEnabled: function(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (NativeAccessibilityManager) {\n        NativeAccessibilityManager.getCurrentReduceMotionState(resolve, reject);\n      } else {\n        reject(reject);\n      }\n    });\n  },\n\n  /**\n   * Query whether reduced transparency is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when a reduce transparency is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#isReduceTransparencyEnabled\n   */\n  isReduceTransparencyEnabled: function(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (NativeAccessibilityManager) {\n        NativeAccessibilityManager.getCurrentReduceTransparencyState(\n          resolve,\n          reject,\n        );\n      } else {\n        reject(reject);\n      }\n    });\n  },\n\n  /**\n   * Query whether a screen reader is currently enabled.\n   *\n   * Returns a promise which resolves to a boolean.\n   * The result is `true` when a screen reader is enabled and `false` otherwise.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#isScreenReaderEnabled\n   */\n  isScreenReaderEnabled: function(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (NativeAccessibilityManager) {\n        NativeAccessibilityManager.getCurrentVoiceOverState(resolve, reject);\n      } else {\n        reject(reject);\n      }\n    });\n  },\n\n  /**\n   * Deprecated\n   *\n   * Same as `isScreenReaderEnabled`\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  get fetch(): $FlowFixMe {\n    console.warn(\n      'AccessibilityInfo.fetch is deprecated, call AccessibilityInfo.isScreenReaderEnabled instead',\n    );\n    return this.isScreenReaderEnabled;\n  },\n\n  /**\n   * Add an event handler. Supported events:\n   *\n   * - `boldTextChanged`: iOS-only event. Fires when the state of the bold text toggle changes.\n   *   The argument to the event handler is a boolean. The boolean is `true` when a bold text\n   *   is enabled and `false` otherwise.\n   * - `grayscaleChanged`: iOS-only event. Fires when the state of the gray scale toggle changes.\n   *   The argument to the event handler is a boolean. The boolean is `true` when a gray scale\n   *   is enabled and `false` otherwise.\n   * - `invertColorsChanged`: iOS-only event. Fires when the state of the invert colors toggle\n   *   changes. The argument to the event handler is a boolean. The boolean is `true` when a invert\n   *   colors is enabled and `false` otherwise.\n   * - `reduceMotionChanged`: Fires when the state of the reduce motion toggle changes.\n   *   The argument to the event handler is a boolean. The boolean is `true` when a reduce\n   *   motion is enabled (or when \"Transition Animation Scale\" in \"Developer options\" is\n   *   \"Animation off\") and `false` otherwise.\n   * - `reduceTransparencyChanged`: iOS-only event. Fires when the state of the reduce transparency\n   *   toggle changes.  The argument to the event handler is a boolean. The boolean is `true`\n   *   when a reduce transparency is enabled and `false` otherwise.\n   * - `screenReaderChanged`: Fires when the state of the screen reader changes. The argument\n   *   to the event handler is a boolean. The boolean is `true` when a screen\n   *   reader is enabled and `false` otherwise.\n   * - `announcementFinished`: iOS-only event. Fires when the screen reader has\n   *   finished making an announcement. The argument to the event handler is a\n   *   dictionary with these keys:\n   *     - `announcement`: The string announced by the screen reader.\n   *     - `success`: A boolean indicating whether the announcement was\n   *       successfully made.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#addeventlistener\n   */\n  addEventListener: function<T>(\n    eventName: ChangeEventName,\n    handler: T,\n  ): {remove: () => void} {\n    let listener;\n\n    if (eventName === 'change') {\n      listener = RCTDeviceEventEmitter.addListener(\n        CHANGE_EVENT_NAME.screenReaderChanged,\n        handler,\n      );\n    } else if (CHANGE_EVENT_NAME[eventName]) {\n      listener = RCTDeviceEventEmitter.addListener(eventName, handler);\n    }\n\n    // $FlowFixMe[escaped-generic]\n    _subscriptions.set(handler, listener);\n    return {\n      remove: AccessibilityInfo.removeEventListener.bind(\n        null,\n        eventName,\n        handler,\n      ),\n    };\n  },\n\n  /**\n   * Set accessibility focus to a react component.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#setaccessibilityfocus\n   */\n  setAccessibilityFocus: function(reactTag: number): void {\n    if (NativeAccessibilityManager) {\n      NativeAccessibilityManager.setAccessibilityFocus(reactTag);\n    }\n  },\n\n  /**\n   * Post a string to be announced by the screen reader.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#announceforaccessibility\n   */\n  announceForAccessibility: function(announcement: string): void {\n    if (NativeAccessibilityManager) {\n      NativeAccessibilityManager.announceForAccessibility(announcement);\n    }\n  },\n\n  /**\n   * Remove an event handler.\n   *\n   * See https://reactnative.dev/docs/accessibilityinfo.html#removeeventlistener\n   */\n  removeEventListener: function<T>(\n    eventName: ChangeEventName,\n    handler: T,\n  ): void {\n    // $FlowFixMe[escaped-generic]\n    const listener = _subscriptions.get(handler);\n    if (!listener) {\n      return;\n    }\n    listener.remove();\n    // $FlowFixMe[escaped-generic]\n    _subscriptions.delete(handler);\n  },\n};\n\nmodule.exports = AccessibilityInfo;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport EventEmitter from '../vendor/emitter/EventEmitter';\nimport type EmitterSubscription from '../vendor/emitter/_EmitterSubscription';\nimport EventSubscriptionVendor from '../vendor/emitter/_EventSubscriptionVendor';\n\nfunction checkNativeEventModule(eventType: ?string) {\n  if (eventType) {\n    if (eventType.lastIndexOf('statusBar', 0) === 0) {\n      throw new Error(\n        '`' +\n          eventType +\n          '` event should be registered via the StatusBarIOS module',\n      );\n    }\n    if (eventType.lastIndexOf('keyboard', 0) === 0) {\n      throw new Error(\n        '`' +\n          eventType +\n          '` event should be registered via the Keyboard module',\n      );\n    }\n    if (eventType === 'appStateDidChange' || eventType === 'memoryWarning') {\n      throw new Error(\n        '`' +\n          eventType +\n          '` event should be registered via the AppState module',\n      );\n    }\n  }\n}\n\n/**\n * Deprecated - subclass NativeEventEmitter to create granular event modules instead of\n * adding all event listeners directly to RCTDeviceEventEmitter.\n */\nclass RCTDeviceEventEmitter extends EventEmitter {\n  sharedSubscriber: EventSubscriptionVendor;\n\n  constructor() {\n    const sharedSubscriber = new EventSubscriptionVendor();\n    super(sharedSubscriber);\n    this.sharedSubscriber = sharedSubscriber;\n  }\n\n  addListener(\n    eventType: string,\n    listener: Function,\n    context: ?Object,\n  ): EmitterSubscription {\n    if (__DEV__) {\n      checkNativeEventModule(eventType);\n    }\n    return super.addListener(eventType, listener, context);\n  }\n\n  removeAllListeners(eventType: ?string) {\n    if (__DEV__) {\n      checkNativeEventModule(eventType);\n    }\n    super.removeAllListeners(eventType);\n  }\n\n  removeSubscription(subscription: EmitterSubscription) {\n    if (subscription.emitter !== this) {\n      subscription.emitter.removeSubscription(subscription);\n    } else {\n      super.removeSubscription(subscription);\n    }\n  }\n}\n\nexport default (new RCTDeviceEventEmitter(): RCTDeviceEventEmitter);\n","function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    module.exports = _get = Reflect.get;\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  } else {\n    module.exports = _get = function _get(target, property, receiver) {\n      var base = superPropBase(target, property);\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(receiver);\n      }\n\n      return desc.value;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  }\n\n  return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\n// $FlowFixMe - EventEmitter Type Safety\nconst EventEmitter = require('./_EventEmitter');\n\nexport default EventEmitter;\n\nexport interface EventSubscription {\n  remove(): void;\n}\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 * @format\n * @noflow\n * @typecheck\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nimport EmitterSubscription from './_EmitterSubscription';\nimport EventSubscriptionVendor from './_EventSubscriptionVendor';\n\nconst sparseFilterPredicate = () => true;\n\n/**\n * @class EventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\nclass EventEmitter {\n  _subscriber: EventSubscriptionVendor;\n\n  /**\n   * @constructor\n   *\n   * @param {EventSubscriptionVendor} subscriber - Optional subscriber instance\n   *   to use. If omitted, a new subscriber will be created for the emitter.\n   */\n  constructor(subscriber: ?EventSubscriptionVendor) {\n    this._subscriber = subscriber || new EventSubscriptionVendor();\n  }\n\n  /**\n   * Adds a listener to be invoked when events of the specified type are\n   * emitted. An optional calling context may be provided. The data arguments\n   * emitted will be passed to the listener function.\n   *\n   * TODO: Annotate the listener arg's type. This is tricky because listeners\n   *       can be invoked with varargs.\n   *\n   * @param {string} eventType - Name of the event to listen to\n   * @param {function} listener - Function to invoke when the specified event is\n   *   emitted\n   * @param {*} context - Optional context object to use when invoking the\n   *   listener\n   */\n  addListener(\n    eventType: string,\n    listener: Function,\n    context: ?Object,\n  ): EmitterSubscription {\n    return (this._subscriber.addSubscription(\n      eventType,\n      new EmitterSubscription(this, this._subscriber, listener, context),\n    ): any);\n  }\n\n  /**\n   * Removes all of the registered listeners, including those registered as\n   * listener maps.\n   *\n   * @param {?string} eventType - Optional name of the event whose registered\n   *   listeners to remove\n   */\n  removeAllListeners(eventType: ?string) {\n    this._subscriber.removeAllSubscriptions(eventType);\n  }\n\n  /**\n   * Removes a specific subscription. Called by the `remove()` method of the\n   * subscription itself to ensure any necessary cleanup is performed.\n   */\n  removeSubscription(subscription: EmitterSubscription) {\n    invariant(\n      subscription.emitter === this,\n      'Subscription does not belong to this emitter.',\n    );\n    this._subscriber.removeSubscription(subscription);\n  }\n\n  /**\n   * Returns the number of listeners that are currently registered for the given\n   * event.\n   *\n   * @param {string} eventType - Name of the event to query\n   * @returns {number}\n   */\n  listenerCount(eventType: string): number {\n    const subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n    return subscriptions\n      ? // We filter out missing entries because the array is sparse.\n        // \"callbackfn is called only for elements of the array which actually\n        // exist; it is not called for missing elements of the array.\"\n        // https://www.ecma-international.org/ecma-262/9.0/index.html#sec-array.prototype.filter\n        subscriptions.filter(sparseFilterPredicate).length\n      : 0;\n  }\n\n  /**\n   * Emits an event of the given type with the given data. All handlers of that\n   * particular type will be notified.\n   *\n   * @param {string} eventType - Name of the event to emit\n   * @param {...*} Arbitrary arguments to be passed to each registered listener\n   *\n   * @example\n   *   emitter.addListener('someEvent', function(message) {\n   *     console.log(message);\n   *   });\n   *\n   *   emitter.emit('someEvent', 'abc'); // logs 'abc'\n   */\n  emit(eventType: string) {\n    const subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n    if (subscriptions) {\n      for (let i = 0, l = subscriptions.length; i < l; i++) {\n        const subscription = subscriptions[i];\n\n        // The subscription may have been removed during this event loop.\n        if (subscription && subscription.listener) {\n          subscription.listener.apply(\n            subscription.context,\n            Array.prototype.slice.call(arguments, 1),\n          );\n        }\n      }\n    }\n  }\n\n  /**\n   * Removes the given listener for event of specific type.\n   *\n   * @param {string} eventType - Name of the event to emit\n   * @param {function} listener - Function to invoke when the specified event is\n   *   emitted\n   *\n   * @example\n   *   emitter.removeListener('someEvent', function(message) {\n   *     console.log(message);\n   *   }); // removes the listener if already registered\n   *\n   */\n  removeListener(eventType: String, listener) {\n    const subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n    if (subscriptions) {\n      for (let i = 0, l = subscriptions.length; i < l; i++) {\n        const subscription = subscriptions[i];\n\n        // The subscription may have been removed during this event loop.\n        // its listener matches the listener in method parameters\n        if (subscription && subscription.listener === listener) {\n          subscription.remove();\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = EventEmitter;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type EventEmitter from './EventEmitter';\nimport EventSubscription from './_EventSubscription';\nimport type EventSubscriptionVendor from './_EventSubscriptionVendor';\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\nclass EmitterSubscription extends EventSubscription {\n  // $FlowFixMe[value-as-type]\n  emitter: EventEmitter;\n  listener: Function;\n  context: ?Object;\n\n  /**\n   * @param {EventEmitter} emitter - The event emitter that registered this\n   *   subscription\n   * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n   *   this subscription\n   * @param {function} listener - Function to invoke when the specified event is\n   *   emitted\n   * @param {*} context - Optional context object to use when invoking the\n   *   listener\n   */\n  constructor(\n    // $FlowFixMe[value-as-type]\n    emitter: EventEmitter,\n    subscriber: EventSubscriptionVendor,\n    listener: Function,\n    context: ?Object,\n  ) {\n    super(subscriber);\n    this.emitter = emitter;\n    this.listener = listener;\n    this.context = context;\n  }\n\n  /**\n   * Removes this subscription from the emitter that registered it.\n   * Note: we're overriding the `remove()` method of EventSubscription here\n   * but deliberately not calling `super.remove()` as the responsibility\n   * for removing the subscription lies with the EventEmitter.\n   */\n  remove() {\n    this.emitter.removeSubscription(this);\n  }\n}\n\nmodule.exports = EmitterSubscription;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type EventSubscriptionVendor from './_EventSubscriptionVendor';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\nclass EventSubscription {\n  eventType: string;\n  key: number;\n  subscriber: EventSubscriptionVendor;\n\n  /**\n   * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n   *   this subscription.\n   */\n  constructor(subscriber: EventSubscriptionVendor) {\n    this.subscriber = subscriber;\n  }\n\n  /**\n   * Removes this subscription from the subscriber that controls it.\n   */\n  remove() {\n    this.subscriber.removeSubscription(this);\n  }\n}\n\nmodule.exports = EventSubscription;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nimport type EventSubscription from './_EventSubscription';\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\nclass EventSubscriptionVendor {\n  _subscriptionsForType: Object;\n  _currentSubscription: ?EventSubscription;\n\n  constructor() {\n    this._subscriptionsForType = {};\n    this._currentSubscription = null;\n  }\n\n  /**\n   * Adds a subscription keyed by an event type.\n   *\n   * @param {string} eventType\n   * @param {EventSubscription} subscription\n   */\n  addSubscription(\n    eventType: string,\n    subscription: EventSubscription,\n  ): EventSubscription {\n    invariant(\n      subscription.subscriber === this,\n      'The subscriber of the subscription is incorrectly set.',\n    );\n    if (!this._subscriptionsForType[eventType]) {\n      this._subscriptionsForType[eventType] = [];\n    }\n    const key = this._subscriptionsForType[eventType].length;\n    this._subscriptionsForType[eventType].push(subscription);\n    subscription.eventType = eventType;\n    subscription.key = key;\n    return subscription;\n  }\n\n  /**\n   * Removes a bulk set of the subscriptions.\n   *\n   * @param {?string} eventType - Optional name of the event type whose\n   *   registered supscriptions to remove, if null remove all subscriptions.\n   */\n  removeAllSubscriptions(eventType: ?string) {\n    if (eventType === undefined) {\n      this._subscriptionsForType = {};\n    } else {\n      delete this._subscriptionsForType[eventType];\n    }\n  }\n\n  /**\n   * Removes a specific subscription. Instead of calling this function, call\n   * `subscription.remove()` directly.\n   *\n   * @param {object} subscription\n   */\n  removeSubscription(subscription: Object) {\n    const eventType = subscription.eventType;\n    const key = subscription.key;\n\n    const subscriptionsForType = this._subscriptionsForType[eventType];\n    if (subscriptionsForType) {\n      delete subscriptionsForType[key];\n    }\n  }\n\n  /**\n   * Returns the array of subscriptions that are currently registered for the\n   * given event type.\n   *\n   * Note: This array can be potentially sparse as subscriptions are deleted\n   * from it when they are removed.\n   *\n   * TODO: This returns a nullable array. wat?\n   *\n   * @param {string} eventType\n   * @returns {?array}\n   */\n  getSubscriptionsForType(eventType: string): ?[EventSubscription] {\n    return this._subscriptionsForType[eventType];\n  }\n}\n\nmodule.exports = EventSubscriptionVendor;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getCurrentBoldTextState: (\n    onSuccess: (isBoldTextEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentGrayscaleState: (\n    onSuccess: (isGrayscaleEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentInvertColorsState: (\n    onSuccess: (isInvertColorsEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentReduceMotionState: (\n    onSuccess: (isReduceMotionEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentReduceTransparencyState: (\n    onSuccess: (isReduceTransparencyEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +getCurrentVoiceOverState: (\n    onSuccess: (isScreenReaderEnabled: boolean) => void,\n    onError: (error: Object) => void,\n  ) => void;\n  +setAccessibilityContentSizeMultipliers: (JSMultipliers: {|\n    +extraSmall?: ?number,\n    +small?: ?number,\n    +medium?: ?number,\n    +large?: ?number,\n    +extraLarge?: ?number,\n    +extraExtraLarge?: ?number,\n    +extraExtraExtraLarge?: ?number,\n    +accessibilityMedium?: ?number,\n    +accessibilityLarge?: ?number,\n    +accessibilityExtraLarge?: ?number,\n    +accessibilityExtraExtraLarge?: ?number,\n    +accessibilityExtraExtraExtraLarge?: ?number,\n  |}) => void;\n  +setAccessibilityFocus: (reactTag: number) => void;\n  +announceForAccessibility: (announcement: string) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('AccessibilityManager'): ?Spec);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst NativeModules = require('../BatchedBridge/NativeModules');\nimport type {TurboModule} from './RCTExport';\nimport invariant from 'invariant';\n\nconst turboModuleProxy = global.__turboModuleProxy;\n\nfunction requireModule<T: TurboModule>(name: string, schema?: ?$FlowFixMe): ?T {\n  // Bridgeless mode requires TurboModules\n  if (!global.RN$Bridgeless) {\n    // Backward compatibility layer during migration.\n    const legacyModule = NativeModules[name];\n    if (legacyModule != null) {\n      return ((legacyModule: $FlowFixMe): T);\n    }\n  }\n\n  if (turboModuleProxy != null) {\n    const module: ?T =\n      schema != null ? turboModuleProxy(name, schema) : turboModuleProxy(name);\n    return module;\n  }\n\n  return null;\n}\n\nexport function get<T: TurboModule>(name: string): ?T {\n  /**\n   * What is Schema?\n   *\n   * @react-native/babel-plugin-codegen will parse the NativeModule\n   * spec, and pass in the generated schema as the second argument\n   * to this function. The schem will then be used to perform method\n   * dispatch on, and translate arguments/return to and from the Native\n   * TurboModule object.\n   */\n  const schema = arguments.length === 2 ? arguments[1] : undefined;\n  return requireModule<T>(name, schema);\n}\n\nexport function getEnforcing<T: TurboModule>(name: string): T {\n  /**\n   * What is Schema?\n   *\n   * @react-native/babel-plugin-codegen will parse the NativeModule\n   * spec, and pass in the generated schema as the second argument\n   * to this function. The schem will then be used to perform method\n   * dispatch on, and translate arguments/return to and from the Native\n   * TurboModule object.\n   */\n  const schema = arguments.length === 2 ? arguments[1] : undefined;\n  const module = requireModule<T>(name, schema);\n  invariant(\n    module != null,\n    `TurboModuleRegistry.getEnforcing(...): '${name}' could not be found. ` +\n      'Verify that a module by this name is registered in the native binary.',\n  );\n  return module;\n}\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst BatchedBridge = require('./BatchedBridge');\n\nconst invariant = require('invariant');\n\nimport type {ExtendedError} from '../Core/Devtools/parseErrorStack';\n\nexport type ModuleConfig = [\n  string /* name */,\n  ?{...} /* constants */,\n  ?$ReadOnlyArray<string> /* functions */,\n  ?$ReadOnlyArray<number> /* promise method IDs */,\n  ?$ReadOnlyArray<number> /* sync method IDs */,\n];\n\nexport type MethodType = 'async' | 'promise' | 'sync';\n\nfunction genModule(\n  config: ?ModuleConfig,\n  moduleID: number,\n): ?{\n  name: string,\n  module?: {...},\n  ...\n} {\n  if (!config) {\n    return null;\n  }\n\n  const [moduleName, constants, methods, promiseMethods, syncMethods] = config;\n  invariant(\n    !moduleName.startsWith('RCT') && !moduleName.startsWith('RK'),\n    \"Module name prefixes should've been stripped by the native side \" +\n      \"but wasn't for \" +\n      moduleName,\n  );\n\n  if (!constants && !methods) {\n    // Module contents will be filled in lazily later\n    return {name: moduleName};\n  }\n\n  const module = {};\n  methods &&\n    methods.forEach((methodName, methodID) => {\n      const isPromise =\n        (promiseMethods && arrayContains(promiseMethods, methodID)) || false;\n      const isSync =\n        (syncMethods && arrayContains(syncMethods, methodID)) || false;\n      invariant(\n        !isPromise || !isSync,\n        'Cannot have a method that is both async and a sync hook',\n      );\n      const methodType = isPromise ? 'promise' : isSync ? 'sync' : 'async';\n      module[methodName] = genMethod(moduleID, methodID, methodType);\n    });\n\n  Object.assign(module, constants);\n\n  if (module.getConstants == null) {\n    module.getConstants = () => constants || Object.freeze({});\n  } else {\n    console.warn(\n      `Unable to define method 'getConstants()' on NativeModule '${moduleName}'. NativeModule '${moduleName}' already has a constant or method called 'getConstants'. Please remove it.`,\n    );\n  }\n\n  if (__DEV__) {\n    BatchedBridge.createDebugLookup(moduleID, moduleName, methods);\n  }\n\n  return {name: moduleName, module};\n}\n\n// export this method as a global so we can call it from native\nglobal.__fbGenNativeModule = genModule;\n\nfunction loadModule(name: string, moduleID: number): ?{...} {\n  invariant(\n    global.nativeRequireModuleConfig,\n    \"Can't lazily create module without nativeRequireModuleConfig\",\n  );\n  const config = global.nativeRequireModuleConfig(name);\n  const info = genModule(config, moduleID);\n  return info && info.module;\n}\n\nfunction genMethod(moduleID: number, methodID: number, type: MethodType) {\n  let fn = null;\n  if (type === 'promise') {\n    fn = function promiseMethodWrapper(...args: Array<mixed>) {\n      // In case we reject, capture a useful stack trace here.\n      const enqueueingFrameError: ExtendedError = new Error();\n      return new Promise((resolve, reject) => {\n        BatchedBridge.enqueueNativeCall(\n          moduleID,\n          methodID,\n          args,\n          data => resolve(data),\n          errorData =>\n            reject(\n              updateErrorWithErrorData(\n                (errorData: $FlowFixMe),\n                enqueueingFrameError,\n              ),\n            ),\n        );\n      });\n    };\n  } else {\n    fn = function nonPromiseMethodWrapper(...args: Array<mixed>) {\n      const lastArg = args.length > 0 ? args[args.length - 1] : null;\n      const secondLastArg = args.length > 1 ? args[args.length - 2] : null;\n      const hasSuccessCallback = typeof lastArg === 'function';\n      const hasErrorCallback = typeof secondLastArg === 'function';\n      hasErrorCallback &&\n        invariant(\n          hasSuccessCallback,\n          'Cannot have a non-function arg after a function arg.',\n        );\n      // $FlowFixMe[incompatible-type]\n      const onSuccess: ?(mixed) => void = hasSuccessCallback ? lastArg : null;\n      // $FlowFixMe[incompatible-type]\n      const onFail: ?(mixed) => void = hasErrorCallback ? secondLastArg : null;\n      const callbackCount = hasSuccessCallback + hasErrorCallback;\n      const newArgs = args.slice(0, args.length - callbackCount);\n      if (type === 'sync') {\n        return BatchedBridge.callNativeSyncHook(\n          moduleID,\n          methodID,\n          newArgs,\n          onFail,\n          onSuccess,\n        );\n      } else {\n        BatchedBridge.enqueueNativeCall(\n          moduleID,\n          methodID,\n          newArgs,\n          onFail,\n          onSuccess,\n        );\n      }\n    };\n  }\n  fn.type = type;\n  return fn;\n}\n\nfunction arrayContains<T>(array: $ReadOnlyArray<T>, value: T): boolean {\n  return array.indexOf(value) !== -1;\n}\n\nfunction updateErrorWithErrorData(\n  errorData: {message: string, ...},\n  error: ExtendedError,\n): ExtendedError {\n  return Object.assign(error, errorData || {});\n}\n\nlet NativeModules: {[moduleName: string]: $FlowFixMe, ...} = {};\nif (global.nativeModuleProxy) {\n  NativeModules = global.nativeModuleProxy;\n} else if (!global.nativeExtensions) {\n  const bridgeConfig = global.__fbBatchedBridgeConfig;\n  invariant(\n    bridgeConfig,\n    '__fbBatchedBridgeConfig is not set, cannot invoke native modules',\n  );\n\n  const defineLazyObjectProperty = require('../Utilities/defineLazyObjectProperty');\n  (bridgeConfig.remoteModuleConfig || []).forEach(\n    (config: ModuleConfig, moduleID: number) => {\n      // Initially this config will only contain the module name when running in JSC. The actual\n      // configuration of the module will be lazily loaded.\n      const info = genModule(config, moduleID);\n      if (!info) {\n        return;\n      }\n\n      if (info.module) {\n        NativeModules[info.name] = info.module;\n      }\n      // If there's no module config, define a lazy getter\n      else {\n        defineLazyObjectProperty(NativeModules, info.name, {\n          get: () => loadModule(info.name, moduleID),\n        });\n      }\n    },\n  );\n}\n\nmodule.exports = NativeModules;\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst MessageQueue = require('./MessageQueue');\n\nconst BatchedBridge: MessageQueue = new MessageQueue();\n\n// Wire up the batched bridge on the global object so that we can call into it.\n// Ideally, this would be the inverse relationship. I.e. the native environment\n// provides this global directly with its script embedded. Then this module\n// would export it. A possible fix would be to trim the dependencies in\n// MessageQueue to its minimal features and embed that in the native runtime.\n\nObject.defineProperty(global, '__fbBatchedBridge', {\n  configurable: true,\n  value: BatchedBridge,\n});\n\nmodule.exports = BatchedBridge;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst ErrorUtils = require('../vendor/core/ErrorUtils');\nconst Systrace = require('../Performance/Systrace');\n\nconst deepFreezeAndThrowOnMutationInDev = require('../Utilities/deepFreezeAndThrowOnMutationInDev');\nconst invariant = require('invariant');\nconst stringifySafe = require('../Utilities/stringifySafe').default;\nconst warnOnce = require('../Utilities/warnOnce');\n\nexport type SpyData = {\n  type: number,\n  module: ?string,\n  method: string | number,\n  args: mixed[],\n  ...\n};\n\nconst TO_JS = 0;\nconst TO_NATIVE = 1;\n\nconst MODULE_IDS = 0;\nconst METHOD_IDS = 1;\nconst PARAMS = 2;\nconst MIN_TIME_BETWEEN_FLUSHES_MS = 5;\n\n// eslint-disable-next-line no-bitwise\nconst TRACE_TAG_REACT_APPS = 1 << 17;\n\nconst DEBUG_INFO_LIMIT = 32;\n\nclass MessageQueue {\n  _lazyCallableModules: {[key: string]: (void) => {...}, ...};\n  _queue: [number[], number[], mixed[], number];\n  _successCallbacks: Map<number, ?(...mixed[]) => void>;\n  _failureCallbacks: Map<number, ?(...mixed[]) => void>;\n  _callID: number;\n  _lastFlush: number;\n  _eventLoopStartTime: number;\n  _immediatesCallback: ?() => void;\n\n  _debugInfo: {[number]: [number, number], ...};\n  _remoteModuleTable: {[number]: string, ...};\n  _remoteMethodTable: {[number]: $ReadOnlyArray<string>, ...};\n\n  __spy: ?(data: SpyData) => void;\n\n  constructor() {\n    this._lazyCallableModules = {};\n    this._queue = [[], [], [], 0];\n    this._successCallbacks = new Map();\n    this._failureCallbacks = new Map();\n    this._callID = 0;\n    this._lastFlush = 0;\n    this._eventLoopStartTime = Date.now();\n    this._immediatesCallback = null;\n\n    if (__DEV__) {\n      this._debugInfo = {};\n      this._remoteModuleTable = {};\n      this._remoteMethodTable = {};\n    }\n\n    // $FlowFixMe[cannot-write]\n    this.callFunctionReturnFlushedQueue = this.callFunctionReturnFlushedQueue.bind(\n      this,\n    );\n    // $FlowFixMe[cannot-write]\n    this.flushedQueue = this.flushedQueue.bind(this);\n\n    // $FlowFixMe[cannot-write]\n    this.invokeCallbackAndReturnFlushedQueue = this.invokeCallbackAndReturnFlushedQueue.bind(\n      this,\n    );\n  }\n\n  /**\n   * Public APIs\n   */\n\n  static spy(spyOrToggle: boolean | ((data: SpyData) => void)) {\n    if (spyOrToggle === true) {\n      MessageQueue.prototype.__spy = info => {\n        console.log(\n          `${info.type === TO_JS ? 'N->JS' : 'JS->N'} : ` +\n            `${info.module != null ? info.module + '.' : ''}${info.method}` +\n            `(${JSON.stringify(info.args)})`,\n        );\n      };\n    } else if (spyOrToggle === false) {\n      MessageQueue.prototype.__spy = null;\n    } else {\n      MessageQueue.prototype.__spy = spyOrToggle;\n    }\n  }\n\n  callFunctionReturnFlushedQueue(\n    module: string,\n    method: string,\n    args: mixed[],\n  ): null | [Array<number>, Array<number>, Array<mixed>, number] {\n    this.__guard(() => {\n      this.__callFunction(module, method, args);\n    });\n\n    return this.flushedQueue();\n  }\n\n  invokeCallbackAndReturnFlushedQueue(\n    cbID: number,\n    args: mixed[],\n  ): null | [Array<number>, Array<number>, Array<mixed>, number] {\n    this.__guard(() => {\n      this.__invokeCallback(cbID, args);\n    });\n\n    return this.flushedQueue();\n  }\n\n  flushedQueue(): null | [Array<number>, Array<number>, Array<mixed>, number] {\n    this.__guard(() => {\n      this.__callImmediates();\n    });\n\n    const queue = this._queue;\n    this._queue = [[], [], [], this._callID];\n    return queue[0].length ? queue : null;\n  }\n\n  getEventLoopRunningTime(): number {\n    return Date.now() - this._eventLoopStartTime;\n  }\n\n  registerCallableModule(name: string, module: {...}) {\n    this._lazyCallableModules[name] = () => module;\n  }\n\n  registerLazyCallableModule(name: string, factory: void => {...}) {\n    let module: {...};\n    let getValue: ?(void) => {...} = factory;\n    this._lazyCallableModules[name] = () => {\n      if (getValue) {\n        module = getValue();\n        getValue = null;\n      }\n      return module;\n    };\n  }\n\n  getCallableModule(name: string): {...} | null {\n    const getValue = this._lazyCallableModules[name];\n    return getValue ? getValue() : null;\n  }\n\n  callNativeSyncHook(\n    moduleID: number,\n    methodID: number,\n    params: mixed[],\n    onFail: ?(...mixed[]) => void,\n    onSucc: ?(...mixed[]) => void,\n  ): mixed {\n    if (__DEV__) {\n      invariant(\n        global.nativeCallSyncHook,\n        'Calling synchronous methods on native ' +\n          'modules is not supported in Chrome.\\n\\n Consider providing alternative ' +\n          'methods to expose this method in debug mode, e.g. by exposing constants ' +\n          'ahead-of-time.',\n      );\n    }\n    this.processCallbacks(moduleID, methodID, params, onFail, onSucc);\n    return global.nativeCallSyncHook(moduleID, methodID, params);\n  }\n\n  processCallbacks(\n    moduleID: number,\n    methodID: number,\n    params: mixed[],\n    onFail: ?(...mixed[]) => void,\n    onSucc: ?(...mixed[]) => void,\n  ): void {\n    if (onFail || onSucc) {\n      if (__DEV__) {\n        this._debugInfo[this._callID] = [moduleID, methodID];\n        if (this._callID > DEBUG_INFO_LIMIT) {\n          delete this._debugInfo[this._callID - DEBUG_INFO_LIMIT];\n        }\n        if (this._successCallbacks.size > 500) {\n          const info = {};\n          this._successCallbacks.forEach((_, callID) => {\n            const debug = this._debugInfo[callID];\n            const module = debug && this._remoteModuleTable[debug[0]];\n            const method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n            info[callID] = {module, method};\n          });\n          warnOnce(\n            'excessive-number-of-pending-callbacks',\n            `Please report: Excessive number of pending callbacks: ${\n              this._successCallbacks.size\n            }. Some pending callbacks that might have leaked by never being called from native code: ${stringifySafe(\n              info,\n            )}`,\n          );\n        }\n      }\n      // Encode callIDs into pairs of callback identifiers by shifting left and using the rightmost bit\n      // to indicate fail (0) or success (1)\n      // eslint-disable-next-line no-bitwise\n      onFail && params.push(this._callID << 1);\n      // eslint-disable-next-line no-bitwise\n      onSucc && params.push((this._callID << 1) | 1);\n      this._successCallbacks.set(this._callID, onSucc);\n      this._failureCallbacks.set(this._callID, onFail);\n    }\n    if (__DEV__) {\n      global.nativeTraceBeginAsyncFlow &&\n        global.nativeTraceBeginAsyncFlow(\n          TRACE_TAG_REACT_APPS,\n          'native',\n          this._callID,\n        );\n    }\n    this._callID++;\n  }\n\n  enqueueNativeCall(\n    moduleID: number,\n    methodID: number,\n    params: mixed[],\n    onFail: ?(...mixed[]) => void,\n    onSucc: ?(...mixed[]) => void,\n  ) {\n    this.processCallbacks(moduleID, methodID, params, onFail, onSucc);\n\n    this._queue[MODULE_IDS].push(moduleID);\n    this._queue[METHOD_IDS].push(methodID);\n\n    if (__DEV__) {\n      // Validate that parameters passed over the bridge are\n      // folly-convertible.  As a special case, if a prop value is a\n      // function it is permitted here, and special-cased in the\n      // conversion.\n      const isValidArgument = val => {\n        switch (typeof val) {\n          case 'undefined':\n          case 'boolean':\n          case 'string':\n            return true;\n          case 'number':\n            return isFinite(val);\n          case 'object':\n            if (val == null) {\n              return true;\n            }\n\n            if (Array.isArray(val)) {\n              return val.every(isValidArgument);\n            }\n\n            for (const k in val) {\n              if (typeof val[k] !== 'function' && !isValidArgument(val[k])) {\n                return false;\n              }\n            }\n\n            return true;\n          case 'function':\n            return false;\n          default:\n            return false;\n        }\n      };\n\n      // Replacement allows normally non-JSON-convertible values to be\n      // seen.  There is ambiguity with string values, but in context,\n      // it should at least be a strong hint.\n      const replacer = (key, val) => {\n        const t = typeof val;\n        if (t === 'function') {\n          return '<<Function ' + val.name + '>>';\n        } else if (t === 'number' && !isFinite(val)) {\n          return '<<' + val.toString() + '>>';\n        } else {\n          return val;\n        }\n      };\n\n      // Note that JSON.stringify\n      invariant(\n        isValidArgument(params),\n        '%s is not usable as a native method argument',\n        JSON.stringify(params, replacer),\n      );\n\n      // The params object should not be mutated after being queued\n      deepFreezeAndThrowOnMutationInDev(params);\n    }\n    this._queue[PARAMS].push(params);\n\n    const now = Date.now();\n    if (\n      global.nativeFlushQueueImmediate &&\n      now - this._lastFlush >= MIN_TIME_BETWEEN_FLUSHES_MS\n    ) {\n      const queue = this._queue;\n      this._queue = [[], [], [], this._callID];\n      this._lastFlush = now;\n      global.nativeFlushQueueImmediate(queue);\n    }\n    Systrace.counterEvent('pending_js_to_native_queue', this._queue[0].length);\n    if (__DEV__ && this.__spy && isFinite(moduleID)) {\n      this.__spy({\n        type: TO_NATIVE,\n        module: this._remoteModuleTable[moduleID],\n        method: this._remoteMethodTable[moduleID][methodID],\n        args: params,\n      });\n    } else if (this.__spy) {\n      this.__spy({\n        type: TO_NATIVE,\n        module: moduleID + '',\n        method: methodID,\n        args: params,\n      });\n    }\n  }\n\n  createDebugLookup(\n    moduleID: number,\n    name: string,\n    methods: ?$ReadOnlyArray<string>,\n  ) {\n    if (__DEV__) {\n      this._remoteModuleTable[moduleID] = name;\n      this._remoteMethodTable[moduleID] = methods || [];\n    }\n  }\n\n  // For JSTimers to register its callback. Otherwise a circular dependency\n  // between modules is introduced. Note that only one callback may be\n  // registered at a time.\n  setImmediatesCallback(fn: () => void) {\n    this._immediatesCallback = fn;\n  }\n\n  /**\n   * Private methods\n   */\n\n  __guard(fn: () => void) {\n    if (this.__shouldPauseOnThrow()) {\n      fn();\n    } else {\n      try {\n        fn();\n      } catch (error) {\n        ErrorUtils.reportFatalError(error);\n      }\n    }\n  }\n\n  // MessageQueue installs a global handler to catch all exceptions where JS users can register their own behavior\n  // This handler makes all exceptions to be propagated from inside MessageQueue rather than by the VM at their origin\n  // This makes stacktraces to be placed at MessageQueue rather than at where they were launched\n  // The parameter DebuggerInternal.shouldPauseOnThrow is used to check before catching all exceptions and\n  // can be configured by the VM or any Inspector\n  __shouldPauseOnThrow(): boolean {\n    return (\n      // $FlowFixMe\n      typeof DebuggerInternal !== 'undefined' &&\n      DebuggerInternal.shouldPauseOnThrow === true // eslint-disable-line no-undef\n    );\n  }\n\n  __callImmediates() {\n    Systrace.beginEvent('JSTimers.callImmediates()');\n    if (this._immediatesCallback != null) {\n      this._immediatesCallback();\n    }\n    Systrace.endEvent();\n  }\n\n  __callFunction(module: string, method: string, args: mixed[]): void {\n    this._lastFlush = Date.now();\n    this._eventLoopStartTime = this._lastFlush;\n    if (__DEV__ || this.__spy) {\n      Systrace.beginEvent(`${module}.${method}(${stringifySafe(args)})`);\n    } else {\n      Systrace.beginEvent(`${module}.${method}(...)`);\n    }\n    if (this.__spy) {\n      this.__spy({type: TO_JS, module, method, args});\n    }\n    const moduleMethods = this.getCallableModule(module);\n    invariant(\n      !!moduleMethods,\n      `Module ${module} is not a registered callable module (calling ${method}). A frequent cause of the error is that the application entry file path is incorrect. \n      This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.`,\n    );\n    invariant(\n      !!moduleMethods[method],\n      `Method ${method} does not exist on module ${module}`,\n    );\n    moduleMethods[method].apply(moduleMethods, args);\n    Systrace.endEvent();\n  }\n\n  __invokeCallback(cbID: number, args: mixed[]) {\n    this._lastFlush = Date.now();\n    this._eventLoopStartTime = this._lastFlush;\n\n    // The rightmost bit of cbID indicates fail (0) or success (1), the other bits are the callID shifted left.\n    // eslint-disable-next-line no-bitwise\n    const callID = cbID >>> 1;\n    // eslint-disable-next-line no-bitwise\n    const isSuccess = cbID & 1;\n    const callback = isSuccess\n      ? this._successCallbacks.get(callID)\n      : this._failureCallbacks.get(callID);\n\n    if (__DEV__) {\n      const debug = this._debugInfo[callID];\n      const module = debug && this._remoteModuleTable[debug[0]];\n      const method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n      invariant(\n        callback,\n        `No callback found with cbID ${cbID} and callID ${callID} for ` +\n          (method\n            ? ` ${module}.${method} - most likely the callback was already invoked`\n            : `module ${module || '<unknown>'}`) +\n          `. Args: '${stringifySafe(args)}'`,\n      );\n      const profileName = debug\n        ? '<callback for ' + module + '.' + method + '>'\n        : cbID;\n      if (callback && this.__spy) {\n        this.__spy({type: TO_JS, module: null, method: profileName, args});\n      }\n      Systrace.beginEvent(\n        `MessageQueue.invokeCallback(${profileName}, ${stringifySafe(args)})`,\n      );\n    }\n\n    if (!callback) {\n      return;\n    }\n\n    this._successCallbacks.delete(callID);\n    this._failureCallbacks.delete(callID);\n    callback(...args);\n\n    if (__DEV__) {\n      Systrace.endEvent();\n    }\n  }\n}\n\nmodule.exports = MessageQueue;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @format\n * @flow strict\n */\n\nimport type {ErrorUtilsT} from '@react-native/polyfills/error-guard';\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n *\n * However, we still want to treat ErrorUtils as a module so that other modules\n * that use it aren't just using a global variable, so simply export the global\n * variable here. ErrorUtils is originally defined in a file named error-guard.js.\n */\nmodule.exports = (global.ErrorUtils: ErrorUtilsT);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nconst TRACE_TAG_REACT_APPS = 1 << 17; // eslint-disable-line no-bitwise\nconst TRACE_TAG_JS_VM_CALLS = 1 << 27; // eslint-disable-line no-bitwise\n\nlet _enabled = false;\nlet _asyncCookie = 0;\nconst _markStack = [];\nlet _markStackIndex = -1;\nlet _canInstallReactHook = false;\n\n// Implements a subset of User Timing API necessary for React measurements.\n// https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API\nconst REACT_MARKER = '\\u269B';\nconst userTimingPolyfill = __DEV__\n  ? {\n      mark(markName: string) {\n        if (_enabled) {\n          _markStackIndex++;\n          _markStack[_markStackIndex] = markName;\n          let systraceLabel = markName;\n          // Since perf measurements are a shared namespace in User Timing API,\n          // we prefix all React results with a React emoji.\n          if (markName[0] === REACT_MARKER) {\n            // This is coming from React.\n            // Removing component IDs keeps trace colors stable.\n            const indexOfId = markName.lastIndexOf(' (#');\n            const cutoffIndex = indexOfId !== -1 ? indexOfId : markName.length;\n            // Also cut off the emoji because it breaks Systrace\n            systraceLabel = markName.slice(2, cutoffIndex);\n          }\n          Systrace.beginEvent(systraceLabel);\n        }\n      },\n      measure(measureName: string, startMark: ?string, endMark: ?string) {\n        if (_enabled) {\n          invariant(\n            typeof measureName === 'string' &&\n              typeof startMark === 'string' &&\n              typeof endMark === 'undefined',\n            'Only performance.measure(string, string) overload is supported.',\n          );\n          const topMark = _markStack[_markStackIndex];\n          invariant(\n            startMark === topMark,\n            'There was a mismatching performance.measure() call. ' +\n              'Expected \"%s\" but got \"%s.\"',\n            topMark,\n            startMark,\n          );\n          _markStackIndex--;\n          // We can't use more descriptive measureName because Systrace doesn't\n          // let us edit labels post factum.\n          Systrace.endEvent();\n        }\n      },\n      clearMarks(markName: string) {\n        if (_enabled) {\n          if (_markStackIndex === -1) {\n            return;\n          }\n          if (markName === _markStack[_markStackIndex]) {\n            // React uses this for \"cancelling\" started measurements.\n            // Systrace doesn't support deleting measurements, so we just stop them.\n            if (userTimingPolyfill != null) {\n              userTimingPolyfill.measure(markName, markName);\n            }\n          }\n        }\n      },\n      clearMeasures() {\n        // React calls this to avoid memory leaks in browsers, but we don't keep\n        // measurements anyway.\n      },\n    }\n  : null;\n\nfunction installPerformanceHooks(polyfill) {\n  if (polyfill) {\n    if (global.performance === undefined) {\n      global.performance = {};\n    }\n\n    Object.keys(polyfill).forEach(methodName => {\n      if (typeof global.performance[methodName] !== 'function') {\n        global.performance[methodName] = polyfill[methodName];\n      }\n    });\n  }\n}\n\nconst Systrace = {\n  installReactHook() {\n    if (_enabled) {\n      if (__DEV__) {\n        installPerformanceHooks(userTimingPolyfill);\n      }\n    }\n    _canInstallReactHook = true;\n  },\n\n  setEnabled(enabled: boolean) {\n    if (_enabled !== enabled) {\n      if (__DEV__) {\n        if (enabled) {\n          global.nativeTraceBeginLegacy &&\n            global.nativeTraceBeginLegacy(TRACE_TAG_JS_VM_CALLS);\n        } else {\n          global.nativeTraceEndLegacy &&\n            global.nativeTraceEndLegacy(TRACE_TAG_JS_VM_CALLS);\n        }\n        if (_canInstallReactHook) {\n          if (enabled) {\n            installPerformanceHooks(userTimingPolyfill);\n          }\n        }\n      }\n      _enabled = enabled;\n    }\n  },\n\n  isEnabled(): boolean {\n    return _enabled;\n  },\n\n  /**\n   * beginEvent/endEvent for starting and then ending a profile within the same call stack frame\n   **/\n  beginEvent(\n    profileName?: string | (() => string),\n    args?: {[string]: string, ...},\n  ) {\n    if (_enabled) {\n      const profileNameString =\n        typeof profileName === 'function' ? profileName() : profileName;\n      global.nativeTraceBeginSection(\n        TRACE_TAG_REACT_APPS,\n        profileNameString,\n        args,\n      );\n    }\n  },\n\n  endEvent() {\n    if (_enabled) {\n      global.nativeTraceEndSection(TRACE_TAG_REACT_APPS);\n    }\n  },\n\n  /**\n   * beginAsyncEvent/endAsyncEvent for starting and then ending a profile where the end can either\n   * occur on another thread or out of the current stack frame, eg await\n   * the returned cookie variable should be used as input into the endAsyncEvent call to end the profile\n   **/\n  beginAsyncEvent(profileName?: string | (() => string)): number {\n    const cookie = _asyncCookie;\n    if (_enabled) {\n      _asyncCookie++;\n      const profileNameString =\n        typeof profileName === 'function' ? profileName() : profileName;\n      global.nativeTraceBeginAsyncSection(\n        TRACE_TAG_REACT_APPS,\n        profileNameString,\n        cookie,\n      );\n    }\n    return cookie;\n  },\n\n  endAsyncEvent(profileName?: string | (() => string), cookie?: number) {\n    if (_enabled) {\n      const profileNameString =\n        typeof profileName === 'function' ? profileName() : profileName;\n      global.nativeTraceEndAsyncSection(\n        TRACE_TAG_REACT_APPS,\n        profileNameString,\n        cookie,\n      );\n    }\n  },\n\n  /**\n   * counterEvent registers the value to the profileName on the systrace timeline\n   **/\n  counterEvent(profileName?: string | (() => string), value?: number) {\n    if (_enabled) {\n      const profileNameString =\n        typeof profileName === 'function' ? profileName() : profileName;\n      global.nativeTraceCounter &&\n        global.nativeTraceCounter(\n          TRACE_TAG_REACT_APPS,\n          profileNameString,\n          value,\n        );\n    }\n  },\n};\n\nif (__DEV__) {\n  // This is needed, because require callis in polyfills are not processed as\n  // other files. Therefore, calls to `require('moduleId')` are not replaced\n  // with numeric IDs\n  // TODO(davidaurelio) Scan polyfills for dependencies, too (t9759686)\n  (require: $FlowFixMe).Systrace = Systrace;\n}\n\nmodule.exports = Systrace;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * If your application is accepting different values for the same field over\n * time and is doing a diff on them, you can either (1) create a copy or\n * (2) ensure that those values are not mutated behind two passes.\n * This function helps you with (2) by freezing the object and throwing if\n * the user subsequently modifies the value.\n *\n * There are two caveats with this function:\n *   - If the call site is not in strict mode, it will only throw when\n *     mutating existing fields, adding a new one\n *     will unfortunately fail silently :(\n *   - If the object is already frozen or sealed, it will not continue the\n *     deep traversal and will leave leaf nodes unfrozen.\n *\n * Freezing the object and adding the throw mechanism is expensive and will\n * only be used in DEV.\n */\nfunction deepFreezeAndThrowOnMutationInDev<T: {...} | Array<mixed>>(\n  object: T,\n): T {\n  if (__DEV__) {\n    if (\n      typeof object !== 'object' ||\n      object === null ||\n      Object.isFrozen(object) ||\n      Object.isSealed(object)\n    ) {\n      return object;\n    }\n\n    // $FlowFixMe[not-an-object] `object` can be an array, but Object.keys works with arrays too\n    const keys = Object.keys((object: {...} | Array<mixed>));\n    const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      if (hasOwnProperty.call(object, key)) {\n        Object.defineProperty(object, key, {\n          get: identity.bind(null, object[key]),\n        });\n        Object.defineProperty(object, key, {\n          set: throwOnImmutableMutation.bind(null, key),\n        });\n      }\n    }\n\n    Object.freeze(object);\n    Object.seal(object);\n\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      if (hasOwnProperty.call(object, key)) {\n        deepFreezeAndThrowOnMutationInDev(object[key]);\n      }\n    }\n  }\n  return object;\n}\n\nfunction throwOnImmutableMutation(key, value) {\n  throw Error(\n    'You attempted to set the key `' +\n      key +\n      '` with the value `' +\n      JSON.stringify(value) +\n      '` on an object that is meant to be immutable ' +\n      'and has been frozen.',\n  );\n}\n\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport invariant from 'invariant';\n\n/**\n * Tries to stringify with JSON.stringify and toString, but catches exceptions\n * (e.g. from circular objects) and always returns a string and never throws.\n */\nexport function createStringifySafeWithLimits(limits: {|\n  maxDepth?: number,\n  maxStringLimit?: number,\n  maxArrayLimit?: number,\n  maxObjectKeysLimit?: number,\n|}): mixed => string {\n  const {\n    maxDepth = Number.POSITIVE_INFINITY,\n    maxStringLimit = Number.POSITIVE_INFINITY,\n    maxArrayLimit = Number.POSITIVE_INFINITY,\n    maxObjectKeysLimit = Number.POSITIVE_INFINITY,\n  } = limits;\n  const stack = [];\n  function replacer(key: string, value: mixed): mixed {\n    while (stack.length && this !== stack[0]) {\n      stack.shift();\n    }\n\n    if (typeof value === 'string') {\n      const truncatedString = '...(truncated)...';\n      if (value.length > maxStringLimit + truncatedString.length) {\n        return value.substring(0, maxStringLimit) + truncatedString;\n      }\n      return value;\n    }\n    if (typeof value !== 'object' || value === null) {\n      return value;\n    }\n\n    let retval = value;\n    if (Array.isArray(value)) {\n      if (stack.length >= maxDepth) {\n        retval = `[ ... array with ${value.length} values ... ]`;\n      } else if (value.length > maxArrayLimit) {\n        retval = value\n          .slice(0, maxArrayLimit)\n          .concat([\n            `... extra ${value.length - maxArrayLimit} values truncated ...`,\n          ]);\n      }\n    } else {\n      // Add refinement after Array.isArray call.\n      invariant(typeof value === 'object', 'This was already found earlier');\n      let keys = Object.keys(value);\n      if (stack.length >= maxDepth) {\n        retval = `{ ... object with ${keys.length} keys ... }`;\n      } else if (keys.length > maxObjectKeysLimit) {\n        // Return a sample of the keys.\n        retval = {};\n        for (let k of keys.slice(0, maxObjectKeysLimit)) {\n          retval[k] = value[k];\n        }\n        const truncatedKey = '...(truncated keys)...';\n        retval[truncatedKey] = keys.length - maxObjectKeysLimit;\n      }\n    }\n    stack.unshift(retval);\n    return retval;\n  }\n\n  return function stringifySafe(arg: mixed): string {\n    if (arg === undefined) {\n      return 'undefined';\n    } else if (arg === null) {\n      return 'null';\n    } else if (typeof arg === 'function') {\n      try {\n        return arg.toString();\n      } catch (e) {\n        return '[function unknown]';\n      }\n    } else if (arg instanceof Error) {\n      return arg.name + ': ' + arg.message;\n    } else {\n      // Perform a try catch, just in case the object has a circular\n      // reference or stringify throws for some other reason.\n      try {\n        const ret = JSON.stringify(arg, replacer);\n        if (ret === undefined) {\n          return '[\"' + typeof arg + '\" failed to stringify]';\n        }\n        return ret;\n      } catch (e) {\n        if (typeof arg.toString === 'function') {\n          try {\n            // $FlowFixMe: toString shouldn't take any arguments in general.\n            return arg.toString();\n          } catch (E) {}\n        }\n      }\n    }\n    return '[\"' + typeof arg + '\" failed to stringify]';\n  };\n}\n\nconst stringifySafe: mixed => string = createStringifySafeWithLimits({\n  maxDepth: 10,\n  maxStringLimit: 100,\n  maxArrayLimit: 50,\n  maxObjectKeysLimit: 50,\n});\n\nexport default stringifySafe;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Defines a lazily evaluated property on the supplied `object`.\n */\nfunction defineLazyObjectProperty<T>(\n  object: {...},\n  name: string,\n  descriptor: {\n    get: () => T,\n    enumerable?: boolean,\n    writable?: boolean,\n    ...\n  },\n): void {\n  const {get} = descriptor;\n  const enumerable = descriptor.enumerable !== false;\n  const writable = descriptor.writable !== false;\n\n  let value;\n  let valueSet = false;\n  function getValue(): T {\n    // WORKAROUND: A weird infinite loop occurs where calling `getValue` calls\n    // `setValue` which calls `Object.defineProperty` which somehow triggers\n    // `getValue` again. Adding `valueSet` breaks this loop.\n    if (!valueSet) {\n      // Calling `get()` here can trigger an infinite loop if it fails to\n      // remove the getter on the property, which can happen when executing\n      // JS in a V8 context.  `valueSet = true` will break this loop, and\n      // sets the value of the property to undefined, until the code in `get()`\n      // finishes, at which point the property is set to the correct value.\n      valueSet = true;\n      setValue(get());\n    }\n    return value;\n  }\n  function setValue(newValue: T): void {\n    value = newValue;\n    valueSet = true;\n    Object.defineProperty(object, name, {\n      value: newValue,\n      configurable: true,\n      enumerable,\n      writable,\n    });\n  }\n\n  Object.defineProperty(object, name, {\n    get: getValue,\n    set: setValue,\n    configurable: true,\n    enumerable,\n  });\n}\n\nmodule.exports = defineLazyObjectProperty;\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 * @format\n * @flow\n * @generate-docs\n */\n\n'use strict';\n\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst View = require('../View/View');\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\n\nconst PlatformActivityIndicator =\n  Platform.OS === 'android'\n    ? require('../ProgressBarAndroid/ProgressBarAndroid')\n    : require('./ActivityIndicatorViewNativeComponent').default;\n\nconst GRAY = '#999999';\n\ntype IndicatorSize = number | 'small' | 'large';\n\ntype IOSProps = $ReadOnly<{|\n  /**\n    Whether the indicator should hide when not animating.\n\n    @platform ios\n  */\n  hidesWhenStopped?: ?boolean,\n|}>;\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n  ...IOSProps,\n\n  /**\n   \tWhether to show the indicator (`true`) or hide it (`false`).\n   */\n  animating?: ?boolean,\n\n  /**\n    The foreground color of the spinner.\n\n    @default {@platform android} `null` (system accent default color)\n    @default {@platform ios} '#999999'\n  */\n  color?: ?ColorValue,\n\n  /**\n    Size of the indicator.\n\n    @type enum(`'small'`, `'large'`)\n    @type {@platform android} number\n  */\n  size?: ?IndicatorSize,\n|}>;\n\nconst ActivityIndicator = (props: Props, forwardedRef?: any) => {\n  const {onLayout, style, size, ...restProps} = props;\n  let sizeStyle;\n  let sizeProp;\n\n  switch (size) {\n    case 'small':\n      sizeStyle = styles.sizeSmall;\n      sizeProp = 'small';\n      break;\n    case 'large':\n      sizeStyle = styles.sizeLarge;\n      sizeProp = 'large';\n      break;\n    default:\n      sizeStyle = {height: props.size, width: props.size};\n      break;\n  }\n\n  const nativeProps = {\n    ...restProps,\n    ref: forwardedRef,\n    style: sizeStyle,\n    size: sizeProp,\n  };\n\n  const androidProps = {\n    styleAttr: 'Normal',\n    indeterminate: true,\n  };\n\n  return (\n    <View\n      onLayout={onLayout}\n      style={StyleSheet.compose(styles.container, style)}>\n      {Platform.OS === 'android' ? (\n        // $FlowFixMe Flow doesn't know when this is the android component\n        <PlatformActivityIndicator {...nativeProps} {...androidProps} />\n      ) : (\n        /* $FlowFixMe(>=0.106.0 site=react_native_android_fb) This comment\n         * suppresses an error found when Flow v0.106 was deployed. To see the\n         * error, delete this comment and run Flow. */\n        <PlatformActivityIndicator {...nativeProps} />\n      )}\n    </View>\n  );\n};\n\n/**\n  Displays a circular loading indicator.\n\n  ```SnackPlayer name=ActivityIndicator%20Function%20Component%20Example\n  import React from \"react\";\n  import { ActivityIndicator, StyleSheet, Text, View } from \"react-native\";\n\n  const App = () => (\n    <View style={[styles.container, styles.horizontal]}>\n      <ActivityIndicator />\n      <ActivityIndicator size=\"large\" />\n      <ActivityIndicator size=\"small\" color=\"#0000ff\" />\n      <ActivityIndicator size=\"large\" color=\"#00ff00\" />\n    </View>\n  );\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      justifyContent: \"center\"\n    },\n    horizontal: {\n      flexDirection: \"row\",\n      justifyContent: \"space-around\",\n      padding: 10\n    }\n  });\n  export default App;\n  ```\n\n  ```SnackPlayer name=ActivityIndicator%20Class%20Component%20Example\n  import React, { Component } from \"react\";\n  import { ActivityIndicator, StyleSheet, Text, View } from \"react-native\";\n\n  class App extends Component {\n    render() {\n      return (\n        <View style={[styles.container, styles.horizontal]}>\n          <ActivityIndicator />\n          <ActivityIndicator size=\"large\" />\n          <ActivityIndicator size=\"small\" color=\"#0000ff\" />\n          <ActivityIndicator size=\"large\" color=\"#00ff00\" />\n        </View>\n      );\n    }\n  }\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      justifyContent: \"center\"\n    },\n    horizontal: {\n      flexDirection: \"row\",\n      justifyContent: \"space-around\",\n      padding: 10\n    }\n  });\n  export default App;\n  ```\n*/\n\nconst ActivityIndicatorWithRef: React.AbstractComponent<\n  Props,\n  HostComponent<mixed>,\n> = React.forwardRef(ActivityIndicator);\nActivityIndicatorWithRef.displayName = 'ActivityIndicator';\n\n/* $FlowFixMe(>=0.89.0 site=react_native_fb) This comment suppresses an error\n * found when Flow v0.89 was deployed. To see the error, delete this comment\n * and run Flow. */\nActivityIndicatorWithRef.defaultProps = {\n  animating: true,\n  color: Platform.OS === 'ios' ? GRAY : null,\n  hidesWhenStopped: true,\n  size: 'small',\n};\n\nconst styles = StyleSheet.create({\n  container: {\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  sizeSmall: {\n    width: 20,\n    height: 20,\n  },\n  sizeLarge: {\n    width: 36,\n    height: 36,\n  },\n});\n\nmodule.exports = ActivityIndicatorWithRef;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @license React v17.0.2\n * react-jsx-runtime.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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\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","/** @license React v17.0.2\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=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){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 n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport NativePlatformConstantsIOS from './NativePlatformConstantsIOS';\n\nexport type PlatformSelectSpec<D, N, I> = {\n  default?: D,\n  native?: N,\n  ios?: I,\n  ...\n};\n\nconst Platform = {\n  __constants: null,\n  OS: 'ios',\n  // $FlowFixMe[unsafe-getters-setters]\n  get Version(): string {\n    return this.constants.osVersion;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get constants(): {|\n    forceTouchAvailable: boolean,\n    interfaceIdiom: string,\n    isTesting: boolean,\n    osVersion: string,\n    reactNativeVersion: {|\n      major: number,\n      minor: number,\n      patch: number,\n      prerelease: ?number,\n    |},\n    systemName: string,\n  |} {\n    if (this.__constants == null) {\n      this.__constants = NativePlatformConstantsIOS.getConstants();\n    }\n    return this.__constants;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isPad(): boolean {\n    return this.constants.interfaceIdiom === 'pad';\n  },\n  /**\n   * Deprecated, use `isTV` instead.\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  get isTVOS(): boolean {\n    return Platform.isTV;\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isTV(): boolean {\n    return this.constants.interfaceIdiom === 'tv';\n  },\n  // $FlowFixMe[unsafe-getters-setters]\n  get isTesting(): boolean {\n    if (__DEV__) {\n      return this.constants.isTesting;\n    }\n    return false;\n  },\n  select: <D, N, I>(spec: PlatformSelectSpec<D, N, I>): D | N | I =>\n    'ios' in spec ? spec.ios : 'native' in spec ? spec.native : spec.default,\n};\n\nmodule.exports = Platform;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    isTesting: boolean,\n    reactNativeVersion: {|\n      major: number,\n      minor: number,\n      patch: number,\n      prerelease: ?number,\n    |},\n    forceTouchAvailable: boolean,\n    osVersion: string,\n    systemName: string,\n    interfaceIdiom: string,\n  |};\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'PlatformConstants',\n): Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst PixelRatio = require('../Utilities/PixelRatio');\nconst ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');\nconst StyleSheetValidation = require('./StyleSheetValidation');\n\nconst flatten = require('./flattenStyle');\n\nimport type {\n  ____ColorValue_Internal,\n  ____Styles_Internal,\n  ____DangerouslyImpreciseStyle_Internal,\n  ____DangerouslyImpreciseStyleProp_Internal,\n  ____ViewStyle_Internal,\n  ____ViewStyleProp_Internal,\n  ____TextStyle_Internal,\n  ____TextStyleProp_Internal,\n  ____ImageStyle_Internal,\n  ____ImageStyleProp_Internal,\n} from './StyleSheetTypes';\n\n/**\n * This type should be used as the type for anything that is a color. It is\n * most useful when using DynamicColorIOS which can be a string or a dynamic\n * color object.\n *\n * type props = {backgroundColor: ColorValue};\n */\nexport type ColorValue = ____ColorValue_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to a <View>'s `style` prop. This ensures call sites of the component\n * can't pass styles that View doesn't support such as `fontSize`.`\n *\n * type Props = {style: ViewStyleProp}\n * const MyComponent = (props: Props) => <View style={props.style} />\n */\nexport type ViewStyleProp = ____ViewStyleProp_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to a <Text>'s `style` prop. This ensures call sites of the component\n * can't pass styles that Text doesn't support such as `resizeMode`.`\n *\n * type Props = {style: TextStyleProp}\n * const MyComponent = (props: Props) => <Text style={props.style} />\n */\nexport type TextStyleProp = ____TextStyleProp_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to an <Image>'s `style` prop. This ensures call sites of the component\n * can't pass styles that Image doesn't support such as `fontSize`.`\n *\n * type Props = {style: ImageStyleProp}\n * const MyComponent = (props: Props) => <Image style={props.style} />\n */\nexport type ImageStyleProp = ____ImageStyleProp_Internal;\n\n/**\n * WARNING: You probably shouldn't be using this type. This type\n * is similar to the ones above except it allows styles that are accepted\n * by all of View, Text, or Image. It is therefore very unsafe to pass this\n * through to an underlying component. Using this is almost always a mistake\n * and using one of the other more restrictive types is likely the right choice.\n */\nexport type DangerouslyImpreciseStyleProp = ____DangerouslyImpreciseStyleProp_Internal;\n\n/**\n * Utility type for getting the values for specific style keys.\n *\n * The following is bad because position is more restrictive than 'string':\n * ```\n * type Props = {position: string};\n * ```\n *\n * You should use the following instead:\n *\n * ```\n * type Props = {position: TypeForStyleKey<'position'>};\n * ```\n *\n * This will correctly give you the type 'absolute' | 'relative'\n */\nexport type TypeForStyleKey<\n  +key: $Keys<____DangerouslyImpreciseStyle_Internal>,\n> = $ElementType<____DangerouslyImpreciseStyle_Internal, key>;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for View.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using ViewStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to a View that can't be precomputed with\n * StyleSheet.create.\n */\nexport type ViewStyle = ____ViewStyle_Internal;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for Text.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using TextStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to a Text that can't be precomputed with\n * StyleSheet.create.\n */\nexport type TextStyle = ____TextStyle_Internal;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for Image.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using ImageStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to an Image that can't be precomputed with\n * StyleSheet.create.\n */\nexport type ImageStyle = ____ImageStyle_Internal;\n\n/**\n * WARNING: You probably shouldn't be using this type. This type is an object\n * with all possible style keys and their values. Note that this isn't\n * a safe way to type a style prop for a component as results from\n * StyleSheet.create return an internal identifier, not an object of styles.\n *\n * If you want to type the style prop of a function, consider using\n * ViewStyleProp, TextStyleProp, or ImageStyleProp.\n *\n * This should only be used by very core utilities that operate on an object\n * containing any possible style value.\n */\nexport type DangerouslyImpreciseStyle = ____DangerouslyImpreciseStyle_Internal;\n\nlet hairlineWidth: number = PixelRatio.roundToNearestPixel(0.4);\nif (hairlineWidth === 0) {\n  hairlineWidth = 1 / PixelRatio.get();\n}\n\nconst absoluteFill = {\n  position: 'absolute',\n  left: 0,\n  right: 0,\n  top: 0,\n  bottom: 0,\n};\nif (__DEV__) {\n  Object.freeze(absoluteFill);\n}\n\n/**\n * A StyleSheet is an abstraction similar to CSS StyleSheets\n *\n * Create a new StyleSheet:\n *\n * ```\n * const styles = StyleSheet.create({\n *   container: {\n *     borderRadius: 4,\n *     borderWidth: 0.5,\n *     borderColor: '#d6d7da',\n *   },\n *   title: {\n *     fontSize: 19,\n *     fontWeight: 'bold',\n *   },\n *   activeTitle: {\n *     color: 'red',\n *   },\n * });\n * ```\n *\n * Use a StyleSheet:\n *\n * ```\n * <View style={styles.container}>\n *   <Text style={[styles.title, this.props.isActive && styles.activeTitle]} />\n * </View>\n * ```\n *\n * Code quality:\n *\n *  - By moving styles away from the render function, you're making the code\n *  easier to understand.\n *  - Naming the styles is a good way to add meaning to the low level components\n *  in the render function.\n *\n * Performance:\n *\n *  - Making a stylesheet from a style object makes it possible to refer to it\n * by ID instead of creating a new style object every time.\n *  - It also allows to send the style only once through the bridge. All\n * subsequent uses are going to refer an id (not implemented yet).\n */\nmodule.exports = {\n  /**\n   * This is defined as the width of a thin line on the platform. It can be\n   * used as the thickness of a border or division between two elements.\n   * Example:\n   * ```\n   *   {\n   *     borderBottomColor: '#bbb',\n   *     borderBottomWidth: StyleSheet.hairlineWidth\n   *   }\n   * ```\n   *\n   * This constant will always be a round number of pixels (so a line defined\n   * by it look crisp) and will try to match the standard width of a thin line\n   * on the underlying platform. However, you should not rely on it being a\n   * constant size, because on different platforms and screen densities its\n   * value may be calculated differently.\n   *\n   * A line with hairline width may not be visible if your simulator is downscaled.\n   */\n  hairlineWidth,\n\n  /**\n   * A very common pattern is to create overlays with position absolute and zero positioning,\n   * so `absoluteFill` can be used for convenience and to reduce duplication of these repeated\n   * styles.\n   */\n  absoluteFill: (absoluteFill: any), // TODO: This should be updated after we fix downstream Flow sites.\n\n  /**\n   * Sometimes you may want `absoluteFill` but with a couple tweaks - `absoluteFillObject` can be\n   * used to create a customized entry in a `StyleSheet`, e.g.:\n   *\n   *   const styles = StyleSheet.create({\n   *     wrapper: {\n   *       ...StyleSheet.absoluteFillObject,\n   *       top: 10,\n   *       backgroundColor: 'transparent',\n   *     },\n   *   });\n   */\n  absoluteFillObject: absoluteFill,\n\n  /**\n   * Combines two styles such that `style2` will override any styles in `style1`.\n   * If either style is falsy, the other one is returned without allocating an\n   * array, saving allocations and maintaining reference equality for\n   * PureComponent checks.\n   */\n  compose<T: DangerouslyImpreciseStyleProp>(\n    style1: ?T,\n    style2: ?T,\n  ): ?T | $ReadOnlyArray<T> {\n    if (style1 != null && style2 != null) {\n      return ([style1, style2]: $ReadOnlyArray<T>);\n    } else {\n      return style1 != null ? style1 : style2;\n    }\n  },\n\n  /**\n   * Flattens an array of style objects, into one aggregated style object.\n   * Alternatively, this method can be used to lookup IDs, returned by\n   * StyleSheet.register.\n   *\n   * > **NOTE**: Exercise caution as abusing this can tax you in terms of\n   * > optimizations.\n   * >\n   * > IDs enable optimizations through the bridge and memory in general. Referring\n   * > to style objects directly will deprive you of these optimizations.\n   *\n   * Example:\n   * ```\n   * const styles = StyleSheet.create({\n   *   listItem: {\n   *     flex: 1,\n   *     fontSize: 16,\n   *     color: 'white'\n   *   },\n   *   selectedListItem: {\n   *     color: 'green'\n   *   }\n   * });\n   *\n   * StyleSheet.flatten([styles.listItem, styles.selectedListItem])\n   * // returns { flex: 1, fontSize: 16, color: 'green' }\n   * ```\n   * Alternative use:\n   * ```\n   * StyleSheet.flatten(styles.listItem);\n   * // return { flex: 1, fontSize: 16, color: 'white' }\n   * // Simply styles.listItem would return its ID (number)\n   * ```\n   * This method internally uses `StyleSheetRegistry.getStyleByID(style)`\n   * to resolve style objects represented by IDs. Thus, an array of style\n   * objects (instances of StyleSheet.create), are individually resolved to,\n   * their respective objects, merged as one and then returned. This also explains\n   * the alternative use.\n   */\n  flatten,\n\n  /**\n   * WARNING: EXPERIMENTAL. Breaking changes will probably happen a lot and will\n   * not be reliably announced. The whole thing might be deleted, who knows? Use\n   * at your own risk.\n   *\n   * Sets a function to use to pre-process a style property value. This is used\n   * internally to process color and transform values. You should not use this\n   * unless you really know what you are doing and have exhausted other options.\n   */\n  setStyleAttributePreprocessor(\n    property: string,\n    process: (nextProp: mixed) => mixed,\n  ) {\n    let value;\n\n    if (ReactNativeStyleAttributes[property] === true) {\n      value = {};\n    } else if (typeof ReactNativeStyleAttributes[property] === 'object') {\n      value = ReactNativeStyleAttributes[property];\n    } else {\n      console.error(`${property} is not a valid style attribute`);\n      return;\n    }\n\n    if (__DEV__ && typeof value.process === 'function') {\n      console.warn(`Overwriting ${property} style attribute preprocessor`);\n    }\n\n    ReactNativeStyleAttributes[property] = {...value, process};\n  },\n\n  /**\n   * Creates a StyleSheet style reference from the given object.\n   */\n  create<+S: ____Styles_Internal>(obj: S): $ReadOnly<S> {\n    // TODO: This should return S as the return type. But first,\n    // we need to codemod all the callsites that are typing this\n    // return value as a number (even though it was opaque).\n    if (__DEV__) {\n      for (const key in obj) {\n        StyleSheetValidation.validateStyle(key, obj);\n        if (obj[key]) {\n          Object.freeze(obj[key]);\n        }\n      }\n    }\n    return obj;\n  },\n};\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Dimensions = require('./Dimensions');\n\n/**\n * PixelRatio class gives access to the device pixel density.\n *\n * ## Fetching a correctly sized image\n *\n * You should get a higher resolution image if you are on a high pixel density\n * device. A good rule of thumb is to multiply the size of the image you display\n * by the pixel ratio.\n *\n * ```\n * var image = getImage({\n *   width: PixelRatio.getPixelSizeForLayoutSize(200),\n *   height: PixelRatio.getPixelSizeForLayoutSize(100),\n * });\n * <Image source={image} style={{width: 200, height: 100}} />\n * ```\n *\n * ## Pixel grid snapping\n *\n * In iOS, you can specify positions and dimensions for elements with arbitrary\n * precision, for example 29.674825. But, ultimately the physical display only\n * have a fixed number of pixels, for example 640×960 for iPhone 4 or 750×1334\n * for iPhone 6. iOS tries to be as faithful as possible to the user value by\n * spreading one original pixel into multiple ones to trick the eye. The\n * downside of this technique is that it makes the resulting element look\n * blurry.\n *\n * In practice, we found out that developers do not want this feature and they\n * have to work around it by doing manual rounding in order to avoid having\n * blurry elements. In React Native, we are rounding all the pixels\n * automatically.\n *\n * We have to be careful when to do this rounding. You never want to work with\n * rounded and unrounded values at the same time as you're going to accumulate\n * rounding errors. Having even one rounding error is deadly because a one\n * pixel border may vanish or be twice as big.\n *\n * In React Native, everything in JavaScript and within the layout engine works\n * with arbitrary precision numbers. It's only when we set the position and\n * dimensions of the native element on the main thread that we round. Also,\n * rounding is done relative to the root rather than the parent, again to avoid\n * accumulating rounding errors.\n *\n */\nclass PixelRatio {\n  /**\n   * Returns the device pixel density. Some examples:\n   *\n   *   - PixelRatio.get() === 1\n   *     - mdpi Android devices (160 dpi)\n   *   - PixelRatio.get() === 1.5\n   *     - hdpi Android devices (240 dpi)\n   *   - PixelRatio.get() === 2\n   *     - iPhone 4, 4S\n   *     - iPhone 5, 5c, 5s\n   *     - iPhone 6\n   *     - iPhone 7\n   *     - iPhone 8\n   *     - iPhone SE\n   *     - xhdpi Android devices (320 dpi)\n   *   - PixelRatio.get() === 3\n   *     - iPhone 6 Plus\n   *     - iPhone 7 Plus\n   *     - iPhone 8 Plus\n   *     - iPhone X\n   *     - xxhdpi Android devices (480 dpi)\n   *   - PixelRatio.get() === 3.5\n   *     - Nexus 6\n   */\n  static get(): number {\n    return Dimensions.get('window').scale;\n  }\n\n  /**\n   * Returns the scaling factor for font sizes. This is the ratio that is used to calculate the\n   * absolute font size, so any elements that heavily depend on that should use this to do\n   * calculations.\n   *\n   * If a font scale is not set, this returns the device pixel ratio.\n   *\n   * This reflects the user preference set in:\n   *  - Settings > Display > Font size on Android,\n   *  - Settings > Display & Brightness > Text Size on iOS.\n   */\n  static getFontScale(): number {\n    return Dimensions.get('window').fontScale || PixelRatio.get();\n  }\n\n  /**\n   * Converts a layout size (dp) to pixel size (px).\n   *\n   * Guaranteed to return an integer number.\n   */\n  static getPixelSizeForLayoutSize(layoutSize: number): number {\n    return Math.round(layoutSize * PixelRatio.get());\n  }\n\n  /**\n   * Rounds a layout size (dp) to the nearest layout size that corresponds to\n   * an integer number of pixels. For example, on a device with a PixelRatio\n   * of 3, `PixelRatio.roundToNearestPixel(8.4) = 8.33`, which corresponds to\n   * exactly (8.33 * 3) = 25 pixels.\n   */\n  static roundToNearestPixel(layoutSize: number): number {\n    const ratio = PixelRatio.get();\n    return Math.round(layoutSize * ratio) / ratio;\n  }\n\n  // No-op for iOS, but used on the web. Should not be documented.\n  static startDetecting() {}\n}\n\nmodule.exports = PixelRatio;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport EventEmitter from '../vendor/emitter/EventEmitter';\nimport RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';\nimport NativeDeviceInfo, {\n  type DisplayMetrics,\n  type DimensionsPayload,\n} from './NativeDeviceInfo';\nimport invariant from 'invariant';\n\ntype DimensionsValue = {\n  window?: DisplayMetrics,\n  screen?: DisplayMetrics,\n  ...\n};\n\nconst eventEmitter = new EventEmitter();\nlet dimensionsInitialized = false;\nlet dimensions: DimensionsValue;\n\nclass Dimensions {\n  /**\n   * NOTE: `useWindowDimensions` is the preffered API for React components.\n   *\n   * Initial dimensions are set before `runApplication` is called so they should\n   * be available before any other require's are run, but may be updated later.\n   *\n   * Note: Although dimensions are available immediately, they may change (e.g\n   * due to device rotation) so any rendering logic or styles that depend on\n   * these constants should try to call this function on every render, rather\n   * than caching the value (for example, using inline styles rather than\n   * setting a value in a `StyleSheet`).\n   *\n   * Example: `const {height, width} = Dimensions.get('window');`\n   *\n   * @param {string} dim Name of dimension as defined when calling `set`.\n   * @returns {Object?} Value for the dimension.\n   */\n  static get(dim: string): Object {\n    invariant(dimensions[dim], 'No dimension set for key ' + dim);\n    return dimensions[dim];\n  }\n\n  /**\n   * This should only be called from native code by sending the\n   * didUpdateDimensions event.\n   *\n   * @param {object} dims Simple string-keyed object of dimensions to set\n   */\n  static set(dims: $ReadOnly<{[key: string]: any, ...}>): void {\n    // We calculate the window dimensions in JS so that we don't encounter loss of\n    // precision in transferring the dimensions (which could be non-integers) over\n    // the bridge.\n    let {screen, window} = dims;\n    const {windowPhysicalPixels} = dims;\n    if (windowPhysicalPixels) {\n      window = {\n        width: windowPhysicalPixels.width / windowPhysicalPixels.scale,\n        height: windowPhysicalPixels.height / windowPhysicalPixels.scale,\n        scale: windowPhysicalPixels.scale,\n        fontScale: windowPhysicalPixels.fontScale,\n      };\n    }\n    const {screenPhysicalPixels} = dims;\n    if (screenPhysicalPixels) {\n      screen = {\n        width: screenPhysicalPixels.width / screenPhysicalPixels.scale,\n        height: screenPhysicalPixels.height / screenPhysicalPixels.scale,\n        scale: screenPhysicalPixels.scale,\n        fontScale: screenPhysicalPixels.fontScale,\n      };\n    } else if (screen == null) {\n      screen = window;\n    }\n\n    dimensions = {window, screen};\n    if (dimensionsInitialized) {\n      // Don't fire 'change' the first time the dimensions are set.\n      eventEmitter.emit('change', dimensions);\n    } else {\n      dimensionsInitialized = true;\n    }\n  }\n\n  /**\n   * Add an event handler. Supported events:\n   *\n   * - `change`: Fires when a property within the `Dimensions` object changes. The argument\n   *   to the event handler is an object with `window` and `screen` properties whose values\n   *   are the same as the return values of `Dimensions.get('window')` and\n   *   `Dimensions.get('screen')`, respectively.\n   */\n  static addEventListener(type: 'change', handler: Function) {\n    invariant(\n      type === 'change',\n      'Trying to subscribe to unknown event: \"%s\"',\n      type,\n    );\n    eventEmitter.addListener(type, handler);\n  }\n\n  /**\n   * Remove an event handler.\n   */\n  static removeEventListener(type: 'change', handler: Function) {\n    invariant(\n      type === 'change',\n      'Trying to remove listener for unknown event: \"%s\"',\n      type,\n    );\n    eventEmitter.removeListener(type, handler);\n  }\n}\n\nlet initialDims: ?$ReadOnly<{[key: string]: any, ...}> =\n  global.nativeExtensions &&\n  global.nativeExtensions.DeviceInfo &&\n  global.nativeExtensions.DeviceInfo.Dimensions;\nif (!initialDims) {\n  // Subscribe before calling getConstants to make sure we don't miss any updates in between.\n  RCTDeviceEventEmitter.addListener(\n    'didUpdateDimensions',\n    (update: DimensionsPayload) => {\n      Dimensions.set(update);\n    },\n  );\n  initialDims = NativeDeviceInfo.getConstants().Dimensions;\n}\n\nDimensions.set(initialDims);\n\nmodule.exports = Dimensions;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\ntype DisplayMetricsAndroid = {|\n  width: number,\n  height: number,\n  scale: number,\n  fontScale: number,\n  densityDpi: number,\n|};\n\nexport type DisplayMetrics = {|\n  width: number,\n  height: number,\n  scale: number,\n  fontScale: number,\n|};\n\nexport type DimensionsPayload = {|\n  window?: DisplayMetrics,\n  screen?: DisplayMetrics,\n  windowPhysicalPixels?: DisplayMetricsAndroid,\n  screenPhysicalPixels?: DisplayMetricsAndroid,\n|};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    +Dimensions: DimensionsPayload,\n    +isIPhoneX_deprecated?: boolean,\n  |};\n}\n\nconst NativeModule: Spec = TurboModuleRegistry.getEnforcing<Spec>('DeviceInfo');\nlet constants = null;\n\nconst NativeDeviceInfo = {\n  getConstants(): {|\n    +Dimensions: DimensionsPayload,\n    +isIPhoneX_deprecated?: boolean,\n  |} {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n    return constants;\n  },\n};\n\nexport default NativeDeviceInfo;\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 * @format strict-local\n * @flow\n */\n\n'use strict';\n\nconst DeprecatedImageStylePropTypes = require('../../DeprecatedPropTypes/DeprecatedImageStylePropTypes');\nconst DeprecatedTextStylePropTypes = require('../../DeprecatedPropTypes/DeprecatedTextStylePropTypes');\nconst DeprecatedViewStylePropTypes = require('../../DeprecatedPropTypes/DeprecatedViewStylePropTypes');\n\nconst processColor = require('../../StyleSheet/processColor');\nconst processTransform = require('../../StyleSheet/processTransform');\nconst sizesDiffer = require('../../Utilities/differ/sizesDiffer');\n\ntype ReturnBoolType = <V>(V) => true;\ntype BoolifiedDeprecatedViewStylePropTypes = $ObjMap<\n  typeof DeprecatedViewStylePropTypes,\n  ReturnBoolType,\n>;\ntype BoolifiedDeprecatedTextStylePropTypes = $ObjMapi<\n  typeof DeprecatedTextStylePropTypes,\n  ReturnBoolType,\n>;\ntype BoolifiedDeprecatedImageStylePropTypes = $ObjMapi<\n  typeof DeprecatedImageStylePropTypes,\n  ReturnBoolType,\n>;\n\ntype StyleAttributesType = {\n  ...BoolifiedDeprecatedViewStylePropTypes,\n  ...BoolifiedDeprecatedTextStylePropTypes,\n  ...BoolifiedDeprecatedImageStylePropTypes,\n  transform: $ReadOnly<{|process: typeof processTransform|}> | true,\n  shadowOffset: $ReadOnly<{|diff: typeof sizesDiffer|}> | true,\n  backgroundColor: typeof colorAttributes | true,\n  borderBottomColor: typeof colorAttributes | true,\n  borderColor: typeof colorAttributes | true,\n  borderLeftColor: typeof colorAttributes | true,\n  borderRightColor: typeof colorAttributes | true,\n  borderTopColor: typeof colorAttributes | true,\n  borderStartColor: typeof colorAttributes | true,\n  borderEndColor: typeof colorAttributes | true,\n  color: typeof colorAttributes | true,\n  shadowColor: typeof colorAttributes | true,\n  textDecorationColor: typeof colorAttributes | true,\n  tintColor: typeof colorAttributes | true,\n  textShadowColor: typeof colorAttributes | true,\n  overlayColor: typeof colorAttributes | true,\n  ...\n};\n\nconst ReactNativeStyleAttributes: StyleAttributesType = {};\n\nfor (const attributeName of Object.keys({\n  ...DeprecatedViewStylePropTypes,\n  ...DeprecatedTextStylePropTypes,\n  ...DeprecatedImageStylePropTypes,\n})) {\n  ReactNativeStyleAttributes[attributeName] = true;\n}\n\nReactNativeStyleAttributes.transform = {process: processTransform};\nReactNativeStyleAttributes.shadowOffset = {diff: sizesDiffer};\n\nconst colorAttributes = {process: processColor};\nReactNativeStyleAttributes.backgroundColor = colorAttributes;\nReactNativeStyleAttributes.borderBottomColor = colorAttributes;\nReactNativeStyleAttributes.borderColor = colorAttributes;\nReactNativeStyleAttributes.borderLeftColor = colorAttributes;\nReactNativeStyleAttributes.borderRightColor = colorAttributes;\nReactNativeStyleAttributes.borderTopColor = colorAttributes;\nReactNativeStyleAttributes.borderStartColor = colorAttributes;\nReactNativeStyleAttributes.borderEndColor = colorAttributes;\nReactNativeStyleAttributes.color = colorAttributes;\nReactNativeStyleAttributes.shadowColor = colorAttributes;\nReactNativeStyleAttributes.textDecorationColor = colorAttributes;\nReactNativeStyleAttributes.tintColor = colorAttributes;\nReactNativeStyleAttributes.textShadowColor = colorAttributes;\nReactNativeStyleAttributes.overlayColor = colorAttributes;\n\nmodule.exports = ReactNativeStyleAttributes;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedColorPropType = require('./DeprecatedColorPropType');\nconst DeprecatedLayoutPropTypes = require('./DeprecatedLayoutPropTypes');\nconst DeprecatedShadowPropTypesIOS = require('./DeprecatedShadowPropTypesIOS');\nconst DeprecatedTransformPropTypes = require('./DeprecatedTransformPropTypes');\nconst ReactPropTypes = require('prop-types');\n\nconst ImageStylePropTypes = {\n  ...DeprecatedLayoutPropTypes,\n  ...DeprecatedShadowPropTypesIOS,\n  ...DeprecatedTransformPropTypes,\n  resizeMode: (ReactPropTypes.oneOf([\n    'center',\n    'contain',\n    'cover',\n    'repeat',\n    'stretch',\n  ]): React$PropType$Primitive<\n    'center' | 'contain' | 'cover' | 'repeat' | 'stretch',\n  >),\n  backfaceVisibility: (ReactPropTypes.oneOf([\n    'visible',\n    'hidden',\n  ]): React$PropType$Primitive<'visible' | 'hidden'>),\n  backgroundColor: DeprecatedColorPropType,\n  borderColor: DeprecatedColorPropType,\n  borderWidth: ReactPropTypes.number,\n  borderRadius: ReactPropTypes.number,\n  overflow: (ReactPropTypes.oneOf([\n    'visible',\n    'hidden',\n  ]): React$PropType$Primitive<'visible' | 'hidden'>),\n\n  /**\n   * Changes the color of all the non-transparent pixels to the tintColor.\n   */\n  tintColor: DeprecatedColorPropType,\n  opacity: ReactPropTypes.number,\n  /**\n   * When the image has rounded corners, specifying an overlayColor will\n   * cause the remaining space in the corners to be filled with a solid color.\n   * This is useful in cases which are not supported by the Android\n   * implementation of rounded corners:\n   *   - Certain resize modes, such as 'contain'\n   *   - Animated GIFs\n   *\n   * A typical way to use this prop is with images displayed on a solid\n   * background and setting the `overlayColor` to the same color\n   * as the background.\n   *\n   * For details of how this works under the hood, see\n   * http://frescolib.org/docs/rounded-corners-and-circles.html\n   *\n   * @platform android\n   */\n  overlayColor: ReactPropTypes.string,\n\n  // Android-Specific styles\n  borderTopLeftRadius: ReactPropTypes.number,\n  borderTopRightRadius: ReactPropTypes.number,\n  borderBottomLeftRadius: ReactPropTypes.number,\n  borderBottomRightRadius: ReactPropTypes.number,\n};\n\nmodule.exports = ImageStylePropTypes;\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 * @format\n */\n\n'use strict';\n\nconst normalizeColor = require('../StyleSheet/normalizeColor');\n\nconst colorPropType = function(\n  isRequired,\n  props,\n  propName,\n  componentName,\n  location,\n  propFullName,\n) {\n  const color = props[propName];\n  if (color === undefined || color === null) {\n    if (isRequired) {\n      return new Error(\n        'Required ' +\n          location +\n          ' `' +\n          (propFullName || propName) +\n          '` was not specified in `' +\n          componentName +\n          '`.',\n      );\n    }\n    return;\n  }\n\n  if (typeof color === 'number') {\n    // Developers should not use a number, but we are using the prop type\n    // both for user provided colors and for transformed ones. This isn't ideal\n    // and should be fixed but will do for now...\n    return;\n  }\n\n  if (normalizeColor(color) === null) {\n    return new Error(\n      'Invalid ' +\n        location +\n        ' `' +\n        (propFullName || propName) +\n        '` supplied to `' +\n        componentName +\n        '`: ' +\n        color +\n        '\\n' +\n        `Valid color formats are\n  - '#f0f' (#rgb)\n  - '#f0fc' (#rgba)\n  - '#ff00ff' (#rrggbb)\n  - '#ff00ff00' (#rrggbbaa)\n  - 'rgb(255, 255, 255)'\n  - 'rgba(255, 255, 255, 1.0)'\n  - 'hsl(360, 100%, 100%)'\n  - 'hsla(360, 100%, 100%, 1.0)'\n  - 'transparent'\n  - 'red'\n  - 0xff00ff00 (0xrrggbbaa)\n`,\n    );\n  }\n};\n\nconst ColorPropType = colorPropType.bind(null, false /* isRequired */);\nColorPropType.isRequired = colorPropType.bind(null, true /* isRequired */);\n\nmodule.exports = ColorPropType;\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 * @format\n * @flow\n */\n\n/* eslint no-bitwise: 0 */\n\n'use strict';\n\nimport normalizeColorBase from '@react-native/normalize-color/base';\n\nimport type {ColorValue} from './StyleSheet';\nimport type {ProcessedColorValue} from './processColor';\n\nfunction normalizeColor(\n  color: ?(ColorValue | ProcessedColorValue),\n): ?ProcessedColorValue {\n  if (typeof color === 'object' && color != null) {\n    const {normalizeColorObject} = require('./PlatformColorValueTypes');\n    const normalizedColor = normalizeColorObject(color);\n    if (normalizedColor != null) {\n      return color;\n    }\n  }\n\n  if (typeof color === 'string' || typeof color === 'number') {\n    return normalizeColorBase(color);\n  }\n}\n\nmodule.exports = normalizeColor;\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 * @format\n * @flow\n */\n\n/* eslint no-bitwise: 0 */\n\n'use strict';\n\nfunction normalizeColorBase(color: ?string | number): null | number {\n  const matchers = getMatchers();\n  let match;\n\n  if (typeof color === 'number') {\n    if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n      return color;\n    }\n    return null;\n  }\n\n  if (typeof color !== 'string') {\n    return null;\n  }\n\n  // Ordered based on occurrences on Facebook codebase\n  if ((match = matchers.hex6.exec(color))) {\n    return parseInt(match[1] + 'ff', 16) >>> 0;\n  }\n\n  if (names.hasOwnProperty(color)) {\n    return names[color];\n  }\n\n  if ((match = matchers.rgb.exec(color))) {\n    return (\n      // b\n      ((parse255(match[1]) << 24) | // r\n      (parse255(match[2]) << 16) | // g\n        (parse255(match[3]) << 8) |\n        0x000000ff) >>> // a\n      0\n    );\n  }\n\n  if ((match = matchers.rgba.exec(color))) {\n    return (\n      // b\n      ((parse255(match[1]) << 24) | // r\n      (parse255(match[2]) << 16) | // g\n        (parse255(match[3]) << 8) |\n        parse1(match[4])) >>> // a\n      0\n    );\n  }\n\n  if ((match = matchers.hex3.exec(color))) {\n    return (\n      parseInt(\n        match[1] +\n        match[1] + // r\n        match[2] +\n        match[2] + // g\n        match[3] +\n        match[3] + // b\n          'ff', // a\n        16,\n      ) >>> 0\n    );\n  }\n\n  // https://drafts.csswg.org/css-color-4/#hex-notation\n  if ((match = matchers.hex8.exec(color))) {\n    return parseInt(match[1], 16) >>> 0;\n  }\n\n  if ((match = matchers.hex4.exec(color))) {\n    return (\n      parseInt(\n        match[1] +\n        match[1] + // r\n        match[2] +\n        match[2] + // g\n        match[3] +\n        match[3] + // b\n          match[4] +\n          match[4], // a\n        16,\n      ) >>> 0\n    );\n  }\n\n  if ((match = matchers.hsl.exec(color))) {\n    return (\n      (hslToRgb(\n        parse360(match[1]), // h\n        parsePercentage(match[2]), // s\n        parsePercentage(match[3]), // l\n      ) |\n        0x000000ff) >>> // a\n      0\n    );\n  }\n\n  if ((match = matchers.hsla.exec(color))) {\n    return (\n      (hslToRgb(\n        parse360(match[1]), // h\n        parsePercentage(match[2]), // s\n        parsePercentage(match[3]), // l\n      ) |\n        parse1(match[4])) >>> // a\n      0\n    );\n  }\n\n  return null;\n}\n\nfunction hue2rgb(p: number, q: number, t: number): number {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\n\nfunction hslToRgb(h: number, s: number, l: number): number {\n  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  const p = 2 * l - q;\n  const r = hue2rgb(p, q, h + 1 / 3);\n  const g = hue2rgb(p, q, h);\n  const b = hue2rgb(p, q, h - 1 / 3);\n\n  return (\n    (Math.round(r * 255) << 24) |\n    (Math.round(g * 255) << 16) |\n    (Math.round(b * 255) << 8)\n  );\n}\n\n// var INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...args) {\n  return '\\\\(\\\\s*(' + args.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nlet cachedMatchers;\n\nfunction getMatchers() {\n  if (cachedMatchers === undefined) {\n    cachedMatchers = {\n      rgb: new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)),\n      rgba: new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)),\n      hsl: new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)),\n      hsla: new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)),\n      hex3: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex4: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n      hex6: /^#([0-9a-fA-F]{6})$/,\n      hex8: /^#([0-9a-fA-F]{8})$/,\n    };\n  }\n  return cachedMatchers;\n}\n\nfunction parse255(str: string): number {\n  const int = parseInt(str, 10);\n  if (int < 0) {\n    return 0;\n  }\n  if (int > 255) {\n    return 255;\n  }\n  return int;\n}\n\nfunction parse360(str: string): number {\n  const int = parseFloat(str);\n  return (((int % 360) + 360) % 360) / 360;\n}\n\nfunction parse1(str: string): number {\n  const num = parseFloat(str);\n  if (num < 0) {\n    return 0;\n  }\n  if (num > 1) {\n    return 255;\n  }\n  return Math.round(num * 255);\n}\n\nfunction parsePercentage(str: string): number {\n  // parseFloat conveniently ignores the final %\n  const int = parseFloat(str);\n  if (int < 0) {\n    return 0;\n  }\n  if (int > 100) {\n    return 1;\n  }\n  return int / 100;\n}\n\nconst names = {\n  transparent: 0x00000000,\n\n  // http://www.w3.org/TR/css3-color/#svg-color\n  aliceblue: 0xf0f8ffff,\n  antiquewhite: 0xfaebd7ff,\n  aqua: 0x00ffffff,\n  aquamarine: 0x7fffd4ff,\n  azure: 0xf0ffffff,\n  beige: 0xf5f5dcff,\n  bisque: 0xffe4c4ff,\n  black: 0x000000ff,\n  blanchedalmond: 0xffebcdff,\n  blue: 0x0000ffff,\n  blueviolet: 0x8a2be2ff,\n  brown: 0xa52a2aff,\n  burlywood: 0xdeb887ff,\n  burntsienna: 0xea7e5dff,\n  cadetblue: 0x5f9ea0ff,\n  chartreuse: 0x7fff00ff,\n  chocolate: 0xd2691eff,\n  coral: 0xff7f50ff,\n  cornflowerblue: 0x6495edff,\n  cornsilk: 0xfff8dcff,\n  crimson: 0xdc143cff,\n  cyan: 0x00ffffff,\n  darkblue: 0x00008bff,\n  darkcyan: 0x008b8bff,\n  darkgoldenrod: 0xb8860bff,\n  darkgray: 0xa9a9a9ff,\n  darkgreen: 0x006400ff,\n  darkgrey: 0xa9a9a9ff,\n  darkkhaki: 0xbdb76bff,\n  darkmagenta: 0x8b008bff,\n  darkolivegreen: 0x556b2fff,\n  darkorange: 0xff8c00ff,\n  darkorchid: 0x9932ccff,\n  darkred: 0x8b0000ff,\n  darksalmon: 0xe9967aff,\n  darkseagreen: 0x8fbc8fff,\n  darkslateblue: 0x483d8bff,\n  darkslategray: 0x2f4f4fff,\n  darkslategrey: 0x2f4f4fff,\n  darkturquoise: 0x00ced1ff,\n  darkviolet: 0x9400d3ff,\n  deeppink: 0xff1493ff,\n  deepskyblue: 0x00bfffff,\n  dimgray: 0x696969ff,\n  dimgrey: 0x696969ff,\n  dodgerblue: 0x1e90ffff,\n  firebrick: 0xb22222ff,\n  floralwhite: 0xfffaf0ff,\n  forestgreen: 0x228b22ff,\n  fuchsia: 0xff00ffff,\n  gainsboro: 0xdcdcdcff,\n  ghostwhite: 0xf8f8ffff,\n  gold: 0xffd700ff,\n  goldenrod: 0xdaa520ff,\n  gray: 0x808080ff,\n  green: 0x008000ff,\n  greenyellow: 0xadff2fff,\n  grey: 0x808080ff,\n  honeydew: 0xf0fff0ff,\n  hotpink: 0xff69b4ff,\n  indianred: 0xcd5c5cff,\n  indigo: 0x4b0082ff,\n  ivory: 0xfffff0ff,\n  khaki: 0xf0e68cff,\n  lavender: 0xe6e6faff,\n  lavenderblush: 0xfff0f5ff,\n  lawngreen: 0x7cfc00ff,\n  lemonchiffon: 0xfffacdff,\n  lightblue: 0xadd8e6ff,\n  lightcoral: 0xf08080ff,\n  lightcyan: 0xe0ffffff,\n  lightgoldenrodyellow: 0xfafad2ff,\n  lightgray: 0xd3d3d3ff,\n  lightgreen: 0x90ee90ff,\n  lightgrey: 0xd3d3d3ff,\n  lightpink: 0xffb6c1ff,\n  lightsalmon: 0xffa07aff,\n  lightseagreen: 0x20b2aaff,\n  lightskyblue: 0x87cefaff,\n  lightslategray: 0x778899ff,\n  lightslategrey: 0x778899ff,\n  lightsteelblue: 0xb0c4deff,\n  lightyellow: 0xffffe0ff,\n  lime: 0x00ff00ff,\n  limegreen: 0x32cd32ff,\n  linen: 0xfaf0e6ff,\n  magenta: 0xff00ffff,\n  maroon: 0x800000ff,\n  mediumaquamarine: 0x66cdaaff,\n  mediumblue: 0x0000cdff,\n  mediumorchid: 0xba55d3ff,\n  mediumpurple: 0x9370dbff,\n  mediumseagreen: 0x3cb371ff,\n  mediumslateblue: 0x7b68eeff,\n  mediumspringgreen: 0x00fa9aff,\n  mediumturquoise: 0x48d1ccff,\n  mediumvioletred: 0xc71585ff,\n  midnightblue: 0x191970ff,\n  mintcream: 0xf5fffaff,\n  mistyrose: 0xffe4e1ff,\n  moccasin: 0xffe4b5ff,\n  navajowhite: 0xffdeadff,\n  navy: 0x000080ff,\n  oldlace: 0xfdf5e6ff,\n  olive: 0x808000ff,\n  olivedrab: 0x6b8e23ff,\n  orange: 0xffa500ff,\n  orangered: 0xff4500ff,\n  orchid: 0xda70d6ff,\n  palegoldenrod: 0xeee8aaff,\n  palegreen: 0x98fb98ff,\n  paleturquoise: 0xafeeeeff,\n  palevioletred: 0xdb7093ff,\n  papayawhip: 0xffefd5ff,\n  peachpuff: 0xffdab9ff,\n  peru: 0xcd853fff,\n  pink: 0xffc0cbff,\n  plum: 0xdda0ddff,\n  powderblue: 0xb0e0e6ff,\n  purple: 0x800080ff,\n  rebeccapurple: 0x663399ff,\n  red: 0xff0000ff,\n  rosybrown: 0xbc8f8fff,\n  royalblue: 0x4169e1ff,\n  saddlebrown: 0x8b4513ff,\n  salmon: 0xfa8072ff,\n  sandybrown: 0xf4a460ff,\n  seagreen: 0x2e8b57ff,\n  seashell: 0xfff5eeff,\n  sienna: 0xa0522dff,\n  silver: 0xc0c0c0ff,\n  skyblue: 0x87ceebff,\n  slateblue: 0x6a5acdff,\n  slategray: 0x708090ff,\n  slategrey: 0x708090ff,\n  snow: 0xfffafaff,\n  springgreen: 0x00ff7fff,\n  steelblue: 0x4682b4ff,\n  tan: 0xd2b48cff,\n  teal: 0x008080ff,\n  thistle: 0xd8bfd8ff,\n  tomato: 0xff6347ff,\n  turquoise: 0x40e0d0ff,\n  violet: 0xee82eeff,\n  wheat: 0xf5deb3ff,\n  white: 0xffffffff,\n  whitesmoke: 0xf5f5f5ff,\n  yellow: 0xffff00ff,\n  yellowgreen: 0x9acd32ff,\n};\n\nmodule.exports = normalizeColorBase;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {ColorValue} from './StyleSheet';\nimport type {ProcessedColorValue} from './processColor';\n\nexport opaque type NativeColorValue = {\n  semantic?: Array<string>,\n  dynamic?: {\n    light: ?(ColorValue | ProcessedColorValue),\n    dark: ?(ColorValue | ProcessedColorValue),\n  },\n};\n\nexport const PlatformColor = (...names: Array<string>): ColorValue => {\n  return {semantic: names};\n};\n\nexport type DynamicColorIOSTuplePrivate = {\n  light: ColorValue,\n  dark: ColorValue,\n};\n\nexport const DynamicColorIOSPrivate = (\n  tuple: DynamicColorIOSTuplePrivate,\n): ColorValue => {\n  return {dynamic: {light: tuple.light, dark: tuple.dark}};\n};\n\nexport const normalizeColorObject = (\n  color: NativeColorValue,\n): ?ProcessedColorValue => {\n  if ('semantic' in color) {\n    // an ios semantic color\n    return color;\n  } else if ('dynamic' in color && color.dynamic !== undefined) {\n    const normalizeColor = require('./normalizeColor');\n\n    // a dynamic, appearance aware color\n    const dynamic = color.dynamic;\n    const dynamicColor: NativeColorValue = {\n      dynamic: {\n        light: normalizeColor(dynamic.light),\n        dark: normalizeColor(dynamic.dark),\n      },\n    };\n    return dynamicColor;\n  }\n\n  return null;\n};\n\nexport const processColorObject = (\n  color: NativeColorValue,\n): ?NativeColorValue => {\n  if ('dynamic' in color && color.dynamic != null) {\n    const processColor = require('./processColor');\n    const dynamic = color.dynamic;\n    const dynamicColor: NativeColorValue = {\n      dynamic: {\n        light: processColor(dynamic.light),\n        dark: processColor(dynamic.dark),\n      },\n    };\n    return dynamicColor;\n  }\n  return color;\n};\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Platform = require('../Utilities/Platform');\n\nconst normalizeColor = require('./normalizeColor');\n\nimport type {ColorValue} from './StyleSheet';\nimport type {NativeColorValue} from './PlatformColorValueTypes';\n\nexport type ProcessedColorValue = number | NativeColorValue;\n\n/* eslint no-bitwise: 0 */\nfunction processColor(color?: ?(number | ColorValue)): ?ProcessedColorValue {\n  if (color === undefined || color === null) {\n    return color;\n  }\n\n  let normalizedColor = normalizeColor(color);\n  if (normalizedColor === null || normalizedColor === undefined) {\n    return undefined;\n  }\n\n  if (typeof normalizedColor === 'object') {\n    const processColorObject = require('./PlatformColorValueTypes')\n      .processColorObject;\n\n    const processedColorObj = processColorObject(normalizedColor);\n\n    if (processedColorObj != null) {\n      return processedColorObj;\n    }\n  }\n\n  if (typeof normalizedColor !== 'number') {\n    return null;\n  }\n\n  // Converts 0xrrggbbaa into 0xaarrggbb\n  normalizedColor = ((normalizedColor << 24) | (normalizedColor >>> 8)) >>> 0;\n\n  if (Platform.OS === 'android') {\n    // Android use 32 bit *signed* integer to represent the color\n    // We utilize the fact that bitwise operations in JS also operates on\n    // signed 32 bit integers, so that we can use those to convert from\n    // *unsigned* to *signed* 32bit int that way.\n    normalizedColor = normalizedColor | 0x0;\n  }\n  return normalizedColor;\n}\n\nmodule.exports = processColor;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst ReactPropTypes = require('prop-types');\n\nconst LayoutPropTypes = {\n  display: (ReactPropTypes.oneOf(['none', 'flex']): React$PropType$Primitive<\n    'none' | 'flex',\n  >),\n  width: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  height: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  start: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  end: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  top: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  left: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  right: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  bottom: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  minWidth: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  maxWidth: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  minHeight: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  maxHeight: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  margin: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginVertical: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginHorizontal: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginTop: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginBottom: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginLeft: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginRight: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginStart: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  marginEnd: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  padding: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingVertical: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingHorizontal: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingTop: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingBottom: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingLeft: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingRight: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingStart: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  paddingEnd: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  borderWidth: ReactPropTypes.number,\n  borderTopWidth: ReactPropTypes.number,\n  borderStartWidth: ReactPropTypes.number,\n  borderEndWidth: ReactPropTypes.number,\n  borderRightWidth: ReactPropTypes.number,\n  borderBottomWidth: ReactPropTypes.number,\n  borderLeftWidth: ReactPropTypes.number,\n  position: (ReactPropTypes.oneOf([\n    'absolute',\n    'relative',\n  ]): React$PropType$Primitive<'absolute' | 'relative'>),\n  flexDirection: (ReactPropTypes.oneOf([\n    'row',\n    'row-reverse',\n    'column',\n    'column-reverse',\n  ]): React$PropType$Primitive<\n    'row' | 'row-reverse' | 'column' | 'column-reverse',\n  >),\n  flexWrap: (ReactPropTypes.oneOf([\n    'wrap',\n    'nowrap',\n    'wrap-reverse',\n  ]): React$PropType$Primitive<'wrap' | 'nowrap' | 'wrap-reverse'>),\n  justifyContent: (ReactPropTypes.oneOf([\n    'flex-start',\n    'flex-end',\n    'center',\n    'space-between',\n    'space-around',\n    'space-evenly',\n  ]): React$PropType$Primitive<\n    | 'flex-start'\n    | 'flex-end'\n    | 'center'\n    | 'space-between'\n    | 'space-around'\n    | 'space-evenly',\n  >),\n  alignItems: (ReactPropTypes.oneOf([\n    'flex-start',\n    'flex-end',\n    'center',\n    'stretch',\n    'baseline',\n  ]): React$PropType$Primitive<\n    'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline',\n  >),\n  alignSelf: (ReactPropTypes.oneOf([\n    'auto',\n    'flex-start',\n    'flex-end',\n    'center',\n    'stretch',\n    'baseline',\n  ]): React$PropType$Primitive<\n    'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline',\n  >),\n  alignContent: (ReactPropTypes.oneOf([\n    'flex-start',\n    'flex-end',\n    'center',\n    'stretch',\n    'space-between',\n    'space-around',\n  ]): React$PropType$Primitive<\n    | 'flex-start'\n    | 'flex-end'\n    | 'center'\n    | 'stretch'\n    | 'space-between'\n    | 'space-around',\n  >),\n  overflow: (ReactPropTypes.oneOf([\n    'visible',\n    'hidden',\n    'scroll',\n  ]): React$PropType$Primitive<'visible' | 'hidden' | 'scroll'>),\n  flex: ReactPropTypes.number,\n  flexGrow: ReactPropTypes.number,\n  flexShrink: ReactPropTypes.number,\n  flexBasis: (ReactPropTypes.oneOfType([\n    ReactPropTypes.number,\n    ReactPropTypes.string,\n  ]): React$PropType$Primitive<number | string>),\n  aspectRatio: ReactPropTypes.number,\n  zIndex: ReactPropTypes.number,\n  direction: (ReactPropTypes.oneOf([\n    'inherit',\n    'ltr',\n    'rtl',\n  ]): React$PropType$Primitive<'inherit' | 'ltr' | 'rtl'>),\n};\n\nmodule.exports = LayoutPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedColorPropType = require('./DeprecatedColorPropType');\nconst ReactPropTypes = require('prop-types');\n\nconst DeprecatedShadowPropTypesIOS = {\n  shadowColor: DeprecatedColorPropType,\n  shadowOffset: (ReactPropTypes.shape({\n    width: ReactPropTypes.number,\n    height: ReactPropTypes.number,\n  }): React$PropType$Primitive<{\n    height?: number,\n    width?: number,\n    ...\n  }>),\n  shadowOpacity: ReactPropTypes.number,\n  shadowRadius: ReactPropTypes.number,\n};\n\nmodule.exports = DeprecatedShadowPropTypesIOS;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ReactPropTypes = require('prop-types');\n\nconst deprecatedPropType = require('../Utilities/deprecatedPropType');\n\nconst TransformMatrixPropType = function(\n  props: Object,\n  propName: string,\n  componentName: string,\n): ?Error {\n  if (props[propName]) {\n    return new Error(\n      'The transformMatrix style property is deprecated. ' +\n        'Use `transform: [{ matrix: ... }]` instead.',\n    );\n  }\n};\n\nconst DecomposedMatrixPropType = function(\n  props: Object,\n  propName: string,\n  componentName: string,\n): ?Error {\n  if (props[propName]) {\n    return new Error(\n      'The decomposedMatrix style property is deprecated. ' +\n        'Use `transform: [...]` instead.',\n    );\n  }\n};\n\nconst DeprecatedTransformPropTypes = {\n  transform: (ReactPropTypes.arrayOf(\n    ReactPropTypes.oneOfType([\n      ReactPropTypes.shape({perspective: ReactPropTypes.number}),\n      ReactPropTypes.shape({rotate: ReactPropTypes.string}),\n      ReactPropTypes.shape({rotateX: ReactPropTypes.string}),\n      ReactPropTypes.shape({rotateY: ReactPropTypes.string}),\n      ReactPropTypes.shape({rotateZ: ReactPropTypes.string}),\n      ReactPropTypes.shape({scale: ReactPropTypes.number}),\n      ReactPropTypes.shape({scaleX: ReactPropTypes.number}),\n      ReactPropTypes.shape({scaleY: ReactPropTypes.number}),\n      ReactPropTypes.shape({translateX: ReactPropTypes.number}),\n      ReactPropTypes.shape({translateY: ReactPropTypes.number}),\n      ReactPropTypes.shape({skewX: ReactPropTypes.string}),\n      ReactPropTypes.shape({skewY: ReactPropTypes.string}),\n    ]),\n  ): React$PropType$Primitive<\n    Array<\n      | {perspective?: number, ...}\n      | {rotate?: string, ...}\n      | {rotateX?: string, ...}\n      | {rotateY?: string, ...}\n      | {rotateZ?: string, ...}\n      | {scale?: number, ...}\n      | {scaleX?: number, ...}\n      | {scaleY?: number, ...}\n      | {translateX?: number, ...}\n      | {translateY?: number, ...}\n      | {skewX?: string, ...}\n      | {skewY?: string, ...},\n    >,\n  >),\n  transformMatrix: TransformMatrixPropType,\n  decomposedMatrix: DecomposedMatrixPropType,\n  scaleX: (deprecatedPropType(\n    ReactPropTypes.number,\n    'Use the transform prop instead.',\n  ): ReactPropsCheckType),\n  scaleY: (deprecatedPropType(\n    ReactPropTypes.number,\n    'Use the transform prop instead.',\n  ): ReactPropsCheckType),\n  rotation: (deprecatedPropType(\n    ReactPropTypes.number,\n    'Use the transform prop instead.',\n  ): ReactPropsCheckType),\n  translateX: (deprecatedPropType(\n    ReactPropTypes.number,\n    'Use the transform prop instead.',\n  ): ReactPropsCheckType),\n  translateY: (deprecatedPropType(\n    ReactPropTypes.number,\n    'Use the transform prop instead.',\n  ): ReactPropsCheckType),\n};\n\nmodule.exports = DeprecatedTransformPropTypes;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst UIManager = require('../ReactNative/UIManager');\n\n/**\n * Adds a deprecation warning when the prop is used.\n */\nfunction deprecatedPropType(\n  propType: ReactPropsCheckType,\n  explanation: string,\n): ReactPropsCheckType {\n  return function validate(props, propName, componentName, ...rest) {\n    // Don't warn for native components.\n    if (\n      !global.RN$Bridgeless &&\n      !UIManager.getViewManagerConfig(componentName) &&\n      props[propName] !== undefined\n    ) {\n      console.warn(\n        `\\`${propName}\\` supplied to \\`${componentName}\\` has been deprecated. ${explanation}`,\n      );\n    }\n\n    return propType(props, propName, componentName, ...rest);\n  };\n}\n\nmodule.exports = deprecatedPropType;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {Spec} from './NativeUIManager';\n\ninterface UIManagerJSInterface extends Spec {\n  +getViewManagerConfig: (viewManagerName: string) => Object;\n  +createView: (\n    reactTag: ?number,\n    viewName: string,\n    rootTag: number,\n    props: Object,\n  ) => void;\n  +updateView: (reactTag: number, viewName: string, props: Object) => void;\n  +manageChildren: (\n    containerTag: ?number,\n    moveFromIndices: Array<number>,\n    moveToIndices: Array<number>,\n    addChildReactTags: Array<number>,\n    addAtIndices: Array<number>,\n    removeAtIndices: Array<number>,\n  ) => void;\n}\n\nconst UIManager: UIManagerJSInterface =\n  global.RN$Bridgeless === true\n    ? require('./DummyUIManager') // No UIManager in bridgeless mode\n    : require('./PaperUIManager');\n\nmodule.exports = UIManager;\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 * @flow\n * @format\n */\n\n'use strict';\n\nmodule.exports = {\n  getViewManagerConfig: (viewManagerName: string): mixed => {\n    console.warn(\n      'Attempting to get config for view manager: ' + viewManagerName,\n    );\n    if (viewManagerName === 'RCTVirtualText') {\n      return {};\n    }\n    return null;\n  },\n  getConstants: (): {...} => ({}),\n  getConstantsForViewManager: (viewManagerName: string) => {},\n  getDefaultEventTypes: (): Array<$FlowFixMe> => [],\n  lazilyLoadView: (name: string) => {},\n  createView: (\n    reactTag: ?number,\n    viewName: string,\n    rootTag: number,\n    props: Object,\n  ) => {},\n  updateView: (reactTag: number, viewName: string, props: Object) => {},\n  focus: (reactTag: ?number) => {},\n  blur: (reactTag: ?number) => {},\n  findSubviewIn: (\n    reactTag: ?number,\n    point: Array<number>,\n    callback: (\n      nativeViewTag: number,\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => {},\n  dispatchViewManagerCommand: (\n    reactTag: ?number,\n    commandID: number,\n    commandArgs: ?Array<string | number | boolean>,\n  ) => {},\n  measure: (\n    reactTag: ?number,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n      pageX: number,\n      pageY: number,\n    ) => void,\n  ) => {},\n  measureInWindow: (\n    reactTag: ?number,\n    callback: (x: number, y: number, width: number, height: number) => void,\n  ) => {},\n  viewIsDescendantOf: (\n    reactTag: ?number,\n    ancestorReactTag: ?number,\n    callback: (result: Array<boolean>) => void,\n  ) => {},\n  measureLayout: (\n    reactTag: ?number,\n    ancestorReactTag: ?number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => {},\n  measureLayoutRelativeToParent: (\n    reactTag: ?number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => {},\n  setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => {},\n  clearJSResponder: () => {},\n  configureNextLayoutAnimation: (\n    config: Object,\n    callback: () => void,\n    errorCallback: (error: Object) => void,\n  ) => {},\n  removeSubviewsFromContainerWithID: (containerID: number) => {},\n  replaceExistingNonRootView: (reactTag: ?number, newReactTag: ?number) => {},\n  setChildren: (containerTag: ?number, reactTags: Array<number>) => {},\n  manageChildren: (\n    containerTag: ?number,\n    moveFromIndices: Array<number>,\n    moveToIndices: Array<number>,\n    addChildReactTags: Array<number>,\n    addAtIndices: Array<number>,\n    removeAtIndices: Array<number>,\n  ) => {},\n\n  // Android only\n  setLayoutAnimationEnabledExperimental: (enabled: boolean) => {},\n  sendAccessibilityEvent: (reactTag: ?number, eventType: number) => {},\n  showPopupMenu: (\n    reactTag: ?number,\n    items: Array<string>,\n    error: (error: Object) => void,\n    success: (event: string, selected?: number) => void,\n  ) => {},\n  dismissPopupMenu: () => {},\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst NativeModules = require('../BatchedBridge/NativeModules');\nconst Platform = require('../Utilities/Platform');\nconst UIManagerProperties = require('./UIManagerProperties');\n\nconst defineLazyObjectProperty = require('../Utilities/defineLazyObjectProperty');\n\nimport NativeUIManager from './NativeUIManager';\n\nconst viewManagerConfigs = {};\n\nconst triedLoadingConfig = new Set();\n\nlet NativeUIManagerConstants = {};\nlet isNativeUIManagerConstantsSet = false;\nfunction getConstants(): Object {\n  if (!isNativeUIManagerConstantsSet) {\n    NativeUIManagerConstants = NativeUIManager.getConstants();\n    isNativeUIManagerConstantsSet = true;\n  }\n  return NativeUIManagerConstants;\n}\n\n/* $FlowFixMe(>=0.123.0 site=react_native_fb) This comment suppresses an error\n * found when Flow v0.123.0 was deployed. To see the error, delete this comment\n * and run Flow. */\nconst UIManagerJS = {\n  ...NativeUIManager,\n  getConstants(): Object {\n    return getConstants();\n  },\n  getViewManagerConfig: function(viewManagerName: string): any {\n    if (\n      viewManagerConfigs[viewManagerName] === undefined &&\n      NativeUIManager.getConstantsForViewManager\n    ) {\n      try {\n        viewManagerConfigs[\n          viewManagerName\n        ] = NativeUIManager.getConstantsForViewManager(viewManagerName);\n      } catch (e) {\n        viewManagerConfigs[viewManagerName] = null;\n      }\n    }\n\n    const config = viewManagerConfigs[viewManagerName];\n    if (config) {\n      return config;\n    }\n\n    // If we're in the Chrome Debugger, let's not even try calling the sync\n    // method.\n    if (!global.nativeCallSyncHook) {\n      return config;\n    }\n\n    if (\n      NativeUIManager.lazilyLoadView &&\n      !triedLoadingConfig.has(viewManagerName)\n    ) {\n      const result = NativeUIManager.lazilyLoadView(viewManagerName);\n      triedLoadingConfig.add(viewManagerName);\n      if (result.viewConfig) {\n        getConstants()[viewManagerName] = result.viewConfig;\n        lazifyViewManagerConfig(viewManagerName);\n      }\n    }\n\n    return viewManagerConfigs[viewManagerName];\n  },\n};\n\n// TODO (T45220498): Remove this.\n// 3rd party libs may be calling `NativeModules.UIManager.getViewManagerConfig()`\n// instead of `UIManager.getViewManagerConfig()` off UIManager.js.\n// This is a workaround for now.\n// $FlowFixMe\nNativeUIManager.getViewManagerConfig = UIManagerJS.getViewManagerConfig;\n\nfunction lazifyViewManagerConfig(viewName) {\n  const viewConfig = getConstants()[viewName];\n  viewManagerConfigs[viewName] = viewConfig;\n  if (viewConfig.Manager) {\n    defineLazyObjectProperty(viewConfig, 'Constants', {\n      get: () => {\n        const viewManager = NativeModules[viewConfig.Manager];\n        const constants = {};\n        viewManager &&\n          Object.keys(viewManager).forEach(key => {\n            const value = viewManager[key];\n            if (typeof value !== 'function') {\n              constants[key] = value;\n            }\n          });\n        return constants;\n      },\n    });\n    defineLazyObjectProperty(viewConfig, 'Commands', {\n      get: () => {\n        const viewManager = NativeModules[viewConfig.Manager];\n        const commands = {};\n        let index = 0;\n        viewManager &&\n          Object.keys(viewManager).forEach(key => {\n            const value = viewManager[key];\n            if (typeof value === 'function') {\n              commands[key] = index++;\n            }\n          });\n        return commands;\n      },\n    });\n  }\n}\n\n/**\n * Copies the ViewManager constants and commands into UIManager. This is\n * only needed for iOS, which puts the constants in the ViewManager\n * namespace instead of UIManager, unlike Android.\n */\nif (Platform.OS === 'ios') {\n  Object.keys(getConstants()).forEach(viewName => {\n    lazifyViewManagerConfig(viewName);\n  });\n} else if (getConstants().ViewManagerNames) {\n  NativeUIManager.getConstants().ViewManagerNames.forEach(viewManagerName => {\n    defineLazyObjectProperty(NativeUIManager, viewManagerName, {\n      get: () => NativeUIManager.getConstantsForViewManager(viewManagerName),\n    });\n  });\n}\n\nif (!global.nativeCallSyncHook) {\n  Object.keys(getConstants()).forEach(viewManagerName => {\n    if (!UIManagerProperties.includes(viewManagerName)) {\n      if (!viewManagerConfigs[viewManagerName]) {\n        viewManagerConfigs[viewManagerName] = getConstants()[viewManagerName];\n      }\n      defineLazyObjectProperty(NativeUIManager, viewManagerName, {\n        get: () => {\n          console.warn(\n            `Accessing view manager configs directly off UIManager via UIManager['${viewManagerName}'] ` +\n              `is no longer supported. Use UIManager.getViewManagerConfig('${viewManagerName}') instead.`,\n          );\n\n          return UIManagerJS.getViewManagerConfig(viewManagerName);\n        },\n      });\n    }\n  });\n}\n\nmodule.exports = UIManagerJS;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => Object;\n  +getConstantsForViewManager: (viewManagerName: string) => Object;\n  +getDefaultEventTypes: () => Array<string>;\n  +lazilyLoadView: (name: string) => Object; // revisit return\n  +createView: (\n    reactTag: ?number,\n    viewName: string,\n    rootTag: number,\n    props: Object,\n  ) => void;\n  +updateView: (reactTag: number, viewName: string, props: Object) => void;\n  +focus: (reactTag: ?number) => void;\n  +blur: (reactTag: ?number) => void;\n  +findSubviewIn: (\n    reactTag: ?number,\n    point: Array<number>,\n    callback: (\n      nativeViewTag: number,\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => void;\n  +dispatchViewManagerCommand: (\n    reactTag: ?number,\n    commandID: number,\n    commandArgs: ?Array<any>,\n  ) => void;\n  +measure: (\n    reactTag: ?number,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n      pageX: number,\n      pageY: number,\n    ) => void,\n  ) => void;\n  +measureInWindow: (\n    reactTag: ?number,\n    callback: (x: number, y: number, width: number, height: number) => void,\n  ) => void;\n  +viewIsDescendantOf: (\n    reactTag: ?number,\n    ancestorReactTag: ?number,\n    callback: (result: Array<boolean>) => void,\n  ) => void;\n  +measureLayout: (\n    reactTag: ?number,\n    ancestorReactTag: ?number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => void;\n  +measureLayoutRelativeToParent: (\n    reactTag: ?number,\n    errorCallback: (error: Object) => void,\n    callback: (\n      left: number,\n      top: number,\n      width: number,\n      height: number,\n    ) => void,\n  ) => void;\n  +setJSResponder: (reactTag: ?number, blockNativeResponder: boolean) => void;\n  +clearJSResponder: () => void;\n  +configureNextLayoutAnimation: (\n    config: Object,\n    callback: () => void, // check what is returned here\n    errorCallback: (error: Object) => void,\n  ) => void;\n  +removeSubviewsFromContainerWithID: (containerID: number) => void;\n  +replaceExistingNonRootView: (\n    reactTag: ?number,\n    newReactTag: ?number,\n  ) => void;\n  +setChildren: (containerTag: ?number, reactTags: Array<number>) => void;\n  +manageChildren: (\n    containerTag: ?number,\n    moveFromIndices: Array<number>,\n    moveToIndices: Array<number>,\n    addChildReactTags: Array<number>,\n    addAtIndices: Array<number>,\n    removeAtIndices: Array<number>,\n  ) => void;\n\n  // Android only\n  +setLayoutAnimationEnabledExperimental: (enabled: boolean) => void;\n  +sendAccessibilityEvent: (reactTag: ?number, eventType: number) => void;\n  +showPopupMenu: (\n    reactTag: ?number,\n    items: Array<string>,\n    error: (error: Object) => void,\n    success: (event: string, selected?: number) => void,\n  ) => void;\n  +dismissPopupMenu: () => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('UIManager'): Spec);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * The list of non-ViewManager related UIManager properties.\n *\n * In an effort to improve startup performance by lazily loading view managers,\n * the interface to access view managers will change from\n * UIManager['viewManagerName'] to UIManager.getViewManagerConfig('viewManagerName').\n * By using a function call instead of a property access, the UIManager will\n * be able to initialize and load the required view manager from native\n * synchronously. All of React Native's core components have been updated to\n * use getViewManagerConfig(). For the next few releases, any usage of\n * UIManager['viewManagerName'] will result in a warning. Because React Native\n * does not support Proxy objects, a view manager access is implied if any of\n * UIManager's properties that are not one of the properties below is being\n * accessed. Once UIManager property accesses for view managers has been fully\n * deprecated, this file will also be removed.\n */\nmodule.exports = [\n  'clearJSResponder',\n  'configureNextLayoutAnimation',\n  'createView',\n  'dismissPopupMenu',\n  'dispatchViewManagerCommand',\n  'findSubviewIn',\n  'getConstantsForViewManager',\n  'getDefaultEventTypes',\n  'manageChildren',\n  'measure',\n  'measureInWindow',\n  'measureLayout',\n  'measureLayoutRelativeToParent',\n  'removeRootView',\n  'removeSubviewsFromContainerWithID',\n  'replaceExistingNonRootView',\n  'sendAccessibilityEvent',\n  'setChildren',\n  'setJSResponder',\n  'setLayoutAnimationEnabledExperimental',\n  'showPopupMenu',\n  'updateView',\n  'viewIsDescendantOf',\n  'PopupMenu',\n  'LazyViewManagersEnabled',\n  'ViewManagerNames',\n  'StyleConstants',\n  'AccessibilityEventTypes',\n  'UIView',\n  'getViewManagerConfig',\n  'blur',\n  'focus',\n  'genericBubblingEventTypes',\n  'genericDirectEventTypes',\n  'lazilyLoadView',\n];\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst DeprecatedColorPropType = require('./DeprecatedColorPropType');\nconst DeprecatedViewStylePropTypes = require('./DeprecatedViewStylePropTypes');\nconst ReactPropTypes = require('prop-types');\n\nconst DeprecatedTextStylePropTypes = {\n  ...DeprecatedViewStylePropTypes,\n\n  color: DeprecatedColorPropType,\n  fontFamily: ReactPropTypes.string,\n  fontSize: ReactPropTypes.number,\n  fontStyle: (ReactPropTypes.oneOf([\n    'normal',\n    'italic',\n  ]): React$PropType$Primitive<'normal' | 'italic'>),\n  /**\n   * Specifies font weight. The values 'normal' and 'bold' are supported for\n   * most fonts. Not all fonts have a variant for each of the numeric values,\n   * in that case the closest one is chosen.\n   */\n  fontWeight: (ReactPropTypes.oneOf([\n    'normal' /*default*/,\n    'bold',\n    '100',\n    '200',\n    '300',\n    '400',\n    '500',\n    '600',\n    '700',\n    '800',\n    '900',\n  ]): React$PropType$Primitive<\n    | 'normal'\n    | 'bold'\n    | '100'\n    | '200'\n    | '300'\n    | '400'\n    | '500'\n    | '600'\n    | '700'\n    | '800'\n    | '900',\n  >),\n  fontVariant: (ReactPropTypes.arrayOf(\n    ReactPropTypes.oneOf([\n      'small-caps',\n      'oldstyle-nums',\n      'lining-nums',\n      'tabular-nums',\n      'proportional-nums',\n    ]),\n  ): React$PropType$Primitive<\n    Array<\n      | 'small-caps'\n      | 'oldstyle-nums'\n      | 'lining-nums'\n      | 'tabular-nums'\n      | 'proportional-nums',\n    >,\n  >),\n  textShadowOffset: (ReactPropTypes.shape({\n    width: ReactPropTypes.number,\n    height: ReactPropTypes.number,\n  }): React$PropType$Primitive<{\n    height?: number,\n    width?: number,\n    ...\n  }>),\n  textShadowRadius: ReactPropTypes.number,\n  textShadowColor: DeprecatedColorPropType,\n  /**\n   * @platform ios\n   */\n  letterSpacing: ReactPropTypes.number,\n  lineHeight: ReactPropTypes.number,\n  /**\n   * Specifies text alignment. The value 'justify' is only supported on iOS and\n   * fallbacks to `left` on Android.\n   */\n  textAlign: (ReactPropTypes.oneOf([\n    'auto' /*default*/,\n    'left',\n    'right',\n    'center',\n    'justify',\n  ]): React$PropType$Primitive<\n    'auto' | 'left' | 'right' | 'center' | 'justify',\n  >),\n  /**\n   * @platform android\n   */\n  textAlignVertical: (ReactPropTypes.oneOf([\n    'auto' /*default*/,\n    'top',\n    'bottom',\n    'center',\n  ]): React$PropType$Primitive<'auto' | 'top' | 'bottom' | 'center'>),\n  /**\n   * Set to `false` to remove extra font padding intended to make space for certain ascenders / descenders.\n   * With some fonts, this padding can make text look slightly misaligned when centered vertically.\n   * For best results also set `textAlignVertical` to `center`. Default is true.\n   * @platform android\n   */\n  includeFontPadding: ReactPropTypes.bool,\n  textDecorationLine: (ReactPropTypes.oneOf([\n    'none' /*default*/,\n    'underline',\n    'line-through',\n    'underline line-through',\n  ]): React$PropType$Primitive<\n    'none' | 'underline' | 'line-through' | 'underline line-through',\n  >),\n  /**\n   * @platform ios\n   */\n  textDecorationStyle: (ReactPropTypes.oneOf([\n    'solid' /*default*/,\n    'double',\n    'dotted',\n    'dashed',\n  ]): React$PropType$Primitive<'solid' | 'double' | 'dotted' | 'dashed'>),\n  /**\n   * @platform ios\n   */\n  textDecorationColor: DeprecatedColorPropType,\n  textTransform: (ReactPropTypes.oneOf([\n    'none' /*default*/,\n    'capitalize',\n    'uppercase',\n    'lowercase',\n  ]): React$PropType$Primitive<\n    'none' | 'capitalize' | 'uppercase' | 'lowercase',\n  >),\n  /**\n   * @platform ios\n   */\n  writingDirection: (ReactPropTypes.oneOf([\n    'auto' /*default*/,\n    'ltr',\n    'rtl',\n  ]): React$PropType$Primitive<'auto' | 'ltr' | 'rtl'>),\n};\n\nmodule.exports = DeprecatedTextStylePropTypes;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst DeprecatedColorPropType = require('./DeprecatedColorPropType');\nconst DeprecatedLayoutPropTypes = require('./DeprecatedLayoutPropTypes');\nconst DeprecatedShadowPropTypesIOS = require('./DeprecatedShadowPropTypesIOS');\nconst DeprecatedTransformPropTypes = require('./DeprecatedTransformPropTypes');\nconst ReactPropTypes = require('prop-types');\n\n/**\n * Warning: Some of these properties may not be supported in all releases.\n */\nconst DeprecatedViewStylePropTypes = {\n  ...DeprecatedLayoutPropTypes,\n  ...DeprecatedShadowPropTypesIOS,\n  ...DeprecatedTransformPropTypes,\n  backfaceVisibility: (ReactPropTypes.oneOf([\n    'visible',\n    'hidden',\n  ]): React$PropType$Primitive<'visible' | 'hidden'>),\n  backgroundColor: DeprecatedColorPropType,\n  borderColor: DeprecatedColorPropType,\n  borderTopColor: DeprecatedColorPropType,\n  borderRightColor: DeprecatedColorPropType,\n  borderBottomColor: DeprecatedColorPropType,\n  borderLeftColor: DeprecatedColorPropType,\n  borderStartColor: DeprecatedColorPropType,\n  borderEndColor: DeprecatedColorPropType,\n  borderRadius: ReactPropTypes.number,\n  borderTopLeftRadius: ReactPropTypes.number,\n  borderTopRightRadius: ReactPropTypes.number,\n  borderTopStartRadius: ReactPropTypes.number,\n  borderTopEndRadius: ReactPropTypes.number,\n  borderBottomLeftRadius: ReactPropTypes.number,\n  borderBottomRightRadius: ReactPropTypes.number,\n  borderBottomStartRadius: ReactPropTypes.number,\n  borderBottomEndRadius: ReactPropTypes.number,\n  borderStyle: (ReactPropTypes.oneOf([\n    'solid',\n    'dotted',\n    'dashed',\n  ]): React$PropType$Primitive<'solid' | 'dotted' | 'dashed'>),\n  borderWidth: ReactPropTypes.number,\n  borderTopWidth: ReactPropTypes.number,\n  borderRightWidth: ReactPropTypes.number,\n  borderBottomWidth: ReactPropTypes.number,\n  borderLeftWidth: ReactPropTypes.number,\n  opacity: ReactPropTypes.number,\n  /**\n   * (Android-only) Sets the elevation of a view, using Android's underlying\n   * [elevation API](https://developer.android.com/training/material/shadows-clipping.html#Elevation).\n   * This adds a drop shadow to the item and affects z-order for overlapping views.\n   * Only supported on Android 5.0+, has no effect on earlier versions.\n   * @platform android\n   */\n  elevation: ReactPropTypes.number,\n};\n\nmodule.exports = DeprecatedViewStylePropTypes;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst MatrixMath = require('../Utilities/MatrixMath');\nconst Platform = require('../Utilities/Platform');\n\nconst invariant = require('invariant');\nconst stringifySafe = require('../Utilities/stringifySafe').default;\n\n/**\n * Generate a transform matrix based on the provided transforms, and use that\n * within the style object instead.\n *\n * This allows us to provide an API that is similar to CSS, where transforms may\n * be applied in an arbitrary order, and yet have a universal, singular\n * interface to native code.\n */\nfunction processTransform(\n  transform: Array<Object>,\n): Array<Object> | Array<number> {\n  if (__DEV__) {\n    _validateTransforms(transform);\n  }\n\n  // Android & iOS implementations of transform property accept the list of\n  // transform properties as opposed to a transform Matrix. This is necessary\n  // to control transform property updates completely on the native thread.\n  if (Platform.OS === 'android' || Platform.OS === 'ios') {\n    return transform;\n  }\n\n  const result = MatrixMath.createIdentityMatrix();\n\n  transform.forEach(transformation => {\n    const key = Object.keys(transformation)[0];\n    const value = transformation[key];\n\n    switch (key) {\n      case 'matrix':\n        MatrixMath.multiplyInto(result, result, value);\n        break;\n      case 'perspective':\n        _multiplyTransform(result, MatrixMath.reusePerspectiveCommand, [value]);\n        break;\n      case 'rotateX':\n        _multiplyTransform(result, MatrixMath.reuseRotateXCommand, [\n          _convertToRadians(value),\n        ]);\n        break;\n      case 'rotateY':\n        _multiplyTransform(result, MatrixMath.reuseRotateYCommand, [\n          _convertToRadians(value),\n        ]);\n        break;\n      case 'rotate':\n      case 'rotateZ':\n        _multiplyTransform(result, MatrixMath.reuseRotateZCommand, [\n          _convertToRadians(value),\n        ]);\n        break;\n      case 'scale':\n        _multiplyTransform(result, MatrixMath.reuseScaleCommand, [value]);\n        break;\n      case 'scaleX':\n        _multiplyTransform(result, MatrixMath.reuseScaleXCommand, [value]);\n        break;\n      case 'scaleY':\n        _multiplyTransform(result, MatrixMath.reuseScaleYCommand, [value]);\n        break;\n      case 'translate':\n        _multiplyTransform(result, MatrixMath.reuseTranslate3dCommand, [\n          value[0],\n          value[1],\n          value[2] || 0,\n        ]);\n        break;\n      case 'translateX':\n        _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [\n          value,\n          0,\n        ]);\n        break;\n      case 'translateY':\n        _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [\n          0,\n          value,\n        ]);\n        break;\n      case 'skewX':\n        _multiplyTransform(result, MatrixMath.reuseSkewXCommand, [\n          _convertToRadians(value),\n        ]);\n        break;\n      case 'skewY':\n        _multiplyTransform(result, MatrixMath.reuseSkewYCommand, [\n          _convertToRadians(value),\n        ]);\n        break;\n      default:\n        throw new Error('Invalid transform name: ' + key);\n    }\n  });\n\n  return result;\n}\n\n/**\n * Performs a destructive operation on a transform matrix.\n */\nfunction _multiplyTransform(\n  result: Array<number>,\n  matrixMathFunction: Function,\n  args: Array<number>,\n): void {\n  const matrixToApply = MatrixMath.createIdentityMatrix();\n  const argsWithIdentity = [matrixToApply].concat(args);\n  matrixMathFunction.apply(this, argsWithIdentity);\n  MatrixMath.multiplyInto(result, result, matrixToApply);\n}\n\n/**\n * Parses a string like '0.5rad' or '60deg' into radians expressed in a float.\n * Note that validation on the string is done in `_validateTransform()`.\n */\nfunction _convertToRadians(value: string): number {\n  const floatValue = parseFloat(value);\n  return value.indexOf('rad') > -1 ? floatValue : (floatValue * Math.PI) / 180;\n}\n\nfunction _validateTransforms(transform: Array<Object>): void {\n  transform.forEach(transformation => {\n    const keys = Object.keys(transformation);\n    invariant(\n      keys.length === 1,\n      'You must specify exactly one property per transform object. Passed properties: %s',\n      stringifySafe(transformation),\n    );\n    const key = keys[0];\n    const value = transformation[key];\n    _validateTransform(key, value, transformation);\n  });\n}\n\nfunction _validateTransform(key, value, transformation) {\n  invariant(\n    !value.getValue,\n    'You passed an Animated.Value to a normal component. ' +\n      'You need to wrap that component in an Animated. For example, ' +\n      'replace <View /> by <Animated.View />.',\n  );\n\n  const multivalueTransforms = ['matrix', 'translate'];\n  if (multivalueTransforms.indexOf(key) !== -1) {\n    invariant(\n      Array.isArray(value),\n      'Transform with key of %s must have an array as the value: %s',\n      key,\n      stringifySafe(transformation),\n    );\n  }\n  switch (key) {\n    case 'matrix':\n      invariant(\n        value.length === 9 || value.length === 16,\n        'Matrix transform must have a length of 9 (2d) or 16 (3d). ' +\n          'Provided matrix has a length of %s: %s',\n        /* $FlowFixMe(>=0.84.0 site=react_native_fb) This comment suppresses an\n         * error found when Flow v0.84 was deployed. To see the error, delete\n         * this comment and run Flow. */\n        value.length,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'translate':\n      invariant(\n        value.length === 2 || value.length === 3,\n        'Transform with key translate must be an array of length 2 or 3, found %s: %s',\n        /* $FlowFixMe(>=0.84.0 site=react_native_fb) This comment suppresses an\n         * error found when Flow v0.84 was deployed. To see the error, delete\n         * this comment and run Flow. */\n        value.length,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'rotateX':\n    case 'rotateY':\n    case 'rotateZ':\n    case 'rotate':\n    case 'skewX':\n    case 'skewY':\n      invariant(\n        typeof value === 'string',\n        'Transform with key of \"%s\" must be a string: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      invariant(\n        value.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n        'Rotate transform must be expressed in degrees (deg) or radians ' +\n          '(rad): %s',\n        stringifySafe(transformation),\n      );\n      break;\n    case 'perspective':\n      invariant(\n        typeof value === 'number',\n        'Transform with key of \"%s\" must be a number: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      invariant(\n        value !== 0,\n        'Transform with key of \"%s\" cannot be zero: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      break;\n    case 'translateX':\n    case 'translateY':\n    case 'scale':\n    case 'scaleX':\n    case 'scaleY':\n      invariant(\n        typeof value === 'number',\n        'Transform with key of \"%s\" must be a number: %s',\n        key,\n        stringifySafe(transformation),\n      );\n      break;\n    default:\n      invariant(\n        false,\n        'Invalid transform %s: %s',\n        key,\n        stringifySafe(transformation),\n      );\n  }\n}\n\nmodule.exports = processTransform;\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 * @format\n * @noflow\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\n/**\n * Memory conservative (mutative) matrix math utilities. Uses \"command\"\n * matrices, which are reusable.\n */\nconst MatrixMath = {\n  createIdentityMatrix: function() {\n    return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n  },\n\n  createCopy: function(m) {\n    return [\n      m[0],\n      m[1],\n      m[2],\n      m[3],\n      m[4],\n      m[5],\n      m[6],\n      m[7],\n      m[8],\n      m[9],\n      m[10],\n      m[11],\n      m[12],\n      m[13],\n      m[14],\n      m[15],\n    ];\n  },\n\n  createOrthographic: function(left, right, bottom, top, near, far) {\n    const a = 2 / (right - left);\n    const b = 2 / (top - bottom);\n    const c = -2 / (far - near);\n\n    const tx = -(right + left) / (right - left);\n    const ty = -(top + bottom) / (top - bottom);\n    const tz = -(far + near) / (far - near);\n\n    return [a, 0, 0, 0, 0, b, 0, 0, 0, 0, c, 0, tx, ty, tz, 1];\n  },\n\n  createFrustum: function(left, right, bottom, top, near, far) {\n    const r_width = 1 / (right - left);\n    const r_height = 1 / (top - bottom);\n    const r_depth = 1 / (near - far);\n    const x = 2 * (near * r_width);\n    const y = 2 * (near * r_height);\n    const A = (right + left) * r_width;\n    const B = (top + bottom) * r_height;\n    const C = (far + near) * r_depth;\n    const D = 2 * (far * near * r_depth);\n    return [x, 0, 0, 0, 0, y, 0, 0, A, B, C, -1, 0, 0, D, 0];\n  },\n\n  /**\n   * This create a perspective projection towards negative z\n   * Clipping the z range of [-near, -far]\n   *\n   * @param fovInRadians - field of view in randians\n   */\n  createPerspective: function(fovInRadians, aspect, near, far) {\n    const h = 1 / Math.tan(fovInRadians / 2);\n    const r_depth = 1 / (near - far);\n    const C = (far + near) * r_depth;\n    const D = 2 * (far * near * r_depth);\n    return [h / aspect, 0, 0, 0, 0, h, 0, 0, 0, 0, C, -1, 0, 0, D, 0];\n  },\n\n  createTranslate2d: function(x, y) {\n    const mat = MatrixMath.createIdentityMatrix();\n    MatrixMath.reuseTranslate2dCommand(mat, x, y);\n    return mat;\n  },\n\n  reuseTranslate2dCommand: function(matrixCommand, x, y) {\n    matrixCommand[12] = x;\n    matrixCommand[13] = y;\n  },\n\n  reuseTranslate3dCommand: function(matrixCommand, x, y, z) {\n    matrixCommand[12] = x;\n    matrixCommand[13] = y;\n    matrixCommand[14] = z;\n  },\n\n  createScale: function(factor) {\n    const mat = MatrixMath.createIdentityMatrix();\n    MatrixMath.reuseScaleCommand(mat, factor);\n    return mat;\n  },\n\n  reuseScaleCommand: function(matrixCommand, factor) {\n    matrixCommand[0] = factor;\n    matrixCommand[5] = factor;\n  },\n\n  reuseScale3dCommand: function(matrixCommand, x, y, z) {\n    matrixCommand[0] = x;\n    matrixCommand[5] = y;\n    matrixCommand[10] = z;\n  },\n\n  reusePerspectiveCommand: function(matrixCommand, p) {\n    matrixCommand[11] = -1 / p;\n  },\n\n  reuseScaleXCommand(matrixCommand, factor) {\n    matrixCommand[0] = factor;\n  },\n\n  reuseScaleYCommand(matrixCommand, factor) {\n    matrixCommand[5] = factor;\n  },\n\n  reuseScaleZCommand(matrixCommand, factor) {\n    matrixCommand[10] = factor;\n  },\n\n  reuseRotateXCommand: function(matrixCommand, radians) {\n    matrixCommand[5] = Math.cos(radians);\n    matrixCommand[6] = Math.sin(radians);\n    matrixCommand[9] = -Math.sin(radians);\n    matrixCommand[10] = Math.cos(radians);\n  },\n\n  reuseRotateYCommand: function(matrixCommand, amount) {\n    matrixCommand[0] = Math.cos(amount);\n    matrixCommand[2] = -Math.sin(amount);\n    matrixCommand[8] = Math.sin(amount);\n    matrixCommand[10] = Math.cos(amount);\n  },\n\n  // http://www.w3.org/TR/css3-transforms/#recomposing-to-a-2d-matrix\n  reuseRotateZCommand: function(matrixCommand, radians) {\n    matrixCommand[0] = Math.cos(radians);\n    matrixCommand[1] = Math.sin(radians);\n    matrixCommand[4] = -Math.sin(radians);\n    matrixCommand[5] = Math.cos(radians);\n  },\n\n  createRotateZ: function(radians) {\n    const mat = MatrixMath.createIdentityMatrix();\n    MatrixMath.reuseRotateZCommand(mat, radians);\n    return mat;\n  },\n\n  reuseSkewXCommand: function(matrixCommand, radians) {\n    matrixCommand[4] = Math.tan(radians);\n  },\n\n  reuseSkewYCommand: function(matrixCommand, radians) {\n    matrixCommand[1] = Math.tan(radians);\n  },\n\n  multiplyInto: function(out, a, b) {\n    const a00 = a[0],\n      a01 = a[1],\n      a02 = a[2],\n      a03 = a[3],\n      a10 = a[4],\n      a11 = a[5],\n      a12 = a[6],\n      a13 = a[7],\n      a20 = a[8],\n      a21 = a[9],\n      a22 = a[10],\n      a23 = a[11],\n      a30 = a[12],\n      a31 = a[13],\n      a32 = a[14],\n      a33 = a[15];\n\n    let b0 = b[0],\n      b1 = b[1],\n      b2 = b[2],\n      b3 = b[3];\n    out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n    b0 = b[4];\n    b1 = b[5];\n    b2 = b[6];\n    b3 = b[7];\n    out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n    b0 = b[8];\n    b1 = b[9];\n    b2 = b[10];\n    b3 = b[11];\n    out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n    b0 = b[12];\n    b1 = b[13];\n    b2 = b[14];\n    b3 = b[15];\n    out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n  },\n\n  determinant(matrix: Array<number>): number {\n    const [\n      m00,\n      m01,\n      m02,\n      m03,\n      m10,\n      m11,\n      m12,\n      m13,\n      m20,\n      m21,\n      m22,\n      m23,\n      m30,\n      m31,\n      m32,\n      m33,\n    ] = matrix;\n    return (\n      m03 * m12 * m21 * m30 -\n      m02 * m13 * m21 * m30 -\n      m03 * m11 * m22 * m30 +\n      m01 * m13 * m22 * m30 +\n      m02 * m11 * m23 * m30 -\n      m01 * m12 * m23 * m30 -\n      m03 * m12 * m20 * m31 +\n      m02 * m13 * m20 * m31 +\n      m03 * m10 * m22 * m31 -\n      m00 * m13 * m22 * m31 -\n      m02 * m10 * m23 * m31 +\n      m00 * m12 * m23 * m31 +\n      m03 * m11 * m20 * m32 -\n      m01 * m13 * m20 * m32 -\n      m03 * m10 * m21 * m32 +\n      m00 * m13 * m21 * m32 +\n      m01 * m10 * m23 * m32 -\n      m00 * m11 * m23 * m32 -\n      m02 * m11 * m20 * m33 +\n      m01 * m12 * m20 * m33 +\n      m02 * m10 * m21 * m33 -\n      m00 * m12 * m21 * m33 -\n      m01 * m10 * m22 * m33 +\n      m00 * m11 * m22 * m33\n    );\n  },\n\n  /**\n   * Inverse of a matrix. Multiplying by the inverse is used in matrix math\n   * instead of division.\n   *\n   * Formula from:\n   * http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n   */\n  inverse(matrix: Array<number>): Array<number> {\n    const det = MatrixMath.determinant(matrix);\n    if (!det) {\n      return matrix;\n    }\n    const [\n      m00,\n      m01,\n      m02,\n      m03,\n      m10,\n      m11,\n      m12,\n      m13,\n      m20,\n      m21,\n      m22,\n      m23,\n      m30,\n      m31,\n      m32,\n      m33,\n    ] = matrix;\n    return [\n      (m12 * m23 * m31 -\n        m13 * m22 * m31 +\n        m13 * m21 * m32 -\n        m11 * m23 * m32 -\n        m12 * m21 * m33 +\n        m11 * m22 * m33) /\n        det,\n      (m03 * m22 * m31 -\n        m02 * m23 * m31 -\n        m03 * m21 * m32 +\n        m01 * m23 * m32 +\n        m02 * m21 * m33 -\n        m01 * m22 * m33) /\n        det,\n      (m02 * m13 * m31 -\n        m03 * m12 * m31 +\n        m03 * m11 * m32 -\n        m01 * m13 * m32 -\n        m02 * m11 * m33 +\n        m01 * m12 * m33) /\n        det,\n      (m03 * m12 * m21 -\n        m02 * m13 * m21 -\n        m03 * m11 * m22 +\n        m01 * m13 * m22 +\n        m02 * m11 * m23 -\n        m01 * m12 * m23) /\n        det,\n      (m13 * m22 * m30 -\n        m12 * m23 * m30 -\n        m13 * m20 * m32 +\n        m10 * m23 * m32 +\n        m12 * m20 * m33 -\n        m10 * m22 * m33) /\n        det,\n      (m02 * m23 * m30 -\n        m03 * m22 * m30 +\n        m03 * m20 * m32 -\n        m00 * m23 * m32 -\n        m02 * m20 * m33 +\n        m00 * m22 * m33) /\n        det,\n      (m03 * m12 * m30 -\n        m02 * m13 * m30 -\n        m03 * m10 * m32 +\n        m00 * m13 * m32 +\n        m02 * m10 * m33 -\n        m00 * m12 * m33) /\n        det,\n      (m02 * m13 * m20 -\n        m03 * m12 * m20 +\n        m03 * m10 * m22 -\n        m00 * m13 * m22 -\n        m02 * m10 * m23 +\n        m00 * m12 * m23) /\n        det,\n      (m11 * m23 * m30 -\n        m13 * m21 * m30 +\n        m13 * m20 * m31 -\n        m10 * m23 * m31 -\n        m11 * m20 * m33 +\n        m10 * m21 * m33) /\n        det,\n      (m03 * m21 * m30 -\n        m01 * m23 * m30 -\n        m03 * m20 * m31 +\n        m00 * m23 * m31 +\n        m01 * m20 * m33 -\n        m00 * m21 * m33) /\n        det,\n      (m01 * m13 * m30 -\n        m03 * m11 * m30 +\n        m03 * m10 * m31 -\n        m00 * m13 * m31 -\n        m01 * m10 * m33 +\n        m00 * m11 * m33) /\n        det,\n      (m03 * m11 * m20 -\n        m01 * m13 * m20 -\n        m03 * m10 * m21 +\n        m00 * m13 * m21 +\n        m01 * m10 * m23 -\n        m00 * m11 * m23) /\n        det,\n      (m12 * m21 * m30 -\n        m11 * m22 * m30 -\n        m12 * m20 * m31 +\n        m10 * m22 * m31 +\n        m11 * m20 * m32 -\n        m10 * m21 * m32) /\n        det,\n      (m01 * m22 * m30 -\n        m02 * m21 * m30 +\n        m02 * m20 * m31 -\n        m00 * m22 * m31 -\n        m01 * m20 * m32 +\n        m00 * m21 * m32) /\n        det,\n      (m02 * m11 * m30 -\n        m01 * m12 * m30 -\n        m02 * m10 * m31 +\n        m00 * m12 * m31 +\n        m01 * m10 * m32 -\n        m00 * m11 * m32) /\n        det,\n      (m01 * m12 * m20 -\n        m02 * m11 * m20 +\n        m02 * m10 * m21 -\n        m00 * m12 * m21 -\n        m01 * m10 * m22 +\n        m00 * m11 * m22) /\n        det,\n    ];\n  },\n\n  /**\n   * Turns columns into rows and rows into columns.\n   */\n  transpose(m: Array<number>): Array<number> {\n    return [\n      m[0],\n      m[4],\n      m[8],\n      m[12],\n      m[1],\n      m[5],\n      m[9],\n      m[13],\n      m[2],\n      m[6],\n      m[10],\n      m[14],\n      m[3],\n      m[7],\n      m[11],\n      m[15],\n    ];\n  },\n\n  /**\n   * Based on: http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n   */\n  multiplyVectorByMatrix(v: Array<number>, m: Array<number>): Array<number> {\n    const [vx, vy, vz, vw] = v;\n    return [\n      vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\n      vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\n      vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\n      vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15],\n    ];\n  },\n\n  /**\n   * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n   */\n  v3Length(a: Array<number>): number {\n    return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);\n  },\n\n  /**\n   * Based on: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n   */\n  v3Normalize(vector: Array<number>, v3Length: number): Array<number> {\n    const im = 1 / (v3Length || MatrixMath.v3Length(vector));\n    return [vector[0] * im, vector[1] * im, vector[2] * im];\n  },\n\n  /**\n   * The dot product of a and b, two 3-element vectors.\n   * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n   */\n  v3Dot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  },\n\n  /**\n   * From:\n   * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n   */\n  v3Combine(\n    a: Array<number>,\n    b: Array<number>,\n    aScale: number,\n    bScale: number,\n  ): Array<number> {\n    return [\n      aScale * a[0] + bScale * b[0],\n      aScale * a[1] + bScale * b[1],\n      aScale * a[2] + bScale * b[2],\n    ];\n  },\n\n  /**\n   * From:\n   * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n   */\n  v3Cross(a: Array<number>, b: Array<number>): Array<number> {\n    return [\n      a[1] * b[2] - a[2] * b[1],\n      a[2] * b[0] - a[0] * b[2],\n      a[0] * b[1] - a[1] * b[0],\n    ];\n  },\n\n  /**\n   * Based on:\n   * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n   * and:\n   * http://quat.zachbennett.com/\n   *\n   * Note that this rounds degrees to the thousandth of a degree, due to\n   * floating point errors in the creation of the quaternion.\n   *\n   * Also note that this expects the qw value to be last, not first.\n   *\n   * Also, when researching this, remember that:\n   * yaw   === heading            === z-axis\n   * pitch === elevation/attitude === y-axis\n   * roll  === bank               === x-axis\n   */\n  quaternionToDegreesXYZ(q: Array<number>, matrix, row): Array<number> {\n    const [qx, qy, qz, qw] = q;\n    const qw2 = qw * qw;\n    const qx2 = qx * qx;\n    const qy2 = qy * qy;\n    const qz2 = qz * qz;\n    const test = qx * qy + qz * qw;\n    const unit = qw2 + qx2 + qy2 + qz2;\n    const conv = 180 / Math.PI;\n\n    if (test > 0.49999 * unit) {\n      return [0, 2 * Math.atan2(qx, qw) * conv, 90];\n    }\n    if (test < -0.49999 * unit) {\n      return [0, -2 * Math.atan2(qx, qw) * conv, -90];\n    }\n\n    return [\n      MatrixMath.roundTo3Places(\n        Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx2 - 2 * qz2) * conv,\n      ),\n      MatrixMath.roundTo3Places(\n        Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy2 - 2 * qz2) * conv,\n      ),\n      MatrixMath.roundTo3Places(Math.asin(2 * qx * qy + 2 * qz * qw) * conv),\n    ];\n  },\n\n  /**\n   * Based on:\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n   */\n  roundTo3Places(n: number): number {\n    const arr = n.toString().split('e');\n    return Math.round(arr[0] + 'e' + (arr[1] ? +arr[1] - 3 : 3)) * 0.001;\n  },\n\n  /**\n   * Decompose a matrix into separate transform values, for use on platforms\n   * where applying a precomposed matrix is not possible, and transforms are\n   * applied in an inflexible ordering (e.g. Android).\n   *\n   * Implementation based on\n   * http://www.w3.org/TR/css3-transforms/#decomposing-a-2d-matrix\n   * http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n   * which was based on\n   * http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n   */\n  decomposeMatrix(transformMatrix: Array<number>): ?Object {\n    invariant(\n      transformMatrix.length === 16,\n      'Matrix decomposition needs a list of 3d matrix values, received %s',\n      transformMatrix,\n    );\n\n    // output values\n    let perspective = [];\n    const quaternion = [];\n    const scale = [];\n    const skew = [];\n    const translation = [];\n\n    // create normalized, 2d array matrix\n    // and normalized 1d array perspectiveMatrix with redefined 4th column\n    if (!transformMatrix[15]) {\n      return;\n    }\n    const matrix = [];\n    const perspectiveMatrix = [];\n    for (let i = 0; i < 4; i++) {\n      matrix.push([]);\n      for (let j = 0; j < 4; j++) {\n        const value = transformMatrix[i * 4 + j] / transformMatrix[15];\n        matrix[i].push(value);\n        perspectiveMatrix.push(j === 3 ? 0 : value);\n      }\n    }\n    perspectiveMatrix[15] = 1;\n\n    // test for singularity of upper 3x3 part of the perspective matrix\n    if (!MatrixMath.determinant(perspectiveMatrix)) {\n      return;\n    }\n\n    // isolate perspective\n    if (matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0) {\n      // rightHandSide is the right hand side of the equation.\n      // rightHandSide is a vector, or point in 3d space relative to the origin.\n      const rightHandSide = [\n        matrix[0][3],\n        matrix[1][3],\n        matrix[2][3],\n        matrix[3][3],\n      ];\n\n      // Solve the equation by inverting perspectiveMatrix and multiplying\n      // rightHandSide by the inverse.\n      const inversePerspectiveMatrix = MatrixMath.inverse(perspectiveMatrix);\n      const transposedInversePerspectiveMatrix = MatrixMath.transpose(\n        inversePerspectiveMatrix,\n      );\n      perspective = MatrixMath.multiplyVectorByMatrix(\n        rightHandSide,\n        transposedInversePerspectiveMatrix,\n      );\n    } else {\n      // no perspective\n      perspective[0] = perspective[1] = perspective[2] = 0;\n      perspective[3] = 1;\n    }\n\n    // translation is simple\n    for (let i = 0; i < 3; i++) {\n      translation[i] = matrix[3][i];\n    }\n\n    // Now get scale and shear.\n    // 'row' is a 3 element array of 3 component vectors\n    const row = [];\n    for (let i = 0; i < 3; i++) {\n      row[i] = [matrix[i][0], matrix[i][1], matrix[i][2]];\n    }\n\n    // Compute X scale factor and normalize first row.\n    scale[0] = MatrixMath.v3Length(row[0]);\n    row[0] = MatrixMath.v3Normalize(row[0], scale[0]);\n\n    // Compute XY shear factor and make 2nd row orthogonal to 1st.\n    skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n    row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n    // Now, compute Y scale and normalize 2nd row.\n    scale[1] = MatrixMath.v3Length(row[1]);\n    row[1] = MatrixMath.v3Normalize(row[1], scale[1]);\n    skew[0] /= scale[1];\n\n    // Compute XZ and YZ shears, orthogonalize 3rd row\n    skew[1] = MatrixMath.v3Dot(row[0], row[2]);\n    row[2] = MatrixMath.v3Combine(row[2], row[0], 1.0, -skew[1]);\n    skew[2] = MatrixMath.v3Dot(row[1], row[2]);\n    row[2] = MatrixMath.v3Combine(row[2], row[1], 1.0, -skew[2]);\n\n    // Next, get Z scale and normalize 3rd row.\n    scale[2] = MatrixMath.v3Length(row[2]);\n    row[2] = MatrixMath.v3Normalize(row[2], scale[2]);\n    skew[1] /= scale[2];\n    skew[2] /= scale[2];\n\n    // At this point, the matrix (in rows) is orthonormal.\n    // Check for a coordinate system flip.  If the determinant\n    // is -1, then negate the matrix and the scaling factors.\n    const pdum3 = MatrixMath.v3Cross(row[1], row[2]);\n    if (MatrixMath.v3Dot(row[0], pdum3) < 0) {\n      for (let i = 0; i < 3; i++) {\n        scale[i] *= -1;\n        row[i][0] *= -1;\n        row[i][1] *= -1;\n        row[i][2] *= -1;\n      }\n    }\n\n    // Now, get the rotations out\n    quaternion[0] =\n      0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0));\n    quaternion[1] =\n      0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0));\n    quaternion[2] =\n      0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0));\n    quaternion[3] =\n      0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0));\n\n    if (row[2][1] > row[1][2]) {\n      quaternion[0] = -quaternion[0];\n    }\n    if (row[0][2] > row[2][0]) {\n      quaternion[1] = -quaternion[1];\n    }\n    if (row[1][0] > row[0][1]) {\n      quaternion[2] = -quaternion[2];\n    }\n\n    // correct for occasional, weird Euler synonyms for 2d rotation\n    let rotationDegrees;\n    if (\n      quaternion[0] < 0.001 &&\n      quaternion[0] >= 0 &&\n      quaternion[1] < 0.001 &&\n      quaternion[1] >= 0\n    ) {\n      // this is a 2d rotation on the z-axis\n      rotationDegrees = [\n        0,\n        0,\n        MatrixMath.roundTo3Places(\n          (Math.atan2(row[0][1], row[0][0]) * 180) / Math.PI,\n        ),\n      ];\n    } else {\n      rotationDegrees = MatrixMath.quaternionToDegreesXYZ(\n        quaternion,\n        matrix,\n        row,\n      );\n    }\n\n    // expose both base data and convenience names\n    return {\n      rotationDegrees,\n      perspective,\n      quaternion,\n      scale,\n      skew,\n      translation,\n\n      rotate: rotationDegrees[2],\n      rotateX: rotationDegrees[0],\n      rotateY: rotationDegrees[1],\n      scaleX: scale[0],\n      scaleY: scale[1],\n      translateX: translation[0],\n      translateY: translation[1],\n    };\n  },\n};\n\nmodule.exports = MatrixMath;\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 * @format\n */\n\n'use strict';\n\nconst dummySize = {width: undefined, height: undefined};\n\nconst sizesDiffer = function(one, two) {\n  one = one || dummySize;\n  two = two || dummySize;\n  return one !== two && (one.width !== two.width || one.height !== two.height);\n};\n\nmodule.exports = sizesDiffer;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst DeprecatedImageStylePropTypes = require('../DeprecatedPropTypes/DeprecatedImageStylePropTypes');\nconst DeprecatedTextStylePropTypes = require('../DeprecatedPropTypes/DeprecatedTextStylePropTypes');\nconst DeprecatedViewStylePropTypes = require('../DeprecatedPropTypes/DeprecatedViewStylePropTypes');\n\nconst invariant = require('invariant');\n\n// Hardcoded because this is a legit case but we don't want to load it from\n// a private API. We might likely want to unify style sheet creation with how it\n// is done in the DOM so this might move into React. I know what I'm doing so\n// plz don't fire me.\nconst ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nclass StyleSheetValidation {\n  static validateStyleProp(prop: string, style: Object, caller: string) {\n    if (!__DEV__ || global.__RCTProfileIsProfiling) {\n      return;\n    }\n    if (allStylePropTypes[prop] === undefined) {\n      const message1 = '\"' + prop + '\" is not a valid style property.';\n      const message2 =\n        '\\nValid style props: ' +\n        JSON.stringify(Object.keys(allStylePropTypes).sort(), null, '  ');\n      styleError(message1, style, caller, message2);\n    }\n    const error = allStylePropTypes[prop](\n      style,\n      prop,\n      caller,\n      'prop',\n      null,\n      ReactPropTypesSecret,\n    );\n    if (error) {\n      styleError(error.message, style, caller);\n    }\n  }\n\n  static validateStyle(name: string, styles: Object) {\n    if (!__DEV__ || global.__RCTProfileIsProfiling) {\n      return;\n    }\n    if (!styles[name]) {\n      return;\n    }\n    const styleProps = Object.keys(styles[name]);\n    for (const prop of styleProps) {\n      StyleSheetValidation.validateStyleProp(\n        prop,\n        styles[name],\n        'StyleSheet ' + name,\n      );\n    }\n  }\n\n  /* $FlowFixMe(>=0.85.0 site=react_native_fb) This comment suppresses an error\n   * found when Flow v0.85 was deployed. To see the error, delete this comment\n   * and run Flow. */\n  static addValidStylePropTypes(stylePropTypes) {\n    if (!__DEV__ || global.__RCTProfileIsProfiling) {\n      return;\n    }\n    for (const key in stylePropTypes) {\n      allStylePropTypes[key] = stylePropTypes[key];\n    }\n  }\n}\n\nconst styleError = function(message1, style, caller?, message2?) {\n  invariant(\n    false,\n    message1 +\n      '\\n' +\n      (caller || '<<unknown>>') +\n      ': ' +\n      JSON.stringify(style, null, '  ') +\n      (message2 || ''),\n  );\n};\n\nconst allStylePropTypes = {};\n\nif (__DEV__ && !global.__RCTProfileIsProfiling) {\n  StyleSheetValidation.addValidStylePropTypes(DeprecatedImageStylePropTypes);\n  StyleSheetValidation.addValidStylePropTypes(DeprecatedTextStylePropTypes);\n  StyleSheetValidation.addValidStylePropTypes(DeprecatedViewStylePropTypes);\n}\n\nmodule.exports = StyleSheetValidation;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {\n  DangerouslyImpreciseStyle,\n  DangerouslyImpreciseStyleProp,\n} from './StyleSheet';\n\nfunction flattenStyle(\n  style: ?DangerouslyImpreciseStyleProp,\n): ?DangerouslyImpreciseStyle {\n  if (style === null || typeof style !== 'object') {\n    return undefined;\n  }\n\n  if (!Array.isArray(style)) {\n    return style;\n  }\n\n  const result = {};\n  for (let i = 0, styleLength = style.length; i < styleLength; ++i) {\n    const computedStyle = flattenStyle(style[i]);\n    if (computedStyle) {\n      for (const key in computedStyle) {\n        result[key] = computedStyle[key];\n      }\n    }\n  }\n  return result;\n}\n\nmodule.exports = flattenStyle;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {ViewProps} from './ViewPropTypes';\n\nconst React = require('react');\nimport ViewNativeComponent from './ViewNativeComponent';\nconst TextAncestor = require('../../Text/TextAncestor');\n\nexport type Props = ViewProps;\n\n/**\n * The most fundamental component for building a UI, View is a container that\n * supports layout with flexbox, style, some touch handling, and accessibility\n * controls.\n *\n * @see https://reactnative.dev/docs/view.html\n */\nconst View: React.AbstractComponent<\n  ViewProps,\n  React.ElementRef<typeof ViewNativeComponent>,\n> = React.forwardRef((props: ViewProps, forwardedRef) => {\n  return (\n    <TextAncestor.Provider value={false}>\n      <ViewNativeComponent {...props} ref={forwardedRef} />\n    </TextAncestor.Provider>\n  );\n});\n\nView.displayName = 'View';\n\nmodule.exports = View;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('../../Utilities/Platform');\nconst ReactNativeViewViewConfigAndroid = require('./ReactNativeViewViewConfigAndroid');\n\nconst registerGeneratedViewConfig = require('../../Utilities/registerGeneratedViewConfig');\nconst requireNativeComponent = require('../../ReactNative/requireNativeComponent');\n\nimport * as React from 'react';\n\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport type {ViewProps} from './ViewPropTypes';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\nexport type ViewNativeComponentType = HostComponent<ViewProps>;\n\nlet NativeViewComponent;\nlet viewConfig:\n  | {...}\n  | {|\n      bubblingEventTypes?: $ReadOnly<{\n        [eventName: string]: $ReadOnly<{|\n          phasedRegistrationNames: $ReadOnly<{|\n            bubbled: string,\n            captured: string,\n          |}>,\n        |}>,\n        ...,\n      }>,\n      directEventTypes?: $ReadOnly<{\n        [eventName: string]: $ReadOnly<{|registrationName: string|}>,\n        ...,\n      }>,\n      uiViewClassName: string,\n      validAttributes?: {\n        [propName: string]:\n          | true\n          | $ReadOnly<{|\n              diff?: <T>(arg1: any, arg2: any) => boolean,\n              process?: (arg1: any) => any,\n            |}>,\n        ...,\n      },\n    |};\n\nif (__DEV__ || global.RN$Bridgeless) {\n  // On Android, View extends the base component with additional view-only props\n  // On iOS, the base component is View\n  if (Platform.OS === 'android') {\n    viewConfig = ReactNativeViewViewConfigAndroid;\n    registerGeneratedViewConfig('RCTView', ReactNativeViewViewConfigAndroid);\n  } else {\n    viewConfig = {};\n    registerGeneratedViewConfig('RCTView', {uiViewClassName: 'RCTView'});\n  }\n\n  NativeViewComponent = 'RCTView';\n} else {\n  NativeViewComponent = requireNativeComponent('RCTView');\n}\n\nexport const __INTERNAL_VIEW_CONFIG = viewConfig;\n\ninterface NativeCommands {\n  +hotspotUpdate: (\n    viewRef: React.ElementRef<HostComponent<mixed>>,\n    x: number,\n    y: number,\n  ) => void;\n  +setPressed: (\n    viewRef: React.ElementRef<HostComponent<mixed>>,\n    pressed: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['hotspotUpdate', 'setPressed'],\n});\n\nexport default ((NativeViewComponent: any): ViewNativeComponentType);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport {dispatchCommand} from '../../Libraries/Renderer/shims/ReactNative';\n\ntype Options<T = string> = $ReadOnly<{|\n  supportedCommands: $ReadOnlyArray<T>,\n|}>;\n\nfunction codegenNativeCommands<T: {...}>(options: Options<$Keys<T>>): T {\n  const commandObj = {};\n\n  options.supportedCommands.forEach(command => {\n    commandObj[command] = (ref, ...args) => {\n      dispatchCommand(ref, command, args);\n    };\n  });\n\n  return ((commandObj: any): T);\n}\n\nexport default codegenNativeCommands;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type {ReactNativeType} from './ReactNativeTypes';\n\nlet ReactNative;\n\nif (__DEV__) {\n  ReactNative = require('../implementations/ReactNativeRenderer-dev');\n} else {\n  ReactNative = require('../implementations/ReactNativeRenderer-prod');\n}\n\nmodule.exports = (ReactNative: ReactNativeType);\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 * @noflow\n * @nolint\n * @providesModule ReactNativeRenderer-prod\n * @preventMunge\n * @generated\n */\n\n\"use strict\";\nrequire(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore\");\nvar ReactNativePrivateInterface = require(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInterface\"),\n  React = require(\"react\"),\n  Scheduler = require(\"scheduler\");\nfunction invokeGuardedCallbackImpl(name, func, context, a, b, c, d, e, f) {\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    this.onError(error);\n  }\n}\nvar hasError = !1,\n  caughtError = null,\n  hasRethrowError = !1,\n  rethrowError = null,\n  reporter = {\n    onError: function(error) {\n      hasError = !0;\n      caughtError = error;\n    }\n  };\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n  hasError = !1;\n  caughtError = null;\n  invokeGuardedCallbackImpl.apply(reporter, arguments);\n}\nfunction invokeGuardedCallbackAndCatchFirstError(\n  name,\n  func,\n  context,\n  a,\n  b,\n  c,\n  d,\n  e,\n  f\n) {\n  invokeGuardedCallback.apply(this, arguments);\n  if (hasError) {\n    if (hasError) {\n      var error = caughtError;\n      hasError = !1;\n      caughtError = null;\n    } else\n      throw Error(\n        \"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n    hasRethrowError || ((hasRethrowError = !0), (rethrowError = error));\n  }\n}\nvar getFiberCurrentPropsFromNode = null,\n  getInstanceFromNode = null,\n  getNodeFromInstance = null;\nfunction executeDispatch(event, listener, inst) {\n  var type = event.type || \"unknown-event\";\n  event.currentTarget = getNodeFromInstance(inst);\n  invokeGuardedCallbackAndCatchFirstError(type, listener, void 0, event);\n  event.currentTarget = null;\n}\nfunction executeDirectDispatch(event) {\n  var dispatchListener = event._dispatchListeners,\n    dispatchInstance = event._dispatchInstances;\n  if (Array.isArray(dispatchListener))\n    throw Error(\"executeDirectDispatch(...): Invalid `event`.\");\n  event.currentTarget = dispatchListener\n    ? getNodeFromInstance(dispatchInstance)\n    : null;\n  dispatchListener = dispatchListener ? dispatchListener(event) : null;\n  event.currentTarget = null;\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n  return dispatchListener;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction SyntheticEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n  this._dispatchInstances = this._dispatchListeners = null;\n  dispatchConfig = this.constructor.Interface;\n  for (var propName in dispatchConfig)\n    dispatchConfig.hasOwnProperty(propName) &&\n      ((targetInst = dispatchConfig[propName])\n        ? (this[propName] = targetInst(nativeEvent))\n        : \"target\" === propName\n        ? (this.target = nativeEventTarget)\n        : (this[propName] = nativeEvent[propName]));\n  this.isDefaultPrevented = (null != nativeEvent.defaultPrevented\n  ? nativeEvent.defaultPrevented\n  : !1 === nativeEvent.returnValue)\n    ? functionThatReturnsTrue\n    : functionThatReturnsFalse;\n  this.isPropagationStopped = functionThatReturnsFalse;\n  return this;\n}\nObject.assign(SyntheticEvent.prototype, {\n  preventDefault: function() {\n    this.defaultPrevented = !0;\n    var event = this.nativeEvent;\n    event &&\n      (event.preventDefault\n        ? event.preventDefault()\n        : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n      (this.isDefaultPrevented = functionThatReturnsTrue));\n  },\n  stopPropagation: function() {\n    var event = this.nativeEvent;\n    event &&\n      (event.stopPropagation\n        ? event.stopPropagation()\n        : \"unknown\" !== typeof event.cancelBubble && (event.cancelBubble = !0),\n      (this.isPropagationStopped = functionThatReturnsTrue));\n  },\n  persist: function() {\n    this.isPersistent = functionThatReturnsTrue;\n  },\n  isPersistent: functionThatReturnsFalse,\n  destructor: function() {\n    var Interface = this.constructor.Interface,\n      propName;\n    for (propName in Interface) this[propName] = null;\n    this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n    this.isPropagationStopped = this.isDefaultPrevented = functionThatReturnsFalse;\n    this._dispatchInstances = this._dispatchListeners = null;\n  }\n});\nSyntheticEvent.Interface = {\n  type: null,\n  target: null,\n  currentTarget: function() {\n    return null;\n  },\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function(event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\nSyntheticEvent.extend = function(Interface) {\n  function E() {}\n  function Class() {\n    return Super.apply(this, arguments);\n  }\n  var Super = this;\n  E.prototype = Super.prototype;\n  var prototype = new E();\n  Object.assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n  Class.Interface = Object.assign({}, Super.Interface, Interface);\n  Class.extend = Super.extend;\n  addEventPoolingTo(Class);\n  return Class;\n};\naddEventPoolingTo(SyntheticEvent);\nfunction createOrGetPooledEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeInst\n) {\n  if (this.eventPool.length) {\n    var instance = this.eventPool.pop();\n    this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n    return instance;\n  }\n  return new this(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\nfunction releasePooledEvent(event) {\n  if (!(event instanceof this))\n    throw Error(\n      \"Trying to release an event instance into a pool of a different type.\"\n    );\n  event.destructor();\n  10 > this.eventPool.length && this.eventPool.push(event);\n}\nfunction addEventPoolingTo(EventConstructor) {\n  EventConstructor.getPooled = createOrGetPooledEvent;\n  EventConstructor.eventPool = [];\n  EventConstructor.release = releasePooledEvent;\n}\nvar ResponderSyntheticEvent = SyntheticEvent.extend({\n  touchHistory: function() {\n    return null;\n  }\n});\nfunction isStartish(topLevelType) {\n  return \"topTouchStart\" === topLevelType;\n}\nfunction isMoveish(topLevelType) {\n  return \"topTouchMove\" === topLevelType;\n}\nvar startDependencies = [\"topTouchStart\"],\n  moveDependencies = [\"topTouchMove\"],\n  endDependencies = [\"topTouchCancel\", \"topTouchEnd\"],\n  touchBank = [],\n  touchHistory = {\n    touchBank: touchBank,\n    numberActiveTouches: 0,\n    indexOfSingleActiveTouch: -1,\n    mostRecentTimeStamp: 0\n  };\nfunction timestampForTouch(touch) {\n  return touch.timeStamp || touch.timestamp;\n}\nfunction getTouchIdentifier(_ref) {\n  _ref = _ref.identifier;\n  if (null == _ref) throw Error(\"Touch object is missing identifier.\");\n  return _ref;\n}\nfunction recordTouchStart(touch) {\n  var identifier = getTouchIdentifier(touch),\n    touchRecord = touchBank[identifier];\n  touchRecord\n    ? ((touchRecord.touchActive = !0),\n      (touchRecord.startPageX = touch.pageX),\n      (touchRecord.startPageY = touch.pageY),\n      (touchRecord.startTimeStamp = timestampForTouch(touch)),\n      (touchRecord.currentPageX = touch.pageX),\n      (touchRecord.currentPageY = touch.pageY),\n      (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n      (touchRecord.previousPageX = touch.pageX),\n      (touchRecord.previousPageY = touch.pageY),\n      (touchRecord.previousTimeStamp = timestampForTouch(touch)))\n    : ((touchRecord = {\n        touchActive: !0,\n        startPageX: touch.pageX,\n        startPageY: touch.pageY,\n        startTimeStamp: timestampForTouch(touch),\n        currentPageX: touch.pageX,\n        currentPageY: touch.pageY,\n        currentTimeStamp: timestampForTouch(touch),\n        previousPageX: touch.pageX,\n        previousPageY: touch.pageY,\n        previousTimeStamp: timestampForTouch(touch)\n      }),\n      (touchBank[identifier] = touchRecord));\n  touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\nfunction recordTouchMove(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !0),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nfunction recordTouchEnd(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !1),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nvar ResponderTouchHistoryStore = {\n  recordTouchTrack: function(topLevelType, nativeEvent) {\n    if (isMoveish(topLevelType))\n      nativeEvent.changedTouches.forEach(recordTouchMove);\n    else if (isStartish(topLevelType))\n      nativeEvent.changedTouches.forEach(recordTouchStart),\n        (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n        1 === touchHistory.numberActiveTouches &&\n          (touchHistory.indexOfSingleActiveTouch =\n            nativeEvent.touches[0].identifier);\n    else if (\n      \"topTouchEnd\" === topLevelType ||\n      \"topTouchCancel\" === topLevelType\n    )\n      if (\n        (nativeEvent.changedTouches.forEach(recordTouchEnd),\n        (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n        1 === touchHistory.numberActiveTouches)\n      )\n        for (topLevelType = 0; topLevelType < touchBank.length; topLevelType++)\n          if (\n            ((nativeEvent = touchBank[topLevelType]),\n            null != nativeEvent && nativeEvent.touchActive)\n          ) {\n            touchHistory.indexOfSingleActiveTouch = topLevelType;\n            break;\n          }\n  },\n  touchHistory: touchHistory\n};\nfunction accumulate(current, next) {\n  if (null == next)\n    throw Error(\n      \"accumulate(...): Accumulated items must not be null or undefined.\"\n    );\n  return null == current\n    ? next\n    : Array.isArray(current)\n    ? current.concat(next)\n    : Array.isArray(next)\n    ? [current].concat(next)\n    : [current, next];\n}\nfunction accumulateInto(current, next) {\n  if (null == next)\n    throw Error(\n      \"accumulateInto(...): Accumulated items must not be null or undefined.\"\n    );\n  if (null == current) return next;\n  if (Array.isArray(current)) {\n    if (Array.isArray(next)) return current.push.apply(current, next), current;\n    current.push(next);\n    return current;\n  }\n  return Array.isArray(next) ? [current].concat(next) : [current, next];\n}\nfunction forEachAccumulated(arr, cb, scope) {\n  Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr);\n}\nvar responderInst = null,\n  trackedTouchCount = 0;\nfunction changeResponder(nextResponderInst, blockHostResponder) {\n  var oldResponderInst = responderInst;\n  responderInst = nextResponderInst;\n  if (null !== ResponderEventPlugin.GlobalResponderHandler)\n    ResponderEventPlugin.GlobalResponderHandler.onChange(\n      oldResponderInst,\n      nextResponderInst,\n      blockHostResponder\n    );\n}\nvar eventTypes = {\n  startShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onStartShouldSetResponder\",\n      captured: \"onStartShouldSetResponderCapture\"\n    },\n    dependencies: startDependencies\n  },\n  scrollShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onScrollShouldSetResponder\",\n      captured: \"onScrollShouldSetResponderCapture\"\n    },\n    dependencies: [\"topScroll\"]\n  },\n  selectionChangeShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onSelectionChangeShouldSetResponder\",\n      captured: \"onSelectionChangeShouldSetResponderCapture\"\n    },\n    dependencies: [\"topSelectionChange\"]\n  },\n  moveShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onMoveShouldSetResponder\",\n      captured: \"onMoveShouldSetResponderCapture\"\n    },\n    dependencies: moveDependencies\n  },\n  responderStart: {\n    registrationName: \"onResponderStart\",\n    dependencies: startDependencies\n  },\n  responderMove: {\n    registrationName: \"onResponderMove\",\n    dependencies: moveDependencies\n  },\n  responderEnd: {\n    registrationName: \"onResponderEnd\",\n    dependencies: endDependencies\n  },\n  responderRelease: {\n    registrationName: \"onResponderRelease\",\n    dependencies: endDependencies\n  },\n  responderTerminationRequest: {\n    registrationName: \"onResponderTerminationRequest\",\n    dependencies: []\n  },\n  responderGrant: { registrationName: \"onResponderGrant\", dependencies: [] },\n  responderReject: { registrationName: \"onResponderReject\", dependencies: [] },\n  responderTerminate: {\n    registrationName: \"onResponderTerminate\",\n    dependencies: []\n  }\n};\nfunction getParent(inst) {\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction traverseTwoPhase(inst, fn, arg) {\n  for (var path = []; inst; ) path.push(inst), (inst = getParent(inst));\n  for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n  for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction getListener(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  if (\n    (phase = getListener(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    targetInst = targetInst ? getParent(targetInst) : null;\n    traverseTwoPhase(targetInst, accumulateDirectionalDispatches, event);\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  event &&\n    event.dispatchConfig.phasedRegistrationNames &&\n    traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n}\nvar ResponderEventPlugin = {\n    _getResponder: function() {\n      return responderInst;\n    },\n    eventTypes: eventTypes,\n    extractEvents: function(\n      topLevelType,\n      targetInst,\n      nativeEvent,\n      nativeEventTarget\n    ) {\n      if (isStartish(topLevelType)) trackedTouchCount += 1;\n      else if (\n        \"topTouchEnd\" === topLevelType ||\n        \"topTouchCancel\" === topLevelType\n      )\n        if (0 <= trackedTouchCount) --trackedTouchCount;\n        else return null;\n      ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n      if (\n        targetInst &&\n        ((\"topScroll\" === topLevelType && !nativeEvent.responderIgnoreScroll) ||\n          (0 < trackedTouchCount && \"topSelectionChange\" === topLevelType) ||\n          isStartish(topLevelType) ||\n          isMoveish(topLevelType))\n      ) {\n        var shouldSetEventType = isStartish(topLevelType)\n          ? eventTypes.startShouldSetResponder\n          : isMoveish(topLevelType)\n          ? eventTypes.moveShouldSetResponder\n          : \"topSelectionChange\" === topLevelType\n          ? eventTypes.selectionChangeShouldSetResponder\n          : eventTypes.scrollShouldSetResponder;\n        if (responderInst)\n          b: {\n            var JSCompiler_temp = responderInst;\n            for (\n              var depthA = 0, tempA = JSCompiler_temp;\n              tempA;\n              tempA = getParent(tempA)\n            )\n              depthA++;\n            tempA = 0;\n            for (var tempB = targetInst; tempB; tempB = getParent(tempB))\n              tempA++;\n            for (; 0 < depthA - tempA; )\n              (JSCompiler_temp = getParent(JSCompiler_temp)), depthA--;\n            for (; 0 < tempA - depthA; )\n              (targetInst = getParent(targetInst)), tempA--;\n            for (; depthA--; ) {\n              if (\n                JSCompiler_temp === targetInst ||\n                JSCompiler_temp === targetInst.alternate\n              )\n                break b;\n              JSCompiler_temp = getParent(JSCompiler_temp);\n              targetInst = getParent(targetInst);\n            }\n            JSCompiler_temp = null;\n          }\n        else JSCompiler_temp = targetInst;\n        targetInst = JSCompiler_temp;\n        JSCompiler_temp = targetInst === responderInst;\n        shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        shouldSetEventType.touchHistory =\n          ResponderTouchHistoryStore.touchHistory;\n        JSCompiler_temp\n          ? forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingleSkipTarget\n            )\n          : forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingle\n            );\n        b: {\n          JSCompiler_temp = shouldSetEventType._dispatchListeners;\n          targetInst = shouldSetEventType._dispatchInstances;\n          if (Array.isArray(JSCompiler_temp))\n            for (\n              depthA = 0;\n              depthA < JSCompiler_temp.length &&\n              !shouldSetEventType.isPropagationStopped();\n              depthA++\n            ) {\n              if (\n                JSCompiler_temp[depthA](shouldSetEventType, targetInst[depthA])\n              ) {\n                JSCompiler_temp = targetInst[depthA];\n                break b;\n              }\n            }\n          else if (\n            JSCompiler_temp &&\n            JSCompiler_temp(shouldSetEventType, targetInst)\n          ) {\n            JSCompiler_temp = targetInst;\n            break b;\n          }\n          JSCompiler_temp = null;\n        }\n        shouldSetEventType._dispatchInstances = null;\n        shouldSetEventType._dispatchListeners = null;\n        shouldSetEventType.isPersistent() ||\n          shouldSetEventType.constructor.release(shouldSetEventType);\n        if (JSCompiler_temp && JSCompiler_temp !== responderInst)\n          if (\n            ((shouldSetEventType = ResponderSyntheticEvent.getPooled(\n              eventTypes.responderGrant,\n              JSCompiler_temp,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            (shouldSetEventType.touchHistory =\n              ResponderTouchHistoryStore.touchHistory),\n            forEachAccumulated(\n              shouldSetEventType,\n              accumulateDirectDispatchesSingle\n            ),\n            (targetInst = !0 === executeDirectDispatch(shouldSetEventType)),\n            responderInst)\n          )\n            if (\n              ((depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminationRequest,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (depthA.touchHistory = ResponderTouchHistoryStore.touchHistory),\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle),\n              (tempA =\n                !depthA._dispatchListeners || executeDirectDispatch(depthA)),\n              depthA.isPersistent() || depthA.constructor.release(depthA),\n              tempA)\n            ) {\n              depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminate,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              );\n              depthA.touchHistory = ResponderTouchHistoryStore.touchHistory;\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle);\n              var JSCompiler_temp$jscomp$0 = accumulate(\n                JSCompiler_temp$jscomp$0,\n                [shouldSetEventType, depthA]\n              );\n              changeResponder(JSCompiler_temp, targetInst);\n            } else\n              (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderReject,\n                JSCompiler_temp,\n                nativeEvent,\n                nativeEventTarget\n              )),\n                (shouldSetEventType.touchHistory =\n                  ResponderTouchHistoryStore.touchHistory),\n                forEachAccumulated(\n                  shouldSetEventType,\n                  accumulateDirectDispatchesSingle\n                ),\n                (JSCompiler_temp$jscomp$0 = accumulate(\n                  JSCompiler_temp$jscomp$0,\n                  shouldSetEventType\n                ));\n          else\n            (JSCompiler_temp$jscomp$0 = accumulate(\n              JSCompiler_temp$jscomp$0,\n              shouldSetEventType\n            )),\n              changeResponder(JSCompiler_temp, targetInst);\n        else JSCompiler_temp$jscomp$0 = null;\n      } else JSCompiler_temp$jscomp$0 = null;\n      shouldSetEventType = responderInst && isStartish(topLevelType);\n      JSCompiler_temp = responderInst && isMoveish(topLevelType);\n      targetInst =\n        responderInst &&\n        (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType);\n      if (\n        (shouldSetEventType = shouldSetEventType\n          ? eventTypes.responderStart\n          : JSCompiler_temp\n          ? eventTypes.responderMove\n          : targetInst\n          ? eventTypes.responderEnd\n          : null)\n      )\n        (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (shouldSetEventType.touchHistory =\n            ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(\n            shouldSetEventType,\n            accumulateDirectDispatchesSingle\n          ),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            shouldSetEventType\n          ));\n      shouldSetEventType = responderInst && \"topTouchCancel\" === topLevelType;\n      if (\n        (topLevelType =\n          responderInst &&\n          !shouldSetEventType &&\n          (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType))\n      )\n        a: {\n          if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length)\n            for (\n              JSCompiler_temp = 0;\n              JSCompiler_temp < topLevelType.length;\n              JSCompiler_temp++\n            )\n              if (\n                ((targetInst = topLevelType[JSCompiler_temp].target),\n                null !== targetInst &&\n                  void 0 !== targetInst &&\n                  0 !== targetInst)\n              ) {\n                depthA = getInstanceFromNode(targetInst);\n                b: {\n                  for (targetInst = responderInst; depthA; ) {\n                    if (\n                      targetInst === depthA ||\n                      targetInst === depthA.alternate\n                    ) {\n                      targetInst = !0;\n                      break b;\n                    }\n                    depthA = getParent(depthA);\n                  }\n                  targetInst = !1;\n                }\n                if (targetInst) {\n                  topLevelType = !1;\n                  break a;\n                }\n              }\n          topLevelType = !0;\n        }\n      if (\n        (topLevelType = shouldSetEventType\n          ? eventTypes.responderTerminate\n          : topLevelType\n          ? eventTypes.responderRelease\n          : null)\n      )\n        (nativeEvent = ResponderSyntheticEvent.getPooled(\n          topLevelType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            nativeEvent\n          )),\n          changeResponder(null);\n      return JSCompiler_temp$jscomp$0;\n    },\n    GlobalResponderHandler: null,\n    injection: {\n      injectGlobalResponderHandler: function(GlobalResponderHandler) {\n        ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n      }\n    }\n  },\n  eventPluginOrder = null,\n  namesToPlugins = {};\nfunction recomputePluginOrdering() {\n  if (eventPluginOrder)\n    for (var pluginName in namesToPlugins) {\n      var pluginModule = namesToPlugins[pluginName],\n        pluginIndex = eventPluginOrder.indexOf(pluginName);\n      if (!(-1 < pluginIndex))\n        throw Error(\n          \"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `\" +\n            pluginName +\n            \"`.\"\n        );\n      if (!plugins[pluginIndex]) {\n        if (!pluginModule.extractEvents)\n          throw Error(\n            \"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `\" +\n              pluginName +\n              \"` does not.\"\n          );\n        plugins[pluginIndex] = pluginModule;\n        pluginIndex = pluginModule.eventTypes;\n        for (var eventName in pluginIndex) {\n          var JSCompiler_inline_result = void 0;\n          var dispatchConfig = pluginIndex[eventName],\n            eventName$jscomp$0 = eventName;\n          if (eventNameDispatchConfigs.hasOwnProperty(eventName$jscomp$0))\n            throw Error(\n              \"EventPluginRegistry: More than one plugin attempted to publish the same event name, `\" +\n                eventName$jscomp$0 +\n                \"`.\"\n            );\n          eventNameDispatchConfigs[eventName$jscomp$0] = dispatchConfig;\n          var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n          if (phasedRegistrationNames) {\n            for (JSCompiler_inline_result in phasedRegistrationNames)\n              phasedRegistrationNames.hasOwnProperty(\n                JSCompiler_inline_result\n              ) &&\n                publishRegistrationName(\n                  phasedRegistrationNames[JSCompiler_inline_result],\n                  pluginModule,\n                  eventName$jscomp$0\n                );\n            JSCompiler_inline_result = !0;\n          } else\n            dispatchConfig.registrationName\n              ? (publishRegistrationName(\n                  dispatchConfig.registrationName,\n                  pluginModule,\n                  eventName$jscomp$0\n                ),\n                (JSCompiler_inline_result = !0))\n              : (JSCompiler_inline_result = !1);\n          if (!JSCompiler_inline_result)\n            throw Error(\n              \"EventPluginRegistry: Failed to publish event `\" +\n                eventName +\n                \"` for plugin `\" +\n                pluginName +\n                \"`.\"\n            );\n        }\n      }\n    }\n}\nfunction publishRegistrationName(registrationName, pluginModule) {\n  if (registrationNameModules[registrationName])\n    throw Error(\n      \"EventPluginRegistry: More than one plugin attempted to publish the same registration name, `\" +\n        registrationName +\n        \"`.\"\n    );\n  registrationNameModules[registrationName] = pluginModule;\n}\nvar plugins = [],\n  eventNameDispatchConfigs = {},\n  registrationNameModules = {};\nfunction getListener$1(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nvar customBubblingEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customBubblingEventTypes,\n  customDirectEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customDirectEventTypes;\nfunction accumulateDirectionalDispatches$1(inst, phase, event) {\n  if (\n    (phase = getListener$1(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction accumulateTwoPhaseDispatchesSingle$1(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    for (var inst = event._targetInst, path = []; inst; ) {\n      path.push(inst);\n      do inst = inst.return;\n      while (inst && 5 !== inst.tag);\n      inst = inst ? inst : null;\n    }\n    for (inst = path.length; 0 < inst--; )\n      accumulateDirectionalDispatches$1(path[inst], \"captured\", event);\n    for (inst = 0; inst < path.length; inst++)\n      accumulateDirectionalDispatches$1(path[inst], \"bubbled\", event);\n  }\n}\nfunction accumulateDirectDispatchesSingle$1(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener$1(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nif (eventPluginOrder)\n  throw Error(\n    \"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.\"\n  );\neventPluginOrder = Array.prototype.slice.call([\n  \"ResponderEventPlugin\",\n  \"ReactNativeBridgeEventPlugin\"\n]);\nrecomputePluginOrdering();\nvar injectedNamesToPlugins$jscomp$inline_222 = {\n    ResponderEventPlugin: ResponderEventPlugin,\n    ReactNativeBridgeEventPlugin: {\n      eventTypes: {},\n      extractEvents: function(\n        topLevelType,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      ) {\n        if (null == targetInst) return null;\n        var bubbleDispatchConfig = customBubblingEventTypes[topLevelType],\n          directDispatchConfig = customDirectEventTypes[topLevelType];\n        if (!bubbleDispatchConfig && !directDispatchConfig)\n          throw Error(\n            'Unsupported top level event type \"' + topLevelType + '\" dispatched'\n          );\n        topLevelType = SyntheticEvent.getPooled(\n          bubbleDispatchConfig || directDispatchConfig,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        if (bubbleDispatchConfig)\n          forEachAccumulated(\n            topLevelType,\n            accumulateTwoPhaseDispatchesSingle$1\n          );\n        else if (directDispatchConfig)\n          forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle$1);\n        else return null;\n        return topLevelType;\n      }\n    }\n  },\n  isOrderingDirty$jscomp$inline_223 = !1,\n  pluginName$jscomp$inline_224;\nfor (pluginName$jscomp$inline_224 in injectedNamesToPlugins$jscomp$inline_222)\n  if (\n    injectedNamesToPlugins$jscomp$inline_222.hasOwnProperty(\n      pluginName$jscomp$inline_224\n    )\n  ) {\n    var pluginModule$jscomp$inline_225 =\n      injectedNamesToPlugins$jscomp$inline_222[pluginName$jscomp$inline_224];\n    if (\n      !namesToPlugins.hasOwnProperty(pluginName$jscomp$inline_224) ||\n      namesToPlugins[pluginName$jscomp$inline_224] !==\n        pluginModule$jscomp$inline_225\n    ) {\n      if (namesToPlugins[pluginName$jscomp$inline_224])\n        throw Error(\n          \"EventPluginRegistry: Cannot inject two different event plugins using the same name, `\" +\n            pluginName$jscomp$inline_224 +\n            \"`.\"\n        );\n      namesToPlugins[\n        pluginName$jscomp$inline_224\n      ] = pluginModule$jscomp$inline_225;\n      isOrderingDirty$jscomp$inline_223 = !0;\n    }\n  }\nisOrderingDirty$jscomp$inline_223 && recomputePluginOrdering();\nvar instanceCache = new Map(),\n  instanceProps = new Map();\nfunction getInstanceFromTag(tag) {\n  return instanceCache.get(tag) || null;\n}\nfunction batchedUpdatesImpl(fn, bookkeeping) {\n  return fn(bookkeeping);\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates(fn, bookkeeping) {\n  if (isInsideEventHandler) return fn(bookkeeping);\n  isInsideEventHandler = !0;\n  try {\n    return batchedUpdatesImpl(fn, bookkeeping);\n  } finally {\n    isInsideEventHandler = !1;\n  }\n}\nvar eventQueue = null;\nfunction executeDispatchesAndReleaseTopLevel(e) {\n  if (e) {\n    var dispatchListeners = e._dispatchListeners,\n      dispatchInstances = e._dispatchInstances;\n    if (Array.isArray(dispatchListeners))\n      for (\n        var i = 0;\n        i < dispatchListeners.length && !e.isPropagationStopped();\n        i++\n      )\n        executeDispatch(e, dispatchListeners[i], dispatchInstances[i]);\n    else\n      dispatchListeners &&\n        executeDispatch(e, dispatchListeners, dispatchInstances);\n    e._dispatchListeners = null;\n    e._dispatchInstances = null;\n    e.isPersistent() || e.constructor.release(e);\n  }\n}\nvar EMPTY_NATIVE_EVENT = {};\nfunction _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam) {\n  var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT,\n    inst = getInstanceFromTag(rootNodeID),\n    target = null;\n  null != inst && (target = inst.stateNode);\n  batchedUpdates(function() {\n    var JSCompiler_inline_result = target;\n    for (\n      var events = null, legacyPlugins = plugins, i = 0;\n      i < legacyPlugins.length;\n      i++\n    ) {\n      var possiblePlugin = legacyPlugins[i];\n      possiblePlugin &&\n        (possiblePlugin = possiblePlugin.extractEvents(\n          topLevelType,\n          inst,\n          nativeEvent,\n          JSCompiler_inline_result\n        )) &&\n        (events = accumulateInto(events, possiblePlugin));\n    }\n    JSCompiler_inline_result = events;\n    null !== JSCompiler_inline_result &&\n      (eventQueue = accumulateInto(eventQueue, JSCompiler_inline_result));\n    JSCompiler_inline_result = eventQueue;\n    eventQueue = null;\n    if (JSCompiler_inline_result) {\n      forEachAccumulated(\n        JSCompiler_inline_result,\n        executeDispatchesAndReleaseTopLevel\n      );\n      if (eventQueue)\n        throw Error(\n          \"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.\"\n        );\n      if (hasRethrowError)\n        throw ((JSCompiler_inline_result = rethrowError),\n        (hasRethrowError = !1),\n        (rethrowError = null),\n        JSCompiler_inline_result);\n    }\n  });\n}\nReactNativePrivateInterface.RCTEventEmitter.register({\n  receiveEvent: function(rootNodeID, topLevelType, nativeEventParam) {\n    _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam);\n  },\n  receiveTouches: function(eventTopLevelType, touches, changedIndices) {\n    if (\n      \"topTouchEnd\" === eventTopLevelType ||\n      \"topTouchCancel\" === eventTopLevelType\n    ) {\n      var JSCompiler_temp = [];\n      for (var i = 0; i < changedIndices.length; i++) {\n        var index$0 = changedIndices[i];\n        JSCompiler_temp.push(touches[index$0]);\n        touches[index$0] = null;\n      }\n      for (i = changedIndices = 0; i < touches.length; i++)\n        (index$0 = touches[i]),\n          null !== index$0 && (touches[changedIndices++] = index$0);\n      touches.length = changedIndices;\n    } else\n      for (JSCompiler_temp = [], i = 0; i < changedIndices.length; i++)\n        JSCompiler_temp.push(touches[changedIndices[i]]);\n    for (\n      changedIndices = 0;\n      changedIndices < JSCompiler_temp.length;\n      changedIndices++\n    ) {\n      i = JSCompiler_temp[changedIndices];\n      i.changedTouches = JSCompiler_temp;\n      i.touches = touches;\n      index$0 = null;\n      var target = i.target;\n      null === target || void 0 === target || 1 > target || (index$0 = target);\n      _receiveRootNodeIDEvent(index$0, eventTopLevelType, i);\n    }\n  }\n});\ngetFiberCurrentPropsFromNode = function(stateNode) {\n  return instanceProps.get(stateNode._nativeTag) || null;\n};\ngetInstanceFromNode = getInstanceFromTag;\ngetNodeFromInstance = function(inst) {\n  inst = inst.stateNode;\n  var tag = inst._nativeTag;\n  void 0 === tag && ((inst = inst.canonical), (tag = inst._nativeTag));\n  if (!tag) throw Error(\"All native instances should have a tag.\");\n  return inst;\n};\nResponderEventPlugin.injection.injectGlobalResponderHandler({\n  onChange: function(from, to, blockNativeResponder) {\n    null !== to\n      ? ReactNativePrivateInterface.UIManager.setJSResponder(\n          to.stateNode._nativeTag,\n          blockNativeResponder\n        )\n      : ReactNativePrivateInterface.UIManager.clearJSResponder();\n  }\n});\nvar ReactSharedInternals =\n    React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n  REACT_ELEMENT_TYPE = 60103,\n  REACT_PORTAL_TYPE = 60106,\n  REACT_FRAGMENT_TYPE = 60107,\n  REACT_STRICT_MODE_TYPE = 60108,\n  REACT_PROFILER_TYPE = 60114,\n  REACT_PROVIDER_TYPE = 60109,\n  REACT_CONTEXT_TYPE = 60110,\n  REACT_FORWARD_REF_TYPE = 60112,\n  REACT_SUSPENSE_TYPE = 60113,\n  REACT_SUSPENSE_LIST_TYPE = 60120,\n  REACT_MEMO_TYPE = 60115,\n  REACT_LAZY_TYPE = 60116,\n  REACT_BLOCK_TYPE = 60121,\n  REACT_DEBUG_TRACING_MODE_TYPE = 60129,\n  REACT_OFFSCREEN_TYPE = 60130,\n  REACT_LEGACY_HIDDEN_TYPE = 60131;\nif (\"function\" === typeof Symbol && Symbol.for) {\n  var symbolFor = Symbol.for;\n  REACT_ELEMENT_TYPE = symbolFor(\"react.element\");\n  REACT_PORTAL_TYPE = symbolFor(\"react.portal\");\n  REACT_FRAGMENT_TYPE = symbolFor(\"react.fragment\");\n  REACT_STRICT_MODE_TYPE = symbolFor(\"react.strict_mode\");\n  REACT_PROFILER_TYPE = symbolFor(\"react.profiler\");\n  REACT_PROVIDER_TYPE = symbolFor(\"react.provider\");\n  REACT_CONTEXT_TYPE = symbolFor(\"react.context\");\n  REACT_FORWARD_REF_TYPE = symbolFor(\"react.forward_ref\");\n  REACT_SUSPENSE_TYPE = symbolFor(\"react.suspense\");\n  REACT_SUSPENSE_LIST_TYPE = symbolFor(\"react.suspense_list\");\n  REACT_MEMO_TYPE = symbolFor(\"react.memo\");\n  REACT_LAZY_TYPE = symbolFor(\"react.lazy\");\n  REACT_BLOCK_TYPE = symbolFor(\"react.block\");\n  symbolFor(\"react.scope\");\n  REACT_DEBUG_TRACING_MODE_TYPE = symbolFor(\"react.debug_trace_mode\");\n  REACT_OFFSCREEN_TYPE = symbolFor(\"react.offscreen\");\n  REACT_LEGACY_HIDDEN_TYPE = symbolFor(\"react.legacy_hidden\");\n}\nvar MAYBE_ITERATOR_SYMBOL = \"function\" === typeof Symbol && Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nfunction getComponentName(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type) return type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PORTAL_TYPE:\n      return \"Portal\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Consumer\";\n      case REACT_PROVIDER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Provider\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        innerType = innerType.displayName || innerType.name || \"\";\n        return (\n          type.displayName ||\n          (\"\" !== innerType ? \"ForwardRef(\" + innerType + \")\" : \"ForwardRef\")\n        );\n      case REACT_MEMO_TYPE:\n        return getComponentName(type.type);\n      case REACT_BLOCK_TYPE:\n        return getComponentName(type._render);\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentName(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 1026) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(\"Unable to find node on an unmounted component.\");\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate)\n      throw Error(\"Unable to find node on an unmounted component.\");\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(\"Unable to find node on an unmounted component.\");\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$1 = parentA.child; child$1; ) {\n        if (child$1 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$1 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$1 = child$1.sibling;\n      }\n      if (!didFindChild) {\n        for (child$1 = parentB.child; child$1; ) {\n          if (child$1 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$1 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$1 = child$1.sibling;\n        }\n        if (!didFindChild)\n          throw Error(\n            \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n          );\n      }\n    }\n    if (a.alternate !== b)\n      throw Error(\n        \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n  }\n  if (3 !== a.tag)\n    throw Error(\"Unable to find node on an unmounted component.\");\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiber(parent) {\n  parent = findCurrentFiberUsingSlowPath(parent);\n  if (!parent) return null;\n  for (var node = parent; ; ) {\n    if (5 === node.tag || 6 === node.tag) return node;\n    if (node.child) (node.child.return = node), (node = node.child);\n    else {\n      if (node === parent) break;\n      for (; !node.sibling; ) {\n        if (!node.return || node.return === parent) return null;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return null;\n}\nfunction doesFiberContain(parentFiber, childFiber) {\n  for (\n    var parentFiberAlternate = parentFiber.alternate;\n    null !== childFiber;\n\n  ) {\n    if (childFiber === parentFiber || childFiber === parentFiberAlternate)\n      return !0;\n    childFiber = childFiber.return;\n  }\n  return !1;\n}\nvar emptyObject = {},\n  removedKeys = null,\n  removedKeyCount = 0,\n  deepDifferOptions = { unsafelyIgnoreFunctions: !0 };\nfunction defaultDiffer(prevProp, nextProp) {\n  return \"object\" !== typeof nextProp || null === nextProp\n    ? !0\n    : ReactNativePrivateInterface.deepDiffer(\n        prevProp,\n        nextProp,\n        deepDifferOptions\n      );\n}\nfunction restoreDeletedValuesInNestedArray(\n  updatePayload,\n  node,\n  validAttributes\n) {\n  if (Array.isArray(node))\n    for (var i = node.length; i-- && 0 < removedKeyCount; )\n      restoreDeletedValuesInNestedArray(\n        updatePayload,\n        node[i],\n        validAttributes\n      );\n  else if (node && 0 < removedKeyCount)\n    for (i in removedKeys)\n      if (removedKeys[i]) {\n        var nextProp = node[i];\n        if (void 0 !== nextProp) {\n          var attributeConfig = validAttributes[i];\n          if (attributeConfig) {\n            \"function\" === typeof nextProp && (nextProp = !0);\n            \"undefined\" === typeof nextProp && (nextProp = null);\n            if (\"object\" !== typeof attributeConfig)\n              updatePayload[i] = nextProp;\n            else if (\n              \"function\" === typeof attributeConfig.diff ||\n              \"function\" === typeof attributeConfig.process\n            )\n              (nextProp =\n                \"function\" === typeof attributeConfig.process\n                  ? attributeConfig.process(nextProp)\n                  : nextProp),\n                (updatePayload[i] = nextProp);\n            removedKeys[i] = !1;\n            removedKeyCount--;\n          }\n        }\n      }\n}\nfunction diffNestedProperty(\n  updatePayload,\n  prevProp,\n  nextProp,\n  validAttributes\n) {\n  if (!updatePayload && prevProp === nextProp) return updatePayload;\n  if (!prevProp || !nextProp)\n    return nextProp\n      ? addNestedProperty(updatePayload, nextProp, validAttributes)\n      : prevProp\n      ? clearNestedProperty(updatePayload, prevProp, validAttributes)\n      : updatePayload;\n  if (!Array.isArray(prevProp) && !Array.isArray(nextProp))\n    return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n  if (Array.isArray(prevProp) && Array.isArray(nextProp)) {\n    var minLength =\n        prevProp.length < nextProp.length ? prevProp.length : nextProp.length,\n      i;\n    for (i = 0; i < minLength; i++)\n      updatePayload = diffNestedProperty(\n        updatePayload,\n        prevProp[i],\n        nextProp[i],\n        validAttributes\n      );\n    for (; i < prevProp.length; i++)\n      updatePayload = clearNestedProperty(\n        updatePayload,\n        prevProp[i],\n        validAttributes\n      );\n    for (; i < nextProp.length; i++)\n      updatePayload = addNestedProperty(\n        updatePayload,\n        nextProp[i],\n        validAttributes\n      );\n    return updatePayload;\n  }\n  return Array.isArray(prevProp)\n    ? diffProperties(\n        updatePayload,\n        ReactNativePrivateInterface.flattenStyle(prevProp),\n        nextProp,\n        validAttributes\n      )\n    : diffProperties(\n        updatePayload,\n        prevProp,\n        ReactNativePrivateInterface.flattenStyle(nextProp),\n        validAttributes\n      );\n}\nfunction addNestedProperty(updatePayload, nextProp, validAttributes) {\n  if (!nextProp) return updatePayload;\n  if (!Array.isArray(nextProp))\n    return diffProperties(\n      updatePayload,\n      emptyObject,\n      nextProp,\n      validAttributes\n    );\n  for (var i = 0; i < nextProp.length; i++)\n    updatePayload = addNestedProperty(\n      updatePayload,\n      nextProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction clearNestedProperty(updatePayload, prevProp, validAttributes) {\n  if (!prevProp) return updatePayload;\n  if (!Array.isArray(prevProp))\n    return diffProperties(\n      updatePayload,\n      prevProp,\n      emptyObject,\n      validAttributes\n    );\n  for (var i = 0; i < prevProp.length; i++)\n    updatePayload = clearNestedProperty(\n      updatePayload,\n      prevProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction diffProperties(updatePayload, prevProps, nextProps, validAttributes) {\n  var attributeConfig, propKey;\n  for (propKey in nextProps)\n    if ((attributeConfig = validAttributes[propKey])) {\n      var prevProp = prevProps[propKey];\n      var nextProp = nextProps[propKey];\n      \"function\" === typeof nextProp &&\n        ((nextProp = !0), \"function\" === typeof prevProp && (prevProp = !0));\n      \"undefined\" === typeof nextProp &&\n        ((nextProp = null),\n        \"undefined\" === typeof prevProp && (prevProp = null));\n      removedKeys && (removedKeys[propKey] = !1);\n      if (updatePayload && void 0 !== updatePayload[propKey])\n        if (\"object\" !== typeof attributeConfig)\n          updatePayload[propKey] = nextProp;\n        else {\n          if (\n            \"function\" === typeof attributeConfig.diff ||\n            \"function\" === typeof attributeConfig.process\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              (updatePayload[propKey] = attributeConfig);\n        }\n      else if (prevProp !== nextProp)\n        if (\"object\" !== typeof attributeConfig)\n          defaultDiffer(prevProp, nextProp) &&\n            ((updatePayload || (updatePayload = {}))[propKey] = nextProp);\n        else if (\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n        ) {\n          if (\n            void 0 === prevProp ||\n            (\"function\" === typeof attributeConfig.diff\n              ? attributeConfig.diff(prevProp, nextProp)\n              : defaultDiffer(prevProp, nextProp))\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              ((updatePayload || (updatePayload = {}))[\n                propKey\n              ] = attributeConfig);\n        } else\n          (removedKeys = null),\n            (removedKeyCount = 0),\n            (updatePayload = diffNestedProperty(\n              updatePayload,\n              prevProp,\n              nextProp,\n              attributeConfig\n            )),\n            0 < removedKeyCount &&\n              updatePayload &&\n              (restoreDeletedValuesInNestedArray(\n                updatePayload,\n                nextProp,\n                attributeConfig\n              ),\n              (removedKeys = null));\n    }\n  for (var propKey$3 in prevProps)\n    void 0 === nextProps[propKey$3] &&\n      (!(attributeConfig = validAttributes[propKey$3]) ||\n        (updatePayload && void 0 !== updatePayload[propKey$3]) ||\n        ((prevProp = prevProps[propKey$3]),\n        void 0 !== prevProp &&\n          (\"object\" !== typeof attributeConfig ||\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n            ? (((updatePayload || (updatePayload = {}))[propKey$3] = null),\n              removedKeys || (removedKeys = {}),\n              removedKeys[propKey$3] ||\n                ((removedKeys[propKey$3] = !0), removedKeyCount++))\n            : (updatePayload = clearNestedProperty(\n                updatePayload,\n                prevProp,\n                attributeConfig\n              )))));\n  return updatePayload;\n}\nfunction mountSafeCallback_NOT_REALLY_SAFE(context, callback) {\n  return function() {\n    if (\n      callback &&\n      (\"boolean\" !== typeof context.__isMounted || context.__isMounted)\n    )\n      return callback.apply(context, arguments);\n  };\n}\nvar ReactNativeFiberHostComponent = (function() {\n  function ReactNativeFiberHostComponent(tag, viewConfig) {\n    this._nativeTag = tag;\n    this._children = [];\n    this.viewConfig = viewConfig;\n  }\n  var _proto = ReactNativeFiberHostComponent.prototype;\n  _proto.blur = function() {\n    ReactNativePrivateInterface.TextInputState.blurTextInput(this);\n  };\n  _proto.focus = function() {\n    ReactNativePrivateInterface.TextInputState.focusTextInput(this);\n  };\n  _proto.measure = function(callback) {\n    ReactNativePrivateInterface.UIManager.measure(\n      this._nativeTag,\n      mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n    );\n  };\n  _proto.measureInWindow = function(callback) {\n    ReactNativePrivateInterface.UIManager.measureInWindow(\n      this._nativeTag,\n      mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n    );\n  };\n  _proto.measureLayout = function(relativeToNativeNode, onSuccess, onFail) {\n    if (\"number\" === typeof relativeToNativeNode)\n      var relativeNode = relativeToNativeNode;\n    else\n      relativeToNativeNode._nativeTag &&\n        (relativeNode = relativeToNativeNode._nativeTag);\n    null != relativeNode &&\n      ReactNativePrivateInterface.UIManager.measureLayout(\n        this._nativeTag,\n        relativeNode,\n        mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n        mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n      );\n  };\n  _proto.setNativeProps = function(nativeProps) {\n    nativeProps = diffProperties(\n      null,\n      emptyObject,\n      nativeProps,\n      this.viewConfig.validAttributes\n    );\n    null != nativeProps &&\n      ReactNativePrivateInterface.UIManager.updateView(\n        this._nativeTag,\n        this.viewConfig.uiViewClassName,\n        nativeProps\n      );\n  };\n  return ReactNativeFiberHostComponent;\n})();\nfunction shim() {\n  throw Error(\n    \"The current renderer does not support hydration. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nvar getViewConfigForType =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get,\n  UPDATE_SIGNAL = {},\n  nextReactTag = 3;\nfunction allocateTag() {\n  var tag = nextReactTag;\n  1 === tag % 10 && (tag += 2);\n  nextReactTag = tag + 2;\n  return tag;\n}\nfunction recursivelyUncacheFiberNode(node) {\n  if (\"number\" === typeof node)\n    instanceCache.delete(node), instanceProps.delete(node);\n  else {\n    var tag = node._nativeTag;\n    instanceCache.delete(tag);\n    instanceProps.delete(tag);\n    node._children.forEach(recursivelyUncacheFiberNode);\n  }\n}\nfunction finalizeInitialChildren(parentInstance) {\n  if (0 === parentInstance._children.length) return !1;\n  var nativeTags = parentInstance._children.map(function(child) {\n    return \"number\" === typeof child ? child : child._nativeTag;\n  });\n  ReactNativePrivateInterface.UIManager.setChildren(\n    parentInstance._nativeTag,\n    nativeTags\n  );\n  return !1;\n}\nvar scheduleTimeout = setTimeout,\n  cancelTimeout = clearTimeout;\nfunction describeComponentFrame(name, source, ownerName) {\n  source = \"\";\n  ownerName && (source = \" (created by \" + ownerName + \")\");\n  return \"\\n    in \" + (name || \"Unknown\") + source;\n}\nfunction describeFunctionComponentFrame(fn, source) {\n  return fn\n    ? describeComponentFrame(fn.displayName || fn.name || null, source, null)\n    : \"\";\n}\nvar valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar emptyContextObject = {},\n  contextStackCursor = createCursor(emptyContextObject),\n  didPerformWorkStackCursor = createCursor(!1),\n  previousContext = emptyContextObject;\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n  var contextTypes = workInProgress.type.contextTypes;\n  if (!contextTypes) return emptyContextObject;\n  var instance = workInProgress.stateNode;\n  if (\n    instance &&\n    instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext\n  )\n    return instance.__reactInternalMemoizedMaskedChildContext;\n  var context = {},\n    key;\n  for (key in contextTypes) context[key] = unmaskedContext[key];\n  instance &&\n    ((workInProgress = workInProgress.stateNode),\n    (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n    (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n  return context;\n}\nfunction isContextProvider(type) {\n  type = type.childContextTypes;\n  return null !== type && void 0 !== type;\n}\nfunction popContext() {\n  pop(didPerformWorkStackCursor);\n  pop(contextStackCursor);\n}\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n  if (contextStackCursor.current !== emptyContextObject)\n    throw Error(\n      \"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  push(contextStackCursor, context);\n  push(didPerformWorkStackCursor, didChange);\n}\nfunction processChildContext(fiber, type, parentContext) {\n  var instance = fiber.stateNode;\n  fiber = type.childContextTypes;\n  if (\"function\" !== typeof instance.getChildContext) return parentContext;\n  instance = instance.getChildContext();\n  for (var contextKey in instance)\n    if (!(contextKey in fiber))\n      throw Error(\n        (getComponentName(type) || \"Unknown\") +\n          '.getChildContext(): key \"' +\n          contextKey +\n          '\" is not defined in childContextTypes.'\n      );\n  return Object.assign({}, parentContext, instance);\n}\nfunction pushContextProvider(workInProgress) {\n  workInProgress =\n    ((workInProgress = workInProgress.stateNode) &&\n      workInProgress.__reactInternalMemoizedMergedChildContext) ||\n    emptyContextObject;\n  previousContext = contextStackCursor.current;\n  push(contextStackCursor, workInProgress);\n  push(didPerformWorkStackCursor, didPerformWorkStackCursor.current);\n  return !0;\n}\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n  var instance = workInProgress.stateNode;\n  if (!instance)\n    throw Error(\n      \"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  didChange\n    ? ((workInProgress = processChildContext(\n        workInProgress,\n        type,\n        previousContext\n      )),\n      (instance.__reactInternalMemoizedMergedChildContext = workInProgress),\n      pop(didPerformWorkStackCursor),\n      pop(contextStackCursor),\n      push(contextStackCursor, workInProgress))\n    : pop(didPerformWorkStackCursor);\n  push(didPerformWorkStackCursor, didChange);\n}\nvar rendererID = null,\n  injectedHook = null,\n  Scheduler_now = Scheduler.unstable_now;\nScheduler_now();\nvar return_highestLanePriority = 8;\nfunction getHighestPriorityLanes(lanes) {\n  if (0 !== (1 & lanes)) return (return_highestLanePriority = 15), 1;\n  if (0 !== (2 & lanes)) return (return_highestLanePriority = 14), 2;\n  if (0 !== (4 & lanes)) return (return_highestLanePriority = 13), 4;\n  var inputDiscreteLanes = 24 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 12), inputDiscreteLanes;\n  if (0 !== (lanes & 32)) return (return_highestLanePriority = 11), 32;\n  inputDiscreteLanes = 192 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 10), inputDiscreteLanes;\n  if (0 !== (lanes & 256)) return (return_highestLanePriority = 9), 256;\n  inputDiscreteLanes = 3584 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 8), inputDiscreteLanes;\n  if (0 !== (lanes & 4096)) return (return_highestLanePriority = 7), 4096;\n  inputDiscreteLanes = 4186112 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 6), inputDiscreteLanes;\n  inputDiscreteLanes = 62914560 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 5), inputDiscreteLanes;\n  if (lanes & 67108864) return (return_highestLanePriority = 4), 67108864;\n  if (0 !== (lanes & 134217728))\n    return (return_highestLanePriority = 3), 134217728;\n  inputDiscreteLanes = 805306368 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 2), inputDiscreteLanes;\n  if (0 !== (1073741824 & lanes))\n    return (return_highestLanePriority = 1), 1073741824;\n  return_highestLanePriority = 8;\n  return lanes;\n}\nfunction schedulerPriorityToLanePriority(schedulerPriorityLevel) {\n  switch (schedulerPriorityLevel) {\n    case 99:\n      return 15;\n    case 98:\n      return 10;\n    case 97:\n    case 96:\n      return 8;\n    case 95:\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction lanePriorityToSchedulerPriority(lanePriority) {\n  switch (lanePriority) {\n    case 15:\n    case 14:\n      return 99;\n    case 13:\n    case 12:\n    case 11:\n    case 10:\n      return 98;\n    case 9:\n    case 8:\n    case 7:\n    case 6:\n    case 4:\n    case 5:\n      return 97;\n    case 3:\n    case 2:\n    case 1:\n      return 95;\n    case 0:\n      return 90;\n    default:\n      throw Error(\n        \"Invalid update priority: \" + lanePriority + \". This is a bug in React.\"\n      );\n  }\n}\nfunction getNextLanes(root, wipLanes) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return (return_highestLanePriority = 0);\n  var nextLanes = 0,\n    nextLanePriority = 0,\n    expiredLanes = root.expiredLanes,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  if (0 !== expiredLanes)\n    (nextLanes = expiredLanes),\n      (nextLanePriority = return_highestLanePriority = 15);\n  else if (((expiredLanes = pendingLanes & 134217727), 0 !== expiredLanes)) {\n    var nonIdleUnblockedLanes = expiredLanes & ~suspendedLanes;\n    0 !== nonIdleUnblockedLanes\n      ? ((nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes)),\n        (nextLanePriority = return_highestLanePriority))\n      : ((pingedLanes &= expiredLanes),\n        0 !== pingedLanes &&\n          ((nextLanes = getHighestPriorityLanes(pingedLanes)),\n          (nextLanePriority = return_highestLanePriority)));\n  } else\n    (expiredLanes = pendingLanes & ~suspendedLanes),\n      0 !== expiredLanes\n        ? ((nextLanes = getHighestPriorityLanes(expiredLanes)),\n          (nextLanePriority = return_highestLanePriority))\n        : 0 !== pingedLanes &&\n          ((nextLanes = getHighestPriorityLanes(pingedLanes)),\n          (nextLanePriority = return_highestLanePriority));\n  if (0 === nextLanes) return 0;\n  nextLanes = 31 - clz32(nextLanes);\n  nextLanes = pendingLanes & (((0 > nextLanes ? 0 : 1 << nextLanes) << 1) - 1);\n  if (\n    0 !== wipLanes &&\n    wipLanes !== nextLanes &&\n    0 === (wipLanes & suspendedLanes)\n  ) {\n    getHighestPriorityLanes(wipLanes);\n    if (nextLanePriority <= return_highestLanePriority) return wipLanes;\n    return_highestLanePriority = nextLanePriority;\n  }\n  wipLanes = root.entangledLanes;\n  if (0 !== wipLanes)\n    for (root = root.entanglements, wipLanes &= nextLanes; 0 < wipLanes; )\n      (pendingLanes = 31 - clz32(wipLanes)),\n        (nextLanePriority = 1 << pendingLanes),\n        (nextLanes |= root[pendingLanes]),\n        (wipLanes &= ~nextLanePriority);\n  return nextLanes;\n}\nfunction getLanesToRetrySynchronouslyOnError(root) {\n  root = root.pendingLanes & -1073741825;\n  return 0 !== root ? root : root & 1073741824 ? 1073741824 : 0;\n}\nfunction findUpdateLane(lanePriority, wipLanes) {\n  switch (lanePriority) {\n    case 15:\n      return 1;\n    case 14:\n      return 2;\n    case 12:\n      return (\n        (lanePriority = getHighestPriorityLane(24 & ~wipLanes)),\n        0 === lanePriority ? findUpdateLane(10, wipLanes) : lanePriority\n      );\n    case 10:\n      return (\n        (lanePriority = getHighestPriorityLane(192 & ~wipLanes)),\n        0 === lanePriority ? findUpdateLane(8, wipLanes) : lanePriority\n      );\n    case 8:\n      return (\n        (lanePriority = getHighestPriorityLane(3584 & ~wipLanes)),\n        0 === lanePriority &&\n          ((lanePriority = getHighestPriorityLane(4186112 & ~wipLanes)),\n          0 === lanePriority && (lanePriority = 512)),\n        lanePriority\n      );\n    case 2:\n      return (\n        (wipLanes = getHighestPriorityLane(805306368 & ~wipLanes)),\n        0 === wipLanes && (wipLanes = 268435456),\n        wipLanes\n      );\n  }\n  throw Error(\n    \"Invalid update priority: \" + lanePriority + \". This is a bug in React.\"\n  );\n}\nfunction getHighestPriorityLane(lanes) {\n  return lanes & -lanes;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated(root, updateLane, eventTime) {\n  root.pendingLanes |= updateLane;\n  var higherPriorityLanes = updateLane - 1;\n  root.suspendedLanes &= higherPriorityLanes;\n  root.pingedLanes &= higherPriorityLanes;\n  root = root.eventTimes;\n  updateLane = 31 - clz32(updateLane);\n  root[updateLane] = eventTime;\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(lanes) {\n  return 0 === lanes ? 32 : (31 - ((log(lanes) / LN2) | 0)) | 0;\n}\nvar Scheduler_runWithPriority = Scheduler.unstable_runWithPriority,\n  Scheduler_scheduleCallback = Scheduler.unstable_scheduleCallback,\n  Scheduler_cancelCallback = Scheduler.unstable_cancelCallback,\n  Scheduler_shouldYield = Scheduler.unstable_shouldYield,\n  Scheduler_requestPaint = Scheduler.unstable_requestPaint,\n  Scheduler_now$1 = Scheduler.unstable_now,\n  Scheduler_getCurrentPriorityLevel =\n    Scheduler.unstable_getCurrentPriorityLevel,\n  Scheduler_ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  Scheduler_UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  Scheduler_NormalPriority = Scheduler.unstable_NormalPriority,\n  Scheduler_LowPriority = Scheduler.unstable_LowPriority,\n  Scheduler_IdlePriority = Scheduler.unstable_IdlePriority,\n  fakeCallbackNode = {},\n  requestPaint =\n    void 0 !== Scheduler_requestPaint ? Scheduler_requestPaint : function() {},\n  syncQueue = null,\n  immediateQueueCallbackNode = null,\n  isFlushingSyncQueue = !1,\n  initialTimeMs$1 = Scheduler_now$1(),\n  now =\n    1e4 > initialTimeMs$1\n      ? Scheduler_now$1\n      : function() {\n          return Scheduler_now$1() - initialTimeMs$1;\n        };\nfunction getCurrentPriorityLevel() {\n  switch (Scheduler_getCurrentPriorityLevel()) {\n    case Scheduler_ImmediatePriority:\n      return 99;\n    case Scheduler_UserBlockingPriority:\n      return 98;\n    case Scheduler_NormalPriority:\n      return 97;\n    case Scheduler_LowPriority:\n      return 96;\n    case Scheduler_IdlePriority:\n      return 95;\n    default:\n      throw Error(\"Unknown priority level.\");\n  }\n}\nfunction reactPriorityToSchedulerPriority(reactPriorityLevel) {\n  switch (reactPriorityLevel) {\n    case 99:\n      return Scheduler_ImmediatePriority;\n    case 98:\n      return Scheduler_UserBlockingPriority;\n    case 97:\n      return Scheduler_NormalPriority;\n    case 96:\n      return Scheduler_LowPriority;\n    case 95:\n      return Scheduler_IdlePriority;\n    default:\n      throw Error(\"Unknown priority level.\");\n  }\n}\nfunction runWithPriority(reactPriorityLevel, fn) {\n  reactPriorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);\n  return Scheduler_runWithPriority(reactPriorityLevel, fn);\n}\nfunction scheduleCallback(reactPriorityLevel, callback, options) {\n  reactPriorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);\n  return Scheduler_scheduleCallback(reactPriorityLevel, callback, options);\n}\nfunction flushSyncCallbackQueue() {\n  if (null !== immediateQueueCallbackNode) {\n    var node = immediateQueueCallbackNode;\n    immediateQueueCallbackNode = null;\n    Scheduler_cancelCallback(node);\n  }\n  flushSyncCallbackQueueImpl();\n}\nfunction flushSyncCallbackQueueImpl() {\n  if (!isFlushingSyncQueue && null !== syncQueue) {\n    isFlushingSyncQueue = !0;\n    var i = 0;\n    try {\n      var queue = syncQueue;\n      runWithPriority(99, function() {\n        for (; i < queue.length; i++) {\n          var callback = queue[i];\n          do callback = callback(!0);\n          while (null !== callback);\n        }\n      });\n      syncQueue = null;\n    } catch (error) {\n      throw (null !== syncQueue && (syncQueue = syncQueue.slice(i + 1)),\n      Scheduler_scheduleCallback(\n        Scheduler_ImmediatePriority,\n        flushSyncCallbackQueue\n      ),\n      error);\n    } finally {\n      isFlushingSyncQueue = !1;\n    }\n  }\n}\nvar ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++)\n    if (\n      !hasOwnProperty.call(objB, keysA[keysB]) ||\n      !objectIs(objA[keysA[keysB]], objB[keysA[keysB]])\n    )\n      return !1;\n  return !0;\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 5:\n      return describeComponentFrame(fiber.type, null, null);\n    case 16:\n      return describeComponentFrame(\"Lazy\", null, null);\n    case 13:\n      return describeComponentFrame(\"Suspense\", null, null);\n    case 19:\n      return describeComponentFrame(\"SuspenseList\", null, null);\n    case 0:\n    case 2:\n    case 15:\n      return describeFunctionComponentFrame(fiber.type, null);\n    case 11:\n      return describeFunctionComponentFrame(fiber.type.render, null);\n    case 22:\n      return describeFunctionComponentFrame(fiber.type._render, null);\n    case 1:\n      return (fiber = describeFunctionComponentFrame(fiber.type, null)), fiber;\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    baseProps = Object.assign({}, baseProps);\n    Component = Component.defaultProps;\n    for (var propName in Component)\n      void 0 === baseProps[propName] &&\n        (baseProps[propName] = Component[propName]);\n    return baseProps;\n  }\n  return baseProps;\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber = null,\n  lastContextDependency = null,\n  lastContextWithAllBitsObserved = null;\nfunction resetContextDependencies() {\n  lastContextWithAllBitsObserved = lastContextDependency = currentlyRenderingFiber = null;\n}\nfunction popProvider(providerFiber) {\n  var currentValue = valueCursor.current;\n  pop(valueCursor);\n  providerFiber.type._context._currentValue = currentValue;\n}\nfunction scheduleWorkOnParentPath(parent, renderLanes) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    if ((parent.childLanes & renderLanes) === renderLanes)\n      if (\n        null === alternate ||\n        (alternate.childLanes & renderLanes) === renderLanes\n      )\n        break;\n      else alternate.childLanes |= renderLanes;\n    else\n      (parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes);\n    parent = parent.return;\n  }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextWithAllBitsObserved = lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress &&\n    null !== workInProgress.firstContext &&\n    (0 !== (workInProgress.lanes & renderLanes) && (didReceiveUpdate = !0),\n    (workInProgress.firstContext = null));\n}\nfunction readContext(context, observedBits) {\n  if (\n    lastContextWithAllBitsObserved !== context &&\n    !1 !== observedBits &&\n    0 !== observedBits\n  ) {\n    if (\"number\" !== typeof observedBits || 1073741823 === observedBits)\n      (lastContextWithAllBitsObserved = context), (observedBits = 1073741823);\n    observedBits = { context: context, observedBits: observedBits, next: null };\n    if (null === lastContextDependency) {\n      if (null === currentlyRenderingFiber)\n        throw Error(\n          \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n        );\n      lastContextDependency = observedBits;\n      currentlyRenderingFiber.dependencies = {\n        lanes: 0,\n        firstContext: observedBits,\n        responders: null\n      };\n    } else lastContextDependency = lastContextDependency.next = observedBits;\n  }\n  return context._currentValue;\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null },\n    effects: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      effects: current.effects\n    });\n}\nfunction createUpdate(eventTime, lane) {\n  return {\n    eventTime: eventTime,\n    lane: lane,\n    tag: 0,\n    payload: null,\n    callback: null,\n    next: null\n  };\n}\nfunction enqueueUpdate(fiber, update) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber) {\n    fiber = fiber.shared;\n    var pending = fiber.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    fiber.pending = update;\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          eventTime: queue.eventTime,\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: queue.callback,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      effects: current.effects\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance,\n  renderLanes\n) {\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    if (null !== current) {\n      current = current.updateQueue;\n      var currentLastBaseUpdate = current.lastBaseUpdate;\n      currentLastBaseUpdate !== lastBaseUpdate &&\n        (null === currentLastBaseUpdate\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (currentLastBaseUpdate.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate));\n    }\n  }\n  if (null !== firstBaseUpdate) {\n    currentLastBaseUpdate = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    do {\n      pendingQueue = firstBaseUpdate.lane;\n      var updateEventTime = firstBaseUpdate.eventTime;\n      if ((renderLanes & pendingQueue) === pendingQueue) {\n        null !== current &&\n          (current = current.next = {\n            eventTime: updateEventTime,\n            lane: 0,\n            tag: firstBaseUpdate.tag,\n            payload: firstBaseUpdate.payload,\n            callback: firstBaseUpdate.callback,\n            next: null\n          });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = firstBaseUpdate;\n          pendingQueue = props;\n          updateEventTime = instance;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                currentLastBaseUpdate = workInProgress.call(\n                  updateEventTime,\n                  currentLastBaseUpdate,\n                  pendingQueue\n                );\n                break a;\n              }\n              currentLastBaseUpdate = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -8193) | 64;\n            case 0:\n              workInProgress = update.payload;\n              pendingQueue =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(\n                      updateEventTime,\n                      currentLastBaseUpdate,\n                      pendingQueue\n                    )\n                  : workInProgress;\n              if (null === pendingQueue || void 0 === pendingQueue) break a;\n              currentLastBaseUpdate = Object.assign(\n                {},\n                currentLastBaseUpdate,\n                pendingQueue\n              );\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        null !== firstBaseUpdate.callback &&\n          ((workInProgress$jscomp$0.flags |= 32),\n          (pendingQueue = queue.effects),\n          null === pendingQueue\n            ? (queue.effects = [firstBaseUpdate])\n            : pendingQueue.push(firstBaseUpdate));\n      } else\n        (updateEventTime = {\n          eventTime: updateEventTime,\n          lane: pendingQueue,\n          tag: firstBaseUpdate.tag,\n          payload: firstBaseUpdate.payload,\n          callback: firstBaseUpdate.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = updateEventTime),\n              (lastPendingUpdate = currentLastBaseUpdate))\n            : (current = current.next = updateEventTime),\n          (lastBaseUpdate |= pendingQueue);\n      firstBaseUpdate = firstBaseUpdate.next;\n      if (null === firstBaseUpdate)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (firstBaseUpdate = pendingQueue.next),\n            (pendingQueue.next = null),\n            (queue.lastBaseUpdate = pendingQueue),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = currentLastBaseUpdate);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = currentLastBaseUpdate;\n  }\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n  finishedWork = finishedQueue.effects;\n  finishedQueue.effects = null;\n  if (null !== finishedWork)\n    for (\n      finishedQueue = 0;\n      finishedQueue < finishedWork.length;\n      finishedQueue++\n    ) {\n      var effect = finishedWork[finishedQueue],\n        callback = effect.callback;\n      if (null !== callback) {\n        effect.callback = null;\n        if (\"function\" !== typeof callback)\n          throw Error(\n            \"Invalid argument passed as callback. Expected a function. Instead received: \" +\n              callback\n          );\n        callback.call(instance);\n      }\n    }\n}\nvar emptyRefsObject = new React.Component().refs;\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : Object.assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  isMounted: function(component) {\n    return (component = component._reactInternals)\n      ? getNearestMountedFiber(component) === component\n      : !1;\n  },\n  enqueueSetState: function(inst, payload, callback) {\n    inst = inst._reactInternals;\n    var eventTime = requestEventTime(),\n      lane = requestUpdateLane(inst),\n      update = createUpdate(eventTime, lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    enqueueUpdate(inst, update);\n    scheduleUpdateOnFiber(inst, lane, eventTime);\n  },\n  enqueueReplaceState: function(inst, payload, callback) {\n    inst = inst._reactInternals;\n    var eventTime = requestEventTime(),\n      lane = requestUpdateLane(inst),\n      update = createUpdate(eventTime, lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    enqueueUpdate(inst, update);\n    scheduleUpdateOnFiber(inst, lane, eventTime);\n  },\n  enqueueForceUpdate: function(inst, callback) {\n    inst = inst._reactInternals;\n    var eventTime = requestEventTime(),\n      lane = requestUpdateLane(inst),\n      update = createUpdate(eventTime, lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    enqueueUpdate(inst, update);\n    scheduleUpdateOnFiber(inst, lane, eventTime);\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n    ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n    : !0;\n}\nfunction constructClassInstance(workInProgress, ctor, props) {\n  var isLegacyContextConsumer = !1,\n    unmaskedContext = emptyContextObject;\n  var context = ctor.contextType;\n  \"object\" === typeof context && null !== context\n    ? (context = readContext(context))\n    : ((unmaskedContext = isContextProvider(ctor)\n        ? previousContext\n        : contextStackCursor.current),\n      (isLegacyContextConsumer = ctor.contextTypes),\n      (context = (isLegacyContextConsumer =\n        null !== isLegacyContextConsumer && void 0 !== isLegacyContextConsumer)\n        ? getMaskedContext(workInProgress, unmaskedContext)\n        : emptyContextObject));\n  ctor = new ctor(props, context);\n  workInProgress.memoizedState =\n    null !== ctor.state && void 0 !== ctor.state ? ctor.state : null;\n  ctor.updater = classComponentUpdater;\n  workInProgress.stateNode = ctor;\n  ctor._reactInternals = workInProgress;\n  isLegacyContextConsumer &&\n    ((workInProgress = workInProgress.stateNode),\n    (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n    (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n  return ctor;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = emptyRefsObject;\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n  \"object\" === typeof contextType && null !== contextType\n    ? (instance.context = readContext(contextType))\n    : ((contextType = isContextProvider(ctor)\n        ? previousContext\n        : contextStackCursor.current),\n      (instance.context = getMaskedContext(workInProgress, contextType)));\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  instance.state = workInProgress.memoizedState;\n  contextType = ctor.getDerivedStateFromProps;\n  \"function\" === typeof contextType &&\n    (applyDerivedStateFromProps(workInProgress, ctor, contextType, newProps),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof ctor.getDerivedStateFromProps ||\n    \"function\" === typeof instance.getSnapshotBeforeUpdate ||\n    (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n      \"function\" !== typeof instance.componentWillMount) ||\n    ((ctor = instance.state),\n    \"function\" === typeof instance.componentWillMount &&\n      instance.componentWillMount(),\n    \"function\" === typeof instance.UNSAFE_componentWillMount &&\n      instance.UNSAFE_componentWillMount(),\n    ctor !== instance.state &&\n      classComponentUpdater.enqueueReplaceState(instance, instance.state, null),\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof instance.componentDidMount &&\n    (workInProgress.flags |= 4);\n}\nvar isArray = Array.isArray;\nfunction coerceRef(returnFiber, current, element) {\n  returnFiber = element.ref;\n  if (\n    null !== returnFiber &&\n    \"function\" !== typeof returnFiber &&\n    \"object\" !== typeof returnFiber\n  ) {\n    if (element._owner) {\n      element = element._owner;\n      if (element) {\n        if (1 !== element.tag)\n          throw Error(\n            \"Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref\"\n          );\n        var inst = element.stateNode;\n      }\n      if (!inst)\n        throw Error(\n          \"Missing owner for string ref \" +\n            returnFiber +\n            \". This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      var stringRef = \"\" + returnFiber;\n      if (\n        null !== current &&\n        null !== current.ref &&\n        \"function\" === typeof current.ref &&\n        current.ref._stringRef === stringRef\n      )\n        return current.ref;\n      current = function(value) {\n        var refs = inst.refs;\n        refs === emptyRefsObject && (refs = inst.refs = {});\n        null === value ? delete refs[stringRef] : (refs[stringRef] = value);\n      };\n      current._stringRef = stringRef;\n      return current;\n    }\n    if (\"string\" !== typeof returnFiber)\n      throw Error(\n        \"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\"\n      );\n    if (!element._owner)\n      throw Error(\n        \"Element ref was specified as a string (\" +\n          returnFiber +\n          \") but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://reactjs.org/link/refs-must-have-owner for more information.\"\n      );\n  }\n  return returnFiber;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (\"textarea\" !== returnFiber.type)\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === Object.prototype.toString.call(newChild)\n          ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n          : newChild) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n}\nfunction ChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var last = returnFiber.lastEffect;\n      null !== last\n        ? ((last.nextEffect = childToDelete),\n          (returnFiber.lastEffect = childToDelete))\n        : (returnFiber.firstEffect = returnFiber.lastEffect = childToDelete);\n      childToDelete.nextEffect = null;\n      childToDelete.flags = 8;\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    for (returnFiber = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? returnFiber.set(currentFirstChild.key, currentFirstChild)\n        : returnFiber.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return returnFiber;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects) return lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags = 2), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags = 2;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags = 2);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    if (null !== current && current.elementType === element.type)\n      return (\n        (lanes = useFiber(current, element.props)),\n        (lanes.ref = coerceRef(returnFiber, current, element)),\n        (lanes.return = returnFiber),\n        lanes\n      );\n    lanes = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    lanes.ref = coerceRef(returnFiber, current, element);\n    lanes.return = returnFiber;\n    return lanes;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            (lanes.ref = coerceRef(returnFiber, null, newChild)),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n      }\n      if (isArray(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? newChild.type === REACT_FRAGMENT_TYPE\n              ? updateFragment(\n                  returnFiber,\n                  oldFiber,\n                  newChild.props.children,\n                  lanes,\n                  key\n                )\n              : updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n      }\n      if (isArray(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? updateFragment(\n                  returnFiber,\n                  existingChildren,\n                  newChild.props.children,\n                  lanes,\n                  newChild.key\n                )\n              : updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n      }\n      if (isArray(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber), resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function(child) {\n        return deleteChild(returnFiber, child);\n      });\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildrenIterable,\n    lanes\n  ) {\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n    if (\"function\" !== typeof iteratorFn)\n      throw Error(\n        \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n    newChildrenIterable = iteratorFn.call(newChildrenIterable);\n    if (null == newChildrenIterable)\n      throw Error(\"An iterable object provided no iterator.\");\n    for (\n      var previousNewFiber = (iteratorFn = null),\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildrenIterable.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildrenIterable.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (iteratorFn = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return deleteRemainingChildren(returnFiber, oldFiber), iteratorFn;\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildrenIterable.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (iteratorFn = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      return iteratorFn;\n    }\n    for (\n      oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n      !step.done;\n      newIdx++, step = newChildrenIterable.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (iteratorFn = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function(child) {\n        return deleteChild(returnFiber, child);\n      });\n    return iteratorFn;\n  }\n  return function(returnFiber, currentFirstChild, newChild, lanes) {\n    var isUnkeyedTopLevelFragment =\n      \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key;\n    isUnkeyedTopLevelFragment && (newChild = newChild.props.children);\n    var isObject = \"object\" === typeof newChild && null !== newChild;\n    if (isObject)\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            isObject = newChild.key;\n            for (\n              isUnkeyedTopLevelFragment = currentFirstChild;\n              null !== isUnkeyedTopLevelFragment;\n\n            ) {\n              if (isUnkeyedTopLevelFragment.key === isObject) {\n                switch (isUnkeyedTopLevelFragment.tag) {\n                  case 7:\n                    if (newChild.type === REACT_FRAGMENT_TYPE) {\n                      deleteRemainingChildren(\n                        returnFiber,\n                        isUnkeyedTopLevelFragment.sibling\n                      );\n                      currentFirstChild = useFiber(\n                        isUnkeyedTopLevelFragment,\n                        newChild.props.children\n                      );\n                      currentFirstChild.return = returnFiber;\n                      returnFiber = currentFirstChild;\n                      break a;\n                    }\n                    break;\n                  default:\n                    if (\n                      isUnkeyedTopLevelFragment.elementType === newChild.type\n                    ) {\n                      deleteRemainingChildren(\n                        returnFiber,\n                        isUnkeyedTopLevelFragment.sibling\n                      );\n                      currentFirstChild = useFiber(\n                        isUnkeyedTopLevelFragment,\n                        newChild.props\n                      );\n                      currentFirstChild.ref = coerceRef(\n                        returnFiber,\n                        isUnkeyedTopLevelFragment,\n                        newChild\n                      );\n                      currentFirstChild.return = returnFiber;\n                      returnFiber = currentFirstChild;\n                      break a;\n                    }\n                }\n                deleteRemainingChildren(returnFiber, isUnkeyedTopLevelFragment);\n                break;\n              } else deleteChild(returnFiber, isUnkeyedTopLevelFragment);\n              isUnkeyedTopLevelFragment = isUnkeyedTopLevelFragment.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((currentFirstChild = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (currentFirstChild.return = returnFiber),\n                (returnFiber = currentFirstChild))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                (lanes.ref = coerceRef(\n                  returnFiber,\n                  currentFirstChild,\n                  newChild\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (\n              isUnkeyedTopLevelFragment = newChild.key;\n              null !== currentFirstChild;\n\n            ) {\n              if (currentFirstChild.key === isUnkeyedTopLevelFragment)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  currentFirstChild = useFiber(\n                    currentFirstChild,\n                    newChild.children || []\n                  );\n                  currentFirstChild.return = returnFiber;\n                  returnFiber = currentFirstChild;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            currentFirstChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            );\n            currentFirstChild.return = returnFiber;\n            returnFiber = currentFirstChild;\n          }\n          return placeSingleChild(returnFiber);\n      }\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return (\n        (newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (currentFirstChild = useFiber(currentFirstChild, newChild)),\n            (currentFirstChild.return = returnFiber),\n            (returnFiber = currentFirstChild))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (currentFirstChild = createFiberFromText(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (currentFirstChild.return = returnFiber),\n            (returnFiber = currentFirstChild)),\n        placeSingleChild(returnFiber)\n      );\n    if (isArray(newChild))\n      return reconcileChildrenArray(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n    if (getIteratorFn(newChild))\n      return reconcileChildrenIterator(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n    isObject && throwOnInvalidObjectType(returnFiber, newChild);\n    if (\"undefined\" === typeof newChild && !isUnkeyedTopLevelFragment)\n      switch (returnFiber.tag) {\n        case 1:\n        case 22:\n        case 0:\n        case 11:\n        case 15:\n          throw Error(\n            (getComponentName(returnFiber.type) || \"Component\") +\n              \"(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.\"\n          );\n      }\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  };\n}\nvar reconcileChildFibers = ChildReconciler(!0),\n  mountChildFibers = ChildReconciler(!1),\n  NO_CONTEXT = {},\n  contextStackCursor$1 = createCursor(NO_CONTEXT),\n  contextFiberStackCursor = createCursor(NO_CONTEXT),\n  rootInstanceStackCursor = createCursor(NO_CONTEXT);\nfunction requiredContext(c) {\n  if (c === NO_CONTEXT)\n    throw Error(\n      \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  return c;\n}\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor$1, NO_CONTEXT);\n  pop(contextStackCursor$1);\n  push(contextStackCursor$1, { isInAParentText: !1 });\n}\nfunction popHostContainer() {\n  pop(contextStackCursor$1);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  requiredContext(rootInstanceStackCursor.current);\n  var context = requiredContext(contextStackCursor$1.current);\n  var JSCompiler_inline_result = fiber.type;\n  JSCompiler_inline_result =\n    \"AndroidTextInput\" === JSCompiler_inline_result ||\n    \"RCTMultilineTextInputView\" === JSCompiler_inline_result ||\n    \"RCTSinglelineTextInputView\" === JSCompiler_inline_result ||\n    \"RCTText\" === JSCompiler_inline_result ||\n    \"RCTVirtualText\" === JSCompiler_inline_result;\n  JSCompiler_inline_result =\n    context.isInAParentText !== JSCompiler_inline_result\n      ? { isInAParentText: JSCompiler_inline_result }\n      : context;\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor$1, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor$1), pop(contextFiberStackCursor));\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (null !== state && (null === state.dehydrated || shim() || shim()))\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 64)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nvar workInProgressSources = [];\nfunction resetWorkInProgressVersions() {\n  for (var i = 0; i < workInProgressSources.length; i++)\n    workInProgressSources[i]._workInProgressVersionPrimary = null;\n  workInProgressSources.length = 0;\n}\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n  ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig,\n  renderLanes = 0,\n  currentlyRenderingFiber$1 = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\nfunction throwInvalidHookError() {\n  throw Error(\n    \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n  );\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactCurrentDispatcher$1.current =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  current = Component(props, secondArg);\n  if (didScheduleRenderPhaseUpdateDuringThisPass) {\n    nextRenderLanes = 0;\n    do {\n      didScheduleRenderPhaseUpdateDuringThisPass = !1;\n      if (!(25 > nextRenderLanes))\n        throw Error(\n          \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\"\n        );\n      nextRenderLanes += 1;\n      workInProgressHook = currentHook = null;\n      workInProgress.updateQueue = null;\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnRerender;\n      current = Component(props, secondArg);\n    } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  }\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n  workInProgress = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n  didScheduleRenderPhaseUpdate = !1;\n  if (workInProgress)\n    throw Error(\n      \"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\"\n    );\n  return current;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber$1.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber$1.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook)\n      throw Error(\"Rendered more hooks than during the previous render.\");\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue)\n    throw Error(\n      \"Should have a queue. This is likely a bug in React. Please file an issue.\"\n    );\n  queue.lastRenderedReducer = reducer;\n  var current = currentHook,\n    baseQueue = current.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  if (null !== baseQueue) {\n    baseQueue = baseQueue.next;\n    current = current.baseState;\n    var newBaseQueueLast = (baseFirst = pendingQueue = null),\n      update = baseQueue;\n    do {\n      var updateLane = update.lane;\n      if ((renderLanes & updateLane) === updateLane)\n        null !== newBaseQueueLast &&\n          (newBaseQueueLast = newBaseQueueLast.next = {\n            lane: 0,\n            action: update.action,\n            eagerReducer: update.eagerReducer,\n            eagerState: update.eagerState,\n            next: null\n          }),\n          (current =\n            update.eagerReducer === reducer\n              ? update.eagerState\n              : reducer(current, update.action));\n      else {\n        var clone = {\n          lane: updateLane,\n          action: update.action,\n          eagerReducer: update.eagerReducer,\n          eagerState: update.eagerState,\n          next: null\n        };\n        null === newBaseQueueLast\n          ? ((baseFirst = newBaseQueueLast = clone), (pendingQueue = current))\n          : (newBaseQueueLast = newBaseQueueLast.next = clone);\n        currentlyRenderingFiber$1.lanes |= updateLane;\n        workInProgressRootSkippedLanes |= updateLane;\n      }\n      update = update.next;\n    } while (null !== update && update !== baseQueue);\n    null === newBaseQueueLast\n      ? (pendingQueue = current)\n      : (newBaseQueueLast.next = baseFirst);\n    objectIs(current, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = current;\n    hook.baseState = pendingQueue;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = current;\n  }\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue)\n    throw Error(\n      \"Should have a queue. This is likely a bug in React. Please file an issue.\"\n    );\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction readFromUnsubcribedMutableSource(root, source, getSnapshot) {\n  var getVersion = source._getVersion;\n  getVersion = getVersion(source._source);\n  var JSCompiler_inline_result = source._workInProgressVersionPrimary;\n  if (null !== JSCompiler_inline_result)\n    root = JSCompiler_inline_result === getVersion;\n  else if (\n    ((root = root.mutableReadLanes), (root = (renderLanes & root) === root))\n  )\n    (source._workInProgressVersionPrimary = getVersion),\n      workInProgressSources.push(source);\n  if (root) return getSnapshot(source._source);\n  workInProgressSources.push(source);\n  throw Error(\n    \"Cannot read from mutable source during the current render without tearing. This is a bug in React. Please file an issue.\"\n  );\n}\nfunction useMutableSource(hook, source, getSnapshot, subscribe) {\n  var root = workInProgressRoot;\n  if (null === root)\n    throw Error(\n      \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\"\n    );\n  var getVersion = source._getVersion,\n    version = getVersion(source._source),\n    dispatcher = ReactCurrentDispatcher$1.current,\n    _dispatcher$useState = dispatcher.useState(function() {\n      return readFromUnsubcribedMutableSource(root, source, getSnapshot);\n    }),\n    setSnapshot = _dispatcher$useState[1],\n    snapshot = _dispatcher$useState[0];\n  _dispatcher$useState = workInProgressHook;\n  var memoizedState = hook.memoizedState,\n    refs = memoizedState.refs,\n    prevGetSnapshot = refs.getSnapshot,\n    prevSource = memoizedState.source;\n  memoizedState = memoizedState.subscribe;\n  var fiber = currentlyRenderingFiber$1;\n  hook.memoizedState = { refs: refs, source: source, subscribe: subscribe };\n  dispatcher.useEffect(\n    function() {\n      refs.getSnapshot = getSnapshot;\n      refs.setSnapshot = setSnapshot;\n      var maybeNewVersion = getVersion(source._source);\n      if (!objectIs(version, maybeNewVersion)) {\n        maybeNewVersion = getSnapshot(source._source);\n        objectIs(snapshot, maybeNewVersion) ||\n          (setSnapshot(maybeNewVersion),\n          (maybeNewVersion = requestUpdateLane(fiber)),\n          (root.mutableReadLanes |= maybeNewVersion & root.pendingLanes));\n        maybeNewVersion = root.mutableReadLanes;\n        root.entangledLanes |= maybeNewVersion;\n        for (\n          var entanglements = root.entanglements, lanes = maybeNewVersion;\n          0 < lanes;\n\n        ) {\n          var index$13 = 31 - clz32(lanes),\n            lane = 1 << index$13;\n          entanglements[index$13] |= maybeNewVersion;\n          lanes &= ~lane;\n        }\n      }\n    },\n    [getSnapshot, source, subscribe]\n  );\n  dispatcher.useEffect(\n    function() {\n      return subscribe(source._source, function() {\n        var latestGetSnapshot = refs.getSnapshot,\n          latestSetSnapshot = refs.setSnapshot;\n        try {\n          latestSetSnapshot(latestGetSnapshot(source._source));\n          var lane = requestUpdateLane(fiber);\n          root.mutableReadLanes |= lane & root.pendingLanes;\n        } catch (error) {\n          latestSetSnapshot(function() {\n            throw error;\n          });\n        }\n      });\n    },\n    [source, subscribe]\n  );\n  (objectIs(prevGetSnapshot, getSnapshot) &&\n    objectIs(prevSource, source) &&\n    objectIs(memoizedState, subscribe)) ||\n    ((hook = {\n      pending: null,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: snapshot\n    }),\n    (hook.dispatch = setSnapshot = dispatchAction.bind(\n      null,\n      currentlyRenderingFiber$1,\n      hook\n    )),\n    (_dispatcher$useState.queue = hook),\n    (_dispatcher$useState.baseQueue = null),\n    (snapshot = readFromUnsubcribedMutableSource(root, source, getSnapshot)),\n    (_dispatcher$useState.memoizedState = _dispatcher$useState.baseState = snapshot));\n  return snapshot;\n}\nfunction updateMutableSource(source, getSnapshot, subscribe) {\n  var hook = updateWorkInProgressHook();\n  return useMutableSource(hook, source, getSnapshot, subscribe);\n}\nfunction mountState(initialState) {\n  var hook = mountWorkInProgressHook();\n  \"function\" === typeof initialState && (initialState = initialState());\n  hook.memoizedState = hook.baseState = initialState;\n  initialState = hook.queue = {\n    pending: null,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  initialState = initialState.dispatch = dispatchAction.bind(\n    null,\n    currentlyRenderingFiber$1,\n    initialState\n  );\n  return [hook.memoizedState, initialState];\n}\nfunction pushEffect(tag, create, destroy, deps) {\n  tag = { tag: tag, create: create, destroy: destroy, deps: deps, next: null };\n  create = currentlyRenderingFiber$1.updateQueue;\n  null === create\n    ? ((create = { lastEffect: null }),\n      (currentlyRenderingFiber$1.updateQueue = create),\n      (create.lastEffect = tag.next = tag))\n    : ((destroy = create.lastEffect),\n      null === destroy\n        ? (create.lastEffect = tag.next = tag)\n        : ((deps = destroy.next),\n          (destroy.next = tag),\n          (tag.next = deps),\n          (create.lastEffect = tag)));\n  return tag;\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(\n    1 | hookFlags,\n    create,\n    void 0,\n    void 0 === deps ? null : deps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var destroy = void 0;\n  if (null !== currentHook) {\n    var prevEffect = currentHook.memoizedState;\n    destroy = prevEffect.destroy;\n    if (null !== deps && areHookInputsEqual(deps, prevEffect.deps)) {\n      pushEffect(hookFlags, create, destroy, deps);\n      return;\n    }\n  }\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(1 | hookFlags, create, destroy, deps);\n}\nfunction mountEffect(create, deps) {\n  return mountEffectImpl(516, 4, create, deps);\n}\nfunction updateEffect(create, deps) {\n  return updateEffectImpl(516, 4, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref)\n    return (\n      (create = create()),\n      ref(create),\n      function() {\n        ref(null);\n      }\n    );\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function() {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  return updateEffectImpl(\n    4,\n    2,\n    imperativeHandleEffect.bind(null, create, ref),\n    deps\n  );\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (\n    null !== prevState &&\n    null !== deps &&\n    areHookInputsEqual(deps, prevState[1])\n  )\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (\n    null !== prevState &&\n    null !== deps &&\n    areHookInputsEqual(deps, prevState[1])\n  )\n    return prevState[0];\n  nextCreate = nextCreate();\n  hook.memoizedState = [nextCreate, deps];\n  return nextCreate;\n}\nfunction startTransition(setPending, callback) {\n  var priorityLevel = getCurrentPriorityLevel();\n  runWithPriority(98 > priorityLevel ? 98 : priorityLevel, function() {\n    setPending(!0);\n  });\n  runWithPriority(97 < priorityLevel ? 97 : priorityLevel, function() {\n    var prevTransition = ReactCurrentBatchConfig$1.transition;\n    ReactCurrentBatchConfig$1.transition = 1;\n    try {\n      setPending(!1), callback();\n    } finally {\n      ReactCurrentBatchConfig$1.transition = prevTransition;\n    }\n  });\n}\nfunction dispatchAction(fiber, queue, action) {\n  var eventTime = requestEventTime(),\n    lane = requestUpdateLane(fiber),\n    update = {\n      lane: lane,\n      action: action,\n      eagerReducer: null,\n      eagerState: null,\n      next: null\n    },\n    pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n  pending = fiber.alternate;\n  if (\n    fiber === currentlyRenderingFiber$1 ||\n    (null !== pending && pending === currentlyRenderingFiber$1)\n  )\n    didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = !0;\n  else {\n    if (\n      0 === fiber.lanes &&\n      (null === pending || 0 === pending.lanes) &&\n      ((pending = queue.lastRenderedReducer), null !== pending)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = pending(currentState, action);\n        update.eagerReducer = pending;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState)) return;\n      } catch (error) {\n      } finally {\n      }\n    scheduleUpdateOnFiber(fiber, lane, eventTime);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useMutableSource: throwInvalidHookError,\n    useOpaqueIdentifier: throwInvalidHookError,\n    unstable_isNewReconciler: !1\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    useCallback: function(callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function(ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      return mountEffectImpl(\n        4,\n        2,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function(create, deps) {\n      return mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function(nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      nextCreate = nextCreate();\n      hook.memoizedState = [nextCreate, deps];\n      return nextCreate;\n    },\n    useReducer: function(reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      initialArg = void 0 !== init ? init(initialArg) : initialArg;\n      hook.memoizedState = hook.baseState = initialArg;\n      reducer = hook.queue = {\n        pending: null,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialArg\n      };\n      reducer = reducer.dispatch = dispatchAction.bind(\n        null,\n        currentlyRenderingFiber$1,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function(initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: mountState,\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function(value) {\n      var _mountState = mountState(value),\n        prevValue = _mountState[0],\n        setValue = _mountState[1];\n      mountEffect(\n        function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = 1;\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        },\n        [value]\n      );\n      return prevValue;\n    },\n    useTransition: function() {\n      var _mountState2 = mountState(!1),\n        isPending = _mountState2[0];\n      _mountState2 = startTransition.bind(null, _mountState2[1]);\n      mountWorkInProgressHook().memoizedState = _mountState2;\n      return [_mountState2, isPending];\n    },\n    useMutableSource: function(source, getSnapshot, subscribe) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = {\n        refs: { getSnapshot: getSnapshot, setSnapshot: null },\n        source: source,\n        subscribe: subscribe\n      };\n      return useMutableSource(hook, source, getSnapshot, subscribe);\n    },\n    useOpaqueIdentifier: function() {\n      throw Error(\"Not yet implemented\");\n    },\n    unstable_isNewReconciler: !1\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function() {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function(value) {\n      var _updateState = updateReducer(basicStateReducer),\n        prevValue = _updateState[0],\n        setValue = _updateState[1];\n      updateEffect(\n        function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = 1;\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        },\n        [value]\n      );\n      return prevValue;\n    },\n    useTransition: function() {\n      var isPending = updateReducer(basicStateReducer)[0];\n      return [updateWorkInProgressHook().memoizedState, isPending];\n    },\n    useMutableSource: updateMutableSource,\n    useOpaqueIdentifier: function() {\n      return updateReducer(basicStateReducer)[0];\n    },\n    unstable_isNewReconciler: !1\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function() {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function(value) {\n      var _rerenderState = rerenderReducer(basicStateReducer),\n        prevValue = _rerenderState[0],\n        setValue = _rerenderState[1];\n      updateEffect(\n        function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = 1;\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        },\n        [value]\n      );\n      return prevValue;\n    },\n    useTransition: function() {\n      var isPending = rerenderReducer(basicStateReducer)[0];\n      return [updateWorkInProgressHook().memoizedState, isPending];\n    },\n    useMutableSource: updateMutableSource,\n    useOpaqueIdentifier: function() {\n      return rerenderReducer(basicStateReducer)[0];\n    },\n    unstable_isNewReconciler: !1\n  },\n  ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner,\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  prepareToReadContext(workInProgress, renderLanes);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    ref,\n    renderLanes\n  );\n  if (null !== current && !didReceiveUpdate)\n    return (\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.flags &= -517),\n      (current.lanes &= ~renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  updateLanes,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare &&\n      void 0 === Component.defaultProps\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          updateLanes,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (\n    0 === (updateLanes & renderLanes) &&\n    ((updateLanes = type.memoizedProps),\n    (Component = Component.compare),\n    (Component = null !== Component ? Component : shallowEqual),\n    Component(updateLanes, nextProps) && current.ref === workInProgress.ref)\n  )\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  updateLanes,\n  renderLanes\n) {\n  if (\n    null !== current &&\n    shallowEqual(current.memoizedProps, nextProps) &&\n    current.ref === workInProgress.ref\n  )\n    if (((didReceiveUpdate = !1), 0 !== (renderLanes & updateLanes)))\n      0 !== (current.flags & 32768) && (didReceiveUpdate = !0);\n    else\n      return (\n        (workInProgress.lanes = current.lanes),\n        bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n      );\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\n    \"hidden\" === nextProps.mode ||\n    \"unstable-defer-without-hiding\" === nextProps.mode\n  )\n    if (0 === (workInProgress.mode & 4))\n      (workInProgress.memoizedState = { baseLanes: 0 }),\n        pushRenderLanes(workInProgress, renderLanes);\n    else if (0 !== (renderLanes & 1073741824))\n      (workInProgress.memoizedState = { baseLanes: 0 }),\n        pushRenderLanes(\n          workInProgress,\n          null !== prevState ? prevState.baseLanes : renderLanes\n        );\n    else\n      return (\n        (current =\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes),\n        (workInProgress.lanes = workInProgress.childLanes = 1073741824),\n        (workInProgress.memoizedState = { baseLanes: current }),\n        pushRenderLanes(workInProgress, current),\n        null\n      );\n  else\n    null !== prevState\n      ? ((nextProps = prevState.baseLanes | renderLanes),\n        (workInProgress.memoizedState = null))\n      : (nextProps = renderLanes),\n      pushRenderLanes(workInProgress, nextProps);\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (\n    (null === current && null !== ref) ||\n    (null !== current && current.ref !== ref)\n  )\n    workInProgress.flags |= 128;\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  var context = isContextProvider(Component)\n    ? previousContext\n    : contextStackCursor.current;\n  context = getMaskedContext(workInProgress, context);\n  prepareToReadContext(workInProgress, renderLanes);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    context,\n    renderLanes\n  );\n  if (null !== current && !didReceiveUpdate)\n    return (\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.flags &= -517),\n      (current.lanes &= ~renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (isContextProvider(Component)) {\n    var hasContext = !0;\n    pushContextProvider(workInProgress);\n  } else hasContext = !1;\n  prepareToReadContext(workInProgress, renderLanes);\n  if (null === workInProgress.stateNode)\n    null !== current &&\n      ((current.alternate = null),\n      (workInProgress.alternate = null),\n      (workInProgress.flags |= 2)),\n      constructClassInstance(workInProgress, Component, nextProps),\n      mountClassInstance(workInProgress, Component, nextProps, renderLanes),\n      (nextProps = !0);\n  else if (null === current) {\n    var instance = workInProgress.stateNode,\n      oldProps = workInProgress.memoizedProps;\n    instance.props = oldProps;\n    var oldContext = instance.context,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType && null !== contextType\n      ? (contextType = readContext(contextType))\n      : ((contextType = isContextProvider(Component)\n          ? previousContext\n          : contextStackCursor.current),\n        (contextType = getMaskedContext(workInProgress, contextType)));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps,\n      hasNewLifecycles =\n        \"function\" === typeof getDerivedStateFromProps ||\n        \"function\" === typeof instance.getSnapshotBeforeUpdate;\n    hasNewLifecycles ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((oldProps !== nextProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, renderLanes);\n    oldContext = workInProgress.memoizedState;\n    oldProps !== nextProps ||\n    oldState !== oldContext ||\n    didPerformWorkStackCursor.current ||\n    hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (hasNewLifecycles ||\n              (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n                \"function\" !== typeof instance.componentWillMount) ||\n              (\"function\" === typeof instance.componentWillMount &&\n                instance.componentWillMount(),\n              \"function\" === typeof instance.UNSAFE_componentWillMount &&\n                instance.UNSAFE_componentWillMount()),\n            \"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4))\n          : (\"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (instance.props = nextProps),\n        (instance.state = oldContext),\n        (instance.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof instance.componentDidMount &&\n          (workInProgress.flags |= 4),\n        (nextProps = !1));\n  } else {\n    instance = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    oldProps = workInProgress.memoizedProps;\n    contextType =\n      workInProgress.type === workInProgress.elementType\n        ? oldProps\n        : resolveDefaultProps(workInProgress.type, oldProps);\n    instance.props = contextType;\n    hasNewLifecycles = workInProgress.pendingProps;\n    oldState = instance.context;\n    oldContext = Component.contextType;\n    \"object\" === typeof oldContext && null !== oldContext\n      ? (oldContext = readContext(oldContext))\n      : ((oldContext = isContextProvider(Component)\n          ? previousContext\n          : contextStackCursor.current),\n        (oldContext = getMaskedContext(workInProgress, oldContext)));\n    var getDerivedStateFromProps$jscomp$0 = Component.getDerivedStateFromProps;\n    (getDerivedStateFromProps =\n      \"function\" === typeof getDerivedStateFromProps$jscomp$0 ||\n      \"function\" === typeof instance.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((oldProps !== hasNewLifecycles || oldState !== oldContext) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          oldContext\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, renderLanes);\n    var newState = workInProgress.memoizedState;\n    oldProps !== hasNewLifecycles ||\n    oldState !== newState ||\n    didPerformWorkStackCursor.current ||\n    hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps$jscomp$0 &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps$jscomp$0,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType,\n            nextProps,\n            oldState,\n            newState,\n            oldContext\n          ))\n          ? (getDerivedStateFromProps ||\n              (\"function\" !== typeof instance.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof instance.componentWillUpdate) ||\n              (\"function\" === typeof instance.componentWillUpdate &&\n                instance.componentWillUpdate(nextProps, newState, oldContext),\n              \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n                instance.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldContext\n                )),\n            \"function\" === typeof instance.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof instance.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 256))\n          : (\"function\" !== typeof instance.componentDidUpdate ||\n              (oldProps === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n              (oldProps === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 256),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (instance.props = nextProps),\n        (instance.state = newState),\n        (instance.context = oldContext),\n        (nextProps = contextType))\n      : (\"function\" !== typeof instance.componentDidUpdate ||\n          (oldProps === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n          (oldProps === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 256),\n        (nextProps = !1));\n  }\n  return finishClassComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    hasContext,\n    renderLanes\n  );\n}\nfunction finishClassComponent(\n  current,\n  workInProgress,\n  Component,\n  shouldUpdate,\n  hasContext,\n  renderLanes\n) {\n  markRef(current, workInProgress);\n  var didCaptureError = 0 !== (workInProgress.flags & 64);\n  if (!shouldUpdate && !didCaptureError)\n    return (\n      hasContext && invalidateContextProvider(workInProgress, Component, !1),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  shouldUpdate = workInProgress.stateNode;\n  ReactCurrentOwner$1.current = workInProgress;\n  var nextChildren =\n    didCaptureError && \"function\" !== typeof Component.getDerivedStateFromError\n      ? null\n      : shouldUpdate.render();\n  workInProgress.flags |= 1;\n  null !== current && didCaptureError\n    ? ((workInProgress.child = reconcileChildFibers(\n        workInProgress,\n        current.child,\n        null,\n        renderLanes\n      )),\n      (workInProgress.child = reconcileChildFibers(\n        workInProgress,\n        null,\n        nextChildren,\n        renderLanes\n      )))\n    : reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  workInProgress.memoizedState = shouldUpdate.state;\n  hasContext && invalidateContextProvider(workInProgress, Component, !0);\n  return workInProgress.child;\n}\nfunction pushHostRootContext(workInProgress) {\n  var root = workInProgress.stateNode;\n  root.pendingContext\n    ? pushTopLevelContextObject(\n        workInProgress,\n        root.pendingContext,\n        root.pendingContext !== root.context\n      )\n    : root.context &&\n      pushTopLevelContextObject(workInProgress, root.context, !1);\n  pushHostContainer(workInProgress, root.containerInfo);\n}\nvar SUSPENDED_MARKER = { dehydrated: null, retryLane: 0 };\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    suspenseContext = suspenseStackCursor.current,\n    showFallback = !1,\n    JSCompiler_temp;\n  (JSCompiler_temp = 0 !== (workInProgress.flags & 64)) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseContext & 2));\n  JSCompiler_temp\n    ? ((showFallback = !0), (workInProgress.flags &= -65))\n    : (null !== current && null === current.memoizedState) ||\n      void 0 === nextProps.fallback ||\n      !0 === nextProps.unstable_avoidThisFallback ||\n      (suspenseContext |= 1);\n  push(suspenseStackCursor, suspenseContext & 1);\n  if (null === current) {\n    current = nextProps.children;\n    suspenseContext = nextProps.fallback;\n    if (showFallback)\n      return (\n        (current = mountSuspenseFallbackChildren(\n          workInProgress,\n          current,\n          suspenseContext,\n          renderLanes\n        )),\n        (workInProgress.child.memoizedState = { baseLanes: renderLanes }),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        current\n      );\n    if (\"number\" === typeof nextProps.unstable_expectedLoadTime)\n      return (\n        (current = mountSuspenseFallbackChildren(\n          workInProgress,\n          current,\n          suspenseContext,\n          renderLanes\n        )),\n        (workInProgress.child.memoizedState = { baseLanes: renderLanes }),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        (workInProgress.lanes = 33554432),\n        current\n      );\n    renderLanes = createFiberFromOffscreen(\n      { mode: \"visible\", children: current },\n      workInProgress.mode,\n      renderLanes,\n      null\n    );\n    renderLanes.return = workInProgress;\n    return (workInProgress.child = renderLanes);\n  }\n  if (null !== current.memoizedState) {\n    if (showFallback)\n      return (\n        (nextProps = updateSuspenseFallbackChildren(\n          current,\n          workInProgress,\n          nextProps.children,\n          nextProps.fallback,\n          renderLanes\n        )),\n        (showFallback = workInProgress.child),\n        (suspenseContext = current.child.memoizedState),\n        (showFallback.memoizedState =\n          null === suspenseContext\n            ? { baseLanes: renderLanes }\n            : { baseLanes: suspenseContext.baseLanes | renderLanes }),\n        (showFallback.childLanes = current.childLanes & ~renderLanes),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    renderLanes = updateSuspensePrimaryChildren(\n      current,\n      workInProgress,\n      nextProps.children,\n      renderLanes\n    );\n    workInProgress.memoizedState = null;\n    return renderLanes;\n  }\n  if (showFallback)\n    return (\n      (nextProps = updateSuspenseFallbackChildren(\n        current,\n        workInProgress,\n        nextProps.children,\n        nextProps.fallback,\n        renderLanes\n      )),\n      (showFallback = workInProgress.child),\n      (suspenseContext = current.child.memoizedState),\n      (showFallback.memoizedState =\n        null === suspenseContext\n          ? { baseLanes: renderLanes }\n          : { baseLanes: suspenseContext.baseLanes | renderLanes }),\n      (showFallback.childLanes = current.childLanes & ~renderLanes),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  renderLanes = updateSuspensePrimaryChildren(\n    current,\n    workInProgress,\n    nextProps.children,\n    renderLanes\n  );\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspenseFallbackChildren(\n  workInProgress,\n  primaryChildren,\n  fallbackChildren,\n  renderLanes\n) {\n  var mode = workInProgress.mode,\n    progressedPrimaryFragment = workInProgress.child;\n  primaryChildren = { mode: \"hidden\", children: primaryChildren };\n  0 === (mode & 2) && null !== progressedPrimaryFragment\n    ? ((progressedPrimaryFragment.childLanes = 0),\n      (progressedPrimaryFragment.pendingProps = primaryChildren))\n    : (progressedPrimaryFragment = createFiberFromOffscreen(\n        primaryChildren,\n        mode,\n        0,\n        null\n      ));\n  fallbackChildren = createFiberFromFragment(\n    fallbackChildren,\n    mode,\n    renderLanes,\n    null\n  );\n  progressedPrimaryFragment.return = workInProgress;\n  fallbackChildren.return = workInProgress;\n  progressedPrimaryFragment.sibling = fallbackChildren;\n  workInProgress.child = progressedPrimaryFragment;\n  return fallbackChildren;\n}\nfunction updateSuspensePrimaryChildren(\n  current,\n  workInProgress,\n  primaryChildren,\n  renderLanes\n) {\n  var currentPrimaryChildFragment = current.child;\n  current = currentPrimaryChildFragment.sibling;\n  primaryChildren = createWorkInProgress(currentPrimaryChildFragment, {\n    mode: \"visible\",\n    children: primaryChildren\n  });\n  0 === (workInProgress.mode & 2) && (primaryChildren.lanes = renderLanes);\n  primaryChildren.return = workInProgress;\n  primaryChildren.sibling = null;\n  null !== current &&\n    ((current.nextEffect = null),\n    (current.flags = 8),\n    (workInProgress.firstEffect = workInProgress.lastEffect = current));\n  return (workInProgress.child = primaryChildren);\n}\nfunction updateSuspenseFallbackChildren(\n  current,\n  workInProgress,\n  primaryChildren,\n  fallbackChildren,\n  renderLanes\n) {\n  var mode = workInProgress.mode,\n    currentPrimaryChildFragment = current.child;\n  current = currentPrimaryChildFragment.sibling;\n  var primaryChildProps = { mode: \"hidden\", children: primaryChildren };\n  0 === (mode & 2) && workInProgress.child !== currentPrimaryChildFragment\n    ? ((primaryChildren = workInProgress.child),\n      (primaryChildren.childLanes = 0),\n      (primaryChildren.pendingProps = primaryChildProps),\n      (currentPrimaryChildFragment = primaryChildren.lastEffect),\n      null !== currentPrimaryChildFragment\n        ? ((workInProgress.firstEffect = primaryChildren.firstEffect),\n          (workInProgress.lastEffect = currentPrimaryChildFragment),\n          (currentPrimaryChildFragment.nextEffect = null))\n        : (workInProgress.firstEffect = workInProgress.lastEffect = null))\n    : (primaryChildren = createWorkInProgress(\n        currentPrimaryChildFragment,\n        primaryChildProps\n      ));\n  null !== current\n    ? (fallbackChildren = createWorkInProgress(current, fallbackChildren))\n    : ((fallbackChildren = createFiberFromFragment(\n        fallbackChildren,\n        mode,\n        renderLanes,\n        null\n      )),\n      (fallbackChildren.flags |= 2));\n  fallbackChildren.return = workInProgress;\n  primaryChildren.return = workInProgress;\n  primaryChildren.sibling = fallbackChildren;\n  workInProgress.child = primaryChildren;\n  return fallbackChildren;\n}\nfunction scheduleWorkOnFiber(fiber, renderLanes) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleWorkOnParentPath(fiber.return, renderLanes);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode,\n  lastEffectBeforeRendering\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode,\n        lastEffect: lastEffectBeforeRendering\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode),\n      (renderState.lastEffect = lastEffectBeforeRendering));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 64);\n  else {\n    if (null !== current && 0 !== (current.flags & 64))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleWorkOnFiber(current, renderLanes);\n        else if (19 === current.tag) scheduleWorkOnFiber(current, renderLanes);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  if (0 === (workInProgress.mode & 2)) workInProgress.memoizedState = null;\n  else\n    switch (revealOrder) {\n      case \"forwards\":\n        renderLanes = workInProgress.child;\n        for (revealOrder = null; null !== renderLanes; )\n          (current = renderLanes.alternate),\n            null !== current &&\n              null === findFirstSuspended(current) &&\n              (revealOrder = renderLanes),\n            (renderLanes = renderLanes.sibling);\n        renderLanes = revealOrder;\n        null === renderLanes\n          ? ((revealOrder = workInProgress.child),\n            (workInProgress.child = null))\n          : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          revealOrder,\n          renderLanes,\n          tailMode,\n          workInProgress.lastEffect\n        );\n        break;\n      case \"backwards\":\n        renderLanes = null;\n        revealOrder = workInProgress.child;\n        for (workInProgress.child = null; null !== revealOrder; ) {\n          current = revealOrder.alternate;\n          if (null !== current && null === findFirstSuspended(current)) {\n            workInProgress.child = revealOrder;\n            break;\n          }\n          current = revealOrder.sibling;\n          revealOrder.sibling = renderLanes;\n          renderLanes = revealOrder;\n          revealOrder = current;\n        }\n        initSuspenseListRenderState(\n          workInProgress,\n          !0,\n          renderLanes,\n          null,\n          tailMode,\n          workInProgress.lastEffect\n        );\n        break;\n      case \"together\":\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          null,\n          null,\n          void 0,\n          workInProgress.lastEffect\n        );\n        break;\n      default:\n        workInProgress.memoizedState = null;\n    }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 !== (renderLanes & workInProgress.childLanes)) {\n    if (null !== current && workInProgress.child !== current.child)\n      throw Error(\"Resuming work not yet implemented.\");\n    if (null !== workInProgress.child) {\n      current = workInProgress.child;\n      renderLanes = createWorkInProgress(current, current.pendingProps);\n      workInProgress.child = renderLanes;\n      for (renderLanes.return = workInProgress; null !== current.sibling; )\n        (current = current.sibling),\n          (renderLanes = renderLanes.sibling = createWorkInProgress(\n            current,\n            current.pendingProps\n          )),\n          (renderLanes.return = workInProgress);\n      renderLanes.sibling = null;\n    }\n    return workInProgress.child;\n  }\n  return null;\n}\nvar appendAllChildren,\n  updateHostContainer,\n  updateHostComponent$1,\n  updateHostText$1;\nappendAllChildren = function(parent, workInProgress) {\n  for (var node = workInProgress.child; null !== node; ) {\n    if (5 === node.tag || 6 === node.tag) parent._children.push(node.stateNode);\n    else if (4 !== node.tag && null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === workInProgress) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === workInProgress) return;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n};\nupdateHostContainer = function() {};\nupdateHostComponent$1 = function(current, workInProgress, type, newProps) {\n  current.memoizedProps !== newProps &&\n    (requiredContext(contextStackCursor$1.current),\n    (workInProgress.updateQueue = UPDATE_SIGNAL)) &&\n    (workInProgress.flags |= 4);\n};\nupdateHostText$1 = function(current, workInProgress, oldText, newText) {\n  oldText !== newText && (workInProgress.flags |= 4);\n};\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  switch (renderState.tailMode) {\n    case \"hidden\":\n      hasRenderedATailFallback = renderState.tail;\n      for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n        null !== hasRenderedATailFallback.alternate &&\n          (lastTailNode = hasRenderedATailFallback),\n          (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n      null === lastTailNode\n        ? (renderState.tail = null)\n        : (lastTailNode.sibling = null);\n      break;\n    case \"collapsed\":\n      lastTailNode = renderState.tail;\n      for (var lastTailNode$64 = null; null !== lastTailNode; )\n        null !== lastTailNode.alternate && (lastTailNode$64 = lastTailNode),\n          (lastTailNode = lastTailNode.sibling);\n      null === lastTailNode$64\n        ? hasRenderedATailFallback || null === renderState.tail\n          ? (renderState.tail = null)\n          : (renderState.tail.sibling = null)\n        : (lastTailNode$64.sibling = null);\n  }\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  switch (workInProgress.tag) {\n    case 2:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return null;\n    case 1:\n      return isContextProvider(workInProgress.type) && popContext(), null;\n    case 3:\n      return (\n        popHostContainer(),\n        pop(didPerformWorkStackCursor),\n        pop(contextStackCursor),\n        resetWorkInProgressVersions(),\n        (newProps = workInProgress.stateNode),\n        newProps.pendingContext &&\n          ((newProps.context = newProps.pendingContext),\n          (newProps.pendingContext = null)),\n        (null !== current && null !== current.child) ||\n          newProps.hydrate ||\n          (workInProgress.flags |= 256),\n        updateHostContainer(workInProgress),\n        null\n      );\n    case 5:\n      popHostContext(workInProgress);\n      var rootContainerInstance = requiredContext(\n        rootInstanceStackCursor.current\n      );\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        updateHostComponent$1(\n          current,\n          workInProgress,\n          renderLanes,\n          newProps,\n          rootContainerInstance\n        ),\n          current.ref !== workInProgress.ref && (workInProgress.flags |= 128);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(\n              \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n            );\n          return null;\n        }\n        requiredContext(contextStackCursor$1.current);\n        current = allocateTag();\n        renderLanes = getViewConfigForType(renderLanes);\n        var updatePayload = diffProperties(\n          null,\n          emptyObject,\n          newProps,\n          renderLanes.validAttributes\n        );\n        ReactNativePrivateInterface.UIManager.createView(\n          current,\n          renderLanes.uiViewClassName,\n          rootContainerInstance,\n          updatePayload\n        );\n        rootContainerInstance = new ReactNativeFiberHostComponent(\n          current,\n          renderLanes,\n          workInProgress\n        );\n        instanceCache.set(current, workInProgress);\n        instanceProps.set(current, newProps);\n        appendAllChildren(rootContainerInstance, workInProgress, !1, !1);\n        workInProgress.stateNode = rootContainerInstance;\n        finalizeInitialChildren(rootContainerInstance) &&\n          (workInProgress.flags |= 4);\n        null !== workInProgress.ref && (workInProgress.flags |= 128);\n      }\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        updateHostText$1(\n          current,\n          workInProgress,\n          current.memoizedProps,\n          newProps\n        );\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(\n            \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        current = requiredContext(rootInstanceStackCursor.current);\n        if (!requiredContext(contextStackCursor$1.current).isInAParentText)\n          throw Error(\n            \"Text strings must be rendered within a <Text> component.\"\n          );\n        rootContainerInstance = allocateTag();\n        ReactNativePrivateInterface.UIManager.createView(\n          rootContainerInstance,\n          \"RCTRawText\",\n          current,\n          { text: newProps }\n        );\n        instanceCache.set(rootContainerInstance, workInProgress);\n        workInProgress.stateNode = rootContainerInstance;\n      }\n      return null;\n    case 13:\n      pop(suspenseStackCursor);\n      newProps = workInProgress.memoizedState;\n      if (0 !== (workInProgress.flags & 64))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      newProps = null !== newProps;\n      rootContainerInstance = !1;\n      null !== current &&\n        (rootContainerInstance = null !== current.memoizedState);\n      if (newProps && !rootContainerInstance && 0 !== (workInProgress.mode & 2))\n        if (\n          (null === current &&\n            !0 !== workInProgress.memoizedProps.unstable_avoidThisFallback) ||\n          0 !== (suspenseStackCursor.current & 1)\n        )\n          0 === workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 3);\n        else {\n          if (\n            0 === workInProgressRootExitStatus ||\n            3 === workInProgressRootExitStatus\n          )\n            workInProgressRootExitStatus = 4;\n          null === workInProgressRoot ||\n            (0 === (workInProgressRootSkippedLanes & 134217727) &&\n              0 === (workInProgressRootUpdatedLanes & 134217727)) ||\n            markRootSuspended$1(\n              workInProgressRoot,\n              workInProgressRootRenderLanes\n            );\n        }\n      if (newProps || rootContainerInstance) workInProgress.flags |= 4;\n      return null;\n    case 4:\n      return popHostContainer(), updateHostContainer(workInProgress), null;\n    case 10:\n      return popProvider(workInProgress), null;\n    case 17:\n      return isContextProvider(workInProgress.type) && popContext(), null;\n    case 19:\n      pop(suspenseStackCursor);\n      newProps = workInProgress.memoizedState;\n      if (null === newProps) return null;\n      rootContainerInstance = 0 !== (workInProgress.flags & 64);\n      updatePayload = newProps.rendering;\n      if (null === updatePayload)\n        if (rootContainerInstance) cutOffTailIfNeeded(newProps, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 64))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              updatePayload = findFirstSuspended(current);\n              if (null !== updatePayload) {\n                workInProgress.flags |= 64;\n                cutOffTailIfNeeded(newProps, !1);\n                current = updatePayload.updateQueue;\n                null !== current &&\n                  ((workInProgress.updateQueue = current),\n                  (workInProgress.flags |= 4));\n                null === newProps.lastEffect &&\n                  (workInProgress.firstEffect = null);\n                workInProgress.lastEffect = newProps.lastEffect;\n                current = renderLanes;\n                for (newProps = workInProgress.child; null !== newProps; )\n                  (rootContainerInstance = newProps),\n                    (renderLanes = current),\n                    (rootContainerInstance.flags &= 2),\n                    (rootContainerInstance.nextEffect = null),\n                    (rootContainerInstance.firstEffect = null),\n                    (rootContainerInstance.lastEffect = null),\n                    (updatePayload = rootContainerInstance.alternate),\n                    null === updatePayload\n                      ? ((rootContainerInstance.childLanes = 0),\n                        (rootContainerInstance.lanes = renderLanes),\n                        (rootContainerInstance.child = null),\n                        (rootContainerInstance.memoizedProps = null),\n                        (rootContainerInstance.memoizedState = null),\n                        (rootContainerInstance.updateQueue = null),\n                        (rootContainerInstance.dependencies = null),\n                        (rootContainerInstance.stateNode = null))\n                      : ((rootContainerInstance.childLanes =\n                          updatePayload.childLanes),\n                        (rootContainerInstance.lanes = updatePayload.lanes),\n                        (rootContainerInstance.child = updatePayload.child),\n                        (rootContainerInstance.memoizedProps =\n                          updatePayload.memoizedProps),\n                        (rootContainerInstance.memoizedState =\n                          updatePayload.memoizedState),\n                        (rootContainerInstance.updateQueue =\n                          updatePayload.updateQueue),\n                        (rootContainerInstance.type = updatePayload.type),\n                        (renderLanes = updatePayload.dependencies),\n                        (rootContainerInstance.dependencies =\n                          null === renderLanes\n                            ? null\n                            : {\n                                lanes: renderLanes.lanes,\n                                firstContext: renderLanes.firstContext\n                              })),\n                    (newProps = newProps.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== newProps.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 64),\n            (rootContainerInstance = !0),\n            cutOffTailIfNeeded(newProps, !1),\n            (workInProgress.lanes = 33554432));\n        }\n      else {\n        if (!rootContainerInstance)\n          if (\n            ((current = findFirstSuspended(updatePayload)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 64),\n              (rootContainerInstance = !0),\n              (current = current.updateQueue),\n              null !== current &&\n                ((workInProgress.updateQueue = current),\n                (workInProgress.flags |= 4)),\n              cutOffTailIfNeeded(newProps, !0),\n              null === newProps.tail &&\n                \"hidden\" === newProps.tailMode &&\n                !updatePayload.alternate)\n            )\n              return (\n                (workInProgress = workInProgress.lastEffect =\n                  newProps.lastEffect),\n                null !== workInProgress && (workInProgress.nextEffect = null),\n                null\n              );\n          } else\n            2 * now() - newProps.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              1073741824 !== renderLanes &&\n              ((workInProgress.flags |= 64),\n              (rootContainerInstance = !0),\n              cutOffTailIfNeeded(newProps, !1),\n              (workInProgress.lanes = 33554432));\n        newProps.isBackwards\n          ? ((updatePayload.sibling = workInProgress.child),\n            (workInProgress.child = updatePayload))\n          : ((current = newProps.last),\n            null !== current\n              ? (current.sibling = updatePayload)\n              : (workInProgress.child = updatePayload),\n            (newProps.last = updatePayload));\n      }\n      return null !== newProps.tail\n        ? ((current = newProps.tail),\n          (newProps.rendering = current),\n          (newProps.tail = current.sibling),\n          (newProps.lastEffect = workInProgress.lastEffect),\n          (newProps.renderingStartTime = now()),\n          (current.sibling = null),\n          (workInProgress = suspenseStackCursor.current),\n          push(\n            suspenseStackCursor,\n            rootContainerInstance\n              ? (workInProgress & 1) | 2\n              : workInProgress & 1\n          ),\n          current)\n        : null;\n    case 23:\n    case 24:\n      return (\n        popRenderLanes(),\n        null !== current &&\n          (null !== current.memoizedState) !==\n            (null !== workInProgress.memoizedState) &&\n          \"unstable-defer-without-hiding\" !== newProps.mode &&\n          (workInProgress.flags |= 4),\n        null\n      );\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction unwindWork(workInProgress) {\n  switch (workInProgress.tag) {\n    case 1:\n      isContextProvider(workInProgress.type) && popContext();\n      var flags = workInProgress.flags;\n      return flags & 8192\n        ? ((workInProgress.flags = (flags & -8193) | 64), workInProgress)\n        : null;\n    case 3:\n      popHostContainer();\n      pop(didPerformWorkStackCursor);\n      pop(contextStackCursor);\n      resetWorkInProgressVersions();\n      flags = workInProgress.flags;\n      if (0 !== (flags & 64))\n        throw Error(\n          \"The root failed to unmount after an error. This is likely a bug in React. Please file an issue.\"\n        );\n      workInProgress.flags = (flags & -8193) | 64;\n      return workInProgress;\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      return (\n        pop(suspenseStackCursor),\n        (flags = workInProgress.flags),\n        flags & 8192\n          ? ((workInProgress.flags = (flags & -8193) | 64), workInProgress)\n          : null\n      );\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress), null;\n    case 23:\n    case 24:\n      return popRenderLanes(), null;\n    default:\n      return null;\n  }\n}\nfunction createCapturedValue(value, source) {\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nif (\n  \"function\" !==\n  typeof ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog\n)\n  throw Error(\n    \"Expected ReactFiberErrorDialog.showErrorDialog to be a function.\"\n  );\nfunction logCapturedError(boundary, errorInfo) {\n  try {\n    !1 !==\n      ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog({\n        componentStack: null !== errorInfo.stack ? errorInfo.stack : \"\",\n        error: errorInfo.value,\n        errorBoundary:\n          null !== boundary && 1 === boundary.tag ? boundary.stateNode : null\n      }) && console.error(errorInfo.value);\n  } catch (e) {\n    setTimeout(function() {\n      throw e;\n    });\n  }\n}\nvar PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map;\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n  lane = createUpdate(-1, lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  var error = errorInfo.value;\n  lane.callback = function() {\n    hasUncaughtError || ((hasUncaughtError = !0), (firstUncaughtError = error));\n    logCapturedError(fiber, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n  lane = createUpdate(-1, lane);\n  lane.tag = 3;\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    lane.payload = function() {\n      logCapturedError(fiber, errorInfo);\n      return getDerivedStateFromError(error);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (lane.callback = function() {\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this),\n        logCapturedError(fiber, errorInfo));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n  return lane;\n}\nvar PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set;\nfunction safelyDetachRef(current) {\n  var ref = current.ref;\n  if (null !== ref)\n    if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (refError) {\n        captureCommitPhaseError(current, refError);\n      }\n    else ref.current = null;\n}\nfunction commitBeforeMutationLifeCycles(current, finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n    case 22:\n      return;\n    case 1:\n      if (finishedWork.flags & 256 && null !== current) {\n        var prevProps = current.memoizedProps,\n          prevState = current.memoizedState;\n        current = finishedWork.stateNode;\n        finishedWork = current.getSnapshotBeforeUpdate(\n          finishedWork.elementType === finishedWork.type\n            ? prevProps\n            : resolveDefaultProps(finishedWork.type, prevProps),\n          prevState\n        );\n        current.__reactInternalSnapshotBeforeUpdate = finishedWork;\n      }\n      return;\n    case 3:\n      return;\n    case 5:\n    case 6:\n    case 4:\n    case 17:\n      return;\n  }\n  throw Error(\n    \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction commitLifeCycles(finishedRoot, current, finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n    case 22:\n      current = finishedWork.updateQueue;\n      current = null !== current ? current.lastEffect : null;\n      if (null !== current) {\n        finishedRoot = current = current.next;\n        do {\n          if (3 === (finishedRoot.tag & 3)) {\n            var create$81 = finishedRoot.create;\n            finishedRoot.destroy = create$81();\n          }\n          finishedRoot = finishedRoot.next;\n        } while (finishedRoot !== current);\n      }\n      current = finishedWork.updateQueue;\n      current = null !== current ? current.lastEffect : null;\n      if (null !== current) {\n        finishedRoot = current = current.next;\n        do {\n          var _effect = finishedRoot;\n          create$81 = _effect.next;\n          _effect = _effect.tag;\n          0 !== (_effect & 4) &&\n            0 !== (_effect & 1) &&\n            (enqueuePendingPassiveHookEffectUnmount(finishedWork, finishedRoot),\n            enqueuePendingPassiveHookEffectMount(finishedWork, finishedRoot));\n          finishedRoot = create$81;\n        } while (finishedRoot !== current);\n      }\n      return;\n    case 1:\n      finishedRoot = finishedWork.stateNode;\n      finishedWork.flags & 4 &&\n        (null === current\n          ? finishedRoot.componentDidMount()\n          : ((create$81 =\n              finishedWork.elementType === finishedWork.type\n                ? current.memoizedProps\n                : resolveDefaultProps(\n                    finishedWork.type,\n                    current.memoizedProps\n                  )),\n            finishedRoot.componentDidUpdate(\n              create$81,\n              current.memoizedState,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            )));\n      current = finishedWork.updateQueue;\n      null !== current &&\n        commitUpdateQueue(finishedWork, current, finishedRoot);\n      return;\n    case 3:\n      current = finishedWork.updateQueue;\n      if (null !== current) {\n        finishedRoot = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 5:\n              finishedRoot = finishedWork.child.stateNode;\n              break;\n            case 1:\n              finishedRoot = finishedWork.child.stateNode;\n          }\n        commitUpdateQueue(finishedWork, current, finishedRoot);\n      }\n      return;\n    case 5:\n      return;\n    case 6:\n      return;\n    case 4:\n      return;\n    case 12:\n      return;\n    case 13:\n      return;\n    case 19:\n    case 17:\n    case 20:\n    case 21:\n    case 23:\n    case 24:\n      return;\n  }\n  throw Error(\n    \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction hideOrUnhideAllChildren(finishedWork, isHidden) {\n  for (var node = finishedWork; ; ) {\n    if (5 === node.tag) {\n      var instance = node.stateNode;\n      if (isHidden) {\n        var viewConfig = instance.viewConfig;\n        var updatePayload = diffProperties(\n          null,\n          emptyObject,\n          { style: { display: \"none\" } },\n          viewConfig.validAttributes\n        );\n        ReactNativePrivateInterface.UIManager.updateView(\n          instance._nativeTag,\n          viewConfig.uiViewClassName,\n          updatePayload\n        );\n      } else {\n        instance = node.stateNode;\n        updatePayload = node.memoizedProps;\n        viewConfig = instance.viewConfig;\n        var prevProps = Object.assign({}, updatePayload, {\n          style: [updatePayload.style, { display: \"none\" }]\n        });\n        updatePayload = diffProperties(\n          null,\n          prevProps,\n          updatePayload,\n          viewConfig.validAttributes\n        );\n        ReactNativePrivateInterface.UIManager.updateView(\n          instance._nativeTag,\n          viewConfig.uiViewClassName,\n          updatePayload\n        );\n      }\n    } else {\n      if (6 === node.tag) throw Error(\"Not yet implemented.\");\n      if (\n        ((23 !== node.tag && 24 !== node.tag) ||\n          null === node.memoizedState ||\n          node === finishedWork) &&\n        null !== node.child\n      ) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    }\n    if (node === finishedWork) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === finishedWork) return;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\nfunction commitUnmount(finishedRoot, current) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, current);\n    } catch (err) {}\n  switch (current.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n    case 22:\n      finishedRoot = current.updateQueue;\n      if (\n        null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.lastEffect), null !== finishedRoot)\n      ) {\n        var effect = (finishedRoot = finishedRoot.next);\n        do {\n          var _effect2 = effect,\n            destroy = _effect2.destroy;\n          _effect2 = _effect2.tag;\n          if (void 0 !== destroy)\n            if (0 !== (_effect2 & 4))\n              enqueuePendingPassiveHookEffectUnmount(current, effect);\n            else {\n              _effect2 = current;\n              try {\n                destroy();\n              } catch (error) {\n                captureCommitPhaseError(_effect2, error);\n              }\n            }\n          effect = effect.next;\n        } while (effect !== finishedRoot);\n      }\n      break;\n    case 1:\n      safelyDetachRef(current);\n      finishedRoot = current.stateNode;\n      if (\"function\" === typeof finishedRoot.componentWillUnmount)\n        try {\n          (finishedRoot.props = current.memoizedProps),\n            (finishedRoot.state = current.memoizedState),\n            finishedRoot.componentWillUnmount();\n        } catch (unmountError) {\n          captureCommitPhaseError(current, unmountError);\n        }\n      break;\n    case 5:\n      safelyDetachRef(current);\n      break;\n    case 4:\n      unmountHostComponents(finishedRoot, current);\n  }\n}\nfunction detachFiberMutation(fiber) {\n  fiber.alternate = null;\n  fiber.child = null;\n  fiber.dependencies = null;\n  fiber.firstEffect = null;\n  fiber.lastEffect = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.return = null;\n  fiber.updateQueue = null;\n}\nfunction isHostParent(fiber) {\n  return 5 === fiber.tag || 3 === fiber.tag || 4 === fiber.tag;\n}\nfunction commitPlacement(finishedWork) {\n  a: {\n    for (var parent = finishedWork.return; null !== parent; ) {\n      if (isHostParent(parent)) break a;\n      parent = parent.return;\n    }\n    throw Error(\n      \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  }\n  var parentFiber = parent;\n  parent = parentFiber.stateNode;\n  switch (parentFiber.tag) {\n    case 5:\n      var isContainer = !1;\n      break;\n    case 3:\n      parent = parent.containerInfo;\n      isContainer = !0;\n      break;\n    case 4:\n      parent = parent.containerInfo;\n      isContainer = !0;\n      break;\n    default:\n      throw Error(\n        \"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n  }\n  parentFiber.flags & 16 && (parentFiber.flags &= -17);\n  a: b: for (parentFiber = finishedWork; ; ) {\n    for (; null === parentFiber.sibling; ) {\n      if (null === parentFiber.return || isHostParent(parentFiber.return)) {\n        parentFiber = null;\n        break a;\n      }\n      parentFiber = parentFiber.return;\n    }\n    parentFiber.sibling.return = parentFiber.return;\n    for (\n      parentFiber = parentFiber.sibling;\n      5 !== parentFiber.tag && 6 !== parentFiber.tag && 18 !== parentFiber.tag;\n\n    ) {\n      if (parentFiber.flags & 2) continue b;\n      if (null === parentFiber.child || 4 === parentFiber.tag) continue b;\n      else\n        (parentFiber.child.return = parentFiber),\n          (parentFiber = parentFiber.child);\n    }\n    if (!(parentFiber.flags & 2)) {\n      parentFiber = parentFiber.stateNode;\n      break a;\n    }\n  }\n  isContainer\n    ? insertOrAppendPlacementNodeIntoContainer(\n        finishedWork,\n        parentFiber,\n        parent\n      )\n    : insertOrAppendPlacementNode(finishedWork, parentFiber, parent);\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag,\n    isHost = 5 === tag || 6 === tag;\n  if (isHost)\n    if (((node = isHost ? node.stateNode : node.stateNode.instance), before)) {\n      if (\"number\" === typeof parent)\n        throw Error(\"Container does not support insertBefore operation\");\n    } else\n      ReactNativePrivateInterface.UIManager.setChildren(parent, [\n        \"number\" === typeof node ? node : node._nativeTag\n      ]);\n  else if (4 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag,\n    isHost = 5 === tag || 6 === tag;\n  if (isHost)\n    (node = isHost ? node.stateNode : node.stateNode.instance),\n      before\n        ? ((tag = parent._children),\n          (isHost = tag.indexOf(node)),\n          0 <= isHost\n            ? (tag.splice(isHost, 1),\n              (before = tag.indexOf(before)),\n              tag.splice(before, 0, node),\n              ReactNativePrivateInterface.UIManager.manageChildren(\n                parent._nativeTag,\n                [isHost],\n                [before],\n                [],\n                [],\n                []\n              ))\n            : ((before = tag.indexOf(before)),\n              tag.splice(before, 0, node),\n              ReactNativePrivateInterface.UIManager.manageChildren(\n                parent._nativeTag,\n                [],\n                [],\n                [\"number\" === typeof node ? node : node._nativeTag],\n                [before],\n                []\n              )))\n        : ((before = \"number\" === typeof node ? node : node._nativeTag),\n          (tag = parent._children),\n          (isHost = tag.indexOf(node)),\n          0 <= isHost\n            ? (tag.splice(isHost, 1),\n              tag.push(node),\n              ReactNativePrivateInterface.UIManager.manageChildren(\n                parent._nativeTag,\n                [isHost],\n                [tag.length - 1],\n                [],\n                [],\n                []\n              ))\n            : (tag.push(node),\n              ReactNativePrivateInterface.UIManager.manageChildren(\n                parent._nativeTag,\n                [],\n                [],\n                [before],\n                [tag.length - 1],\n                []\n              )));\n  else if (4 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction unmountHostComponents(finishedRoot$jscomp$0, current) {\n  for (\n    var node = current,\n      currentParentIsValid = !1,\n      currentParent,\n      currentParentIsContainer;\n    ;\n\n  ) {\n    if (!currentParentIsValid) {\n      currentParentIsValid = node.return;\n      a: for (;;) {\n        if (null === currentParentIsValid)\n          throw Error(\n            \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        currentParent = currentParentIsValid.stateNode;\n        switch (currentParentIsValid.tag) {\n          case 5:\n            currentParentIsContainer = !1;\n            break a;\n          case 3:\n            currentParent = currentParent.containerInfo;\n            currentParentIsContainer = !0;\n            break a;\n          case 4:\n            currentParent = currentParent.containerInfo;\n            currentParentIsContainer = !0;\n            break a;\n        }\n        currentParentIsValid = currentParentIsValid.return;\n      }\n      currentParentIsValid = !0;\n    }\n    if (5 === node.tag || 6 === node.tag) {\n      a: for (\n        var finishedRoot = finishedRoot$jscomp$0,\n          root = node,\n          node$jscomp$0 = root;\n        ;\n\n      )\n        if (\n          (commitUnmount(finishedRoot, node$jscomp$0),\n          null !== node$jscomp$0.child && 4 !== node$jscomp$0.tag)\n        )\n          (node$jscomp$0.child.return = node$jscomp$0),\n            (node$jscomp$0 = node$jscomp$0.child);\n        else {\n          if (node$jscomp$0 === root) break a;\n          for (; null === node$jscomp$0.sibling; ) {\n            if (null === node$jscomp$0.return || node$jscomp$0.return === root)\n              break a;\n            node$jscomp$0 = node$jscomp$0.return;\n          }\n          node$jscomp$0.sibling.return = node$jscomp$0.return;\n          node$jscomp$0 = node$jscomp$0.sibling;\n        }\n      currentParentIsContainer\n        ? ((finishedRoot = currentParent),\n          recursivelyUncacheFiberNode(node.stateNode),\n          ReactNativePrivateInterface.UIManager.manageChildren(\n            finishedRoot,\n            [],\n            [],\n            [],\n            [],\n            [0]\n          ))\n        : ((finishedRoot = currentParent),\n          (node$jscomp$0 = node.stateNode),\n          recursivelyUncacheFiberNode(node$jscomp$0),\n          (root = finishedRoot._children),\n          (node$jscomp$0 = root.indexOf(node$jscomp$0)),\n          root.splice(node$jscomp$0, 1),\n          ReactNativePrivateInterface.UIManager.manageChildren(\n            finishedRoot._nativeTag,\n            [],\n            [],\n            [],\n            [],\n            [node$jscomp$0]\n          ));\n    } else if (4 === node.tag) {\n      if (null !== node.child) {\n        currentParent = node.stateNode.containerInfo;\n        currentParentIsContainer = !0;\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    } else if (\n      (commitUnmount(finishedRoot$jscomp$0, node), null !== node.child)\n    ) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === current) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === current) return;\n      node = node.return;\n      4 === node.tag && (currentParentIsValid = !1);\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\nfunction commitWork(current, finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n    case 22:\n      var updateQueue = finishedWork.updateQueue;\n      updateQueue = null !== updateQueue ? updateQueue.lastEffect : null;\n      if (null !== updateQueue) {\n        var effect = (updateQueue = updateQueue.next);\n        do\n          3 === (effect.tag & 3) &&\n            ((finishedWork = effect.destroy),\n            (effect.destroy = void 0),\n            void 0 !== finishedWork && finishedWork()),\n            (effect = effect.next);\n        while (effect !== updateQueue);\n      }\n      return;\n    case 1:\n      return;\n    case 5:\n      updateQueue = finishedWork.stateNode;\n      if (null != updateQueue) {\n        effect = finishedWork.memoizedProps;\n        current = null !== current ? current.memoizedProps : effect;\n        var updatePayload = finishedWork.updateQueue;\n        finishedWork.updateQueue = null;\n        null !== updatePayload &&\n          ((finishedWork = updateQueue.viewConfig),\n          instanceProps.set(updateQueue._nativeTag, effect),\n          (effect = diffProperties(\n            null,\n            current,\n            effect,\n            finishedWork.validAttributes\n          )),\n          null != effect &&\n            ReactNativePrivateInterface.UIManager.updateView(\n              updateQueue._nativeTag,\n              finishedWork.uiViewClassName,\n              effect\n            ));\n      }\n      return;\n    case 6:\n      if (null === finishedWork.stateNode)\n        throw Error(\n          \"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      ReactNativePrivateInterface.UIManager.updateView(\n        finishedWork.stateNode,\n        \"RCTRawText\",\n        { text: finishedWork.memoizedProps }\n      );\n      return;\n    case 3:\n      return;\n    case 12:\n      return;\n    case 13:\n      null !== finishedWork.memoizedState &&\n        ((globalMostRecentFallbackTime = now()),\n        hideOrUnhideAllChildren(finishedWork.child, !0));\n      attachSuspenseRetryListeners(finishedWork);\n      return;\n    case 19:\n      attachSuspenseRetryListeners(finishedWork);\n      return;\n    case 17:\n      return;\n    case 23:\n    case 24:\n      hideOrUnhideAllChildren(\n        finishedWork,\n        null !== finishedWork.memoizedState\n      );\n      return;\n  }\n  throw Error(\n    \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction attachSuspenseRetryListeners(finishedWork) {\n  var wakeables = finishedWork.updateQueue;\n  if (null !== wakeables) {\n    finishedWork.updateQueue = null;\n    var retryCache = finishedWork.stateNode;\n    null === retryCache &&\n      (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n    wakeables.forEach(function(wakeable) {\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n      retryCache.has(wakeable) ||\n        (retryCache.add(wakeable), wakeable.then(retry, retry));\n    });\n  }\n}\nfunction isSuspenseBoundaryBeingHidden(current, finishedWork) {\n  return null !== current &&\n    ((current = current.memoizedState),\n    null === current || null !== current.dehydrated)\n    ? ((finishedWork = finishedWork.memoizedState),\n      null !== finishedWork && null === finishedWork.dehydrated)\n    : !1;\n}\nvar ceil = Math.ceil,\n  ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,\n  ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  subtreeRenderLanes = 0,\n  subtreeRenderLanesCursor = createCursor(0),\n  workInProgressRootExitStatus = 0,\n  workInProgressRootFatalError = null,\n  workInProgressRootIncludedLanes = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  mostRecentlyUpdatedRoot = null,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  nextEffect = null,\n  hasUncaughtError = !1,\n  firstUncaughtError = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  rootDoesHavePassiveEffects = !1,\n  rootWithPendingPassiveEffects = null,\n  pendingPassiveEffectsRenderPriority = 90,\n  pendingPassiveHookEffectsMount = [],\n  pendingPassiveHookEffectsUnmount = [],\n  rootsWithPendingDiscreteUpdates = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null,\n  currentEventTime = -1,\n  currentEventWipLanes = 0,\n  currentEventPendingLanes = 0,\n  focusedInstanceHandle = null,\n  shouldFireAfterActiveInstanceBlur = !1;\nfunction requestEventTime() {\n  return 0 !== (executionContext & 48)\n    ? now()\n    : -1 !== currentEventTime\n    ? currentEventTime\n    : (currentEventTime = now());\n}\nfunction requestUpdateLane(fiber) {\n  fiber = fiber.mode;\n  if (0 === (fiber & 2)) return 1;\n  if (0 === (fiber & 4)) return 99 === getCurrentPriorityLevel() ? 1 : 2;\n  0 === currentEventWipLanes &&\n    (currentEventWipLanes = workInProgressRootIncludedLanes);\n  if (0 !== ReactCurrentBatchConfig.transition) {\n    0 !== currentEventPendingLanes &&\n      (currentEventPendingLanes =\n        null !== mostRecentlyUpdatedRoot\n          ? mostRecentlyUpdatedRoot.pendingLanes\n          : 0);\n    fiber = currentEventWipLanes;\n    var lane = 4186112 & ~currentEventPendingLanes;\n    lane &= -lane;\n    0 === lane &&\n      ((fiber = 4186112 & ~fiber),\n      (lane = fiber & -fiber),\n      0 === lane && (lane = 8192));\n    return lane;\n  }\n  fiber = getCurrentPriorityLevel();\n  0 !== (executionContext & 4) && 98 === fiber\n    ? (fiber = findUpdateLane(12, currentEventWipLanes))\n    : ((fiber = schedulerPriorityToLanePriority(fiber)),\n      (fiber = findUpdateLane(fiber, currentEventWipLanes)));\n  return fiber;\n}\nfunction scheduleUpdateOnFiber(fiber, lane, eventTime) {\n  if (50 < nestedUpdateCount)\n    throw ((nestedUpdateCount = 0),\n    (rootWithNestedUpdates = null),\n    Error(\n      \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\"\n    ));\n  fiber = markUpdateLaneFromFiberToRoot(fiber, lane);\n  if (null === fiber) return null;\n  markRootUpdated(fiber, lane, eventTime);\n  fiber === workInProgressRoot &&\n    ((workInProgressRootUpdatedLanes |= lane),\n    4 === workInProgressRootExitStatus &&\n      markRootSuspended$1(fiber, workInProgressRootRenderLanes));\n  var priorityLevel = getCurrentPriorityLevel();\n  1 === lane\n    ? 0 !== (executionContext & 8) && 0 === (executionContext & 48)\n      ? performSyncWorkOnRoot(fiber)\n      : (ensureRootIsScheduled(fiber, eventTime),\n        0 === executionContext &&\n          ((workInProgressRootRenderTargetTime = now() + 500),\n          flushSyncCallbackQueue()))\n    : (0 === (executionContext & 4) ||\n        (98 !== priorityLevel && 99 !== priorityLevel) ||\n        (null === rootsWithPendingDiscreteUpdates\n          ? (rootsWithPendingDiscreteUpdates = new Set([fiber]))\n          : rootsWithPendingDiscreteUpdates.add(fiber)),\n      ensureRootIsScheduled(fiber, eventTime));\n  mostRecentlyUpdatedRoot = fiber;\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  alternate = sourceFiber;\n  for (sourceFiber = sourceFiber.return; null !== sourceFiber; )\n    (sourceFiber.childLanes |= lane),\n      (alternate = sourceFiber.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      (alternate = sourceFiber),\n      (sourceFiber = sourceFiber.return);\n  return 3 === alternate.tag ? alternate.stateNode : null;\n}\nfunction ensureRootIsScheduled(root, currentTime) {\n  for (\n    var existingCallbackNode = root.callbackNode,\n      suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes;\n    0 < lanes;\n\n  ) {\n    var index$7 = 31 - clz32(lanes),\n      lane = 1 << index$7,\n      expirationTime = expirationTimes[index$7];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes)) {\n        expirationTime = currentTime;\n        getHighestPriorityLanes(lane);\n        var priority = return_highestLanePriority;\n        expirationTimes[index$7] =\n          10 <= priority\n            ? expirationTime + 250\n            : 6 <= priority\n            ? expirationTime + 5e3\n            : -1;\n      }\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  suspendedLanes = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes : 0\n  );\n  currentTime = return_highestLanePriority;\n  if (0 === suspendedLanes)\n    null !== existingCallbackNode &&\n      (existingCallbackNode !== fakeCallbackNode &&\n        Scheduler_cancelCallback(existingCallbackNode),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0));\n  else {\n    if (null !== existingCallbackNode) {\n      if (root.callbackPriority === currentTime) return;\n      existingCallbackNode !== fakeCallbackNode &&\n        Scheduler_cancelCallback(existingCallbackNode);\n    }\n    15 === currentTime\n      ? ((existingCallbackNode = performSyncWorkOnRoot.bind(null, root)),\n        null === syncQueue\n          ? ((syncQueue = [existingCallbackNode]),\n            (immediateQueueCallbackNode = Scheduler_scheduleCallback(\n              Scheduler_ImmediatePriority,\n              flushSyncCallbackQueueImpl\n            )))\n          : syncQueue.push(existingCallbackNode),\n        (existingCallbackNode = fakeCallbackNode))\n      : 14 === currentTime\n      ? (existingCallbackNode = scheduleCallback(\n          99,\n          performSyncWorkOnRoot.bind(null, root)\n        ))\n      : ((existingCallbackNode = lanePriorityToSchedulerPriority(currentTime)),\n        (existingCallbackNode = scheduleCallback(\n          existingCallbackNode,\n          performConcurrentWorkOnRoot.bind(null, root)\n        )));\n    root.callbackPriority = currentTime;\n    root.callbackNode = existingCallbackNode;\n  }\n}\nfunction performConcurrentWorkOnRoot(root) {\n  currentEventTime = -1;\n  currentEventPendingLanes = currentEventWipLanes = 0;\n  if (0 !== (executionContext & 48))\n    throw Error(\"Should not already be working.\");\n  var originalCallbackNode = root.callbackNode;\n  if (flushPassiveEffects() && root.callbackNode !== originalCallbackNode)\n    return null;\n  var lanes = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes : 0\n  );\n  if (0 === lanes) return null;\n  var exitStatus = lanes;\n  var prevExecutionContext = executionContext;\n  executionContext |= 16;\n  var prevDispatcher = pushDispatcher();\n  if (\n    workInProgressRoot !== root ||\n    workInProgressRootRenderLanes !== exitStatus\n  )\n    (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, exitStatus);\n  do\n    try {\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  while (1);\n  resetContextDependencies();\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n  executionContext = prevExecutionContext;\n  null !== workInProgress\n    ? (exitStatus = 0)\n    : ((workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0),\n      (exitStatus = workInProgressRootExitStatus));\n  if (0 !== (workInProgressRootIncludedLanes & workInProgressRootUpdatedLanes))\n    prepareFreshStack(root, 0);\n  else if (0 !== exitStatus) {\n    2 === exitStatus &&\n      ((executionContext |= 64),\n      root.hydrate && (root.hydrate = !1),\n      (lanes = getLanesToRetrySynchronouslyOnError(root)),\n      0 !== lanes && (exitStatus = renderRootSync(root, lanes)));\n    if (1 === exitStatus)\n      throw ((originalCallbackNode = workInProgressRootFatalError),\n      prepareFreshStack(root, 0),\n      markRootSuspended$1(root, lanes),\n      ensureRootIsScheduled(root, now()),\n      originalCallbackNode);\n    root.finishedWork = root.current.alternate;\n    root.finishedLanes = lanes;\n    switch (exitStatus) {\n      case 0:\n      case 1:\n        throw Error(\"Root did not complete. This is a bug in React.\");\n      case 2:\n        commitRoot(root);\n        break;\n      case 3:\n        markRootSuspended$1(root, lanes);\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 500 - now()),\n          10 < exitStatus)\n        ) {\n          if (0 !== getNextLanes(root, 0)) break;\n          prevExecutionContext = root.suspendedLanes;\n          if ((prevExecutionContext & lanes) !== lanes) {\n            requestEventTime();\n            root.pingedLanes |= root.suspendedLanes & prevExecutionContext;\n            break;\n          }\n          root.timeoutHandle = scheduleTimeout(\n            commitRoot.bind(null, root),\n            exitStatus\n          );\n          break;\n        }\n        commitRoot(root);\n        break;\n      case 4:\n        markRootSuspended$1(root, lanes);\n        if ((lanes & 4186112) === lanes) break;\n        exitStatus = root.eventTimes;\n        for (prevExecutionContext = -1; 0 < lanes; ) {\n          var index$6 = 31 - clz32(lanes);\n          prevDispatcher = 1 << index$6;\n          index$6 = exitStatus[index$6];\n          index$6 > prevExecutionContext && (prevExecutionContext = index$6);\n          lanes &= ~prevDispatcher;\n        }\n        lanes = prevExecutionContext;\n        lanes = now() - lanes;\n        lanes =\n          (120 > lanes\n            ? 120\n            : 480 > lanes\n            ? 480\n            : 1080 > lanes\n            ? 1080\n            : 1920 > lanes\n            ? 1920\n            : 3e3 > lanes\n            ? 3e3\n            : 4320 > lanes\n            ? 4320\n            : 1960 * ceil(lanes / 1960)) - lanes;\n        if (10 < lanes) {\n          root.timeoutHandle = scheduleTimeout(\n            commitRoot.bind(null, root),\n            lanes\n          );\n          break;\n        }\n        commitRoot(root);\n        break;\n      case 5:\n        commitRoot(root);\n        break;\n      default:\n        throw Error(\"Unknown root exit status.\");\n    }\n  }\n  ensureRootIsScheduled(root, now());\n  return root.callbackNode === originalCallbackNode\n    ? performConcurrentWorkOnRoot.bind(null, root)\n    : null;\n}\nfunction markRootSuspended$1(root, suspendedLanes) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  for (root = root.expirationTimes; 0 < suspendedLanes; ) {\n    var index$11 = 31 - clz32(suspendedLanes),\n      lane = 1 << index$11;\n    root[index$11] = -1;\n    suspendedLanes &= ~lane;\n  }\n}\nfunction performSyncWorkOnRoot(root) {\n  if (0 !== (executionContext & 48))\n    throw Error(\"Should not already be working.\");\n  flushPassiveEffects();\n  if (\n    root === workInProgressRoot &&\n    0 !== (root.expiredLanes & workInProgressRootRenderLanes)\n  ) {\n    var lanes = workInProgressRootRenderLanes;\n    var exitStatus = renderRootSync(root, lanes);\n    0 !== (workInProgressRootIncludedLanes & workInProgressRootUpdatedLanes) &&\n      ((lanes = getNextLanes(root, lanes)),\n      (exitStatus = renderRootSync(root, lanes)));\n  } else\n    (lanes = getNextLanes(root, 0)), (exitStatus = renderRootSync(root, lanes));\n  0 !== root.tag &&\n    2 === exitStatus &&\n    ((executionContext |= 64),\n    root.hydrate && (root.hydrate = !1),\n    (lanes = getLanesToRetrySynchronouslyOnError(root)),\n    0 !== lanes && (exitStatus = renderRootSync(root, lanes)));\n  if (1 === exitStatus)\n    throw ((exitStatus = workInProgressRootFatalError),\n    prepareFreshStack(root, 0),\n    markRootSuspended$1(root, lanes),\n    ensureRootIsScheduled(root, now()),\n    exitStatus);\n  root.finishedWork = root.current.alternate;\n  root.finishedLanes = lanes;\n  commitRoot(root);\n  ensureRootIsScheduled(root, now());\n  return null;\n}\nfunction pushRenderLanes(fiber, lanes) {\n  push(subtreeRenderLanesCursor, subtreeRenderLanes);\n  subtreeRenderLanes |= lanes;\n  workInProgressRootIncludedLanes |= lanes;\n}\nfunction popRenderLanes() {\n  subtreeRenderLanes = subtreeRenderLanesCursor.current;\n  pop(subtreeRenderLanesCursor);\n}\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  if (null !== workInProgress)\n    for (timeoutHandle = workInProgress.return; null !== timeoutHandle; ) {\n      var interruptedWork = timeoutHandle;\n      switch (interruptedWork.tag) {\n        case 1:\n          interruptedWork = interruptedWork.type.childContextTypes;\n          null !== interruptedWork &&\n            void 0 !== interruptedWork &&\n            popContext();\n          break;\n        case 3:\n          popHostContainer();\n          pop(didPerformWorkStackCursor);\n          pop(contextStackCursor);\n          resetWorkInProgressVersions();\n          break;\n        case 5:\n          popHostContext(interruptedWork);\n          break;\n        case 4:\n          popHostContainer();\n          break;\n        case 13:\n          pop(suspenseStackCursor);\n          break;\n        case 19:\n          pop(suspenseStackCursor);\n          break;\n        case 10:\n          popProvider(interruptedWork);\n          break;\n        case 23:\n        case 24:\n          popRenderLanes();\n      }\n      timeoutHandle = timeoutHandle.return;\n    }\n  workInProgressRoot = root;\n  workInProgress = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n  workInProgressRootExitStatus = 0;\n  workInProgressRootFatalError = null;\n  workInProgressRootPingedLanes = workInProgressRootUpdatedLanes = workInProgressRootSkippedLanes = 0;\n}\nfunction handleError(root$jscomp$0, thrownValue) {\n  do {\n    var erroredWork = workInProgress;\n    try {\n      resetContextDependencies();\n      ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n      if (didScheduleRenderPhaseUpdate) {\n        for (\n          var hook = currentlyRenderingFiber$1.memoizedState;\n          null !== hook;\n\n        ) {\n          var queue = hook.queue;\n          null !== queue && (queue.pending = null);\n          hook = hook.next;\n        }\n        didScheduleRenderPhaseUpdate = !1;\n      }\n      renderLanes = 0;\n      workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n      didScheduleRenderPhaseUpdateDuringThisPass = !1;\n      ReactCurrentOwner$2.current = null;\n      if (null === erroredWork || null === erroredWork.return) {\n        workInProgressRootExitStatus = 1;\n        workInProgressRootFatalError = thrownValue;\n        workInProgress = null;\n        break;\n      }\n      a: {\n        var root = root$jscomp$0,\n          returnFiber = erroredWork.return,\n          sourceFiber = erroredWork,\n          value = thrownValue;\n        thrownValue = workInProgressRootRenderLanes;\n        sourceFiber.flags |= 4096;\n        sourceFiber.firstEffect = sourceFiber.lastEffect = null;\n        if (\n          null !== value &&\n          \"object\" === typeof value &&\n          \"function\" === typeof value.then\n        ) {\n          var wakeable = value;\n          if (0 === (sourceFiber.mode & 2)) {\n            var currentSource = sourceFiber.alternate;\n            currentSource\n              ? ((sourceFiber.updateQueue = currentSource.updateQueue),\n                (sourceFiber.memoizedState = currentSource.memoizedState),\n                (sourceFiber.lanes = currentSource.lanes))\n              : ((sourceFiber.updateQueue = null),\n                (sourceFiber.memoizedState = null));\n          }\n          var hasInvisibleParentBoundary =\n              0 !== (suspenseStackCursor.current & 1),\n            workInProgress$76 = returnFiber;\n          do {\n            var JSCompiler_temp;\n            if ((JSCompiler_temp = 13 === workInProgress$76.tag)) {\n              var nextState = workInProgress$76.memoizedState;\n              if (null !== nextState)\n                JSCompiler_temp = null !== nextState.dehydrated ? !0 : !1;\n              else {\n                var props = workInProgress$76.memoizedProps;\n                JSCompiler_temp =\n                  void 0 === props.fallback\n                    ? !1\n                    : !0 !== props.unstable_avoidThisFallback\n                    ? !0\n                    : hasInvisibleParentBoundary\n                    ? !1\n                    : !0;\n              }\n            }\n            if (JSCompiler_temp) {\n              var wakeables = workInProgress$76.updateQueue;\n              if (null === wakeables) {\n                var updateQueue = new Set();\n                updateQueue.add(wakeable);\n                workInProgress$76.updateQueue = updateQueue;\n              } else wakeables.add(wakeable);\n              if (0 === (workInProgress$76.mode & 2)) {\n                workInProgress$76.flags |= 64;\n                sourceFiber.flags |= 32768;\n                sourceFiber.flags &= -5029;\n                if (1 === sourceFiber.tag)\n                  if (null === sourceFiber.alternate) sourceFiber.tag = 17;\n                  else {\n                    var update = createUpdate(-1, 1);\n                    update.tag = 2;\n                    enqueueUpdate(sourceFiber, update);\n                  }\n                sourceFiber.lanes |= 1;\n                break a;\n              }\n              value = void 0;\n              sourceFiber = thrownValue;\n              var pingCache = root.pingCache;\n              null === pingCache\n                ? ((pingCache = root.pingCache = new PossiblyWeakMap()),\n                  (value = new Set()),\n                  pingCache.set(wakeable, value))\n                : ((value = pingCache.get(wakeable)),\n                  void 0 === value &&\n                    ((value = new Set()), pingCache.set(wakeable, value)));\n              if (!value.has(sourceFiber)) {\n                value.add(sourceFiber);\n                var ping = pingSuspendedRoot.bind(\n                  null,\n                  root,\n                  wakeable,\n                  sourceFiber\n                );\n                wakeable.then(ping, ping);\n              }\n              workInProgress$76.flags |= 8192;\n              workInProgress$76.lanes = thrownValue;\n              break a;\n            }\n            workInProgress$76 = workInProgress$76.return;\n          } while (null !== workInProgress$76);\n          value = Error(\n            (getComponentName(sourceFiber.type) || \"A React component\") +\n              \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"\n          );\n        }\n        5 !== workInProgressRootExitStatus &&\n          (workInProgressRootExitStatus = 2);\n        value = createCapturedValue(value, sourceFiber);\n        workInProgress$76 = returnFiber;\n        do {\n          switch (workInProgress$76.tag) {\n            case 3:\n              root = value;\n              workInProgress$76.flags |= 8192;\n              thrownValue &= -thrownValue;\n              workInProgress$76.lanes |= thrownValue;\n              var update$77 = createRootErrorUpdate(\n                workInProgress$76,\n                root,\n                thrownValue\n              );\n              enqueueCapturedUpdate(workInProgress$76, update$77);\n              break a;\n            case 1:\n              root = value;\n              var ctor = workInProgress$76.type,\n                instance = workInProgress$76.stateNode;\n              if (\n                0 === (workInProgress$76.flags & 64) &&\n                (\"function\" === typeof ctor.getDerivedStateFromError ||\n                  (null !== instance &&\n                    \"function\" === typeof instance.componentDidCatch &&\n                    (null === legacyErrorBoundariesThatAlreadyFailed ||\n                      !legacyErrorBoundariesThatAlreadyFailed.has(instance))))\n              ) {\n                workInProgress$76.flags |= 8192;\n                thrownValue &= -thrownValue;\n                workInProgress$76.lanes |= thrownValue;\n                var update$80 = createClassErrorUpdate(\n                  workInProgress$76,\n                  root,\n                  thrownValue\n                );\n                enqueueCapturedUpdate(workInProgress$76, update$80);\n                break a;\n              }\n          }\n          workInProgress$76 = workInProgress$76.return;\n        } while (null !== workInProgress$76);\n      }\n      completeUnitOfWork(erroredWork);\n    } catch (yetAnotherThrownValue) {\n      thrownValue = yetAnotherThrownValue;\n      workInProgress === erroredWork &&\n        null !== erroredWork &&\n        (workInProgress = erroredWork = erroredWork.return);\n      continue;\n    }\n    break;\n  } while (1);\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactCurrentDispatcher$2.current;\n  ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction renderRootSync(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 16;\n  var prevDispatcher = pushDispatcher();\n  (workInProgressRoot === root && workInProgressRootRenderLanes === lanes) ||\n    prepareFreshStack(root, lanes);\n  do\n    try {\n      workLoopSync();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  while (1);\n  resetContextDependencies();\n  executionContext = prevExecutionContext;\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n  if (null !== workInProgress)\n    throw Error(\n      \"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  return workInProgressRootExitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction workLoopConcurrent() {\n  for (; null !== workInProgress && !Scheduler_shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork$1(unitOfWork.alternate, unitOfWork, subtreeRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n  ReactCurrentOwner$2.current = null;\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    var current = completedWork.alternate;\n    unitOfWork = completedWork.return;\n    if (0 === (completedWork.flags & 4096)) {\n      current = completeWork(current, completedWork, subtreeRenderLanes);\n      if (null !== current) {\n        workInProgress = current;\n        return;\n      }\n      current = completedWork;\n      if (\n        (24 !== current.tag && 23 !== current.tag) ||\n        null === current.memoizedState ||\n        0 !== (subtreeRenderLanes & 1073741824) ||\n        0 === (current.mode & 4)\n      ) {\n        for (var newChildLanes = 0, child = current.child; null !== child; )\n          (newChildLanes |= child.lanes | child.childLanes),\n            (child = child.sibling);\n        current.childLanes = newChildLanes;\n      }\n      null !== unitOfWork &&\n        0 === (unitOfWork.flags & 4096) &&\n        (null === unitOfWork.firstEffect &&\n          (unitOfWork.firstEffect = completedWork.firstEffect),\n        null !== completedWork.lastEffect &&\n          (null !== unitOfWork.lastEffect &&\n            (unitOfWork.lastEffect.nextEffect = completedWork.firstEffect),\n          (unitOfWork.lastEffect = completedWork.lastEffect)),\n        1 < completedWork.flags &&\n          (null !== unitOfWork.lastEffect\n            ? (unitOfWork.lastEffect.nextEffect = completedWork)\n            : (unitOfWork.firstEffect = completedWork),\n          (unitOfWork.lastEffect = completedWork)));\n    } else {\n      current = unwindWork(completedWork);\n      if (null !== current) {\n        current.flags &= 4095;\n        workInProgress = current;\n        return;\n      }\n      null !== unitOfWork &&\n        ((unitOfWork.firstEffect = unitOfWork.lastEffect = null),\n        (unitOfWork.flags |= 4096));\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction commitRoot(root) {\n  var renderPriorityLevel = getCurrentPriorityLevel();\n  runWithPriority(99, commitRootImpl.bind(null, root, renderPriorityLevel));\n  return null;\n}\nfunction commitRootImpl(root, renderPriorityLevel) {\n  do flushPassiveEffects();\n  while (null !== rootWithPendingPassiveEffects);\n  if (0 !== (executionContext & 48))\n    throw Error(\"Should not already be working.\");\n  var finishedWork = root.finishedWork;\n  if (null === finishedWork) return null;\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  if (finishedWork === root.current)\n    throw Error(\n      \"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  root.callbackNode = null;\n  var remainingLanes = finishedWork.lanes | finishedWork.childLanes,\n    remainingLanes$jscomp$0 = remainingLanes,\n    noLongerPendingLanes = root.pendingLanes & ~remainingLanes$jscomp$0;\n  root.pendingLanes = remainingLanes$jscomp$0;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.expiredLanes &= remainingLanes$jscomp$0;\n  root.mutableReadLanes &= remainingLanes$jscomp$0;\n  root.entangledLanes &= remainingLanes$jscomp$0;\n  remainingLanes$jscomp$0 = root.entanglements;\n  for (\n    var eventTimes = root.eventTimes, expirationTimes = root.expirationTimes;\n    0 < noLongerPendingLanes;\n\n  ) {\n    var index$12 = 31 - clz32(noLongerPendingLanes),\n      lane = 1 << index$12;\n    remainingLanes$jscomp$0[index$12] = 0;\n    eventTimes[index$12] = -1;\n    expirationTimes[index$12] = -1;\n    noLongerPendingLanes &= ~lane;\n  }\n  null !== rootsWithPendingDiscreteUpdates &&\n    0 === (remainingLanes & 24) &&\n    rootsWithPendingDiscreteUpdates.has(root) &&\n    rootsWithPendingDiscreteUpdates.delete(root);\n  root === workInProgressRoot &&\n    ((workInProgress = workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0));\n  1 < finishedWork.flags\n    ? null !== finishedWork.lastEffect\n      ? ((finishedWork.lastEffect.nextEffect = finishedWork),\n        (remainingLanes = finishedWork.firstEffect))\n      : (remainingLanes = finishedWork)\n    : (remainingLanes = finishedWork.firstEffect);\n  if (null !== remainingLanes) {\n    remainingLanes$jscomp$0 = executionContext;\n    executionContext |= 32;\n    focusedInstanceHandle = ReactCurrentOwner$2.current = null;\n    shouldFireAfterActiveInstanceBlur = !1;\n    nextEffect = remainingLanes;\n    do\n      try {\n        commitBeforeMutationEffects();\n      } catch (error) {\n        if (null === nextEffect) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(nextEffect, error);\n        nextEffect = nextEffect.nextEffect;\n      }\n    while (null !== nextEffect);\n    focusedInstanceHandle = null;\n    nextEffect = remainingLanes;\n    do\n      try {\n        for (eventTimes = root; null !== nextEffect; ) {\n          var flags = nextEffect.flags;\n          if (flags & 128) {\n            var current = nextEffect.alternate;\n            if (null !== current) {\n              var currentRef = current.ref;\n              null !== currentRef &&\n                (\"function\" === typeof currentRef\n                  ? currentRef(null)\n                  : (currentRef.current = null));\n            }\n          }\n          switch (flags & 1038) {\n            case 2:\n              commitPlacement(nextEffect);\n              nextEffect.flags &= -3;\n              break;\n            case 6:\n              commitPlacement(nextEffect);\n              nextEffect.flags &= -3;\n              commitWork(nextEffect.alternate, nextEffect);\n              break;\n            case 1024:\n              nextEffect.flags &= -1025;\n              break;\n            case 1028:\n              nextEffect.flags &= -1025;\n              commitWork(nextEffect.alternate, nextEffect);\n              break;\n            case 4:\n              commitWork(nextEffect.alternate, nextEffect);\n              break;\n            case 8:\n              expirationTimes = nextEffect;\n              unmountHostComponents(eventTimes, expirationTimes);\n              var alternate = expirationTimes.alternate;\n              detachFiberMutation(expirationTimes);\n              null !== alternate && detachFiberMutation(alternate);\n          }\n          nextEffect = nextEffect.nextEffect;\n        }\n      } catch (error$88) {\n        if (null === nextEffect) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(nextEffect, error$88);\n        nextEffect = nextEffect.nextEffect;\n      }\n    while (null !== nextEffect);\n    root.current = finishedWork;\n    nextEffect = remainingLanes;\n    do\n      try {\n        for (flags = root; null !== nextEffect; ) {\n          var flags$jscomp$0 = nextEffect.flags;\n          flags$jscomp$0 & 36 &&\n            commitLifeCycles(flags, nextEffect.alternate, nextEffect);\n          if (flags$jscomp$0 & 128) {\n            current = void 0;\n            var ref = nextEffect.ref;\n            if (null !== ref) {\n              var instance = nextEffect.stateNode;\n              switch (nextEffect.tag) {\n                case 5:\n                  current = instance;\n                  break;\n                default:\n                  current = instance;\n              }\n              \"function\" === typeof ref\n                ? ref(current)\n                : (ref.current = current);\n            }\n          }\n          nextEffect = nextEffect.nextEffect;\n        }\n      } catch (error$89) {\n        if (null === nextEffect) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(nextEffect, error$89);\n        nextEffect = nextEffect.nextEffect;\n      }\n    while (null !== nextEffect);\n    nextEffect = null;\n    requestPaint();\n    executionContext = remainingLanes$jscomp$0;\n  } else root.current = finishedWork;\n  if (rootDoesHavePassiveEffects)\n    (rootDoesHavePassiveEffects = !1),\n      (rootWithPendingPassiveEffects = root),\n      (pendingPassiveEffectsRenderPriority = renderPriorityLevel);\n  else\n    for (nextEffect = remainingLanes; null !== nextEffect; )\n      (renderPriorityLevel = nextEffect.nextEffect),\n        (nextEffect.nextEffect = null),\n        nextEffect.flags & 8 &&\n          ((flags$jscomp$0 = nextEffect),\n          (flags$jscomp$0.sibling = null),\n          (flags$jscomp$0.stateNode = null)),\n        (nextEffect = renderPriorityLevel);\n  remainingLanes = root.pendingLanes;\n  0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n  1 === remainingLanes\n    ? root === rootWithNestedUpdates\n      ? nestedUpdateCount++\n      : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n    : (nestedUpdateCount = 0);\n  finishedWork = finishedWork.stateNode;\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n    try {\n      injectedHook.onCommitFiberRoot(\n        rendererID,\n        finishedWork,\n        void 0,\n        64 === (finishedWork.current.flags & 64)\n      );\n    } catch (err) {}\n  ensureRootIsScheduled(root, now());\n  if (hasUncaughtError)\n    throw ((hasUncaughtError = !1),\n    (root = firstUncaughtError),\n    (firstUncaughtError = null),\n    root);\n  if (0 !== (executionContext & 8)) return null;\n  flushSyncCallbackQueue();\n  return null;\n}\nfunction commitBeforeMutationEffects() {\n  for (; null !== nextEffect; ) {\n    var current = nextEffect.alternate;\n    shouldFireAfterActiveInstanceBlur ||\n      null === focusedInstanceHandle ||\n      (0 !== (nextEffect.flags & 8)\n        ? doesFiberContain(nextEffect, focusedInstanceHandle) &&\n          (shouldFireAfterActiveInstanceBlur = !0)\n        : 13 === nextEffect.tag &&\n          isSuspenseBoundaryBeingHidden(current, nextEffect) &&\n          doesFiberContain(nextEffect, focusedInstanceHandle) &&\n          (shouldFireAfterActiveInstanceBlur = !0));\n    var flags = nextEffect.flags;\n    0 !== (flags & 256) && commitBeforeMutationLifeCycles(current, nextEffect);\n    0 === (flags & 512) ||\n      rootDoesHavePassiveEffects ||\n      ((rootDoesHavePassiveEffects = !0),\n      scheduleCallback(97, function() {\n        flushPassiveEffects();\n        return null;\n      }));\n    nextEffect = nextEffect.nextEffect;\n  }\n}\nfunction flushPassiveEffects() {\n  if (90 !== pendingPassiveEffectsRenderPriority) {\n    var priorityLevel =\n      97 < pendingPassiveEffectsRenderPriority\n        ? 97\n        : pendingPassiveEffectsRenderPriority;\n    pendingPassiveEffectsRenderPriority = 90;\n    return runWithPriority(priorityLevel, flushPassiveEffectsImpl);\n  }\n  return !1;\n}\nfunction enqueuePendingPassiveHookEffectMount(fiber, effect) {\n  pendingPassiveHookEffectsMount.push(effect, fiber);\n  rootDoesHavePassiveEffects ||\n    ((rootDoesHavePassiveEffects = !0),\n    scheduleCallback(97, function() {\n      flushPassiveEffects();\n      return null;\n    }));\n}\nfunction enqueuePendingPassiveHookEffectUnmount(fiber, effect) {\n  pendingPassiveHookEffectsUnmount.push(effect, fiber);\n  rootDoesHavePassiveEffects ||\n    ((rootDoesHavePassiveEffects = !0),\n    scheduleCallback(97, function() {\n      flushPassiveEffects();\n      return null;\n    }));\n}\nfunction flushPassiveEffectsImpl() {\n  if (null === rootWithPendingPassiveEffects) return !1;\n  var root = rootWithPendingPassiveEffects;\n  rootWithPendingPassiveEffects = null;\n  if (0 !== (executionContext & 48))\n    throw Error(\"Cannot flush passive effects while already rendering.\");\n  var prevExecutionContext = executionContext;\n  executionContext |= 32;\n  var unmountEffects = pendingPassiveHookEffectsUnmount;\n  pendingPassiveHookEffectsUnmount = [];\n  for (var i = 0; i < unmountEffects.length; i += 2) {\n    var effect$94 = unmountEffects[i],\n      fiber = unmountEffects[i + 1],\n      destroy = effect$94.destroy;\n    effect$94.destroy = void 0;\n    if (\"function\" === typeof destroy)\n      try {\n        destroy();\n      } catch (error) {\n        if (null === fiber) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(fiber, error);\n      }\n  }\n  unmountEffects = pendingPassiveHookEffectsMount;\n  pendingPassiveHookEffectsMount = [];\n  for (i = 0; i < unmountEffects.length; i += 2) {\n    effect$94 = unmountEffects[i];\n    fiber = unmountEffects[i + 1];\n    try {\n      var create$98 = effect$94.create;\n      effect$94.destroy = create$98();\n    } catch (error$99) {\n      if (null === fiber) throw Error(\"Should be working on an effect.\");\n      captureCommitPhaseError(fiber, error$99);\n    }\n  }\n  for (create$98 = root.current.firstEffect; null !== create$98; )\n    (root = create$98.nextEffect),\n      (create$98.nextEffect = null),\n      create$98.flags & 8 &&\n        ((create$98.sibling = null), (create$98.stateNode = null)),\n      (create$98 = root);\n  executionContext = prevExecutionContext;\n  flushSyncCallbackQueue();\n  return !0;\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValue(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber, sourceFiber, 1);\n  enqueueUpdate(rootFiber, sourceFiber);\n  sourceFiber = requestEventTime();\n  rootFiber = markUpdateLaneFromFiberToRoot(rootFiber, 1);\n  null !== rootFiber &&\n    (markRootUpdated(rootFiber, 1, sourceFiber),\n    ensureRootIsScheduled(rootFiber, sourceFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (var fiber = sourceFiber.return; null !== fiber; ) {\n      if (3 === fiber.tag) {\n        captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error);\n        break;\n      } else if (1 === fiber.tag) {\n        var instance = fiber.stateNode;\n        if (\n          \"function\" === typeof fiber.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValue(error, sourceFiber);\n          var update = createClassErrorUpdate(fiber, sourceFiber, 1);\n          enqueueUpdate(fiber, update);\n          update = requestEventTime();\n          fiber = markUpdateLaneFromFiberToRoot(fiber, 1);\n          if (null !== fiber)\n            markRootUpdated(fiber, 1, update),\n              ensureRootIsScheduled(fiber, update);\n          else if (\n            \"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance))\n          )\n            try {\n              instance.componentDidCatch(error, sourceFiber);\n            } catch (errorToIgnore) {}\n          break;\n        }\n      }\n      fiber = fiber.return;\n    }\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  wakeable = requestEventTime();\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      500 > now() - globalMostRecentFallbackTime)\n      ? prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes));\n  ensureRootIsScheduled(root, wakeable);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryCache = boundaryFiber.stateNode;\n  null !== retryCache && retryCache.delete(wakeable);\n  wakeable = 0;\n  0 === wakeable &&\n    ((wakeable = boundaryFiber.mode),\n    0 === (wakeable & 2)\n      ? (wakeable = 1)\n      : 0 === (wakeable & 4)\n      ? (wakeable = 99 === getCurrentPriorityLevel() ? 1 : 2)\n      : (0 === currentEventWipLanes &&\n          (currentEventWipLanes = workInProgressRootIncludedLanes),\n        (wakeable = getHighestPriorityLane(62914560 & ~currentEventWipLanes)),\n        0 === wakeable && (wakeable = 4194304)));\n  retryCache = requestEventTime();\n  boundaryFiber = markUpdateLaneFromFiberToRoot(boundaryFiber, wakeable);\n  null !== boundaryFiber &&\n    (markRootUpdated(boundaryFiber, wakeable, retryCache),\n    ensureRootIsScheduled(boundaryFiber, retryCache));\n}\nvar beginWork$1;\nbeginWork$1 = function(current, workInProgress, renderLanes) {\n  var updateLanes = workInProgress.lanes;\n  if (null !== current)\n    if (\n      current.memoizedProps !== workInProgress.pendingProps ||\n      didPerformWorkStackCursor.current\n    )\n      didReceiveUpdate = !0;\n    else if (0 !== (renderLanes & updateLanes))\n      didReceiveUpdate = 0 !== (current.flags & 32768) ? !0 : !1;\n    else {\n      didReceiveUpdate = !1;\n      switch (workInProgress.tag) {\n        case 3:\n          pushHostRootContext(workInProgress);\n          break;\n        case 5:\n          pushHostContext(workInProgress);\n          break;\n        case 1:\n          isContextProvider(workInProgress.type) &&\n            pushContextProvider(workInProgress);\n          break;\n        case 4:\n          pushHostContainer(\n            workInProgress,\n            workInProgress.stateNode.containerInfo\n          );\n          break;\n        case 10:\n          updateLanes = workInProgress.memoizedProps.value;\n          var context = workInProgress.type._context;\n          push(valueCursor, context._currentValue);\n          context._currentValue = updateLanes;\n          break;\n        case 13:\n          if (null !== workInProgress.memoizedState) {\n            if (0 !== (renderLanes & workInProgress.child.childLanes))\n              return updateSuspenseComponent(\n                current,\n                workInProgress,\n                renderLanes\n              );\n            push(suspenseStackCursor, suspenseStackCursor.current & 1);\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            return null !== workInProgress ? workInProgress.sibling : null;\n          }\n          push(suspenseStackCursor, suspenseStackCursor.current & 1);\n          break;\n        case 19:\n          updateLanes = 0 !== (renderLanes & workInProgress.childLanes);\n          if (0 !== (current.flags & 64)) {\n            if (updateLanes)\n              return updateSuspenseListComponent(\n                current,\n                workInProgress,\n                renderLanes\n              );\n            workInProgress.flags |= 64;\n          }\n          context = workInProgress.memoizedState;\n          null !== context &&\n            ((context.rendering = null),\n            (context.tail = null),\n            (context.lastEffect = null));\n          push(suspenseStackCursor, suspenseStackCursor.current);\n          if (updateLanes) break;\n          else return null;\n        case 23:\n        case 24:\n          return (\n            (workInProgress.lanes = 0),\n            updateOffscreenComponent(current, workInProgress, renderLanes)\n          );\n      }\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n  else didReceiveUpdate = !1;\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 2:\n      updateLanes = workInProgress.type;\n      null !== current &&\n        ((current.alternate = null),\n        (workInProgress.alternate = null),\n        (workInProgress.flags |= 2));\n      current = workInProgress.pendingProps;\n      context = getMaskedContext(workInProgress, contextStackCursor.current);\n      prepareToReadContext(workInProgress, renderLanes);\n      context = renderWithHooks(\n        null,\n        workInProgress,\n        updateLanes,\n        current,\n        context,\n        renderLanes\n      );\n      workInProgress.flags |= 1;\n      if (\n        \"object\" === typeof context &&\n        null !== context &&\n        \"function\" === typeof context.render &&\n        void 0 === context.$$typeof\n      ) {\n        workInProgress.tag = 1;\n        workInProgress.memoizedState = null;\n        workInProgress.updateQueue = null;\n        if (isContextProvider(updateLanes)) {\n          var hasContext = !0;\n          pushContextProvider(workInProgress);\n        } else hasContext = !1;\n        workInProgress.memoizedState =\n          null !== context.state && void 0 !== context.state\n            ? context.state\n            : null;\n        initializeUpdateQueue(workInProgress);\n        var getDerivedStateFromProps = updateLanes.getDerivedStateFromProps;\n        \"function\" === typeof getDerivedStateFromProps &&\n          applyDerivedStateFromProps(\n            workInProgress,\n            updateLanes,\n            getDerivedStateFromProps,\n            current\n          );\n        context.updater = classComponentUpdater;\n        workInProgress.stateNode = context;\n        context._reactInternals = workInProgress;\n        mountClassInstance(workInProgress, updateLanes, current, renderLanes);\n        workInProgress = finishClassComponent(\n          null,\n          workInProgress,\n          updateLanes,\n          !0,\n          hasContext,\n          renderLanes\n        );\n      } else\n        (workInProgress.tag = 0),\n          reconcileChildren(null, workInProgress, context, renderLanes),\n          (workInProgress = workInProgress.child);\n      return workInProgress;\n    case 16:\n      context = workInProgress.elementType;\n      a: {\n        null !== current &&\n          ((current.alternate = null),\n          (workInProgress.alternate = null),\n          (workInProgress.flags |= 2));\n        current = workInProgress.pendingProps;\n        hasContext = context._init;\n        context = hasContext(context._payload);\n        workInProgress.type = context;\n        hasContext = workInProgress.tag = resolveLazyComponentTag(context);\n        current = resolveDefaultProps(context, current);\n        switch (hasContext) {\n          case 0:\n            workInProgress = updateFunctionComponent(\n              null,\n              workInProgress,\n              context,\n              current,\n              renderLanes\n            );\n            break a;\n          case 1:\n            workInProgress = updateClassComponent(\n              null,\n              workInProgress,\n              context,\n              current,\n              renderLanes\n            );\n            break a;\n          case 11:\n            workInProgress = updateForwardRef(\n              null,\n              workInProgress,\n              context,\n              current,\n              renderLanes\n            );\n            break a;\n          case 14:\n            workInProgress = updateMemoComponent(\n              null,\n              workInProgress,\n              context,\n              resolveDefaultProps(context.type, current),\n              updateLanes,\n              renderLanes\n            );\n            break a;\n        }\n        throw Error(\n          \"Element type is invalid. Received a promise that resolves to: \" +\n            context +\n            \". Lazy element type must resolve to a class or function.\"\n        );\n      }\n      return workInProgress;\n    case 0:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        updateFunctionComponent(\n          current,\n          workInProgress,\n          updateLanes,\n          context,\n          renderLanes\n        )\n      );\n    case 1:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        updateClassComponent(\n          current,\n          workInProgress,\n          updateLanes,\n          context,\n          renderLanes\n        )\n      );\n    case 3:\n      pushHostRootContext(workInProgress);\n      updateLanes = workInProgress.updateQueue;\n      if (null === current || null === updateLanes)\n        throw Error(\n          \"If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      updateLanes = workInProgress.pendingProps;\n      context = workInProgress.memoizedState;\n      context = null !== context ? context.element : null;\n      cloneUpdateQueue(current, workInProgress);\n      processUpdateQueue(workInProgress, updateLanes, null, renderLanes);\n      updateLanes = workInProgress.memoizedState.element;\n      updateLanes === context\n        ? (workInProgress = bailoutOnAlreadyFinishedWork(\n            current,\n            workInProgress,\n            renderLanes\n          ))\n        : (reconcileChildren(current, workInProgress, updateLanes, renderLanes),\n          (workInProgress = workInProgress.child));\n      return workInProgress;\n    case 5:\n      return (\n        pushHostContext(workInProgress),\n        (updateLanes = workInProgress.pendingProps.children),\n        markRef(current, workInProgress),\n        reconcileChildren(current, workInProgress, updateLanes, renderLanes),\n        workInProgress.child\n      );\n    case 6:\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (updateLanes = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              updateLanes,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              updateLanes,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        updateForwardRef(\n          current,\n          workInProgress,\n          updateLanes,\n          context,\n          renderLanes\n        )\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      a: {\n        updateLanes = workInProgress.type._context;\n        context = workInProgress.pendingProps;\n        getDerivedStateFromProps = workInProgress.memoizedProps;\n        hasContext = context.value;\n        var context$jscomp$0 = workInProgress.type._context;\n        push(valueCursor, context$jscomp$0._currentValue);\n        context$jscomp$0._currentValue = hasContext;\n        if (null !== getDerivedStateFromProps)\n          if (\n            ((context$jscomp$0 = getDerivedStateFromProps.value),\n            (hasContext = objectIs(context$jscomp$0, hasContext)\n              ? 0\n              : (\"function\" === typeof updateLanes._calculateChangedBits\n                  ? updateLanes._calculateChangedBits(\n                      context$jscomp$0,\n                      hasContext\n                    )\n                  : 1073741823) | 0),\n            0 === hasContext)\n          ) {\n            if (\n              getDerivedStateFromProps.children === context.children &&\n              !didPerformWorkStackCursor.current\n            ) {\n              workInProgress = bailoutOnAlreadyFinishedWork(\n                current,\n                workInProgress,\n                renderLanes\n              );\n              break a;\n            }\n          } else\n            for (\n              context$jscomp$0 = workInProgress.child,\n                null !== context$jscomp$0 &&\n                  (context$jscomp$0.return = workInProgress);\n              null !== context$jscomp$0;\n\n            ) {\n              var list = context$jscomp$0.dependencies;\n              if (null !== list) {\n                getDerivedStateFromProps = context$jscomp$0.child;\n                for (\n                  var dependency = list.firstContext;\n                  null !== dependency;\n\n                ) {\n                  if (\n                    dependency.context === updateLanes &&\n                    0 !== (dependency.observedBits & hasContext)\n                  ) {\n                    1 === context$jscomp$0.tag &&\n                      ((dependency = createUpdate(\n                        -1,\n                        renderLanes & -renderLanes\n                      )),\n                      (dependency.tag = 2),\n                      enqueueUpdate(context$jscomp$0, dependency));\n                    context$jscomp$0.lanes |= renderLanes;\n                    dependency = context$jscomp$0.alternate;\n                    null !== dependency && (dependency.lanes |= renderLanes);\n                    scheduleWorkOnParentPath(\n                      context$jscomp$0.return,\n                      renderLanes\n                    );\n                    list.lanes |= renderLanes;\n                    break;\n                  }\n                  dependency = dependency.next;\n                }\n              } else\n                getDerivedStateFromProps =\n                  10 === context$jscomp$0.tag\n                    ? context$jscomp$0.type === workInProgress.type\n                      ? null\n                      : context$jscomp$0.child\n                    : context$jscomp$0.child;\n              if (null !== getDerivedStateFromProps)\n                getDerivedStateFromProps.return = context$jscomp$0;\n              else\n                for (\n                  getDerivedStateFromProps = context$jscomp$0;\n                  null !== getDerivedStateFromProps;\n\n                ) {\n                  if (getDerivedStateFromProps === workInProgress) {\n                    getDerivedStateFromProps = null;\n                    break;\n                  }\n                  context$jscomp$0 = getDerivedStateFromProps.sibling;\n                  if (null !== context$jscomp$0) {\n                    context$jscomp$0.return = getDerivedStateFromProps.return;\n                    getDerivedStateFromProps = context$jscomp$0;\n                    break;\n                  }\n                  getDerivedStateFromProps = getDerivedStateFromProps.return;\n                }\n              context$jscomp$0 = getDerivedStateFromProps;\n            }\n        reconcileChildren(\n          current,\n          workInProgress,\n          context.children,\n          renderLanes\n        );\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 9:\n      return (\n        (context = workInProgress.type),\n        (hasContext = workInProgress.pendingProps),\n        (updateLanes = hasContext.children),\n        prepareToReadContext(workInProgress, renderLanes),\n        (context = readContext(context, hasContext.unstable_observedBits)),\n        (updateLanes = updateLanes(context)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, updateLanes, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return (\n        (context = workInProgress.type),\n        (hasContext = resolveDefaultProps(\n          context,\n          workInProgress.pendingProps\n        )),\n        (hasContext = resolveDefaultProps(context.type, hasContext)),\n        updateMemoComponent(\n          current,\n          workInProgress,\n          context,\n          hasContext,\n          updateLanes,\n          renderLanes\n        )\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        updateLanes,\n        renderLanes\n      );\n    case 17:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        null !== current &&\n          ((current.alternate = null),\n          (workInProgress.alternate = null),\n          (workInProgress.flags |= 2)),\n        (workInProgress.tag = 1),\n        isContextProvider(updateLanes)\n          ? ((current = !0), pushContextProvider(workInProgress))\n          : (current = !1),\n        prepareToReadContext(workInProgress, renderLanes),\n        constructClassInstance(workInProgress, updateLanes, context),\n        mountClassInstance(workInProgress, updateLanes, context, renderLanes),\n        finishClassComponent(\n          null,\n          workInProgress,\n          updateLanes,\n          !0,\n          current,\n          renderLanes\n        )\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 23:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n  this.mode = mode;\n  this.flags = 0;\n  this.lastEffect = this.firstEffect = this.nextEffect = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiber(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction resolveLazyComponentTag(Component) {\n  if (\"function\" === typeof Component)\n    return shouldConstruct(Component) ? 1 : 0;\n  if (void 0 !== Component && null !== Component) {\n    Component = Component.$$typeof;\n    if (Component === REACT_FORWARD_REF_TYPE) return 11;\n    if (Component === REACT_MEMO_TYPE) return 14;\n  }\n  return 2;\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiber(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.nextEffect = null),\n      (workInProgress.firstEffect = null),\n      (workInProgress.lastEffect = null));\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 2;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type) fiberTag = 5;\n  else\n    a: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_DEBUG_TRACING_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 16;\n        break;\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 1;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiber(12, pendingProps, key, mode | 8)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.type = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiber(13, pendingProps, key, mode)),\n          (type.type = REACT_SUSPENSE_TYPE),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiber(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n      case REACT_LEGACY_HIDDEN_TYPE:\n        return (\n          (type = createFiber(24, pendingProps, key, mode)),\n          (type.elementType = REACT_LEGACY_HIDDEN_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n            case REACT_BLOCK_TYPE:\n              fiberTag = 22;\n              break a;\n          }\n        throw Error(\n          \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" +\n            (null == type ? type : typeof type) +\n            \".\"\n        );\n    }\n  key = createFiber(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiber(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  pendingProps = createFiber(23, pendingProps, key, mode);\n  pendingProps.elementType = REACT_OFFSCREEN_TYPE;\n  pendingProps.lanes = lanes;\n  return pendingProps;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiber(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiber(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nfunction FiberRootNode(containerInfo, tag, hydrate) {\n  this.tag = tag;\n  this.containerInfo = containerInfo;\n  this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.pendingContext = this.context = null;\n  this.hydrate = hydrate;\n  this.callbackNode = null;\n  this.callbackPriority = 0;\n  this.eventTimes = createLaneMap(0);\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;\n  this.entanglements = createLaneMap(0);\n}\nfunction createPortal(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nfunction findHostInstance(component) {\n  var fiber = component._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof component.render)\n      throw Error(\"Unable to find node on an unmounted component.\");\n    throw Error(\n      \"Argument appears to not be a ReactComponent. Keys: \" +\n        Object.keys(component)\n    );\n  }\n  component = findCurrentHostFiber(fiber);\n  return null === component ? null : component.stateNode;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  var current = container.current,\n    eventTime = requestEventTime(),\n    lane = requestUpdateLane(current);\n  a: if (parentComponent) {\n    parentComponent = parentComponent._reactInternals;\n    b: {\n      if (\n        getNearestMountedFiber(parentComponent) !== parentComponent ||\n        1 !== parentComponent.tag\n      )\n        throw Error(\n          \"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      var JSCompiler_inline_result = parentComponent;\n      do {\n        switch (JSCompiler_inline_result.tag) {\n          case 3:\n            JSCompiler_inline_result =\n              JSCompiler_inline_result.stateNode.context;\n            break b;\n          case 1:\n            if (isContextProvider(JSCompiler_inline_result.type)) {\n              JSCompiler_inline_result =\n                JSCompiler_inline_result.stateNode\n                  .__reactInternalMemoizedMergedChildContext;\n              break b;\n            }\n        }\n        JSCompiler_inline_result = JSCompiler_inline_result.return;\n      } while (null !== JSCompiler_inline_result);\n      throw Error(\n        \"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n    }\n    if (1 === parentComponent.tag) {\n      var Component = parentComponent.type;\n      if (isContextProvider(Component)) {\n        parentComponent = processChildContext(\n          parentComponent,\n          Component,\n          JSCompiler_inline_result\n        );\n        break a;\n      }\n    }\n    parentComponent = JSCompiler_inline_result;\n  } else parentComponent = emptyContextObject;\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(eventTime, lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  enqueueUpdate(current, container);\n  scheduleUpdateOnFiber(current, lane, eventTime);\n  return lane;\n}\nfunction emptyFindFiberByHostInstance() {\n  return null;\n}\nfunction findNodeHandle(componentOrHandle) {\n  if (null == componentOrHandle) return null;\n  if (\"number\" === typeof componentOrHandle) return componentOrHandle;\n  if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag;\n  if (componentOrHandle.canonical && componentOrHandle.canonical._nativeTag)\n    return componentOrHandle.canonical._nativeTag;\n  componentOrHandle = findHostInstance(componentOrHandle);\n  return null == componentOrHandle\n    ? componentOrHandle\n    : componentOrHandle.canonical\n    ? componentOrHandle.canonical._nativeTag\n    : componentOrHandle._nativeTag;\n}\nfunction unmountComponentAtNode(containerTag) {\n  var root = roots.get(containerTag);\n  root &&\n    updateContainer(null, root, null, function() {\n      roots.delete(containerTag);\n    });\n}\nbatchedUpdatesImpl = function(fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 1;\n  try {\n    return fn(a);\n  } finally {\n    (executionContext = prevExecutionContext),\n      0 === executionContext &&\n        ((workInProgressRootRenderTargetTime = now() + 500),\n        flushSyncCallbackQueue());\n  }\n};\nvar roots = new Map(),\n  devToolsConfig$jscomp$inline_908 = {\n    findFiberByHostInstance: getInstanceFromTag,\n    bundleType: 0,\n    version: \"17.0.1-4e5d7faf5\",\n    rendererPackageName: \"react-native-renderer\",\n    rendererConfig: {\n      getInspectorDataForViewTag: function() {\n        throw Error(\n          \"getInspectorDataForViewTag() is not available in production\"\n        );\n      },\n      getInspectorDataForViewAtPoint: function() {\n        throw Error(\n          \"getInspectorDataForViewAtPoint() is not available in production.\"\n        );\n      }.bind(null, findNodeHandle)\n    }\n  };\nvar internals$jscomp$inline_1115 = {\n  bundleType: devToolsConfig$jscomp$inline_908.bundleType,\n  version: devToolsConfig$jscomp$inline_908.version,\n  rendererPackageName: devToolsConfig$jscomp$inline_908.rendererPackageName,\n  rendererConfig: devToolsConfig$jscomp$inline_908.rendererConfig,\n  overrideHookState: null,\n  overrideHookStateDeletePath: null,\n  overrideHookStateRenamePath: null,\n  overrideProps: null,\n  overridePropsDeletePath: null,\n  overridePropsRenamePath: null,\n  setSuspenseHandler: null,\n  scheduleUpdate: null,\n  currentDispatcherRef: ReactSharedInternals.ReactCurrentDispatcher,\n  findHostInstanceByFiber: function(fiber) {\n    fiber = findCurrentHostFiber(fiber);\n    return null === fiber ? null : fiber.stateNode;\n  },\n  findFiberByHostInstance:\n    devToolsConfig$jscomp$inline_908.findFiberByHostInstance ||\n    emptyFindFiberByHostInstance,\n  findHostInstancesForRefresh: null,\n  scheduleRefresh: null,\n  scheduleRoot: null,\n  setRefreshHandler: null,\n  getCurrentFiber: null\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_1116 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_1116.isDisabled &&\n    hook$jscomp$inline_1116.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_1116.inject(\n        internals$jscomp$inline_1115\n      )),\n        (injectedHook = hook$jscomp$inline_1116);\n    } catch (err) {}\n}\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n  computeComponentStackForErrorReporting: function(reactTag) {\n    return (reactTag = getInstanceFromTag(reactTag))\n      ? getStackByFiberInDevAndProd(reactTag)\n      : \"\";\n  }\n};\nexports.createPortal = function(children, containerTag) {\n  return createPortal(\n    children,\n    containerTag,\n    null,\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null\n  );\n};\nexports.dispatchCommand = function(handle, command, args) {\n  null != handle._nativeTag &&\n    (handle._internalInstanceHandle\n      ? nativeFabricUIManager.dispatchCommand(\n          handle._internalInstanceHandle.stateNode.node,\n          command,\n          args\n        )\n      : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand(\n          handle._nativeTag,\n          command,\n          args\n        ));\n};\nexports.findHostInstance_DEPRECATED = function(componentOrHandle) {\n  if (null == componentOrHandle) return null;\n  if (componentOrHandle._nativeTag) return componentOrHandle;\n  if (componentOrHandle.canonical && componentOrHandle.canonical._nativeTag)\n    return componentOrHandle.canonical;\n  componentOrHandle = findHostInstance(componentOrHandle);\n  return null == componentOrHandle\n    ? componentOrHandle\n    : componentOrHandle.canonical\n    ? componentOrHandle.canonical\n    : componentOrHandle;\n};\nexports.findNodeHandle = findNodeHandle;\nexports.render = function(element, containerTag, callback) {\n  var root = roots.get(containerTag);\n  if (!root) {\n    root = new FiberRootNode(containerTag, 0, !1);\n    var uninitializedFiber = createFiber(3, null, null, 0);\n    root.current = uninitializedFiber;\n    uninitializedFiber.stateNode = root;\n    initializeUpdateQueue(uninitializedFiber);\n    roots.set(containerTag, root);\n  }\n  updateContainer(element, root, null, callback);\n  a: if (((element = root.current), element.child))\n    switch (element.child.tag) {\n      case 5:\n        element = element.child.stateNode;\n        break a;\n      default:\n        element = element.child.stateNode;\n    }\n  else element = null;\n  return element;\n};\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unmountComponentAtNodeAndRemoveContainer = function(containerTag) {\n  unmountComponentAtNode(containerTag);\n  ReactNativePrivateInterface.UIManager.removeRootView(containerTag);\n};\nexports.unstable_batchedUpdates = batchedUpdates;\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 * @format\n * @flow strict-local\n */\n\nimport '../Core/InitializeCore';\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 * @format\n * @flow strict-local\n */\n\n/* globals window: true */\n\n/**\n * Sets up global variables typical in most JavaScript environments.\n *\n *   1. Global timers (via `setTimeout` etc).\n *   2. Global console object.\n *   3. Hooks for printing stack traces with source maps.\n *\n * Leaves enough room in the environment for implementing your own:\n *\n *   1. Require system.\n *   2. Bridged modules.\n *\n */\n\n'use strict';\n\nconst start = Date.now();\n\nrequire('./setUpGlobals');\nrequire('./setUpPerformance');\nrequire('./setUpSystrace');\nrequire('./setUpErrorHandling');\nrequire('./polyfillPromise');\nrequire('./setUpRegeneratorRuntime');\nrequire('./setUpTimers');\nrequire('./setUpXHR');\nrequire('./setUpAlert');\nrequire('./setUpNavigator');\nrequire('./setUpBatchedBridge');\nrequire('./setUpSegmentFetcher');\nif (__DEV__) {\n  require('./checkNativeVersion');\n  require('./setUpDeveloperTools');\n}\n\nconst GlobalPerformanceLogger = require('../Utilities/GlobalPerformanceLogger');\n// We could just call GlobalPerformanceLogger.markPoint at the top of the file,\n// but then we'd be excluding the time it took to require the logger.\n// Instead, we just use Date.now and backdate the timestamp.\nGlobalPerformanceLogger.markPoint(\n  'initializeCore_start',\n  GlobalPerformanceLogger.currentTimestamp() - (Date.now() - start),\n);\nGlobalPerformanceLogger.markPoint('initializeCore_end');\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Sets up global variables for React Native.\n * You can use this module directly, or just require InitializeCore.\n */\nif (global.GLOBAL === undefined) {\n  global.GLOBAL = global;\n}\n\nif (global.window === undefined) {\n  global.window = global;\n}\n\nif (global.self === undefined) {\n  global.self = global;\n}\n\n// Set up process\nglobal.process = global.process || {};\nglobal.process.env = global.process.env || {};\nif (!global.process.env.NODE_ENV) {\n  global.process.env.NODE_ENV = __DEV__ ? 'development' : 'production';\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nif (!global.performance) {\n  global.performance = {};\n}\n\n/**\n * Returns a double, measured in milliseconds.\n * https://developer.mozilla.org/en-US/docs/Web/API/Performance/now\n */\nif (typeof global.performance.now !== 'function') {\n  global.performance.now = function() {\n    const performanceNow = global.nativePerformanceNow || Date.now;\n    return performanceNow();\n  };\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Set up Systrace profiling hooks if necessary.\n * You can use this module directly, or just require InitializeCore.\n */\nif (global.__RCTProfileIsProfiling) {\n  const Systrace = require('../Performance/Systrace');\n  Systrace.installReactHook();\n  Systrace.setEnabled(true);\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\n/**\n * Sets up the console and exception handling (redbox) for React Native.\n * You can use this module directly, or just require InitializeCore.\n */\nconst ExceptionsManager = require('./ExceptionsManager');\nExceptionsManager.installConsoleErrorReporter();\n\n// Set up error handler\nif (!global.__fbDisableExceptionsManager) {\n  const handleError = (e, isFatal) => {\n    try {\n      ExceptionsManager.handleException(e, isFatal);\n    } catch (ee) {\n      console.log('Failed to print error: ', ee.message);\n      throw e;\n    }\n  };\n\n  const ErrorUtils = require('../vendor/core/ErrorUtils');\n  ErrorUtils.setGlobalHandler(handleError);\n}\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {ExtendedError} from './Devtools/parseErrorStack';\nimport type {ExceptionData} from './NativeExceptionsManager';\n\nclass SyntheticError extends Error {\n  name: string = '';\n}\n\ntype ExceptionDecorator = ExceptionData => ExceptionData;\n\nlet userExceptionDecorator: ?ExceptionDecorator;\nlet inUserExceptionDecorator = false;\n\n/**\n * Allows the app to add information to the exception report before it is sent\n * to native. This API is not final.\n */\n\nfunction unstable_setExceptionDecorator(\n  exceptionDecorator: ?ExceptionDecorator,\n) {\n  userExceptionDecorator = exceptionDecorator;\n}\n\nfunction preprocessException(data: ExceptionData): ExceptionData {\n  if (userExceptionDecorator && !inUserExceptionDecorator) {\n    inUserExceptionDecorator = true;\n    try {\n      return userExceptionDecorator(data);\n    } catch {\n      // Fall through\n    } finally {\n      inUserExceptionDecorator = false;\n    }\n  }\n  return data;\n}\n\n/**\n * Handles the developer-visible aspect of errors and exceptions\n */\nlet exceptionID = 0;\nfunction reportException(\n  e: ExtendedError,\n  isFatal: boolean,\n  reportToConsole: boolean, // only true when coming from handleException; the error has not yet been logged\n) {\n  const NativeExceptionsManager = require('./NativeExceptionsManager').default;\n  if (NativeExceptionsManager) {\n    const parseErrorStack = require('./Devtools/parseErrorStack');\n    const stack = parseErrorStack(e?.stack);\n    const currentExceptionID = ++exceptionID;\n    const originalMessage = e.message || '';\n    let message = originalMessage;\n    if (e.componentStack != null) {\n      message += `\\n\\nThis error is located at:${e.componentStack}`;\n    }\n    const namePrefix = e.name == null || e.name === '' ? '' : `${e.name}: `;\n\n    if (!message.startsWith(namePrefix)) {\n      message = namePrefix + message;\n    }\n\n    message =\n      e.jsEngine == null ? message : `${message}, js engine: ${e.jsEngine}`;\n\n    const isHandledByLogBox =\n      e.forceRedbox !== true && !global.RN$Bridgeless && !global.RN$Express;\n\n    const data = preprocessException({\n      message,\n      originalMessage: message === originalMessage ? null : originalMessage,\n      name: e.name == null || e.name === '' ? null : e.name,\n      componentStack:\n        typeof e.componentStack === 'string' ? e.componentStack : null,\n      stack,\n      id: currentExceptionID,\n      isFatal,\n      extraData: {\n        jsEngine: e.jsEngine,\n        rawStack: e.stack,\n\n        // Hack to hide native redboxes when in the LogBox experiment.\n        // This is intentionally untyped and stuffed here, because it is temporary.\n        suppressRedBox: isHandledByLogBox,\n      },\n    });\n\n    if (reportToConsole) {\n      // we feed back into console.error, to make sure any methods that are\n      // monkey patched on top of console.error are called when coming from\n      // handleException\n      console.error(data.message);\n    }\n\n    if (__DEV__ && isHandledByLogBox) {\n      const LogBoxData = require('../LogBox/Data/LogBoxData');\n      LogBoxData.addException({\n        ...data,\n        isComponentError: !!e.isComponentError,\n      });\n    }\n\n    NativeExceptionsManager.reportException(data);\n\n    if (__DEV__ && !global.RN$Express) {\n      if (e.preventSymbolication === true) {\n        return;\n      }\n      const symbolicateStackTrace = require('./Devtools/symbolicateStackTrace');\n      symbolicateStackTrace(stack)\n        .then(({stack: prettyStack}) => {\n          if (prettyStack) {\n            NativeExceptionsManager.updateExceptionMessage(\n              data.message,\n              prettyStack,\n              currentExceptionID,\n            );\n          } else {\n            throw new Error('The stack is null');\n          }\n        })\n        .catch(error => {\n          console.log('Unable to symbolicate stack trace: ' + error.message);\n        });\n    }\n  } else if (reportToConsole) {\n    // we feed back into console.error, to make sure any methods that are\n    // monkey patched on top of console.error are called when coming from\n    // handleException\n    console.error(e);\n  }\n}\n\ndeclare var console: typeof console & {\n  _errorOriginal: typeof console.error,\n  reportErrorsAsExceptions: boolean,\n  ...\n};\n\n// If we trigger console.error _from_ handleException,\n// we do want to make sure that console.error doesn't trigger error reporting again\nlet inExceptionHandler = false;\n\n/**\n * Logs exceptions to the (native) console and displays them\n */\nfunction handleException(e: mixed, isFatal: boolean) {\n  let error: Error;\n  if (e instanceof Error) {\n    error = e;\n  } else {\n    // Workaround for reporting errors caused by `throw 'some string'`\n    // Unfortunately there is no way to figure out the stacktrace in this\n    // case, so if you ended up here trying to trace an error, look for\n    // `throw '<error message>'` somewhere in your codebase.\n    error = new SyntheticError(e);\n  }\n  try {\n    inExceptionHandler = true;\n    reportException(error, isFatal, /*reportToConsole*/ true);\n  } finally {\n    inExceptionHandler = false;\n  }\n}\n\nfunction reactConsoleErrorHandler() {\n  // bubble up to any original handlers\n  console._errorOriginal.apply(console, arguments);\n  if (!console.reportErrorsAsExceptions) {\n    return;\n  }\n  if (inExceptionHandler) {\n    // The fundamental trick here is that are multiple entry point to logging errors:\n    // (see D19743075 for more background)\n    //\n    // 1. An uncaught exception being caught by the global handler\n    // 2. An error being logged throw console.error\n    //\n    // However, console.error is monkey patched multiple times: by this module, and by the\n    // DevTools setup that sends messages to Metro.\n    // The patching order cannot be relied upon.\n    //\n    // So, some scenarios that are handled by this flag:\n    //\n    // Logging an error:\n    // 1. console.error called from user code\n    // 2. (possibly) arrives _first_ at DevTool handler, send to Metro\n    // 3. Bubbles to here\n    // 4. goes into report Exception.\n    // 5. should not trigger console.error again, to avoid looping / logging twice\n    // 6. should still bubble up to original console\n    //    (which might either be console.log, or the DevTools handler in case it patched _earlier_ and (2) didn't happen)\n    //\n    // Throwing an uncaught exception:\n    // 1. exception thrown\n    // 2. picked up by handleException\n    // 3. should be send to console.error (not console._errorOriginal, as DevTools might have patched _later_ and it needs to send it to Metro)\n    // 4. that _might_ bubble again to the `reactConsoleErrorHandle` defined here\n    //    -> should not handle exception _again_, to avoid looping / showing twice (this code branch)\n    // 5. should still bubble up to original console (which might either be console.log, or the DevTools handler in case that one patched _earlier_)\n    return;\n  }\n\n  if (arguments[0] && arguments[0].stack) {\n    // reportException will console.error this with high enough fidelity.\n    reportException(\n      arguments[0],\n      /* isFatal */ false,\n      /*reportToConsole*/ false,\n    );\n  } else {\n    const stringifySafe = require('../Utilities/stringifySafe').default;\n    const str = Array.prototype.map\n      .call(arguments, value =>\n        typeof value === 'string' ? value : stringifySafe(value),\n      )\n      .join(' ');\n\n    if (str.slice(0, 9) === 'Warning: ') {\n      // React warnings use console.error so that a stack trace is shown, but\n      // we don't (currently) want these to show a redbox\n      // (Note: Logic duplicated in polyfills/console.js.)\n      return;\n    }\n    const error: ExtendedError = new SyntheticError(str);\n    error.name = 'console.error';\n    reportException(error, /* isFatal */ false, /*reportToConsole*/ false);\n  }\n}\n\n/**\n * Shows a redbox with stacktrace for all console.error messages.  Disable by\n * setting `console.reportErrorsAsExceptions = false;` in your app.\n */\nfunction installConsoleErrorReporter() {\n  // Enable reportErrorsAsExceptions\n  if (console._errorOriginal) {\n    return; // already installed\n  }\n  // Flow doesn't like it when you set arbitrary values on a global object\n  console._errorOriginal = console.error.bind(console);\n  console.error = reactConsoleErrorHandler;\n  if (console.reportErrorsAsExceptions === undefined) {\n    // Individual apps can disable this\n    // Flow doesn't like it when you set arbitrary values on a global object\n    console.reportErrorsAsExceptions = true;\n  }\n}\n\nmodule.exports = {\n  handleException,\n  installConsoleErrorReporter,\n  SyntheticError,\n  unstable_setExceptionDecorator,\n};\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct(Class, arguments, getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return setPrototypeOf(Wrapper, Class);\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n  if (isNativeReflectConstruct()) {\n    module.exports = _construct = Reflect.construct;\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  } else {\n    module.exports = _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n\n    module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport type StackFrame = {|\n  column: ?number,\n  file: ?string,\n  lineNumber: ?number,\n  methodName: string,\n  collapse?: boolean,\n|};\n\nexport type ExceptionData = {\n  message: string,\n  originalMessage: ?string,\n  name: ?string,\n  componentStack: ?string,\n  stack: Array<StackFrame>,\n  id: number,\n  isFatal: boolean,\n  // flowlint-next-line unclear-type:off\n  extraData?: Object,\n  ...\n};\n\nexport interface Spec extends TurboModule {\n  // Deprecated: Use `reportException`\n  +reportFatalException: (\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) => void;\n  // Deprecated: Use `reportException`\n  +reportSoftException: (\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) => void;\n  +reportException?: (data: ExceptionData) => void;\n  +updateExceptionMessage: (\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) => void;\n  // TODO(T53311281): This is a noop on iOS now. Implement it.\n  +dismissRedbox?: () => void;\n}\n\nconst Platform = require('../Utilities/Platform');\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>(\n  'ExceptionsManager',\n);\n\nconst ExceptionsManager = {\n  reportFatalException(\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) {\n    NativeModule.reportFatalException(message, stack, exceptionId);\n  },\n  reportSoftException(\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) {\n    NativeModule.reportSoftException(message, stack, exceptionId);\n  },\n  updateExceptionMessage(\n    message: string,\n    stack: Array<StackFrame>,\n    exceptionId: number,\n  ) {\n    NativeModule.updateExceptionMessage(message, stack, exceptionId);\n  },\n  dismissRedbox(): void {\n    if (Platform.OS !== 'ios' && NativeModule.dismissRedbox) {\n      // TODO(T53311281): This is a noop on iOS now. Implement it.\n      NativeModule.dismissRedbox();\n    }\n  },\n  reportException(data: ExceptionData): void {\n    if (NativeModule.reportException) {\n      NativeModule.reportException(data);\n      return;\n    }\n    if (data.isFatal) {\n      ExceptionsManager.reportFatalException(data.message, data.stack, data.id);\n    } else {\n      ExceptionsManager.reportSoftException(data.message, data.stack, data.id);\n    }\n  },\n};\n\nexport default ExceptionsManager;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport type {StackFrame} from '../NativeExceptionsManager';\nimport type {HermesParsedStack} from './parseHermesStack';\n\nconst parseHermesStack = require('./parseHermesStack');\n\nexport type ExtendedError = Error & {\n  jsEngine?: string,\n  preventSymbolication?: boolean,\n  componentStack?: string,\n  forceRedbox?: boolean,\n  isComponentError?: boolean,\n  ...\n};\n\nfunction convertHermesStack(stack: HermesParsedStack): Array<StackFrame> {\n  const frames = [];\n  for (const entry of stack.entries) {\n    if (entry.type !== 'FRAME') {\n      continue;\n    }\n    const {location, functionName} = entry;\n    if (location.type === 'NATIVE') {\n      continue;\n    }\n    frames.push({\n      methodName: functionName,\n      file: location.sourceUrl,\n      lineNumber: location.line1Based,\n      column:\n        location.type === 'SOURCE'\n          ? location.column1Based - 1\n          : location.virtualOffset0Based,\n    });\n  }\n  return frames;\n}\n\nfunction parseErrorStack(errorStack?: string): Array<StackFrame> {\n  if (errorStack == null) {\n    return [];\n  }\n\n  const stacktraceParser = require('stacktrace-parser');\n  const parsedStack = Array.isArray(errorStack)\n    ? errorStack\n    : global.HermesInternal\n    ? convertHermesStack(parseHermesStack(errorStack))\n    : stacktraceParser.parse(errorStack).map(frame => ({\n        ...frame,\n        column: frame.column != null ? frame.column - 1 : null,\n      }));\n\n  return parsedStack;\n}\n\nmodule.exports = parseErrorStack;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\ntype HermesStackLocationNative = {|\n  +type: 'NATIVE',\n|};\n\ntype HermesStackLocationSource = {|\n  +type: 'SOURCE',\n  +sourceUrl: string,\n  +line1Based: number,\n  +column1Based: number,\n|};\n\ntype HermesStackLocationBytecode = {|\n  +type: 'BYTECODE',\n  +sourceUrl: string,\n  +line1Based: number,\n  +virtualOffset0Based: number,\n|};\n\ntype HermesStackLocation =\n  | HermesStackLocationNative\n  | HermesStackLocationSource\n  | HermesStackLocationBytecode;\n\ntype HermesStackEntryFrame = {|\n  +type: 'FRAME',\n  +location: HermesStackLocation,\n  +functionName: string,\n|};\n\ntype HermesStackEntrySkipped = {|\n  +type: 'SKIPPED',\n  +count: number,\n|};\n\ntype HermesStackEntry = HermesStackEntryFrame | HermesStackEntrySkipped;\n\nexport type HermesParsedStack = {|\n  +message: string,\n  +entries: $ReadOnlyArray<HermesStackEntry>,\n|};\n\n// Capturing groups:\n// 1. function name\n// 2. is this a native stack frame?\n// 3. is this a bytecode address or a source location?\n// 4. source URL (filename)\n// 5. line number (1 based)\n// 6. column number (1 based) or virtual offset (0 based)\nconst RE_FRAME = /^ {4}at (.+?)(?: \\((native)\\)?| \\((address at )?(.+?):(\\d+):(\\d+)\\))$/;\n\n// Capturing groups:\n// 1. count of skipped frames\nconst RE_SKIPPED = /^ {4}... skipping (\\d+) frames$/;\n\nfunction parseLine(line: string): ?HermesStackEntry {\n  const asFrame = line.match(RE_FRAME);\n  if (asFrame) {\n    return {\n      type: 'FRAME',\n      functionName: asFrame[1],\n      location:\n        asFrame[2] === 'native'\n          ? {type: 'NATIVE'}\n          : asFrame[3] === 'address at '\n          ? {\n              type: 'BYTECODE',\n              sourceUrl: asFrame[4],\n              line1Based: Number.parseInt(asFrame[5], 10),\n              virtualOffset0Based: Number.parseInt(asFrame[6], 10),\n            }\n          : {\n              type: 'SOURCE',\n              sourceUrl: asFrame[4],\n              line1Based: Number.parseInt(asFrame[5], 10),\n              column1Based: Number.parseInt(asFrame[6], 10),\n            },\n    };\n  }\n  const asSkipped = line.match(RE_SKIPPED);\n  if (asSkipped) {\n    return {\n      type: 'SKIPPED',\n      count: Number.parseInt(asSkipped[1], 10),\n    };\n  }\n}\n\nmodule.exports = function parseHermesStack(stack: string): HermesParsedStack {\n  const lines = stack.split(/\\n/);\n  let entries = [];\n  let lastMessageLine = -1;\n  for (let i = 0; i < lines.length; ++i) {\n    const line = lines[i];\n    if (!line) {\n      continue;\n    }\n    const entry = parseLine(line);\n    if (entry) {\n      entries.push(entry);\n      continue;\n    }\n    // No match - we're still in the message\n    lastMessageLine = i;\n    entries = [];\n  }\n  const message = lines.slice(0, lastMessageLine + 1).join('\\n');\n  return {message, entries};\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar UNKNOWN_FUNCTION = '<unknown>';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n  var lines = stackString.split('\\n');\n  return lines.reduce(function (stack, line) {\n    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n    if (parseResult) {\n      stack.push(parseResult);\n    }\n\n    return stack;\n  }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n  var parts = chromeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n  var submatch = chromeEvalRe.exec(parts[2]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line/column number\n    parts[2] = submatch[1]; // url\n\n    parts[3] = submatch[2]; // line\n\n    parts[4] = submatch[3]; // column\n  }\n\n  return {\n    file: !isNative ? parts[2] : null,\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: isNative ? [parts[2]] : [],\n    lineNumber: parts[3] ? +parts[3] : null,\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n  var parts = winjsRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n  var parts = geckoRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n  var submatch = geckoEvalRe.exec(parts[3]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line number\n    parts[3] = submatch[1];\n    parts[4] = submatch[2];\n    parts[5] = null; // no column when eval\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: parts[2] ? parts[2].split(',') : [],\n    lineNumber: parts[4] ? +parts[4] : null,\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n  var parts = javaScriptCoreRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[4],\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n  var parts = nodeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nexports.parse = parse;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n/**\n * Set up Promise. The native Promise implementation throws the following error:\n * ERROR: Event loop not supported.\n *\n * If you don't need these polyfills, don't use InitializeCore; just directly\n * require the modules you need from InitializeCore for setup.\n */\n\n// If global.Promise is provided by Hermes, we are confident that it can provide\n// all the methods needed by React Native, so we can directly use it.\nif (global?.HermesInternal?.hasPromise?.()) {\n  const HermesPromise = global.Promise;\n\n  if (__DEV__) {\n    if (typeof HermesPromise !== 'function') {\n      console.error('HermesPromise does not exist');\n    }\n    global.HermesInternal.enablePromiseRejectionTracker(\n      require('../promiseRejectionTrackingOptions').default,\n    );\n  }\n} else {\n  polyfillGlobal('Promise', () => require('../Promise'));\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst defineLazyObjectProperty = require('./defineLazyObjectProperty');\n\n/**\n * Sets an object's property. If a property with the same name exists, this will\n * replace it but maintain its descriptor configuration. The property will be\n * replaced with a lazy getter.\n *\n * In DEV mode the original property value will be preserved as `original[PropertyName]`\n * so that, if necessary, it can be restored. For example, if you want to route\n * network requests through DevTools (to trace them):\n *\n *   global.XMLHttpRequest = global.originalXMLHttpRequest;\n *\n * @see https://github.com/facebook/react-native/issues/934\n */\nfunction polyfillObjectProperty<T>(\n  object: {...},\n  name: string,\n  getValue: () => T,\n): void {\n  const descriptor = Object.getOwnPropertyDescriptor(object, name);\n  if (__DEV__ && descriptor) {\n    const backupName = `original${name[0].toUpperCase()}${name.substr(1)}`;\n    Object.defineProperty(object, backupName, descriptor);\n  }\n\n  const {enumerable, writable, configurable = false} = descriptor || {};\n  if (descriptor && !configurable) {\n    console.error('Failed to set polyfill. ' + name + ' is not configurable.');\n    return;\n  }\n\n  defineLazyObjectProperty(object, name, {\n    get: getValue,\n    enumerable: enumerable !== false,\n    writable: writable !== false,\n  });\n}\n\nfunction polyfillGlobal<T>(name: string, getValue: () => T): void {\n  polyfillObjectProperty(global, name, getValue);\n}\n\nmodule.exports = {polyfillObjectProperty, polyfillGlobal};\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst Promise = require('promise/setimmediate/es6-extensions');\n\nrequire('promise/setimmediate/done');\nrequire('promise/setimmediate/finally');\n\nif (__DEV__) {\n  require('promise/setimmediate/rejection-tracking').enable(\n    require('./promiseRejectionTrackingOptions').default,\n  );\n}\n\nmodule.exports = Promise;\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n  var p = new Promise(Promise._0);\n  p._V = 1;\n  p._W = value;\n  return p;\n}\nPromise.resolve = function (value) {\n  if (value instanceof Promise) return value;\n\n  if (value === null) return NULL;\n  if (value === undefined) return UNDEFINED;\n  if (value === true) return TRUE;\n  if (value === false) return FALSE;\n  if (value === 0) return ZERO;\n  if (value === '') return EMPTYSTRING;\n\n  if (typeof value === 'object' || typeof value === 'function') {\n    try {\n      var then = value.then;\n      if (typeof then === 'function') {\n        return new Promise(then.bind(value));\n      }\n    } catch (ex) {\n      return new Promise(function (resolve, reject) {\n        reject(ex);\n      });\n    }\n  }\n  return valuePromise(value);\n};\n\nvar iterableToArray = function (iterable) {\n  if (typeof Array.from === 'function') {\n    // ES2015+, iterables exist\n    iterableToArray = Array.from;\n    return Array.from(iterable);\n  }\n\n  // ES5, only arrays and array-likes exist\n  iterableToArray = function (x) { return Array.prototype.slice.call(x); };\n  return Array.prototype.slice.call(iterable);\n}\n\nPromise.all = function (arr) {\n  var args = iterableToArray(arr);\n\n  return new Promise(function (resolve, reject) {\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n    function res(i, val) {\n      if (val && (typeof val === 'object' || typeof val === 'function')) {\n        if (val instanceof Promise && val.then === Promise.prototype.then) {\n          while (val._V === 3) {\n            val = val._W;\n          }\n          if (val._V === 1) return res(i, val._W);\n          if (val._V === 2) reject(val._W);\n          val.then(function (val) {\n            res(i, val);\n          }, reject);\n          return;\n        } else {\n          var then = val.then;\n          if (typeof then === 'function') {\n            var p = new Promise(then.bind(val));\n            p.then(function (val) {\n              res(i, val);\n            }, reject);\n            return;\n          }\n        }\n      }\n      args[i] = val;\n      if (--remaining === 0) {\n        resolve(args);\n      }\n    }\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nPromise.reject = function (value) {\n  return new Promise(function (resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function (values) {\n  return new Promise(function (resolve, reject) {\n    iterableToArray(values).forEach(function(value){\n      Promise.resolve(value).then(resolve, reject);\n    });\n  });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n  return this.then(null, onRejected);\n};\n","'use strict';\n\n\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n  try {\n    return obj.then;\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\n\nfunction tryCallOne(fn, a) {\n  try {\n    return fn(a);\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\nfunction tryCallTwo(fn, a, b) {\n  try {\n    fn(a, b);\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n  if (typeof this !== 'object') {\n    throw new TypeError('Promises must be constructed via new');\n  }\n  if (typeof fn !== 'function') {\n    throw new TypeError('Promise constructor\\'s argument is not a function');\n  }\n  this._U = 0;\n  this._V = 0;\n  this._W = null;\n  this._X = null;\n  if (fn === noop) return;\n  doResolve(fn, this);\n}\nPromise._Y = null;\nPromise._Z = null;\nPromise._0 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n  if (this.constructor !== Promise) {\n    return safeThen(this, onFulfilled, onRejected);\n  }\n  var res = new Promise(noop);\n  handle(this, new Handler(onFulfilled, onRejected, res));\n  return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n  return new self.constructor(function (resolve, reject) {\n    var res = new Promise(noop);\n    res.then(resolve, reject);\n    handle(self, new Handler(onFulfilled, onRejected, res));\n  });\n}\nfunction handle(self, deferred) {\n  while (self._V === 3) {\n    self = self._W;\n  }\n  if (Promise._Y) {\n    Promise._Y(self);\n  }\n  if (self._V === 0) {\n    if (self._U === 0) {\n      self._U = 1;\n      self._X = deferred;\n      return;\n    }\n    if (self._U === 1) {\n      self._U = 2;\n      self._X = [self._X, deferred];\n      return;\n    }\n    self._X.push(deferred);\n    return;\n  }\n  handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n  setImmediate(function() {\n    var cb = self._V === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      if (self._V === 1) {\n        resolve(deferred.promise, self._W);\n      } else {\n        reject(deferred.promise, self._W);\n      }\n      return;\n    }\n    var ret = tryCallOne(cb, self._W);\n    if (ret === IS_ERROR) {\n      reject(deferred.promise, LAST_ERROR);\n    } else {\n      resolve(deferred.promise, ret);\n    }\n  });\n}\nfunction resolve(self, newValue) {\n  // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n  if (newValue === self) {\n    return reject(\n      self,\n      new TypeError('A promise cannot be resolved with itself.')\n    );\n  }\n  if (\n    newValue &&\n    (typeof newValue === 'object' || typeof newValue === 'function')\n  ) {\n    var then = getThen(newValue);\n    if (then === IS_ERROR) {\n      return reject(self, LAST_ERROR);\n    }\n    if (\n      then === self.then &&\n      newValue instanceof Promise\n    ) {\n      self._V = 3;\n      self._W = newValue;\n      finale(self);\n      return;\n    } else if (typeof then === 'function') {\n      doResolve(then.bind(newValue), self);\n      return;\n    }\n  }\n  self._V = 1;\n  self._W = newValue;\n  finale(self);\n}\n\nfunction reject(self, newValue) {\n  self._V = 2;\n  self._W = newValue;\n  if (Promise._Z) {\n    Promise._Z(self, newValue);\n  }\n  finale(self);\n}\nfunction finale(self) {\n  if (self._U === 1) {\n    handle(self, self._X);\n    self._X = null;\n  }\n  if (self._U === 2) {\n    for (var i = 0; i < self._X.length; i++) {\n      handle(self, self._X[i]);\n    }\n    self._X = null;\n  }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n  var done = false;\n  var res = tryCallTwo(fn, function (value) {\n    if (done) return;\n    done = true;\n    resolve(promise, value);\n  }, function (reason) {\n    if (done) return;\n    done = true;\n    reject(promise, reason);\n  });\n  if (!done && res === IS_ERROR) {\n    done = true;\n    reject(promise, LAST_ERROR);\n  }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n  var self = arguments.length ? this.then.apply(this, arguments) : this;\n  self.then(null, function (err) {\n    setTimeout(function () {\n      throw err;\n    }, 0);\n  });\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n  return this.then(function (value) {\n    return Promise.resolve(f()).then(function () {\n      return value;\n    });\n  }, function (err) {\n    return Promise.resolve(f()).then(function () {\n      throw err;\n    });\n  });\n};\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n/**\n * Set up regenerator.\n * You can use this module directly, or just require InitializeCore.\n */\npolyfillGlobal('regeneratorRuntime', () => {\n  // The require just sets up the global, so make sure when we first\n  // invoke it the global does not exist\n  delete global.regeneratorRuntime;\n\n  // regenerator-runtime/runtime exports the regeneratorRuntime object, so we\n  // can return it safely.\n  return require('regenerator-runtime/runtime'); // flowlint-line untyped-import:off\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\n// In bridgeless mode, timers are host functions installed from cpp.\nif (!global.RN$Bridgeless) {\n  const {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n  /**\n   * Set up timers.\n   * You can use this module directly, or just require InitializeCore.\n   */\n  const defineLazyTimer = name => {\n    polyfillGlobal(name, () => require('./Timers/JSTimers')[name]);\n  };\n  defineLazyTimer('setTimeout');\n  defineLazyTimer('setInterval');\n  defineLazyTimer('setImmediate');\n  defineLazyTimer('clearTimeout');\n  defineLazyTimer('clearInterval');\n  defineLazyTimer('clearImmediate');\n  defineLazyTimer('requestAnimationFrame');\n  defineLazyTimer('cancelAnimationFrame');\n  defineLazyTimer('requestIdleCallback');\n  defineLazyTimer('cancelIdleCallback');\n}\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst BatchedBridge = require('../../BatchedBridge/BatchedBridge');\nconst Platform = require('../../Utilities/Platform');\nconst Systrace = require('../../Performance/Systrace');\n\nconst invariant = require('invariant');\n\nimport NativeTiming from './NativeTiming';\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\n\nexport type JSTimerType =\n  | 'setTimeout'\n  | 'setInterval'\n  | 'requestAnimationFrame'\n  | 'setImmediate'\n  | 'requestIdleCallback';\n\n// These timing constants should be kept in sync with the ones in native ios and\n// android `RCTTiming` module.\nconst FRAME_DURATION = 1000 / 60;\nconst IDLE_CALLBACK_FRAME_DEADLINE = 1;\n\nconst MAX_TIMER_DURATION_MS = 60 * 1000;\nconst IS_ANDROID = Platform.OS === 'android';\nconst ANDROID_LONG_TIMER_MESSAGE =\n  'Setting a timer for a long period of time, i.e. multiple minutes, is a ' +\n  'performance and correctness issue on Android as it keeps the timer ' +\n  'module awake, and timers can only be called when the app is in the foreground. ' +\n  'See https://github.com/facebook/react-native/issues/12981 for more info.';\n\n// Parallel arrays\nconst callbacks: Array<?Function> = [];\nconst types: Array<?JSTimerType> = [];\nconst timerIDs: Array<?number> = [];\nlet immediates: Array<number> = [];\nlet requestIdleCallbacks: Array<number> = [];\nconst requestIdleCallbackTimeouts: {[number]: number, ...} = {};\n\nlet GUID = 1;\nlet errors: ?Array<Error> = null;\n\nlet hasEmittedTimeDriftWarning = false;\n\n// Returns a free index if one is available, and the next consecutive index otherwise.\nfunction _getFreeIndex(): number {\n  let freeIndex = timerIDs.indexOf(null);\n  if (freeIndex === -1) {\n    freeIndex = timerIDs.length;\n  }\n  return freeIndex;\n}\n\nfunction _allocateCallback(func: Function, type: JSTimerType): number {\n  const id = GUID++;\n  const freeIndex = _getFreeIndex();\n  timerIDs[freeIndex] = id;\n  callbacks[freeIndex] = func;\n  types[freeIndex] = type;\n  return id;\n}\n\n/**\n * Calls the callback associated with the ID. Also unregister that callback\n * if it was a one time timer (setTimeout), and not unregister it if it was\n * recurring (setInterval).\n */\nfunction _callTimer(timerID: number, frameTime: number, didTimeout: ?boolean) {\n  if (timerID > GUID) {\n    console.warn(\n      'Tried to call timer with ID %s but no such timer exists.',\n      timerID,\n    );\n  }\n\n  // timerIndex of -1 means that no timer with that ID exists. There are\n  // two situations when this happens, when a garbage timer ID was given\n  // and when a previously existing timer was deleted before this callback\n  // fired. In both cases we want to ignore the timer id, but in the former\n  // case we warn as well.\n  const timerIndex = timerIDs.indexOf(timerID);\n  if (timerIndex === -1) {\n    return;\n  }\n\n  const type = types[timerIndex];\n  const callback = callbacks[timerIndex];\n  if (!callback || !type) {\n    console.error('No callback found for timerID ' + timerID);\n    return;\n  }\n\n  if (__DEV__) {\n    Systrace.beginEvent(type + ' [invoke]');\n  }\n\n  // Clear the metadata\n  if (type !== 'setInterval') {\n    _clearIndex(timerIndex);\n  }\n\n  try {\n    if (\n      type === 'setTimeout' ||\n      type === 'setInterval' ||\n      type === 'setImmediate'\n    ) {\n      callback();\n    } else if (type === 'requestAnimationFrame') {\n      callback(global.performance.now());\n    } else if (type === 'requestIdleCallback') {\n      callback({\n        timeRemaining: function() {\n          // TODO: Optimisation: allow running for longer than one frame if\n          // there are no pending JS calls on the bridge from native. This\n          // would require a way to check the bridge queue synchronously.\n          return Math.max(\n            0,\n            FRAME_DURATION - (global.performance.now() - frameTime),\n          );\n        },\n        didTimeout: !!didTimeout,\n      });\n    } else {\n      console.error('Tried to call a callback with invalid type: ' + type);\n    }\n  } catch (e) {\n    // Don't rethrow so that we can run all timers.\n    if (!errors) {\n      errors = [e];\n    } else {\n      errors.push(e);\n    }\n  }\n\n  if (__DEV__) {\n    Systrace.endEvent();\n  }\n}\n\n/**\n * Performs a single pass over the enqueued immediates. Returns whether\n * more immediates are queued up (can be used as a condition a while loop).\n */\nfunction _callImmediatesPass() {\n  if (immediates.length === 0) {\n    return false;\n  }\n\n  if (__DEV__) {\n    Systrace.beginEvent('callImmediatesPass()');\n  }\n\n  // The main reason to extract a single pass is so that we can track\n  // in the system trace\n  const passImmediates = immediates;\n  immediates = [];\n\n  // Use for loop rather than forEach as per @vjeux's advice\n  // https://github.com/facebook/react-native/commit/c8fd9f7588ad02d2293cac7224715f4af7b0f352#commitcomment-14570051\n  for (let i = 0; i < passImmediates.length; ++i) {\n    _callTimer(passImmediates[i], 0);\n  }\n\n  if (__DEV__) {\n    Systrace.endEvent();\n  }\n  return immediates.length > 0;\n}\n\nfunction _clearIndex(i: number) {\n  timerIDs[i] = null;\n  callbacks[i] = null;\n  types[i] = null;\n}\n\nfunction _freeCallback(timerID: number) {\n  // timerIDs contains nulls after timers have been removed;\n  // ignore nulls upfront so indexOf doesn't find them\n  if (timerID == null) {\n    return;\n  }\n\n  const index = timerIDs.indexOf(timerID);\n  // See corresponding comment in `callTimers` for reasoning behind this\n  if (index !== -1) {\n    const type = types[index];\n    _clearIndex(index);\n    if (type !== 'setImmediate' && type !== 'requestIdleCallback') {\n      deleteTimer(timerID);\n    }\n  }\n}\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nconst JSTimers = {\n  /**\n   * @param {function} func Callback to be invoked after `duration` ms.\n   * @param {number} duration Number of milliseconds.\n   */\n  setTimeout: function(func: Function, duration: number, ...args: any): number {\n    if (__DEV__ && IS_ANDROID && duration > MAX_TIMER_DURATION_MS) {\n      console.warn(\n        ANDROID_LONG_TIMER_MESSAGE +\n          '\\n' +\n          '(Saw setTimeout with duration ' +\n          duration +\n          'ms)',\n      );\n    }\n    const id = _allocateCallback(\n      () => func.apply(undefined, args),\n      'setTimeout',\n    );\n    createTimer(id, duration || 0, Date.now(), /* recurring */ false);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked every `duration` ms.\n   * @param {number} duration Number of milliseconds.\n   */\n  setInterval: function(\n    func: Function,\n    duration: number,\n    ...args: any\n  ): number {\n    if (__DEV__ && IS_ANDROID && duration > MAX_TIMER_DURATION_MS) {\n      console.warn(\n        ANDROID_LONG_TIMER_MESSAGE +\n          '\\n' +\n          '(Saw setInterval with duration ' +\n          duration +\n          'ms)',\n      );\n    }\n    const id = _allocateCallback(\n      () => func.apply(undefined, args),\n      'setInterval',\n    );\n    createTimer(id, duration || 0, Date.now(), /* recurring */ true);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked before the end of the\n   * current JavaScript execution loop.\n   */\n  setImmediate: function(func: Function, ...args: any) {\n    const id = _allocateCallback(\n      () => func.apply(undefined, args),\n      'setImmediate',\n    );\n    immediates.push(id);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked every frame.\n   */\n  requestAnimationFrame: function(func: Function) {\n    const id = _allocateCallback(func, 'requestAnimationFrame');\n    createTimer(id, 1, Date.now(), /* recurring */ false);\n    return id;\n  },\n\n  /**\n   * @param {function} func Callback to be invoked every frame and provided\n   * with time remaining in frame.\n   * @param {?object} options\n   */\n  requestIdleCallback: function(func: Function, options: ?Object) {\n    if (requestIdleCallbacks.length === 0) {\n      setSendIdleEvents(true);\n    }\n\n    const timeout = options && options.timeout;\n    const id = _allocateCallback(\n      timeout != null\n        ? deadline => {\n            const timeoutId = requestIdleCallbackTimeouts[id];\n            if (timeoutId) {\n              JSTimers.clearTimeout(timeoutId);\n              delete requestIdleCallbackTimeouts[id];\n            }\n            return func(deadline);\n          }\n        : func,\n      'requestIdleCallback',\n    );\n    requestIdleCallbacks.push(id);\n\n    if (timeout != null) {\n      const timeoutId = JSTimers.setTimeout(() => {\n        const index = requestIdleCallbacks.indexOf(id);\n        if (index > -1) {\n          requestIdleCallbacks.splice(index, 1);\n          _callTimer(id, global.performance.now(), true);\n        }\n        delete requestIdleCallbackTimeouts[id];\n        if (requestIdleCallbacks.length === 0) {\n          setSendIdleEvents(false);\n        }\n      }, timeout);\n      requestIdleCallbackTimeouts[id] = timeoutId;\n    }\n    return id;\n  },\n\n  cancelIdleCallback: function(timerID: number) {\n    _freeCallback(timerID);\n    const index = requestIdleCallbacks.indexOf(timerID);\n    if (index !== -1) {\n      requestIdleCallbacks.splice(index, 1);\n    }\n\n    const timeoutId = requestIdleCallbackTimeouts[timerID];\n    if (timeoutId) {\n      JSTimers.clearTimeout(timeoutId);\n      delete requestIdleCallbackTimeouts[timerID];\n    }\n\n    if (requestIdleCallbacks.length === 0) {\n      setSendIdleEvents(false);\n    }\n  },\n\n  clearTimeout: function(timerID: number) {\n    _freeCallback(timerID);\n  },\n\n  clearInterval: function(timerID: number) {\n    _freeCallback(timerID);\n  },\n\n  clearImmediate: function(timerID: number) {\n    _freeCallback(timerID);\n    const index = immediates.indexOf(timerID);\n    if (index !== -1) {\n      immediates.splice(index, 1);\n    }\n  },\n\n  cancelAnimationFrame: function(timerID: number) {\n    _freeCallback(timerID);\n  },\n\n  /**\n   * This is called from the native side. We are passed an array of timerIDs,\n   * and\n   */\n  callTimers: function(timersToCall: Array<number>) {\n    invariant(\n      timersToCall.length !== 0,\n      'Cannot call `callTimers` with an empty list of IDs.',\n    );\n\n    errors = (null: ?Array<Error>);\n    for (let i = 0; i < timersToCall.length; i++) {\n      _callTimer(timersToCall[i], 0);\n    }\n\n    if (errors) {\n      const errorCount = errors.length;\n      if (errorCount > 1) {\n        // Throw all the other errors in a setTimeout, which will throw each\n        // error one at a time\n        for (let ii = 1; ii < errorCount; ii++) {\n          JSTimers.setTimeout(\n            (error => {\n              throw error;\n            }).bind(null, errors[ii]),\n            0,\n          );\n        }\n      }\n      throw errors[0];\n    }\n  },\n\n  callIdleCallbacks: function(frameTime: number) {\n    if (\n      FRAME_DURATION - (global.performance.now() - frameTime) <\n      IDLE_CALLBACK_FRAME_DEADLINE\n    ) {\n      return;\n    }\n\n    errors = (null: ?Array<Error>);\n    if (requestIdleCallbacks.length > 0) {\n      const passIdleCallbacks = requestIdleCallbacks;\n      requestIdleCallbacks = [];\n\n      for (let i = 0; i < passIdleCallbacks.length; ++i) {\n        _callTimer(passIdleCallbacks[i], frameTime);\n      }\n    }\n\n    if (requestIdleCallbacks.length === 0) {\n      setSendIdleEvents(false);\n    }\n\n    if (errors) {\n      errors.forEach(error =>\n        JSTimers.setTimeout(() => {\n          throw error;\n        }, 0),\n      );\n    }\n  },\n\n  /**\n   * This is called after we execute any command we receive from native but\n   * before we hand control back to native.\n   */\n  callImmediates() {\n    errors = (null: ?Array<Error>);\n    while (_callImmediatesPass()) {}\n    if (errors) {\n      errors.forEach(error =>\n        JSTimers.setTimeout(() => {\n          throw error;\n        }, 0),\n      );\n    }\n  },\n\n  /**\n   * Called from native (in development) when environment times are out-of-sync.\n   */\n  emitTimeDriftWarning(warningMessage: string) {\n    if (hasEmittedTimeDriftWarning) {\n      return;\n    }\n    hasEmittedTimeDriftWarning = true;\n    console.warn(warningMessage);\n  },\n};\n\nfunction createTimer(\n  callbackID: number,\n  duration: number,\n  jsSchedulingTime: number,\n  repeats: boolean,\n): void {\n  invariant(NativeTiming, 'NativeTiming is available');\n  NativeTiming.createTimer(callbackID, duration, jsSchedulingTime, repeats);\n}\n\nfunction deleteTimer(timerID: number): void {\n  invariant(NativeTiming, 'NativeTiming is available');\n  NativeTiming.deleteTimer(timerID);\n}\n\nfunction setSendIdleEvents(sendIdleEvents: boolean): void {\n  invariant(NativeTiming, 'NativeTiming is available');\n  NativeTiming.setSendIdleEvents(sendIdleEvents);\n}\n\nlet ExportedJSTimers: {|\n  callIdleCallbacks: (frameTime: number) => any | void,\n  callImmediates: () => void,\n  callTimers: (timersToCall: Array<number>) => any | void,\n  cancelAnimationFrame: (timerID: number) => void,\n  cancelIdleCallback: (timerID: number) => void,\n  clearImmediate: (timerID: number) => void,\n  clearInterval: (timerID: number) => void,\n  clearTimeout: (timerID: number) => void,\n  emitTimeDriftWarning: (warningMessage: string) => any | void,\n  requestAnimationFrame: (func: any) => any | number,\n  requestIdleCallback: (func: any, options: ?any) => any | number,\n  setImmediate: (func: any, ...args: any) => number,\n  setInterval: (func: any, duration: number, ...args: any) => number,\n  setTimeout: (func: any, duration: number, ...args: any) => number,\n|};\n\nif (!NativeTiming) {\n  console.warn(\"Timing native module is not available, can't set timers.\");\n  // $FlowFixMe: we can assume timers are generally available\n  ExportedJSTimers = ({\n    callImmediates: JSTimers.callImmediates,\n    setImmediate: JSTimers.setImmediate,\n  }: typeof JSTimers);\n} else {\n  ExportedJSTimers = JSTimers;\n}\n\nBatchedBridge.setImmediatesCallback(JSTimers.callImmediates);\n\nmodule.exports = ExportedJSTimers;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +createTimer: (\n    callbackID: number,\n    duration: number,\n    jsSchedulingTime: number,\n    repeats: boolean,\n  ) => void;\n  +deleteTimer: (timerID: number) => void;\n  +setSendIdleEvents: (sendIdleEvents: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('Timing'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst {polyfillGlobal} = require('../Utilities/PolyfillFunctions');\n\n/**\n * Set up XMLHttpRequest. The native XMLHttpRequest in Chrome dev tools is CORS\n * aware and won't let you fetch anything from the internet.\n *\n * You can use this module directly, or just require InitializeCore.\n */\npolyfillGlobal('XMLHttpRequest', () => require('../Network/XMLHttpRequest'));\npolyfillGlobal('FormData', () => require('../Network/FormData'));\n\npolyfillGlobal('fetch', () => require('../Network/fetch').fetch); // flowlint-line untyped-import:off\npolyfillGlobal('Headers', () => require('../Network/fetch').Headers); // flowlint-line untyped-import:off\npolyfillGlobal('Request', () => require('../Network/fetch').Request); // flowlint-line untyped-import:off\npolyfillGlobal('Response', () => require('../Network/fetch').Response); // flowlint-line untyped-import:off\npolyfillGlobal('WebSocket', () => require('../WebSocket/WebSocket'));\npolyfillGlobal('Blob', () => require('../Blob/Blob'));\npolyfillGlobal('File', () => require('../Blob/File'));\npolyfillGlobal('FileReader', () => require('../Blob/FileReader'));\npolyfillGlobal('URL', () => require('../Blob/URL').URL); // flowlint-line untyped-import:off\npolyfillGlobal('URLSearchParams', () => require('../Blob/URL').URLSearchParams); // flowlint-line untyped-import:off\npolyfillGlobal(\n  'AbortController',\n  () => require('abort-controller/dist/abort-controller').AbortController, // flowlint-line untyped-import:off\n);\npolyfillGlobal(\n  'AbortSignal',\n  () => require('abort-controller/dist/abort-controller').AbortSignal, // flowlint-line untyped-import:off\n);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';\n\nconst BlobManager = require('../Blob/BlobManager');\nconst EventTarget = require('event-target-shim');\nconst GlobalPerformanceLogger = require('../Utilities/GlobalPerformanceLogger');\nconst RCTNetworking = require('./RCTNetworking');\n\nconst base64 = require('base64-js');\nconst invariant = require('invariant');\n\nconst DEBUG_NETWORK_SEND_DELAY: false = false; // Set to a number of milliseconds when debugging\n\nexport type NativeResponseType = 'base64' | 'blob' | 'text';\nexport type ResponseType =\n  | ''\n  | 'arraybuffer'\n  | 'blob'\n  | 'document'\n  | 'json'\n  | 'text';\nexport type Response = ?Object | string;\n\ntype XHRInterceptor = {\n  requestSent(id: number, url: string, method: string, headers: Object): void,\n  responseReceived(\n    id: number,\n    url: string,\n    status: number,\n    headers: Object,\n  ): void,\n  dataReceived(id: number, data: string): void,\n  loadingFinished(id: number, encodedDataLength: number): void,\n  loadingFailed(id: number, error: string): void,\n  ...\n};\n\n// The native blob module is optional so inject it here if available.\nif (BlobManager.isAvailable) {\n  BlobManager.addNetworkingHandler();\n}\n\nconst UNSENT = 0;\nconst OPENED = 1;\nconst HEADERS_RECEIVED = 2;\nconst LOADING = 3;\nconst DONE = 4;\n\nconst SUPPORTED_RESPONSE_TYPES = {\n  arraybuffer: typeof global.ArrayBuffer === 'function',\n  blob: typeof global.Blob === 'function',\n  document: false,\n  json: true,\n  text: true,\n  '': true,\n};\n\nconst REQUEST_EVENTS = [\n  'abort',\n  'error',\n  'load',\n  'loadstart',\n  'progress',\n  'timeout',\n  'loadend',\n];\n\nconst XHR_EVENTS = REQUEST_EVENTS.concat('readystatechange');\n\nclass XMLHttpRequestEventTarget extends (EventTarget(...REQUEST_EVENTS): any) {\n  onload: ?Function;\n  onloadstart: ?Function;\n  onprogress: ?Function;\n  ontimeout: ?Function;\n  onerror: ?Function;\n  onabort: ?Function;\n  onloadend: ?Function;\n}\n\n/**\n * Shared base for platform-specific XMLHttpRequest implementations.\n */\nclass XMLHttpRequest extends (EventTarget(...XHR_EVENTS): any) {\n  static UNSENT: number = UNSENT;\n  static OPENED: number = OPENED;\n  static HEADERS_RECEIVED: number = HEADERS_RECEIVED;\n  static LOADING: number = LOADING;\n  static DONE: number = DONE;\n\n  static _interceptor: ?XHRInterceptor = null;\n\n  UNSENT: number = UNSENT;\n  OPENED: number = OPENED;\n  HEADERS_RECEIVED: number = HEADERS_RECEIVED;\n  LOADING: number = LOADING;\n  DONE: number = DONE;\n\n  // EventTarget automatically initializes these to `null`.\n  onload: ?Function;\n  onloadstart: ?Function;\n  onprogress: ?Function;\n  ontimeout: ?Function;\n  onerror: ?Function;\n  onabort: ?Function;\n  onloadend: ?Function;\n  onreadystatechange: ?Function;\n\n  readyState: number = UNSENT;\n  responseHeaders: ?Object;\n  status: number = 0;\n  timeout: number = 0;\n  responseURL: ?string;\n  withCredentials: boolean = true;\n\n  upload: XMLHttpRequestEventTarget = new XMLHttpRequestEventTarget();\n\n  _requestId: ?number;\n  _subscriptions: Array<*>;\n\n  _aborted: boolean = false;\n  _cachedResponse: Response;\n  _hasError: boolean = false;\n  _headers: Object;\n  _lowerCaseResponseHeaders: Object;\n  _method: ?string = null;\n  _perfKey: ?string = null;\n  _response: string | ?Object;\n  _responseType: ResponseType;\n  _response: string = '';\n  _sent: boolean;\n  _url: ?string = null;\n  _timedOut: boolean = false;\n  _trackingName: string = 'unknown';\n  _incrementalEvents: boolean = false;\n  _performanceLogger: IPerformanceLogger = GlobalPerformanceLogger;\n\n  static setInterceptor(interceptor: ?XHRInterceptor) {\n    XMLHttpRequest._interceptor = interceptor;\n  }\n\n  constructor() {\n    super();\n    this._reset();\n  }\n\n  _reset(): void {\n    this.readyState = this.UNSENT;\n    this.responseHeaders = undefined;\n    this.status = 0;\n    delete this.responseURL;\n\n    this._requestId = null;\n\n    this._cachedResponse = undefined;\n    this._hasError = false;\n    this._headers = {};\n    this._response = '';\n    this._responseType = '';\n    this._sent = false;\n    this._lowerCaseResponseHeaders = {};\n\n    this._clearSubscriptions();\n    this._timedOut = false;\n  }\n\n  get responseType(): ResponseType {\n    return this._responseType;\n  }\n\n  set responseType(responseType: ResponseType): void {\n    if (this._sent) {\n      throw new Error(\n        \"Failed to set the 'responseType' property on 'XMLHttpRequest': The \" +\n          'response type cannot be set after the request has been sent.',\n      );\n    }\n    if (!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)) {\n      console.warn(\n        `The provided value '${responseType}' is not a valid 'responseType'.`,\n      );\n      return;\n    }\n\n    // redboxes early, e.g. for 'arraybuffer' on ios 7\n    invariant(\n      SUPPORTED_RESPONSE_TYPES[responseType] || responseType === 'document',\n      `The provided value '${responseType}' is unsupported in this environment.`,\n    );\n\n    if (responseType === 'blob') {\n      invariant(\n        BlobManager.isAvailable,\n        'Native module BlobModule is required for blob support',\n      );\n    }\n    this._responseType = responseType;\n  }\n\n  get responseText(): string {\n    if (this._responseType !== '' && this._responseType !== 'text') {\n      throw new Error(\n        \"The 'responseText' property is only available if 'responseType' \" +\n          `is set to '' or 'text', but it is '${this._responseType}'.`,\n      );\n    }\n    if (this.readyState < LOADING) {\n      return '';\n    }\n    return this._response;\n  }\n\n  get response(): Response {\n    const {responseType} = this;\n    if (responseType === '' || responseType === 'text') {\n      return this.readyState < LOADING || this._hasError ? '' : this._response;\n    }\n\n    if (this.readyState !== DONE) {\n      return null;\n    }\n\n    if (this._cachedResponse !== undefined) {\n      return this._cachedResponse;\n    }\n\n    switch (responseType) {\n      case 'document':\n        this._cachedResponse = null;\n        break;\n\n      case 'arraybuffer':\n        this._cachedResponse = base64.toByteArray(this._response).buffer;\n        break;\n\n      case 'blob':\n        if (typeof this._response === 'object' && this._response) {\n          this._cachedResponse = BlobManager.createFromOptions(this._response);\n        } else if (this._response === '') {\n          this._cachedResponse = BlobManager.createFromParts([]);\n        } else {\n          throw new Error(`Invalid response for blob: ${this._response}`);\n        }\n        break;\n\n      case 'json':\n        try {\n          this._cachedResponse = JSON.parse(this._response);\n        } catch (_) {\n          this._cachedResponse = null;\n        }\n        break;\n\n      default:\n        this._cachedResponse = null;\n    }\n\n    return this._cachedResponse;\n  }\n\n  // exposed for testing\n  __didCreateRequest(requestId: number): void {\n    this._requestId = requestId;\n\n    XMLHttpRequest._interceptor &&\n      XMLHttpRequest._interceptor.requestSent(\n        requestId,\n        this._url || '',\n        this._method || 'GET',\n        this._headers,\n      );\n  }\n\n  // exposed for testing\n  __didUploadProgress(\n    requestId: number,\n    progress: number,\n    total: number,\n  ): void {\n    if (requestId === this._requestId) {\n      this.upload.dispatchEvent({\n        type: 'progress',\n        lengthComputable: true,\n        loaded: progress,\n        total,\n      });\n    }\n  }\n\n  __didReceiveResponse(\n    requestId: number,\n    status: number,\n    responseHeaders: ?Object,\n    responseURL: ?string,\n  ): void {\n    if (requestId === this._requestId) {\n      this._perfKey != null &&\n        this._performanceLogger.stopTimespan(this._perfKey);\n      this.status = status;\n      this.setResponseHeaders(responseHeaders);\n      this.setReadyState(this.HEADERS_RECEIVED);\n      if (responseURL || responseURL === '') {\n        this.responseURL = responseURL;\n      } else {\n        delete this.responseURL;\n      }\n\n      XMLHttpRequest._interceptor &&\n        XMLHttpRequest._interceptor.responseReceived(\n          requestId,\n          responseURL || this._url || '',\n          status,\n          responseHeaders || {},\n        );\n    }\n  }\n\n  __didReceiveData(requestId: number, response: string): void {\n    if (requestId !== this._requestId) {\n      return;\n    }\n    this._response = response;\n    this._cachedResponse = undefined; // force lazy recomputation\n    this.setReadyState(this.LOADING);\n\n    XMLHttpRequest._interceptor &&\n      XMLHttpRequest._interceptor.dataReceived(requestId, response);\n  }\n\n  __didReceiveIncrementalData(\n    requestId: number,\n    responseText: string,\n    progress: number,\n    total: number,\n  ) {\n    if (requestId !== this._requestId) {\n      return;\n    }\n    if (!this._response) {\n      this._response = responseText;\n    } else {\n      this._response += responseText;\n    }\n\n    XMLHttpRequest._interceptor &&\n      XMLHttpRequest._interceptor.dataReceived(requestId, responseText);\n\n    this.setReadyState(this.LOADING);\n    this.__didReceiveDataProgress(requestId, progress, total);\n  }\n\n  __didReceiveDataProgress(\n    requestId: number,\n    loaded: number,\n    total: number,\n  ): void {\n    if (requestId !== this._requestId) {\n      return;\n    }\n    this.dispatchEvent({\n      type: 'progress',\n      lengthComputable: total >= 0,\n      loaded,\n      total,\n    });\n  }\n\n  // exposed for testing\n  __didCompleteResponse(\n    requestId: number,\n    error: string,\n    timeOutError: boolean,\n  ): void {\n    if (requestId === this._requestId) {\n      if (error) {\n        if (this._responseType === '' || this._responseType === 'text') {\n          this._response = error;\n        }\n        this._hasError = true;\n        if (timeOutError) {\n          this._timedOut = true;\n        }\n      }\n      this._clearSubscriptions();\n      this._requestId = null;\n      this.setReadyState(this.DONE);\n\n      if (error) {\n        XMLHttpRequest._interceptor &&\n          XMLHttpRequest._interceptor.loadingFailed(requestId, error);\n      } else {\n        XMLHttpRequest._interceptor &&\n          XMLHttpRequest._interceptor.loadingFinished(\n            requestId,\n            this._response.length,\n          );\n      }\n    }\n  }\n\n  _clearSubscriptions(): void {\n    (this._subscriptions || []).forEach(sub => {\n      if (sub) {\n        sub.remove();\n      }\n    });\n    this._subscriptions = [];\n  }\n\n  getAllResponseHeaders(): ?string {\n    if (!this.responseHeaders) {\n      // according to the spec, return null if no response has been received\n      return null;\n    }\n    const headers = this.responseHeaders || {};\n    return Object.keys(headers)\n      .map(headerName => {\n        return headerName + ': ' + headers[headerName];\n      })\n      .join('\\r\\n');\n  }\n\n  getResponseHeader(header: string): ?string {\n    const value = this._lowerCaseResponseHeaders[header.toLowerCase()];\n    return value !== undefined ? value : null;\n  }\n\n  setRequestHeader(header: string, value: any): void {\n    if (this.readyState !== this.OPENED) {\n      throw new Error('Request has not been opened');\n    }\n    this._headers[header.toLowerCase()] = String(value);\n  }\n\n  /**\n   * Custom extension for tracking origins of request.\n   */\n  setTrackingName(trackingName: string): XMLHttpRequest {\n    this._trackingName = trackingName;\n    return this;\n  }\n\n  /**\n   * Custom extension for setting a custom performance logger\n   */\n  setPerformanceLogger(performanceLogger: IPerformanceLogger): XMLHttpRequest {\n    this._performanceLogger = performanceLogger;\n    return this;\n  }\n\n  open(method: string, url: string, async: ?boolean): void {\n    /* Other optional arguments are not supported yet */\n    if (this.readyState !== this.UNSENT) {\n      throw new Error('Cannot open, already sending');\n    }\n    if (async !== undefined && !async) {\n      // async is default\n      throw new Error('Synchronous http requests are not supported');\n    }\n    if (!url) {\n      throw new Error('Cannot load an empty url');\n    }\n    this._method = method.toUpperCase();\n    this._url = url;\n    this._aborted = false;\n    this.setReadyState(this.OPENED);\n  }\n\n  send(data: any): void {\n    if (this.readyState !== this.OPENED) {\n      throw new Error('Request has not been opened');\n    }\n    if (this._sent) {\n      throw new Error('Request has already been sent');\n    }\n    this._sent = true;\n    const incrementalEvents =\n      this._incrementalEvents || !!this.onreadystatechange || !!this.onprogress;\n\n    this._subscriptions.push(\n      RCTNetworking.addListener('didSendNetworkData', args =>\n        this.__didUploadProgress(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkResponse', args =>\n        this.__didReceiveResponse(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkData', args =>\n        this.__didReceiveData(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkIncrementalData', args =>\n        this.__didReceiveIncrementalData(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didReceiveNetworkDataProgress', args =>\n        this.__didReceiveDataProgress(...args),\n      ),\n    );\n    this._subscriptions.push(\n      RCTNetworking.addListener('didCompleteNetworkResponse', args =>\n        this.__didCompleteResponse(...args),\n      ),\n    );\n\n    let nativeResponseType: NativeResponseType = 'text';\n    if (this._responseType === 'arraybuffer') {\n      nativeResponseType = 'base64';\n    }\n    if (this._responseType === 'blob') {\n      nativeResponseType = 'blob';\n    }\n\n    const doSend = () => {\n      const friendlyName =\n        this._trackingName !== 'unknown' ? this._trackingName : this._url;\n      this._perfKey = 'network_XMLHttpRequest_' + String(friendlyName);\n      this._performanceLogger.startTimespan(this._perfKey);\n      invariant(\n        this._method,\n        'XMLHttpRequest method needs to be defined (%s).',\n        friendlyName,\n      );\n      invariant(\n        this._url,\n        'XMLHttpRequest URL needs to be defined (%s).',\n        friendlyName,\n      );\n      RCTNetworking.sendRequest(\n        this._method,\n        this._trackingName,\n        this._url,\n        this._headers,\n        data,\n        /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n         * when making Flow check .android.js files. */\n        nativeResponseType,\n        incrementalEvents,\n        this.timeout,\n        this.__didCreateRequest.bind(this),\n        this.withCredentials,\n      );\n    };\n    if (DEBUG_NETWORK_SEND_DELAY) {\n      setTimeout(doSend, DEBUG_NETWORK_SEND_DELAY);\n    } else {\n      doSend();\n    }\n  }\n\n  abort(): void {\n    this._aborted = true;\n    if (this._requestId) {\n      RCTNetworking.abortRequest(this._requestId);\n    }\n    // only call onreadystatechange if there is something to abort,\n    // below logic is per spec\n    if (\n      !(\n        this.readyState === this.UNSENT ||\n        (this.readyState === this.OPENED && !this._sent) ||\n        this.readyState === this.DONE\n      )\n    ) {\n      this._reset();\n      this.setReadyState(this.DONE);\n    }\n    // Reset again after, in case modified in handler\n    this._reset();\n  }\n\n  setResponseHeaders(responseHeaders: ?Object): void {\n    this.responseHeaders = responseHeaders || null;\n    const headers = responseHeaders || {};\n    this._lowerCaseResponseHeaders = Object.keys(headers).reduce(\n      (lcaseHeaders, headerName) => {\n        lcaseHeaders[headerName.toLowerCase()] = headers[headerName];\n        return lcaseHeaders;\n      },\n      {},\n    );\n  }\n\n  setReadyState(newState: number): void {\n    this.readyState = newState;\n    this.dispatchEvent({type: 'readystatechange'});\n    if (newState === this.DONE) {\n      if (this._aborted) {\n        this.dispatchEvent({type: 'abort'});\n      } else if (this._hasError) {\n        if (this._timedOut) {\n          this.dispatchEvent({type: 'timeout'});\n        } else {\n          this.dispatchEvent({type: 'error'});\n        }\n      } else {\n        this.dispatchEvent({type: 'load'});\n      }\n      this.dispatchEvent({type: 'loadend'});\n    }\n  }\n\n  /* global EventListener */\n  addEventListener(type: string, listener: EventListener): void {\n    // If we dont' have a 'readystatechange' event handler, we don't\n    // have to send repeated LOADING events with incremental updates\n    // to responseText, which will avoid a bunch of native -> JS\n    // bridge traffic.\n    if (type === 'readystatechange' || type === 'progress') {\n      this._incrementalEvents = true;\n    }\n    super.addEventListener(type, listener);\n  }\n}\n\nmodule.exports = XMLHttpRequest;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst Blob = require('./Blob');\nconst BlobRegistry = require('./BlobRegistry');\n\nimport type {BlobData, BlobOptions, BlobCollector} from './BlobTypes';\nimport NativeBlobModule from './NativeBlobModule';\nimport invariant from 'invariant';\n\n/*eslint-disable no-bitwise */\n/*eslint-disable eqeqeq */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuidv4(): string {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n    const r = (Math.random() * 16) | 0,\n      v = c == 'x' ? r : (r & 0x3) | 0x8;\n    return v.toString(16);\n  });\n}\n\n// **Temporary workaround**\n// TODO(#24654): Use turbomodules for the Blob module.\n// Blob collector is a jsi::HostObject that is used by native to know\n// when the a Blob instance is deallocated. This allows to free the\n// underlying native resources. This is a hack to workaround the fact\n// that the current bridge infra doesn't allow to track js objects\n// deallocation. Ideally the whole Blob object should be a jsi::HostObject.\nfunction createBlobCollector(blobId: string): BlobCollector | null {\n  if (global.__blobCollectorProvider == null) {\n    return null;\n  } else {\n    return global.__blobCollectorProvider(blobId);\n  }\n}\n\n/**\n * Module to manage blobs. Wrapper around the native blob module.\n */\nclass BlobManager {\n  /**\n   * If the native blob module is available.\n   */\n  static isAvailable: boolean = !!NativeBlobModule;\n\n  /**\n   * Create blob from existing array of blobs.\n   */\n  static createFromParts(\n    parts: Array<Blob | string>,\n    options?: BlobOptions,\n  ): Blob {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    const blobId = uuidv4();\n    const items = parts.map(part => {\n      if (\n        part instanceof ArrayBuffer ||\n        (global.ArrayBufferView && part instanceof global.ArrayBufferView)\n      ) {\n        throw new Error(\n          \"Creating blobs from 'ArrayBuffer' and 'ArrayBufferView' are not supported\",\n        );\n      }\n      if (part instanceof Blob) {\n        return {\n          data: part.data,\n          type: 'blob',\n        };\n      } else {\n        return {\n          data: String(part),\n          type: 'string',\n        };\n      }\n    });\n    const size = items.reduce((acc, curr) => {\n      if (curr.type === 'string') {\n        return acc + global.unescape(encodeURI(curr.data)).length;\n      } else {\n        return acc + curr.data.size;\n      }\n    }, 0);\n\n    NativeBlobModule.createFromParts(items, blobId);\n\n    return BlobManager.createFromOptions({\n      blobId,\n      offset: 0,\n      size,\n      type: options ? options.type : '',\n      lastModified: options ? options.lastModified : Date.now(),\n    });\n  }\n\n  /**\n   * Create blob instance from blob data from native.\n   * Used internally by modules like XHR, WebSocket, etc.\n   */\n  static createFromOptions(options: BlobData): Blob {\n    BlobRegistry.register(options.blobId);\n    return Object.assign(Object.create(Blob.prototype), {\n      data:\n        // Reuse the collector instance when creating from an existing blob.\n        // This will make sure that the underlying resource is only deallocated\n        // when all blobs that refer to it are deallocated.\n        options.__collector == null\n          ? {\n              ...options,\n              __collector: createBlobCollector(options.blobId),\n            }\n          : options,\n    });\n  }\n\n  /**\n   * Deallocate resources for a blob.\n   */\n  static release(blobId: string): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    BlobRegistry.unregister(blobId);\n    if (BlobRegistry.has(blobId)) {\n      return;\n    }\n    NativeBlobModule.release(blobId);\n  }\n\n  /**\n   * Inject the blob content handler in the networking module to support blob\n   * requests and responses.\n   */\n  static addNetworkingHandler(): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.addNetworkingHandler();\n  }\n\n  /**\n   * Indicate the websocket should return a blob for incoming binary\n   * messages.\n   */\n  static addWebSocketHandler(socketId: number): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.addWebSocketHandler(socketId);\n  }\n\n  /**\n   * Indicate the websocket should no longer return a blob for incoming\n   * binary messages.\n   */\n  static removeWebSocketHandler(socketId: number): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.removeWebSocketHandler(socketId);\n  }\n\n  /**\n   * Send a blob message to a websocket.\n   */\n  static sendOverSocket(blob: Blob, socketId: number): void {\n    invariant(NativeBlobModule, 'NativeBlobModule is available.');\n\n    NativeBlobModule.sendOverSocket(blob.data, socketId);\n  }\n}\n\nmodule.exports = BlobManager;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|};\n  +addNetworkingHandler: () => void;\n  +addWebSocketHandler: (id: number) => void;\n  +removeWebSocketHandler: (id: number) => void;\n  +sendOverSocket: (blob: Object, socketID: number) => void;\n  +createFromParts: (parts: Array<Object>, withId: string) => void;\n  +release: (blobId: string) => void;\n}\n\nconst NativeModule = TurboModuleRegistry.get<Spec>('BlobModule');\n\nlet constants = null;\nlet NativeBlobModule = null;\n\nif (NativeModule != null) {\n  NativeBlobModule = {\n    getConstants(): {|BLOB_URI_SCHEME: ?string, BLOB_URI_HOST: ?string|} {\n      if (constants == null) {\n        constants = NativeModule.getConstants();\n      }\n      return constants;\n    },\n    addNetworkingHandler(): void {\n      NativeModule.addNetworkingHandler();\n    },\n    addWebSocketHandler(id: number): void {\n      NativeModule.addWebSocketHandler(id);\n    },\n    removeWebSocketHandler(id: number): void {\n      NativeModule.removeWebSocketHandler(id);\n    },\n    sendOverSocket(blob: Object, socketID: number): void {\n      NativeModule.sendOverSocket(blob, socketID);\n    },\n    createFromParts(parts: Array<Object>, withId: string): void {\n      NativeModule.createFromParts(parts, withId);\n    },\n    release(blobId: string): void {\n      NativeModule.release(blobId);\n    },\n  };\n}\n\nexport default (NativeBlobModule: ?Spec);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {BlobData, BlobOptions} from './BlobTypes';\n\n/**\n * Opaque JS representation of some binary data in native.\n *\n * The API is modeled after the W3C Blob API, with one caveat\n * regarding explicit deallocation. Refer to the `close()`\n * method for further details.\n *\n * Example usage in a React component:\n *\n *   class WebSocketImage extends React.Component {\n *      state = {blob: null};\n *      componentDidMount() {\n *        let ws = this.ws = new WebSocket(...);\n *        ws.binaryType = 'blob';\n *        ws.onmessage = (event) => {\n *          if (this.state.blob) {\n *            this.state.blob.close();\n *          }\n *          this.setState({blob: event.data});\n *        };\n *      }\n *      componentUnmount() {\n *        if (this.state.blob) {\n *          this.state.blob.close();\n *        }\n *        this.ws.close();\n *      }\n *      render() {\n *        if (!this.state.blob) {\n *          return <View />;\n *        }\n *        return <Image source={{uri: URL.createObjectURL(this.state.blob)}} />;\n *      }\n *   }\n *\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob\n */\nclass Blob {\n  _data: ?BlobData;\n\n  /**\n   * Constructor for JS consumers.\n   * Currently we only support creating Blobs from other Blobs.\n   * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob\n   */\n  constructor(parts: Array<Blob | string> = [], options?: BlobOptions) {\n    const BlobManager = require('./BlobManager');\n    this.data = BlobManager.createFromParts(parts, options).data;\n  }\n\n  /*\n   * This method is used to create a new Blob object containing\n   * the data in the specified range of bytes of the source Blob.\n   * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  set data(data: ?BlobData) {\n    this._data = data;\n  }\n\n  // $FlowFixMe[unsafe-getters-setters]\n  get data(): BlobData {\n    if (!this._data) {\n      throw new Error('Blob has been closed and is no longer available');\n    }\n\n    return this._data;\n  }\n\n  slice(start?: number, end?: number): Blob {\n    const BlobManager = require('./BlobManager');\n    let {offset, size} = this.data;\n\n    if (typeof start === 'number') {\n      if (start > size) {\n        // $FlowFixMe[reassign-const]\n        start = size;\n      }\n      offset += start;\n      size -= start;\n\n      if (typeof end === 'number') {\n        if (end < 0) {\n          // $FlowFixMe[reassign-const]\n          end = this.size + end;\n        }\n        size = end - start;\n      }\n    }\n    return BlobManager.createFromOptions({\n      blobId: this.data.blobId,\n      offset,\n      size,\n    });\n  }\n\n  /**\n   * This method is in the standard, but not actually implemented by\n   * any browsers at this point. It's important for how Blobs work in\n   * React Native, however, since we cannot de-allocate resources automatically,\n   * so consumers need to explicitly de-allocate them.\n   *\n   * Note that the semantics around Blobs created via `blob.slice()`\n   * and `new Blob([blob])` are different. `blob.slice()` creates a\n   * new *view* onto the same binary data, so calling `close()` on any\n   * of those views is enough to deallocate the data, whereas\n   * `new Blob([blob, ...])` actually copies the data in memory.\n   */\n  close() {\n    const BlobManager = require('./BlobManager');\n    BlobManager.release(this.data.blobId);\n    this.data = null;\n  }\n\n  /**\n   * Size of the data contained in the Blob object, in bytes.\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  get size(): number {\n    return this.data.size;\n  }\n\n  /*\n   * String indicating the MIME type of the data contained in the Blob.\n   * If the type is unknown, this string is empty.\n   */\n  // $FlowFixMe[unsafe-getters-setters]\n  get type(): string {\n    return this.data.type || '';\n  }\n}\n\nmodule.exports = Blob;\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 * @flow strict\n * @format\n */\n\nconst registry: {[key: string]: number, ...} = {};\n\nconst register = (id: string) => {\n  if (registry[id]) {\n    registry[id]++;\n  } else {\n    registry[id] = 1;\n  }\n};\n\nconst unregister = (id: string) => {\n  if (registry[id]) {\n    registry[id]--;\n    if (registry[id] <= 0) {\n      delete registry[id];\n    }\n  }\n};\n\nconst has = (id: string): number | boolean => {\n  return registry[id] && registry[id] > 0;\n};\n\nmodule.exports = {\n  register,\n  unregister,\n  has,\n};\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n    const retv = privateData.get(event);\n    console.assert(\n        retv != null,\n        \"'this' is expected an Event object, but got\",\n        event\n    );\n    return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n    if (data.passiveListener != null) {\n        if (\n            typeof console !== \"undefined\" &&\n            typeof console.error === \"function\"\n        ) {\n            console.error(\n                \"Unable to preventDefault inside passive event listener invocation.\",\n                data.passiveListener\n            );\n        }\n        return\n    }\n    if (!data.event.cancelable) {\n        return\n    }\n\n    data.canceled = true;\n    if (typeof data.event.preventDefault === \"function\") {\n        data.event.preventDefault();\n    }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n    privateData.set(this, {\n        eventTarget,\n        event,\n        eventPhase: 2,\n        currentTarget: eventTarget,\n        canceled: false,\n        stopped: false,\n        immediateStopped: false,\n        passiveListener: null,\n        timeStamp: event.timeStamp || Date.now(),\n    });\n\n    // https://heycam.github.io/webidl/#Unforgeable\n    Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n    // Define accessors\n    const keys = Object.keys(event);\n    for (let i = 0; i < keys.length; ++i) {\n        const key = keys[i];\n        if (!(key in this)) {\n            Object.defineProperty(this, key, defineRedirectDescriptor(key));\n        }\n    }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n    /**\n     * The type of this event.\n     * @type {string}\n     */\n    get type() {\n        return pd(this).event.type\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     */\n    get target() {\n        return pd(this).eventTarget\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     */\n    get currentTarget() {\n        return pd(this).currentTarget\n    },\n\n    /**\n     * @returns {EventTarget[]} The composed path of this event.\n     */\n    composedPath() {\n        const currentTarget = pd(this).currentTarget;\n        if (currentTarget == null) {\n            return []\n        }\n        return [currentTarget]\n    },\n\n    /**\n     * Constant of NONE.\n     * @type {number}\n     */\n    get NONE() {\n        return 0\n    },\n\n    /**\n     * Constant of CAPTURING_PHASE.\n     * @type {number}\n     */\n    get CAPTURING_PHASE() {\n        return 1\n    },\n\n    /**\n     * Constant of AT_TARGET.\n     * @type {number}\n     */\n    get AT_TARGET() {\n        return 2\n    },\n\n    /**\n     * Constant of BUBBLING_PHASE.\n     * @type {number}\n     */\n    get BUBBLING_PHASE() {\n        return 3\n    },\n\n    /**\n     * The target of this event.\n     * @type {number}\n     */\n    get eventPhase() {\n        return pd(this).eventPhase\n    },\n\n    /**\n     * Stop event bubbling.\n     * @returns {void}\n     */\n    stopPropagation() {\n        const data = pd(this);\n\n        data.stopped = true;\n        if (typeof data.event.stopPropagation === \"function\") {\n            data.event.stopPropagation();\n        }\n    },\n\n    /**\n     * Stop event bubbling.\n     * @returns {void}\n     */\n    stopImmediatePropagation() {\n        const data = pd(this);\n\n        data.stopped = true;\n        data.immediateStopped = true;\n        if (typeof data.event.stopImmediatePropagation === \"function\") {\n            data.event.stopImmediatePropagation();\n        }\n    },\n\n    /**\n     * The flag to be bubbling.\n     * @type {boolean}\n     */\n    get bubbles() {\n        return Boolean(pd(this).event.bubbles)\n    },\n\n    /**\n     * The flag to be cancelable.\n     * @type {boolean}\n     */\n    get cancelable() {\n        return Boolean(pd(this).event.cancelable)\n    },\n\n    /**\n     * Cancel this event.\n     * @returns {void}\n     */\n    preventDefault() {\n        setCancelFlag(pd(this));\n    },\n\n    /**\n     * The flag to indicate cancellation state.\n     * @type {boolean}\n     */\n    get defaultPrevented() {\n        return pd(this).canceled\n    },\n\n    /**\n     * The flag to be composed.\n     * @type {boolean}\n     */\n    get composed() {\n        return Boolean(pd(this).event.composed)\n    },\n\n    /**\n     * The unix time of this event.\n     * @type {number}\n     */\n    get timeStamp() {\n        return pd(this).timeStamp\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     * @deprecated\n     */\n    get srcElement() {\n        return pd(this).eventTarget\n    },\n\n    /**\n     * The flag to stop event bubbling.\n     * @type {boolean}\n     * @deprecated\n     */\n    get cancelBubble() {\n        return pd(this).stopped\n    },\n    set cancelBubble(value) {\n        if (!value) {\n            return\n        }\n        const data = pd(this);\n\n        data.stopped = true;\n        if (typeof data.event.cancelBubble === \"boolean\") {\n            data.event.cancelBubble = true;\n        }\n    },\n\n    /**\n     * The flag to indicate cancellation state.\n     * @type {boolean}\n     * @deprecated\n     */\n    get returnValue() {\n        return !pd(this).canceled\n    },\n    set returnValue(value) {\n        if (!value) {\n            setCancelFlag(pd(this));\n        }\n    },\n\n    /**\n     * Initialize this event object. But do nothing under event dispatching.\n     * @param {string} type The event type.\n     * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n     * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n     * @deprecated\n     */\n    initEvent() {\n        // Do nothing.\n    },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n    value: Event,\n    configurable: true,\n    writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n    Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n    // Make association for wrappers.\n    wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n    return {\n        get() {\n            return pd(this).event[key]\n        },\n        set(value) {\n            pd(this).event[key] = value;\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n    return {\n        value() {\n            const event = pd(this).event;\n            return event[key].apply(event, arguments)\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n    const keys = Object.keys(proto);\n    if (keys.length === 0) {\n        return BaseEvent\n    }\n\n    /** CustomEvent */\n    function CustomEvent(eventTarget, event) {\n        BaseEvent.call(this, eventTarget, event);\n    }\n\n    CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n        constructor: { value: CustomEvent, configurable: true, writable: true },\n    });\n\n    // Define accessors.\n    for (let i = 0; i < keys.length; ++i) {\n        const key = keys[i];\n        if (!(key in BaseEvent.prototype)) {\n            const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n            const isFunc = typeof descriptor.value === \"function\";\n            Object.defineProperty(\n                CustomEvent.prototype,\n                key,\n                isFunc\n                    ? defineCallDescriptor(key)\n                    : defineRedirectDescriptor(key)\n            );\n        }\n    }\n\n    return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n    if (proto == null || proto === Object.prototype) {\n        return Event\n    }\n\n    let wrapper = wrappers.get(proto);\n    if (wrapper == null) {\n        wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n        wrappers.set(proto, wrapper);\n    }\n    return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n    const Wrapper = getWrapper(Object.getPrototypeOf(event));\n    return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n    return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n    pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n    pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n    pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n    return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n    const listeners = listenersMap.get(eventTarget);\n    if (listeners == null) {\n        throw new TypeError(\n            \"'this' is expected an EventTarget object, but got another value.\"\n        )\n    }\n    return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n    return {\n        get() {\n            const listeners = getListeners(this);\n            let node = listeners.get(eventName);\n            while (node != null) {\n                if (node.listenerType === ATTRIBUTE) {\n                    return node.listener\n                }\n                node = node.next;\n            }\n            return null\n        },\n\n        set(listener) {\n            if (typeof listener !== \"function\" && !isObject(listener)) {\n                listener = null; // eslint-disable-line no-param-reassign\n            }\n            const listeners = getListeners(this);\n\n            // Traverse to the tail while removing old value.\n            let prev = null;\n            let node = listeners.get(eventName);\n            while (node != null) {\n                if (node.listenerType === ATTRIBUTE) {\n                    // Remove old value.\n                    if (prev !== null) {\n                        prev.next = node.next;\n                    } else if (node.next !== null) {\n                        listeners.set(eventName, node.next);\n                    } else {\n                        listeners.delete(eventName);\n                    }\n                } else {\n                    prev = node;\n                }\n\n                node = node.next;\n            }\n\n            // Add new value.\n            if (listener !== null) {\n                const newNode = {\n                    listener,\n                    listenerType: ATTRIBUTE,\n                    passive: false,\n                    once: false,\n                    next: null,\n                };\n                if (prev === null) {\n                    listeners.set(eventName, newNode);\n                } else {\n                    prev.next = newNode;\n                }\n            }\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n    Object.defineProperty(\n        eventTargetPrototype,\n        `on${eventName}`,\n        defineEventAttributeDescriptor(eventName)\n    );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n    /** CustomEventTarget */\n    function CustomEventTarget() {\n        EventTarget.call(this);\n    }\n\n    CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n        constructor: {\n            value: CustomEventTarget,\n            configurable: true,\n            writable: true,\n        },\n    });\n\n    for (let i = 0; i < eventNames.length; ++i) {\n        defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n    }\n\n    return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n *     class A extends EventTarget {}\n *     class B extends EventTarget(\"message\") {}\n *     class C extends EventTarget(\"message\", \"error\") {}\n *     class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n    /*eslint-disable consistent-return */\n    if (this instanceof EventTarget) {\n        listenersMap.set(this, new Map());\n        return\n    }\n    if (arguments.length === 1 && Array.isArray(arguments[0])) {\n        return defineCustomEventTarget(arguments[0])\n    }\n    if (arguments.length > 0) {\n        const types = new Array(arguments.length);\n        for (let i = 0; i < arguments.length; ++i) {\n            types[i] = arguments[i];\n        }\n        return defineCustomEventTarget(types)\n    }\n    throw new TypeError(\"Cannot call a class as a function\")\n    /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n    /**\n     * Add a given listener to this event target.\n     * @param {string} eventName The event name to add.\n     * @param {Function} listener The listener to add.\n     * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n     * @returns {void}\n     */\n    addEventListener(eventName, listener, options) {\n        if (listener == null) {\n            return\n        }\n        if (typeof listener !== \"function\" && !isObject(listener)) {\n            throw new TypeError(\"'listener' should be a function or an object.\")\n        }\n\n        const listeners = getListeners(this);\n        const optionsIsObj = isObject(options);\n        const capture = optionsIsObj\n            ? Boolean(options.capture)\n            : Boolean(options);\n        const listenerType = capture ? CAPTURE : BUBBLE;\n        const newNode = {\n            listener,\n            listenerType,\n            passive: optionsIsObj && Boolean(options.passive),\n            once: optionsIsObj && Boolean(options.once),\n            next: null,\n        };\n\n        // Set it as the first node if the first node is null.\n        let node = listeners.get(eventName);\n        if (node === undefined) {\n            listeners.set(eventName, newNode);\n            return\n        }\n\n        // Traverse to the tail while checking duplication..\n        let prev = null;\n        while (node != null) {\n            if (\n                node.listener === listener &&\n                node.listenerType === listenerType\n            ) {\n                // Should ignore duplication.\n                return\n            }\n            prev = node;\n            node = node.next;\n        }\n\n        // Add it.\n        prev.next = newNode;\n    },\n\n    /**\n     * Remove a given listener from this event target.\n     * @param {string} eventName The event name to remove.\n     * @param {Function} listener The listener to remove.\n     * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n     * @returns {void}\n     */\n    removeEventListener(eventName, listener, options) {\n        if (listener == null) {\n            return\n        }\n\n        const listeners = getListeners(this);\n        const capture = isObject(options)\n            ? Boolean(options.capture)\n            : Boolean(options);\n        const listenerType = capture ? CAPTURE : BUBBLE;\n\n        let prev = null;\n        let node = listeners.get(eventName);\n        while (node != null) {\n            if (\n                node.listener === listener &&\n                node.listenerType === listenerType\n            ) {\n                if (prev !== null) {\n                    prev.next = node.next;\n                } else if (node.next !== null) {\n                    listeners.set(eventName, node.next);\n                } else {\n                    listeners.delete(eventName);\n                }\n                return\n            }\n\n            prev = node;\n            node = node.next;\n        }\n    },\n\n    /**\n     * Dispatch a given event.\n     * @param {Event|{type:string}} event The event to dispatch.\n     * @returns {boolean} `false` if canceled.\n     */\n    dispatchEvent(event) {\n        if (event == null || typeof event.type !== \"string\") {\n            throw new TypeError('\"event.type\" should be a string.')\n        }\n\n        // If listeners aren't registered, terminate.\n        const listeners = getListeners(this);\n        const eventName = event.type;\n        let node = listeners.get(eventName);\n        if (node == null) {\n            return true\n        }\n\n        // Since we cannot rewrite several properties, so wrap object.\n        const wrappedEvent = wrapEvent(this, event);\n\n        // This doesn't process capturing phase and bubbling phase.\n        // This isn't participating in a tree.\n        let prev = null;\n        while (node != null) {\n            // Remove this listener if it's once\n            if (node.once) {\n                if (prev !== null) {\n                    prev.next = node.next;\n                } else if (node.next !== null) {\n                    listeners.set(eventName, node.next);\n                } else {\n                    listeners.delete(eventName);\n                }\n            } else {\n                prev = node;\n            }\n\n            // Call this listener\n            setPassiveListener(\n                wrappedEvent,\n                node.passive ? node.listener : null\n            );\n            if (typeof node.listener === \"function\") {\n                try {\n                    node.listener.call(this, wrappedEvent);\n                } catch (err) {\n                    if (\n                        typeof console !== \"undefined\" &&\n                        typeof console.error === \"function\"\n                    ) {\n                        console.error(err);\n                    }\n                }\n            } else if (\n                node.listenerType !== ATTRIBUTE &&\n                typeof node.listener.handleEvent === \"function\"\n            ) {\n                node.listener.handleEvent(wrappedEvent);\n            }\n\n            // Break if `event.stopImmediatePropagation` was called.\n            if (isStopped(wrappedEvent)) {\n                break\n            }\n\n            node = node.next;\n        }\n        setPassiveListener(wrappedEvent, null);\n        setEventPhase(wrappedEvent, 0);\n        setCurrentTarget(wrappedEvent, null);\n\n        return !wrappedEvent.defaultPrevented\n    },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n    value: EventTarget,\n    configurable: true,\n    writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n    typeof window !== \"undefined\" &&\n    typeof window.EventTarget !== \"undefined\"\n) {\n    Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexports.defineEventAttribute = defineEventAttribute;\nexports.EventTarget = EventTarget;\nexports.default = EventTarget;\n\nmodule.exports = EventTarget\nmodule.exports.EventTarget = module.exports[\"default\"] = EventTarget\nmodule.exports.defineEventAttribute = defineEventAttribute\n//# sourceMappingURL=event-target-shim.js.map\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport createPerformanceLogger from './createPerformanceLogger';\nimport type {IPerformanceLogger} from './createPerformanceLogger';\n\n/**\n * This is a global shared instance of IPerformanceLogger that is created with\n * createPerformanceLogger().\n * This logger should be used only for global performance metrics like the ones\n * that are logged during loading bundle. If you want to log something from your\n * React component you should use PerformanceLoggerContext instead.\n */\nconst GlobalPerformanceLogger: IPerformanceLogger = createPerformanceLogger();\n\nmodule.exports = GlobalPerformanceLogger;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst Systrace = require('../Performance/Systrace');\n\nconst infoLog = require('./infoLog');\n\nexport type Timespan = {\n  startTime: number,\n  endTime?: number,\n  totalTime?: number,\n  startExtras?: Extras,\n  endExtras?: Extras,\n};\n\n// Extra values should be serializable primitives\nexport type ExtraValue = number | string | boolean;\n\nexport type Extras = {[key: string]: ExtraValue};\n\nexport interface IPerformanceLogger {\n  addTimespan(\n    key: string,\n    startTime: number,\n    endTime: number,\n    startExtras?: Extras,\n    endExtras?: Extras,\n  ): void;\n  append(logger: IPerformanceLogger): void;\n  clear(): void;\n  clearCompleted(): void;\n  close(): void;\n  currentTimestamp(): number;\n  getExtras(): $ReadOnly<{[key: string]: ?ExtraValue, ...}>;\n  getPoints(): $ReadOnly<{[key: string]: ?number, ...}>;\n  getPointExtras(): $ReadOnly<{[key: string]: ?Extras, ...}>;\n  getTimespans(): $ReadOnly<{[key: string]: ?Timespan, ...}>;\n  hasTimespan(key: string): boolean;\n  isClosed(): boolean;\n  logEverything(): void;\n  markPoint(key: string, timestamp?: number, extras?: Extras): void;\n  removeExtra(key: string): ?ExtraValue;\n  setExtra(key: string, value: ExtraValue): void;\n  startTimespan(key: string, timestamp?: number, extras?: Extras): void;\n  stopTimespan(key: string, timestamp?: number, extras?: Extras): void;\n}\n\nconst _cookies: {[key: string]: number, ...} = {};\n\nconst PRINT_TO_CONSOLE: false = false; // Type as false to prevent accidentally committing `true`;\n\nexport const getCurrentTimestamp: () => number =\n  global.nativeQPLTimestamp ?? global.performance.now.bind(global.performance);\n\nclass PerformanceLogger implements IPerformanceLogger {\n  _timespans: {[key: string]: ?Timespan} = {};\n  _extras: {[key: string]: ?ExtraValue} = {};\n  _points: {[key: string]: ?number} = {};\n  _pointExtras: {[key: string]: ?Extras, ...} = {};\n  _closed: boolean = false;\n\n  addTimespan(\n    key: string,\n    startTime: number,\n    endTime: number,\n    startExtras?: Extras,\n    endExtras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog('PerformanceLogger: addTimespan - has closed ignoring: ', key);\n      }\n      return;\n    }\n    if (this._timespans[key]) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: Attempting to add a timespan that already exists ',\n          key,\n        );\n      }\n      return;\n    }\n\n    this._timespans[key] = {\n      startTime,\n      endTime,\n      totalTime: endTime - (startTime || 0),\n      startExtras,\n      endExtras,\n    };\n  }\n\n  append(performanceLogger: IPerformanceLogger) {\n    this._timespans = {\n      ...performanceLogger.getTimespans(),\n      ...this._timespans,\n    };\n    this._extras = {...performanceLogger.getExtras(), ...this._extras};\n    this._points = {...performanceLogger.getPoints(), ...this._points};\n    this._pointExtras = {\n      ...performanceLogger.getPointExtras(),\n      ...this._pointExtras,\n    };\n  }\n\n  clear() {\n    this._timespans = {};\n    this._extras = {};\n    this._points = {};\n    if (PRINT_TO_CONSOLE) {\n      infoLog('PerformanceLogger.js', 'clear');\n    }\n  }\n\n  clearCompleted() {\n    for (const key in this._timespans) {\n      if (this._timespans[key]?.totalTime != null) {\n        delete this._timespans[key];\n      }\n    }\n    this._extras = {};\n    this._points = {};\n    if (PRINT_TO_CONSOLE) {\n      infoLog('PerformanceLogger.js', 'clearCompleted');\n    }\n  }\n\n  close() {\n    this._closed = true;\n  }\n\n  currentTimestamp() {\n    return getCurrentTimestamp();\n  }\n\n  getExtras() {\n    return this._extras;\n  }\n\n  getPoints() {\n    return this._points;\n  }\n\n  getPointExtras() {\n    return this._pointExtras;\n  }\n\n  getTimespans() {\n    return this._timespans;\n  }\n\n  hasTimespan(key: string) {\n    return !!this._timespans[key];\n  }\n\n  isClosed() {\n    return this._closed;\n  }\n\n  logEverything() {\n    if (PRINT_TO_CONSOLE) {\n      // log timespans\n      for (const key in this._timespans) {\n        if (this._timespans[key]?.totalTime != null) {\n          infoLog(key + ': ' + this._timespans[key].totalTime + 'ms');\n        }\n      }\n\n      // log extras\n      infoLog(this._extras);\n\n      // log points\n      for (const key in this._points) {\n        if (this._points[key] != null) {\n          infoLog(key + ': ' + this._points[key] + 'ms');\n        }\n      }\n    }\n  }\n\n  markPoint(\n    key: string,\n    timestamp?: number = getCurrentTimestamp(),\n    extras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog('PerformanceLogger: markPoint - has closed ignoring: ', key);\n      }\n      return;\n    }\n    if (this._points[key] != null) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: Attempting to mark a point that has been already logged ',\n          key,\n        );\n      }\n      return;\n    }\n    this._points[key] = timestamp;\n    if (extras) {\n      this._pointExtras[key] = extras;\n    }\n  }\n\n  removeExtra(key: string): ?ExtraValue {\n    const value = this._extras[key];\n    delete this._extras[key];\n    return value;\n  }\n\n  setExtra(key: string, value: ExtraValue) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog('PerformanceLogger: setExtra - has closed ignoring: ', key);\n      }\n      return;\n    }\n\n    if (this._extras.hasOwnProperty(key)) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: Attempting to set an extra that already exists ',\n          {key, currentValue: this._extras[key], attemptedValue: value},\n        );\n      }\n      return;\n    }\n    this._extras[key] = value;\n  }\n\n  startTimespan(\n    key: string,\n    timestamp?: number = getCurrentTimestamp(),\n    extras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: startTimespan - has closed ignoring: ',\n          key,\n        );\n      }\n      return;\n    }\n\n    if (this._timespans[key]) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: Attempting to start a timespan that already exists ',\n          key,\n        );\n      }\n      return;\n    }\n\n    this._timespans[key] = {\n      startTime: timestamp,\n      startExtras: extras,\n    };\n    _cookies[key] = Systrace.beginAsyncEvent(key);\n    if (PRINT_TO_CONSOLE) {\n      infoLog('PerformanceLogger.js', 'start: ' + key);\n    }\n  }\n\n  stopTimespan(\n    key: string,\n    timestamp?: number = getCurrentTimestamp(),\n    extras?: Extras,\n  ) {\n    if (this._closed) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog('PerformanceLogger: stopTimespan - has closed ignoring: ', key);\n      }\n      return;\n    }\n\n    const timespan = this._timespans[key];\n    if (!timespan || timespan.startTime == null) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: Attempting to end a timespan that has not started ',\n          key,\n        );\n      }\n      return;\n    }\n    if (timespan.endTime != null) {\n      if (PRINT_TO_CONSOLE && __DEV__) {\n        infoLog(\n          'PerformanceLogger: Attempting to end a timespan that has already ended ',\n          key,\n        );\n      }\n      return;\n    }\n\n    timespan.endExtras = extras;\n    timespan.endTime = timestamp;\n    timespan.totalTime = timespan.endTime - (timespan.startTime || 0);\n    if (PRINT_TO_CONSOLE) {\n      infoLog('PerformanceLogger.js', 'end: ' + key);\n    }\n\n    if (_cookies[key] != null) {\n      Systrace.endAsyncEvent(key, _cookies[key]);\n      delete _cookies[key];\n    }\n  }\n}\n\n/**\n * This function creates performance loggers that can be used to collect and log\n * various performance data such as timespans, points and extras.\n * The loggers need to have minimal overhead since they're used in production.\n */\nexport default function createPerformanceLogger(): IPerformanceLogger {\n  return new PerformanceLogger();\n}\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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Intentional info-level logging for clear separation from ad-hoc console debug logging.\n */\nfunction infoLog(...args: Array<mixed>): void {\n  return console.log(...args);\n}\n\nmodule.exports = infoLog;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport NativeNetworkingIOS from './NativeNetworkingIOS';\nimport type {NativeResponseType} from './XMLHttpRequest';\nimport convertRequestBody from './convertRequestBody';\nimport type {RequestBody} from './convertRequestBody';\n\nclass RCTNetworking extends NativeEventEmitter {\n  constructor() {\n    const disableCallsIntoModule =\n      typeof global.__disableRCTNetworkingExtraneousModuleCalls === 'function'\n        ? global.__disableRCTNetworkingExtraneousModuleCalls()\n        : false;\n\n    super(NativeNetworkingIOS, {\n      __SECRET_DISABLE_CALLS_INTO_MODULE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: disableCallsIntoModule,\n    });\n  }\n\n  sendRequest(\n    method: string,\n    trackingName: string,\n    url: string,\n    headers: {...},\n    data: RequestBody,\n    responseType: NativeResponseType,\n    incrementalUpdates: boolean,\n    timeout: number,\n    callback: (requestId: number) => void,\n    withCredentials: boolean,\n  ) {\n    const body = convertRequestBody(data);\n    NativeNetworkingIOS.sendRequest(\n      {\n        method,\n        url,\n        data: {...body, trackingName},\n        headers,\n        responseType,\n        incrementalUpdates,\n        timeout,\n        withCredentials,\n      },\n      callback,\n    );\n  }\n\n  abortRequest(requestId: number) {\n    NativeNetworkingIOS.abortRequest(requestId);\n  }\n\n  clearCookies(callback: (result: boolean) => void) {\n    NativeNetworkingIOS.clearCookies(callback);\n  }\n}\n\nmodule.exports = (new RCTNetworking(): RCTNetworking);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport Platform from '../Utilities/Platform';\nimport EventEmitter from '../vendor/emitter/EventEmitter';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport RCTDeviceEventEmitter from './RCTDeviceEventEmitter';\nimport invariant from 'invariant';\n\ntype NativeModule = {\n  +addListener: (eventType: string) => void,\n  +removeListeners: (count: number) => void,\n  ...\n};\n\ntype NativeEventEmitterOptions = $ReadOnly<{|\n  __SECRET_DISABLE_CALLS_INTO_MODULE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: boolean,\n|}>;\n\nconst DEFAULT_NATIVE_EVENT_EMITTER_OPTIONS = {\n  __SECRET_DISABLE_CALLS_INTO_MODULE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: false,\n};\n\n/**\n * Abstract base class for implementing event-emitting modules. This implements\n * a subset of the standard EventEmitter node module API.\n */\nexport default class NativeEventEmitter extends EventEmitter {\n  _nativeModule: ?NativeModule;\n  _disableCallsIntoModule: boolean;\n\n  constructor(\n    nativeModule: ?NativeModule,\n    options: NativeEventEmitterOptions = DEFAULT_NATIVE_EVENT_EMITTER_OPTIONS,\n  ) {\n    super(RCTDeviceEventEmitter.sharedSubscriber);\n    this._disableCallsIntoModule =\n      options.__SECRET_DISABLE_CALLS_INTO_MODULE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n    if (Platform.OS === 'ios') {\n      invariant(nativeModule, 'Native module cannot be null.');\n      this._nativeModule = nativeModule;\n    }\n  }\n\n  addListener(\n    eventType: string,\n    listener: Function,\n    context: ?Object,\n  ): EventSubscription {\n    if (this._nativeModule != null && !this._disableCallsIntoModule) {\n      this._nativeModule.addListener(eventType);\n    }\n    return super.addListener(eventType, listener, context);\n  }\n\n  removeAllListeners(eventType: string) {\n    invariant(eventType, 'eventType argument is required.');\n    const count = this.listenerCount(eventType);\n    if (this._nativeModule != null && !this._disableCallsIntoModule) {\n      this._nativeModule.removeListeners(count);\n    }\n    super.removeAllListeners(eventType);\n  }\n\n  removeSubscription(subscription: EventSubscription) {\n    if (this._nativeModule != null && !this._disableCallsIntoModule) {\n      this._nativeModule.removeListeners(1);\n    }\n    super.removeSubscription(subscription);\n  }\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +sendRequest: (\n    query: {|\n      method: string,\n      url: string,\n      data: Object,\n      headers: Object,\n      responseType: string,\n      incrementalUpdates: boolean,\n      timeout: number,\n      withCredentials: boolean,\n    |},\n    callback: (requestId: number) => void,\n  ) => void;\n  +abortRequest: (requestId: number) => void;\n  +clearCookies: (callback: (result: boolean) => void) => void;\n\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('Networking'): Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst binaryToBase64 = require('../Utilities/binaryToBase64');\n\nconst Blob = require('../Blob/Blob');\nconst FormData = require('./FormData');\n\nexport type RequestBody =\n  | string\n  | Blob\n  | FormData\n  | {uri: string, ...}\n  | ArrayBuffer\n  | $ArrayBufferView;\n\nfunction convertRequestBody(body: RequestBody): Object {\n  if (typeof body === 'string') {\n    return {string: body};\n  }\n  if (body instanceof Blob) {\n    return {blob: body.data};\n  }\n  if (body instanceof FormData) {\n    return {formData: body.getParts()};\n  }\n  if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n    // $FlowFixMe: no way to assert that 'body' is indeed an ArrayBufferView\n    return {base64: binaryToBase64(body)};\n  }\n  return body;\n}\n\nmodule.exports = convertRequestBody;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst base64 = require('base64-js');\n\nfunction binaryToBase64(data: ArrayBuffer | $ArrayBufferView): string {\n  if (data instanceof ArrayBuffer) {\n    // $FlowFixMe[reassign-const]\n    data = new Uint8Array(data);\n  }\n  if (data instanceof Uint8Array) {\n    return base64.fromByteArray(data);\n  }\n  if (!ArrayBuffer.isView(data)) {\n    throw new Error('data must be ArrayBuffer or typed array');\n  }\n  // Already checked that `data` is `DataView` in `ArrayBuffer.isView(data)`\n  const {buffer, byteOffset, byteLength} = ((data: $FlowFixMe): DataView);\n  return base64.fromByteArray(new Uint8Array(buffer, byteOffset, byteLength));\n}\n\nmodule.exports = binaryToBase64;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\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 * @format\n * @flow strict\n */\n\n'use strict';\n\ntype FormDataValue = string | {name?: string, type?: string, uri: string};\ntype FormDataNameValuePair = [string, FormDataValue];\n\ntype Headers = {[name: string]: string, ...};\ntype FormDataPart =\n  | {\n      string: string,\n      headers: Headers,\n      ...\n    }\n  | {\n      uri: string,\n      headers: Headers,\n      name?: string,\n      type?: string,\n      ...\n    };\n\n/**\n * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests\n * with mixed data (string, native files) to be submitted via XMLHttpRequest.\n *\n * Example:\n *\n *   var photo = {\n *     uri: uriFromCameraRoll,\n *     type: 'image/jpeg',\n *     name: 'photo.jpg',\n *   };\n *\n *   var body = new FormData();\n *   body.append('authToken', 'secret');\n *   body.append('photo', photo);\n *   body.append('title', 'A beautiful photo!');\n *\n *   xhr.open('POST', serverURL);\n *   xhr.send(body);\n */\nclass FormData {\n  _parts: Array<FormDataNameValuePair>;\n\n  constructor() {\n    this._parts = [];\n  }\n\n  append(key: string, value: FormDataValue) {\n    // The XMLHttpRequest spec doesn't specify if duplicate keys are allowed.\n    // MDN says that any new values should be appended to existing values.\n    // In any case, major browsers allow duplicate keys, so that's what we'll do\n    // too. They'll simply get appended as additional form data parts in the\n    // request body, leaving the server to deal with them.\n    this._parts.push([key, value]);\n  }\n\n  getParts(): Array<FormDataPart> {\n    return this._parts.map(([name, value]) => {\n      const contentDisposition = 'form-data; name=\"' + name + '\"';\n\n      const headers: Headers = {'content-disposition': contentDisposition};\n\n      // The body part is a \"blob\", which in React Native just means\n      // an object with a `uri` attribute. Optionally, it can also\n      // have a `name` and `type` attribute to specify filename and\n      // content type (cf. web Blob interface.)\n      if (typeof value === 'object' && value) {\n        if (typeof value.name === 'string') {\n          headers['content-disposition'] += '; filename=\"' + value.name + '\"';\n        }\n        if (typeof value.type === 'string') {\n          headers['content-type'] = value.type;\n        }\n        return {...value, headers, fieldName: name};\n      }\n      // Convert non-object values to strings as per FormData.append() spec\n      return {string: String(value), headers, fieldName: name};\n    });\n  }\n}\n\nmodule.exports = FormData;\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 * @flow strict\n * @format\n */\n\n/* globals Headers, Request, Response */\n\n'use strict';\n\n// side-effectful require() to put fetch,\n// Headers, Request, Response in global scope\nrequire('whatwg-fetch');\n\nmodule.exports = {fetch, Headers, Request, Response};\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.WHATWGFetch = {})));\n}(this, (function (exports) { 'use strict';\n\n  var global =\n    (typeof globalThis !== 'undefined' && globalThis) ||\n    (typeof self !== 'undefined' && self) ||\n    (typeof global !== 'undefined' && global);\n\n  var support = {\n    searchParams: 'URLSearchParams' in global,\n    iterable: 'Symbol' in global && 'iterator' in Symbol,\n    blob:\n      'FileReader' in global &&\n      'Blob' in global &&\n      (function() {\n        try {\n          new Blob();\n          return true\n        } catch (e) {\n          return false\n        }\n      })(),\n    formData: 'FormData' in global,\n    arrayBuffer: 'ArrayBuffer' in global\n  };\n\n  function isDataView(obj) {\n    return obj && DataView.prototype.isPrototypeOf(obj)\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ];\n\n    var isArrayBufferView =\n      ArrayBuffer.isView ||\n      function(obj) {\n        return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n      };\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name);\n    }\n    if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n      throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value);\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift();\n        return {done: value === undefined, value: value}\n      }\n    };\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      };\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {};\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value);\n      }, this);\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1]);\n      }, this);\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name]);\n      }, this);\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name);\n    value = normalizeValue(value);\n    var oldValue = this.map[name];\n    this.map[name] = oldValue ? oldValue + ', ' + value : value;\n  };\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)];\n  };\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name);\n    return this.has(name) ? this.map[name] : null\n  };\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  };\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value);\n  };\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this);\n      }\n    }\n  };\n\n  Headers.prototype.keys = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push(name);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.values = function() {\n    var items = [];\n    this.forEach(function(value) {\n      items.push(value);\n    });\n    return iteratorFor(items)\n  };\n\n  Headers.prototype.entries = function() {\n    var items = [];\n    this.forEach(function(value, name) {\n      items.push([name, value]);\n    });\n    return iteratorFor(items)\n  };\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true;\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result);\n      };\n      reader.onerror = function() {\n        reject(reader.error);\n      };\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsArrayBuffer(blob);\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader();\n    var promise = fileReaderReady(reader);\n    reader.readAsText(blob);\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf);\n    var chars = new Array(view.length);\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i]);\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength);\n      view.set(new Uint8Array(buf));\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false;\n\n    this._initBody = function(body) {\n      /*\n        fetch-mock wraps the Response object in an ES6 Proxy to\n        provide useful test harness features such as flush. However, on\n        ES5 browsers without fetch or Proxy support pollyfills must be used;\n        the proxy-pollyfill is unable to proxy an attribute unless it exists\n        on the object before the Proxy is created. This change ensures\n        Response.bodyUsed exists on the instance, while maintaining the\n        semantic of setting Request.bodyUsed in the constructor before\n        _initBody is called.\n      */\n      this.bodyUsed = this.bodyUsed;\n      this._bodyInit = body;\n      if (!body) {\n        this._bodyText = '';\n      } else if (typeof body === 'string') {\n        this._bodyText = body;\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body;\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body;\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString();\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer);\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer]);\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body);\n      } else {\n        this._bodyText = body = Object.prototype.toString.call(body);\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8');\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type);\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n      }\n    };\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this);\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      };\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          var isConsumed = consumed(this);\n          if (isConsumed) {\n            return isConsumed\n          }\n          if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n            return Promise.resolve(\n              this._bodyArrayBuffer.buffer.slice(\n                this._bodyArrayBuffer.byteOffset,\n                this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n              )\n            )\n          } else {\n            return Promise.resolve(this._bodyArrayBuffer)\n          }\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      };\n    }\n\n    this.text = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    };\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      };\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    };\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase();\n    return methods.indexOf(upcased) > -1 ? upcased : method\n  }\n\n  function Request(input, options) {\n    if (!(this instanceof Request)) {\n      throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n    }\n\n    options = options || {};\n    var body = options.body;\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url;\n      this.credentials = input.credentials;\n      if (!options.headers) {\n        this.headers = new Headers(input.headers);\n      }\n      this.method = input.method;\n      this.mode = input.mode;\n      this.signal = input.signal;\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit;\n        input.bodyUsed = true;\n      }\n    } else {\n      this.url = String(input);\n    }\n\n    this.credentials = options.credentials || this.credentials || 'same-origin';\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers);\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET');\n    this.mode = options.mode || this.mode || null;\n    this.signal = options.signal || this.signal;\n    this.referrer = null;\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body);\n\n    if (this.method === 'GET' || this.method === 'HEAD') {\n      if (options.cache === 'no-store' || options.cache === 'no-cache') {\n        // Search for a '_' parameter in the query string\n        var reParamSearch = /([?&])_=[^&]*/;\n        if (reParamSearch.test(this.url)) {\n          // If it already exists then set the value with the current time\n          this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n        } else {\n          // Otherwise add a new '_' parameter to the end with the current time\n          var reQueryString = /\\?/;\n          this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n        }\n      }\n    }\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, {body: this._bodyInit})\n  };\n\n  function decode(body) {\n    var form = new FormData();\n    body\n      .trim()\n      .split('&')\n      .forEach(function(bytes) {\n        if (bytes) {\n          var split = bytes.split('=');\n          var name = split.shift().replace(/\\+/g, ' ');\n          var value = split.join('=').replace(/\\+/g, ' ');\n          form.append(decodeURIComponent(name), decodeURIComponent(value));\n        }\n      });\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers();\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n    // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n    // https://github.com/github/fetch/issues/748\n    // https://github.com/zloirock/core-js/issues/751\n    preProcessedHeaders\n      .split('\\r')\n      .map(function(header) {\n        return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n      })\n      .forEach(function(line) {\n        var parts = line.split(':');\n        var key = parts.shift().trim();\n        if (key) {\n          var value = parts.join(':').trim();\n          headers.append(key, value);\n        }\n      });\n    return headers\n  }\n\n  Body.call(Request.prototype);\n\n  function Response(bodyInit, options) {\n    if (!(this instanceof Response)) {\n      throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n    }\n    if (!options) {\n      options = {};\n    }\n\n    this.type = 'default';\n    this.status = options.status === undefined ? 200 : options.status;\n    this.ok = this.status >= 200 && this.status < 300;\n    this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n    this.headers = new Headers(options.headers);\n    this.url = options.url || '';\n    this._initBody(bodyInit);\n  }\n\n  Body.call(Response.prototype);\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  };\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''});\n    response.type = 'error';\n    return response\n  };\n\n  var redirectStatuses = [301, 302, 303, 307, 308];\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  };\n\n  exports.DOMException = global.DOMException;\n  try {\n    new exports.DOMException();\n  } catch (err) {\n    exports.DOMException = function(message, name) {\n      this.message = message;\n      this.name = name;\n      var error = Error(message);\n      this.stack = error.stack;\n    };\n    exports.DOMException.prototype = Object.create(Error.prototype);\n    exports.DOMException.prototype.constructor = exports.DOMException;\n  }\n\n  function fetch(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init);\n\n      if (request.signal && request.signal.aborted) {\n        return reject(new exports.DOMException('Aborted', 'AbortError'))\n      }\n\n      var xhr = new XMLHttpRequest();\n\n      function abortXhr() {\n        xhr.abort();\n      }\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        };\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n        var body = 'response' in xhr ? xhr.response : xhr.responseText;\n        setTimeout(function() {\n          resolve(new Response(body, options));\n        }, 0);\n      };\n\n      xhr.onerror = function() {\n        setTimeout(function() {\n          reject(new TypeError('Network request failed'));\n        }, 0);\n      };\n\n      xhr.ontimeout = function() {\n        setTimeout(function() {\n          reject(new TypeError('Network request failed'));\n        }, 0);\n      };\n\n      xhr.onabort = function() {\n        setTimeout(function() {\n          reject(new exports.DOMException('Aborted', 'AbortError'));\n        }, 0);\n      };\n\n      function fixUrl(url) {\n        try {\n          return url === '' && global.location.href ? global.location.href : url\n        } catch (e) {\n          return url\n        }\n      }\n\n      xhr.open(request.method, fixUrl(request.url), true);\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true;\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false;\n      }\n\n      if ('responseType' in xhr) {\n        if (support.blob) {\n          xhr.responseType = 'blob';\n        } else if (\n          support.arrayBuffer &&\n          request.headers.get('Content-Type') &&\n          request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n        ) {\n          xhr.responseType = 'arraybuffer';\n        }\n      }\n\n      if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n        Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n          xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n        });\n      } else {\n        request.headers.forEach(function(value, name) {\n          xhr.setRequestHeader(name, value);\n        });\n      }\n\n      if (request.signal) {\n        request.signal.addEventListener('abort', abortXhr);\n\n        xhr.onreadystatechange = function() {\n          // DONE (success or failure)\n          if (xhr.readyState === 4) {\n            request.signal.removeEventListener('abort', abortXhr);\n          }\n        };\n      }\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n    })\n  }\n\n  fetch.polyfill = true;\n\n  if (!global.fetch) {\n    global.fetch = fetch;\n    global.Headers = Headers;\n    global.Request = Request;\n    global.Response = Response;\n  }\n\n  exports.Headers = Headers;\n  exports.Request = Request;\n  exports.Response = Response;\n  exports.fetch = fetch;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport Blob from '../Blob/Blob';\nimport BlobManager from '../Blob/BlobManager';\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport binaryToBase64 from '../Utilities/binaryToBase64';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport NativeWebSocketModule from './NativeWebSocketModule';\nimport WebSocketEvent from './WebSocketEvent';\nimport base64 from 'base64-js';\nimport EventTarget from 'event-target-shim';\nimport invariant from 'invariant';\n\ntype ArrayBufferView =\n  | Int8Array\n  | Uint8Array\n  | Uint8ClampedArray\n  | Int16Array\n  | Uint16Array\n  | Int32Array\n  | Uint32Array\n  | Float32Array\n  | Float64Array\n  | DataView;\n\ntype BinaryType = 'blob' | 'arraybuffer';\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nconst CLOSE_NORMAL = 1000;\n\nconst WEBSOCKET_EVENTS = ['close', 'error', 'message', 'open'];\n\nlet nextWebSocketId = 0;\n\n/**\n * Browser-compatible WebSockets implementation.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * See https://github.com/websockets/ws\n */\nclass WebSocket extends (EventTarget(...WEBSOCKET_EVENTS): any) {\n  static CONNECTING: number = CONNECTING;\n  static OPEN: number = OPEN;\n  static CLOSING: number = CLOSING;\n  static CLOSED: number = CLOSED;\n\n  CONNECTING: number = CONNECTING;\n  OPEN: number = OPEN;\n  CLOSING: number = CLOSING;\n  CLOSED: number = CLOSED;\n\n  _socketId: number;\n  _eventEmitter: NativeEventEmitter;\n  _subscriptions: Array<EventSubscription>;\n  _binaryType: ?BinaryType;\n\n  onclose: ?Function;\n  onerror: ?Function;\n  onmessage: ?Function;\n  onopen: ?Function;\n\n  bufferedAmount: number;\n  extension: ?string;\n  protocol: ?string;\n  readyState: number = CONNECTING;\n  url: ?string;\n\n  constructor(\n    url: string,\n    protocols: ?string | ?Array<string>,\n    options: ?{headers?: {origin?: string, ...}, ...},\n  ) {\n    super();\n    if (typeof protocols === 'string') {\n      protocols = [protocols];\n    }\n\n    const {headers = {}, ...unrecognized} = options || {};\n\n    // Preserve deprecated backwards compatibility for the 'origin' option\n    /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.68 was deployed. To see the error delete this\n     * comment and run Flow. */\n    if (unrecognized && typeof unrecognized.origin === 'string') {\n      console.warn(\n        'Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.',\n      );\n      /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This\n       * comment suppresses an error found when Flow v0.54 was deployed. To see\n       * the error delete this comment and run Flow. */\n      headers.origin = unrecognized.origin;\n      /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This\n       * comment suppresses an error found when Flow v0.54 was deployed. To see\n       * the error delete this comment and run Flow. */\n      delete unrecognized.origin;\n    }\n\n    // Warn about and discard anything else\n    if (Object.keys(unrecognized).length > 0) {\n      console.warn(\n        'Unrecognized WebSocket connection option(s) `' +\n          Object.keys(unrecognized).join('`, `') +\n          '`. ' +\n          'Did you mean to put these under `headers`?',\n      );\n    }\n\n    if (!Array.isArray(protocols)) {\n      protocols = null;\n    }\n\n    this._eventEmitter = new NativeEventEmitter(NativeWebSocketModule);\n    this._socketId = nextWebSocketId++;\n    this._registerEvents();\n    NativeWebSocketModule.connect(url, protocols, {headers}, this._socketId);\n  }\n\n  get binaryType(): ?BinaryType {\n    return this._binaryType;\n  }\n\n  set binaryType(binaryType: BinaryType): void {\n    if (binaryType !== 'blob' && binaryType !== 'arraybuffer') {\n      throw new Error(\"binaryType must be either 'blob' or 'arraybuffer'\");\n    }\n    if (this._binaryType === 'blob' || binaryType === 'blob') {\n      invariant(\n        BlobManager.isAvailable,\n        'Native module BlobModule is required for blob support',\n      );\n      if (binaryType === 'blob') {\n        BlobManager.addWebSocketHandler(this._socketId);\n      } else {\n        BlobManager.removeWebSocketHandler(this._socketId);\n      }\n    }\n    this._binaryType = binaryType;\n  }\n\n  close(code?: number, reason?: string): void {\n    if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) {\n      return;\n    }\n\n    this.readyState = this.CLOSING;\n    this._close(code, reason);\n  }\n\n  send(data: string | ArrayBuffer | ArrayBufferView | Blob): void {\n    if (this.readyState === this.CONNECTING) {\n      throw new Error('INVALID_STATE_ERR');\n    }\n\n    if (data instanceof Blob) {\n      invariant(\n        BlobManager.isAvailable,\n        'Native module BlobModule is required for blob support',\n      );\n      BlobManager.sendOverSocket(data, this._socketId);\n      return;\n    }\n\n    if (typeof data === 'string') {\n      NativeWebSocketModule.send(data, this._socketId);\n      return;\n    }\n\n    if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n      NativeWebSocketModule.sendBinary(binaryToBase64(data), this._socketId);\n      return;\n    }\n\n    throw new Error('Unsupported data type');\n  }\n\n  ping(): void {\n    if (this.readyState === this.CONNECTING) {\n      throw new Error('INVALID_STATE_ERR');\n    }\n\n    NativeWebSocketModule.ping(this._socketId);\n  }\n\n  _close(code?: number, reason?: string): void {\n    // See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent\n    const statusCode = typeof code === 'number' ? code : CLOSE_NORMAL;\n    const closeReason = typeof reason === 'string' ? reason : '';\n    NativeWebSocketModule.close(statusCode, closeReason, this._socketId);\n\n    if (BlobManager.isAvailable && this._binaryType === 'blob') {\n      BlobManager.removeWebSocketHandler(this._socketId);\n    }\n  }\n\n  _unregisterEvents(): void {\n    this._subscriptions.forEach(e => e.remove());\n    this._subscriptions = [];\n  }\n\n  _registerEvents(): void {\n    this._subscriptions = [\n      this._eventEmitter.addListener('websocketMessage', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        let data = ev.data;\n        switch (ev.type) {\n          case 'binary':\n            data = base64.toByteArray(ev.data).buffer;\n            break;\n          case 'blob':\n            data = BlobManager.createFromOptions(ev.data);\n            break;\n        }\n        this.dispatchEvent(new WebSocketEvent('message', {data}));\n      }),\n      this._eventEmitter.addListener('websocketOpen', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        this.readyState = this.OPEN;\n        this.protocol = ev.protocol;\n        this.dispatchEvent(new WebSocketEvent('open'));\n      }),\n      this._eventEmitter.addListener('websocketClosed', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        this.readyState = this.CLOSED;\n        this.dispatchEvent(\n          new WebSocketEvent('close', {\n            code: ev.code,\n            reason: ev.reason,\n          }),\n        );\n        this._unregisterEvents();\n        this.close();\n      }),\n      this._eventEmitter.addListener('websocketFailed', ev => {\n        if (ev.id !== this._socketId) {\n          return;\n        }\n        this.readyState = this.CLOSED;\n        this.dispatchEvent(\n          new WebSocketEvent('error', {\n            message: ev.message,\n          }),\n        );\n        this.dispatchEvent(\n          new WebSocketEvent('close', {\n            message: ev.message,\n          }),\n        );\n        this._unregisterEvents();\n        this.close();\n      }),\n    ];\n  }\n}\n\nmodule.exports = WebSocket;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +connect: (\n    url: string,\n    protocols: ?Array<string>,\n    options: {|headers?: Object|},\n    socketID: number,\n  ) => void;\n  +send: (message: string, forSocketID: number) => void;\n  +sendBinary: (base64String: string, forSocketID: number) => void;\n  +ping: (socketID: number) => void;\n  +close: (code: number, reason: string, socketID: number) => void;\n\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'WebSocketModule',\n): Spec);\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 * @format\n */\n\n'use strict';\n\n/**\n * Event object passed to the `onopen`, `onclose`, `onmessage`, `onerror`\n * callbacks of `WebSocket`.\n *\n * The `type` property is \"open\", \"close\", \"message\", \"error\" respectively.\n *\n * In case of \"message\", the `data` property contains the incoming data.\n */\nclass WebSocketEvent {\n  constructor(type, eventInitDict) {\n    this.type = type.toString();\n    Object.assign(this, eventInitDict);\n  }\n}\n\nmodule.exports = WebSocketEvent;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Blob = require('./Blob');\n\nconst invariant = require('invariant');\n\nimport type {BlobOptions} from './BlobTypes';\n\n/**\n * The File interface provides information about files.\n */\nclass File extends Blob {\n  /**\n   * Constructor for JS consumers.\n   */\n  constructor(\n    parts: Array<Blob | string>,\n    name: string,\n    options?: BlobOptions,\n  ) {\n    invariant(\n      parts != null && name != null,\n      'Failed to construct `File`: Must pass both `parts` and `name` arguments.',\n    );\n\n    super(parts, options);\n    this.data.name = name;\n  }\n\n  /**\n   * Name of the file.\n   */\n  get name(): string {\n    invariant(this.data.name != null, 'Files must have a name set.');\n    return this.data.name;\n  }\n\n  /*\n   * Last modified time of the file.\n   */\n  get lastModified(): number {\n    return this.data.lastModified || 0;\n  }\n}\n\nmodule.exports = File;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Blob = require('./Blob');\nconst EventTarget = require('event-target-shim');\n\nimport NativeFileReaderModule from './NativeFileReaderModule';\n\ntype ReadyState =\n  | 0 // EMPTY\n  | 1 // LOADING\n  | 2; // DONE\n\ntype ReaderResult = string | ArrayBuffer;\n\nconst READER_EVENTS = [\n  'abort',\n  'error',\n  'load',\n  'loadstart',\n  'loadend',\n  'progress',\n];\n\nconst EMPTY = 0;\nconst LOADING = 1;\nconst DONE = 2;\n\nclass FileReader extends (EventTarget(...READER_EVENTS): any) {\n  static EMPTY: number = EMPTY;\n  static LOADING: number = LOADING;\n  static DONE: number = DONE;\n\n  EMPTY: number = EMPTY;\n  LOADING: number = LOADING;\n  DONE: number = DONE;\n\n  _readyState: ReadyState;\n  _error: ?Error;\n  _result: ?ReaderResult;\n  _aborted: boolean = false;\n  _subscriptions: Array<*> = [];\n\n  constructor() {\n    super();\n    this._reset();\n  }\n\n  _reset(): void {\n    this._readyState = EMPTY;\n    this._error = null;\n    this._result = null;\n  }\n\n  _clearSubscriptions(): void {\n    this._subscriptions.forEach(sub => sub.remove());\n    this._subscriptions = [];\n  }\n\n  _setReadyState(newState: ReadyState) {\n    this._readyState = newState;\n    this.dispatchEvent({type: 'readystatechange'});\n    if (newState === DONE) {\n      if (this._aborted) {\n        this.dispatchEvent({type: 'abort'});\n      } else if (this._error) {\n        this.dispatchEvent({type: 'error'});\n      } else {\n        this.dispatchEvent({type: 'load'});\n      }\n      this.dispatchEvent({type: 'loadend'});\n    }\n  }\n\n  readAsArrayBuffer() {\n    throw new Error('FileReader.readAsArrayBuffer is not implemented');\n  }\n\n  readAsDataURL(blob: ?Blob) {\n    this._aborted = false;\n\n    if (blob == null) {\n      throw new TypeError(\n        \"Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'\",\n      );\n    }\n\n    NativeFileReaderModule.readAsDataURL(blob.data).then(\n      (text: string) => {\n        if (this._aborted) {\n          return;\n        }\n        this._result = text;\n        this._setReadyState(DONE);\n      },\n      error => {\n        if (this._aborted) {\n          return;\n        }\n        this._error = error;\n        this._setReadyState(DONE);\n      },\n    );\n  }\n\n  readAsText(blob: ?Blob, encoding: string = 'UTF-8') {\n    this._aborted = false;\n\n    if (blob == null) {\n      throw new TypeError(\n        \"Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'\",\n      );\n    }\n\n    NativeFileReaderModule.readAsText(blob.data, encoding).then(\n      (text: string) => {\n        if (this._aborted) {\n          return;\n        }\n        this._result = text;\n        this._setReadyState(DONE);\n      },\n      error => {\n        if (this._aborted) {\n          return;\n        }\n        this._error = error;\n        this._setReadyState(DONE);\n      },\n    );\n  }\n\n  abort() {\n    this._aborted = true;\n    // only call onreadystatechange if there is something to abort, as per spec\n    if (this._readyState !== EMPTY && this._readyState !== DONE) {\n      this._reset();\n      this._setReadyState(DONE);\n    }\n    // Reset again after, in case modified in handler\n    this._reset();\n  }\n\n  get readyState(): ReadyState {\n    return this._readyState;\n  }\n\n  get error(): ?Error {\n    return this._error;\n  }\n\n  get result(): ?ReaderResult {\n    return this._result;\n  }\n}\n\nmodule.exports = FileReader;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +readAsDataURL: (data: Object) => Promise<string>;\n  +readAsText: (data: Object, encoding: string) => Promise<string>;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'FileReaderModule',\n): Spec);\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 * @format\n */\n\n'use strict';\n\nconst Blob = require('./Blob');\n\nimport NativeBlobModule from './NativeBlobModule';\n\nlet BLOB_URL_PREFIX = null;\n\nif (\n  NativeBlobModule &&\n  typeof NativeBlobModule.getConstants().BLOB_URI_SCHEME === 'string'\n) {\n  const constants = NativeBlobModule.getConstants();\n  BLOB_URL_PREFIX = constants.BLOB_URI_SCHEME + ':';\n  if (typeof constants.BLOB_URI_HOST === 'string') {\n    BLOB_URL_PREFIX += `//${constants.BLOB_URI_HOST}/`;\n  }\n}\n\n/**\n * To allow Blobs be accessed via `content://` URIs,\n * you need to register `BlobProvider` as a ContentProvider in your app's `AndroidManifest.xml`:\n *\n * ```xml\n * <manifest>\n *   <application>\n *     <provider\n *       android:name=\"com.facebook.react.modules.blob.BlobProvider\"\n *       android:authorities=\"@string/blob_provider_authority\"\n *       android:exported=\"false\"\n *     />\n *   </application>\n * </manifest>\n * ```\n * And then define the `blob_provider_authority` string in `res/values/strings.xml`.\n * Use a dotted name that's entirely unique to your app:\n *\n * ```xml\n * <resources>\n *   <string name=\"blob_provider_authority\">your.app.package.blobs</string>\n * </resources>\n * ```\n */\n\n// Small subset from whatwg-url: https://github.com/jsdom/whatwg-url/tree/master/lib\n// The reference code bloat comes from Unicode issues with URLs, so those won't work here.\nexport class URLSearchParams {\n  _searchParams = [];\n\n  constructor(params: any) {\n    if (typeof params === 'object') {\n      Object.keys(params).forEach(key => this.append(key, params[key]));\n    }\n  }\n\n  append(key: string, value: string) {\n    this._searchParams.push([key, value]);\n  }\n\n  delete(name) {\n    throw new Error('not implemented');\n  }\n\n  get(name) {\n    throw new Error('not implemented');\n  }\n\n  getAll(name) {\n    throw new Error('not implemented');\n  }\n\n  has(name) {\n    throw new Error('not implemented');\n  }\n\n  set(name, value) {\n    throw new Error('not implemented');\n  }\n\n  sort() {\n    throw new Error('not implemented');\n  }\n\n  [Symbol.iterator]() {\n    return this._searchParams[Symbol.iterator]();\n  }\n\n  toString() {\n    if (this._searchParams.length === 0) {\n      return '';\n    }\n    const last = this._searchParams.length - 1;\n    return this._searchParams.reduce((acc, curr, index) => {\n      return acc + curr.join('=') + (index === last ? '' : '&');\n    }, '');\n  }\n}\n\nfunction validateBaseUrl(url: string) {\n  // from this MIT-licensed gist: https://gist.github.com/dperini/729294\n  return /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[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-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)*(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/.test(\n    url,\n  );\n}\n\nexport class URL {\n  _searchParamsInstance = null;\n\n  static createObjectURL(blob: Blob) {\n    if (BLOB_URL_PREFIX === null) {\n      throw new Error('Cannot create URL for blob!');\n    }\n    return `${BLOB_URL_PREFIX}${blob.data.blobId}?offset=${blob.data.offset}&size=${blob.size}`;\n  }\n\n  static revokeObjectURL(url: string) {\n    // Do nothing.\n  }\n\n  constructor(url: string, base: string) {\n    let baseUrl = null;\n    if (!base || validateBaseUrl(url)) {\n      this._url = url;\n      if (!this._url.endsWith('/')) {\n        this._url += '/';\n      }\n    } else {\n      if (typeof base === 'string') {\n        baseUrl = base;\n        if (!validateBaseUrl(baseUrl)) {\n          throw new TypeError(`Invalid base URL: ${baseUrl}`);\n        }\n      } else if (typeof base === 'object') {\n        baseUrl = base.toString();\n      }\n      if (baseUrl.endsWith('/')) {\n        baseUrl = baseUrl.slice(0, baseUrl.length - 1);\n      }\n      if (!url.startsWith('/')) {\n        url = `/${url}`;\n      }\n      if (baseUrl.endsWith(url)) {\n        url = '';\n      }\n      this._url = `${baseUrl}${url}`;\n    }\n  }\n\n  get hash() {\n    throw new Error('not implemented');\n  }\n\n  get host() {\n    throw new Error('not implemented');\n  }\n\n  get hostname() {\n    throw new Error('not implemented');\n  }\n\n  get href(): string {\n    return this.toString();\n  }\n\n  get origin() {\n    throw new Error('not implemented');\n  }\n\n  get password() {\n    throw new Error('not implemented');\n  }\n\n  get pathname() {\n    throw new Error('not implemented');\n  }\n\n  get port() {\n    throw new Error('not implemented');\n  }\n\n  get protocol() {\n    throw new Error('not implemented');\n  }\n\n  get search() {\n    throw new Error('not implemented');\n  }\n\n  get searchParams(): URLSearchParams {\n    if (this._searchParamsInstance == null) {\n      this._searchParamsInstance = new URLSearchParams();\n    }\n    return this._searchParamsInstance;\n  }\n\n  toJSON(): string {\n    return this.toString();\n  }\n\n  toString(): string {\n    if (this._searchParamsInstance === null) {\n      return this._url;\n    }\n    const separator = this._url.indexOf('?') > -1 ? '&' : '?';\n    return this._url + separator + this._searchParamsInstance.toString();\n  }\n\n  get username() {\n    throw new Error('not implemented');\n  }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar eventTargetShim = require('event-target-shim');\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nclass AbortSignal extends eventTargetShim.EventTarget {\n    /**\n     * AbortSignal cannot be constructed directly.\n     */\n    constructor() {\n        super();\n        throw new TypeError(\"AbortSignal cannot be constructed directly\");\n    }\n    /**\n     * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n     */\n    get aborted() {\n        const aborted = abortedFlags.get(this);\n        if (typeof aborted !== \"boolean\") {\n            throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? \"null\" : typeof this}`);\n        }\n        return aborted;\n    }\n}\neventTargetShim.defineEventAttribute(AbortSignal.prototype, \"abort\");\n/**\n * Create an AbortSignal object.\n */\nfunction createAbortSignal() {\n    const signal = Object.create(AbortSignal.prototype);\n    eventTargetShim.EventTarget.call(signal);\n    abortedFlags.set(signal, false);\n    return signal;\n}\n/**\n * Abort a given signal.\n */\nfunction abortSignal(signal) {\n    if (abortedFlags.get(signal) !== false) {\n        return;\n    }\n    abortedFlags.set(signal, true);\n    signal.dispatchEvent({ type: \"abort\" });\n}\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap();\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n    aborted: { enumerable: true },\n});\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n    Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n        configurable: true,\n        value: \"AbortSignal\",\n    });\n}\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nclass AbortController {\n    /**\n     * Initialize this controller.\n     */\n    constructor() {\n        signals.set(this, createAbortSignal());\n    }\n    /**\n     * Returns the `AbortSignal` object associated with this object.\n     */\n    get signal() {\n        return getSignal(this);\n    }\n    /**\n     * Abort and signal to any observers that the associated activity is to be aborted.\n     */\n    abort() {\n        abortSignal(getSignal(this));\n    }\n}\n/**\n * Associated signals.\n */\nconst signals = new WeakMap();\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller) {\n    const signal = signals.get(controller);\n    if (signal == null) {\n        throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? \"null\" : typeof controller}`);\n    }\n    return signal;\n}\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n    signal: { enumerable: true },\n    abort: { enumerable: true },\n});\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n    Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n        configurable: true,\n        value: \"AbortController\",\n    });\n}\n\nexports.AbortController = AbortController;\nexports.AbortSignal = AbortSignal;\nexports.default = AbortController;\n\nmodule.exports = AbortController\nmodule.exports.AbortController = module.exports[\"default\"] = AbortController\nmodule.exports.AbortSignal = AbortSignal\n//# sourceMappingURL=abort-controller.js.map\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\n/**\n * Set up alert().\n * You can use this module directly, or just require InitializeCore.\n */\nif (!global.alert) {\n  global.alert = function(text) {\n    // Require Alert on demand. Requiring it too early can lead to issues\n    // with things like Platform not being fully initialized.\n    require('../Alert/Alert').alert('Alert', '' + text);\n  };\n}\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport Platform from '../Utilities/Platform';\nimport NativeDialogManagerAndroid, {\n  type DialogOptions,\n} from '../NativeModules/specs/NativeDialogManagerAndroid';\nimport RCTAlertManager from './RCTAlertManager';\n\nexport type AlertType =\n  | 'default'\n  | 'plain-text'\n  | 'secure-text'\n  | 'login-password';\nexport type AlertButtonStyle = 'default' | 'cancel' | 'destructive';\nexport type Buttons = Array<{\n  text?: string,\n  onPress?: ?Function,\n  style?: AlertButtonStyle,\n  ...\n}>;\n\ntype Options = {\n  cancelable?: ?boolean,\n  onDismiss?: ?() => void,\n  ...\n};\n\n/**\n * Launches an alert dialog with the specified title and message.\n *\n * See https://reactnative.dev/docs/alert.html\n */\nclass Alert {\n  static alert(\n    title: ?string,\n    message?: ?string,\n    buttons?: Buttons,\n    options?: Options,\n  ): void {\n    if (Platform.OS === 'ios') {\n      Alert.prompt(title, message, buttons, 'default');\n    } else if (Platform.OS === 'android') {\n      if (!NativeDialogManagerAndroid) {\n        return;\n      }\n      const constants = NativeDialogManagerAndroid.getConstants();\n\n      const config: DialogOptions = {\n        title: title || '',\n        message: message || '',\n        cancelable: false,\n      };\n\n      if (options && options.cancelable) {\n        config.cancelable = options.cancelable;\n      }\n      // At most three buttons (neutral, negative, positive). Ignore rest.\n      // The text 'OK' should be probably localized. iOS Alert does that in native.\n      const defaultPositiveText = 'OK';\n      const validButtons: Buttons = buttons\n        ? buttons.slice(0, 3)\n        : [{text: defaultPositiveText}];\n      const buttonPositive = validButtons.pop();\n      const buttonNegative = validButtons.pop();\n      const buttonNeutral = validButtons.pop();\n\n      if (buttonNeutral) {\n        config.buttonNeutral = buttonNeutral.text || '';\n      }\n      if (buttonNegative) {\n        config.buttonNegative = buttonNegative.text || '';\n      }\n      if (buttonPositive) {\n        config.buttonPositive = buttonPositive.text || defaultPositiveText;\n      }\n\n      const onAction = (action, buttonKey) => {\n        if (action === constants.buttonClicked) {\n          if (buttonKey === constants.buttonNeutral) {\n            buttonNeutral.onPress && buttonNeutral.onPress();\n          } else if (buttonKey === constants.buttonNegative) {\n            buttonNegative.onPress && buttonNegative.onPress();\n          } else if (buttonKey === constants.buttonPositive) {\n            buttonPositive.onPress && buttonPositive.onPress();\n          }\n        } else if (action === constants.dismissed) {\n          options && options.onDismiss && options.onDismiss();\n        }\n      };\n      const onError = errorMessage => console.warn(errorMessage);\n      NativeDialogManagerAndroid.showAlert(config, onError, onAction);\n    }\n  }\n\n  static prompt(\n    title: ?string,\n    message?: ?string,\n    callbackOrButtons?: ?(((text: string) => void) | Buttons),\n    type?: ?AlertType = 'plain-text',\n    defaultValue?: string,\n    keyboardType?: string,\n  ): void {\n    if (Platform.OS === 'ios') {\n      let callbacks = [];\n      const buttons = [];\n      let cancelButtonKey;\n      let destructiveButtonKey;\n      if (typeof callbackOrButtons === 'function') {\n        callbacks = [callbackOrButtons];\n      } else if (Array.isArray(callbackOrButtons)) {\n        callbackOrButtons.forEach((btn, index) => {\n          callbacks[index] = btn.onPress;\n          if (btn.style === 'cancel') {\n            cancelButtonKey = String(index);\n          } else if (btn.style === 'destructive') {\n            destructiveButtonKey = String(index);\n          }\n          if (btn.text || index < (callbackOrButtons || []).length - 1) {\n            const btnDef = {};\n            btnDef[index] = btn.text || '';\n            buttons.push(btnDef);\n          }\n        });\n      }\n\n      RCTAlertManager.alertWithArgs(\n        {\n          title: title || '',\n          message: message || undefined,\n          buttons,\n          type: type || undefined,\n          defaultValue,\n          cancelButtonKey,\n          destructiveButtonKey,\n          keyboardType,\n        },\n        (id, value) => {\n          const cb = callbacks[id];\n          cb && cb(value);\n        },\n      );\n    }\n  }\n}\n\nmodule.exports = Alert;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\n/* 'buttonClicked' | 'dismissed' */\ntype DialogAction = string;\n/*\n  buttonPositive = -1,\n  buttonNegative = -2,\n  buttonNeutral = -3\n*/\ntype DialogButtonKey = number;\nexport type DialogOptions = {|\n  title?: string,\n  message?: string,\n  buttonPositive?: string,\n  buttonNegative?: string,\n  buttonNeutral?: string,\n  items?: Array<string>,\n  cancelable?: boolean,\n|};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    +buttonClicked: DialogAction,\n    +dismissed: DialogAction,\n    +buttonPositive: DialogButtonKey,\n    +buttonNegative: DialogButtonKey,\n    +buttonNeutral: DialogButtonKey,\n  |};\n  +showAlert: (\n    config: DialogOptions,\n    onError: (error: string) => void,\n    onAction: (action: DialogAction, buttonKey?: DialogButtonKey) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('DialogManagerAndroid'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeAlertManager from './NativeAlertManager';\nimport type {Args} from './NativeAlertManager';\n\nmodule.exports = {\n  alertWithArgs(\n    args: Args,\n    callback: (id: number, value: string) => void,\n  ): void {\n    if (NativeAlertManager == null) {\n      return;\n    }\n    NativeAlertManager.alertWithArgs(args, callback);\n  },\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport type Args = {|\n  title?: string,\n  message?: string,\n  buttons?: Array<Object>, // TODO(T67565166): have a better type\n  type?: string,\n  defaultValue?: string,\n  cancelButtonKey?: string,\n  destructiveButtonKey?: string,\n  keyboardType?: string,\n|};\n\nexport interface Spec extends TurboModule {\n  +alertWithArgs: (\n    args: Args,\n    callback: (id: number, value: string) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('AlertManager'): ?Spec);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst {polyfillObjectProperty} = require('../Utilities/PolyfillFunctions');\n\nlet navigator = global.navigator;\nif (navigator === undefined) {\n  global.navigator = navigator = {};\n}\n\n// see https://github.com/facebook/react-native/issues/10881\npolyfillObjectProperty(navigator, 'product', () => 'ReactNative');\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nlet registerModule;\nif (global.RN$Bridgeless && global.RN$registerCallableModule) {\n  registerModule = global.RN$registerCallableModule;\n} else {\n  const BatchedBridge = require('../BatchedBridge/BatchedBridge');\n  registerModule = (moduleName, factory) =>\n    BatchedBridge.registerLazyCallableModule(moduleName, factory);\n}\n\nregisterModule('Systrace', () => require('../Performance/Systrace'));\nregisterModule('JSTimers', () => require('./Timers/JSTimers'));\nregisterModule('HeapCapture', () => require('../HeapCapture/HeapCapture'));\nregisterModule('SamplingProfiler', () =>\n  require('../Performance/SamplingProfiler'),\n);\nregisterModule('RCTLog', () => require('../Utilities/RCTLog'));\nregisterModule(\n  'RCTDeviceEventEmitter',\n  () => require('../EventEmitter/RCTDeviceEventEmitter').default,\n);\nregisterModule('RCTNativeAppEventEmitter', () =>\n  require('../EventEmitter/RCTNativeAppEventEmitter'),\n);\nregisterModule('GlobalPerformanceLogger', () =>\n  require('../Utilities/GlobalPerformanceLogger'),\n);\nregisterModule('JSDevSupportModule', () =>\n  require('../Utilities/JSDevSupportModule'),\n);\n\nif (__DEV__ && !global.__RCTProfileIsProfiling) {\n  registerModule('HMRClient', () => require('../Utilities/HMRClient'));\n} else {\n  registerModule('HMRClient', () => require('../Utilities/HMRClientProdShim'));\n}\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport NativeJSCHeapCapture from './NativeJSCHeapCapture';\n\nconst HeapCapture = {\n  captureHeap: function(path: string) {\n    let error = null;\n    try {\n      global.nativeCaptureHeap(path);\n      console.log('HeapCapture.captureHeap succeeded: ' + path);\n    } catch (e) {\n      console.log('HeapCapture.captureHeap error: ' + e.toString());\n      error = e.toString();\n    }\n    if (NativeJSCHeapCapture) {\n      NativeJSCHeapCapture.captureComplete(path, error);\n    }\n  },\n};\n\nmodule.exports = HeapCapture;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +captureComplete: (path: string, error: ?string) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('JSCHeapCapture'): ?Spec);\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst SamplingProfiler = {\n  poke: function(token: number): void {\n    let error = null;\n    let result = null;\n    try {\n      result = global.pokeSamplingProfiler();\n      if (result === null) {\n        console.log('The JSC Sampling Profiler has started');\n      } else {\n        console.log('The JSC Sampling Profiler has stopped');\n      }\n    } catch (e) {\n      console.log(\n        'Error occurred when restarting Sampling Profiler: ' + e.toString(),\n      );\n      error = e.toString();\n    }\n\n    const NativeJSCSamplingProfiler = require('./NativeJSCSamplingProfiler')\n      .default;\n    if (NativeJSCSamplingProfiler) {\n      NativeJSCSamplingProfiler.operationComplete(token, result, error);\n    }\n  },\n};\n\nmodule.exports = SamplingProfiler;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +operationComplete: (token: number, result: ?string, error: ?string) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('JSCSamplingProfiler'): ?Spec);\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nconst levelsMap = {\n  log: 'log',\n  info: 'info',\n  warn: 'warn',\n  error: 'error',\n  fatal: 'error',\n};\n\nlet warningHandler: ?(...Array<mixed>) => void = null;\n\nconst RCTLog = {\n  // level one of log, info, warn, error, mustfix\n  logIfNoNativeHook(level: string, ...args: Array<mixed>): void {\n    // We already printed in the native console, so only log here if using a js debugger\n    if (typeof global.nativeLoggingHook === 'undefined') {\n      RCTLog.logToConsole(level, ...args);\n    } else {\n      // Report native warnings to LogBox\n      if (warningHandler && level === 'warn') {\n        warningHandler(...args);\n      }\n    }\n  },\n\n  // Log to console regardless of nativeLoggingHook\n  logToConsole(level: string, ...args: Array<mixed>): void {\n    const logFn = levelsMap[level];\n    invariant(\n      logFn,\n      'Level \"' + level + '\" not one of ' + Object.keys(levelsMap).toString(),\n    );\n\n    console[logFn](...args);\n  },\n\n  setWarningHandler(handler: typeof warningHandler): void {\n    warningHandler = handler;\n  },\n};\n\nmodule.exports = RCTLog;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport RCTDeviceEventEmitter from './RCTDeviceEventEmitter';\n\n/**\n * Deprecated - subclass NativeEventEmitter to create granular event modules instead of\n * adding all event listeners directly to RCTNativeAppEventEmitter.\n */\nconst RCTNativeAppEventEmitter = RCTDeviceEventEmitter;\nmodule.exports = RCTNativeAppEventEmitter;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeJSDevSupport from './NativeJSDevSupport';\nconst ReactNative = require('../Renderer/shims/ReactNative');\n\nconst JSDevSupportModule = {\n  getJSHierarchy: function(tag: number) {\n    if (NativeJSDevSupport) {\n      const constants = NativeJSDevSupport.getConstants();\n      try {\n        const {\n          computeComponentStackForErrorReporting,\n        } = ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n        const componentStack = computeComponentStackForErrorReporting(tag);\n        if (!componentStack) {\n          NativeJSDevSupport.onFailure(\n            constants.ERROR_CODE_VIEW_NOT_FOUND,\n            \"Component stack doesn't exist for tag \" + tag,\n          );\n        } else {\n          NativeJSDevSupport.onSuccess(componentStack);\n        }\n      } catch (e) {\n        NativeJSDevSupport.onFailure(constants.ERROR_CODE_EXCEPTION, e.message);\n      }\n    }\n  },\n};\n\nmodule.exports = JSDevSupportModule;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    ERROR_CODE_EXCEPTION: number,\n    ERROR_CODE_VIEW_NOT_FOUND: number,\n  |};\n  +onSuccess: (data: string) => void;\n  +onFailure: (errorCode: number, error: string) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('JSDevSupport'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {HMRClientNativeInterface} from './HMRClient';\n\n// This shim ensures DEV binary builds don't crash in JS\n// when they're combined with a PROD JavaScript build.\nconst HMRClientProdShim: HMRClientNativeInterface = {\n  setup() {},\n  enable() {\n    console.error(\n      'Fast Refresh is disabled in JavaScript bundles built in production mode. ' +\n        'Did you forget to run Metro?',\n    );\n  },\n  disable() {},\n  registerBundle() {},\n  log() {},\n};\n\nmodule.exports = HMRClientProdShim;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nexport type FetchSegmentFunction = typeof __fetchSegment;\nexport type GetSegmentFunction = typeof __getSegment;\n\n/**\n * Set up SegmentFetcher.\n * You can use this module directly, or just require InitializeCore.\n */\n\nfunction __fetchSegment(\n  segmentId: number,\n  options: $ReadOnly<{\n    otaBuildNumber: ?string,\n    requestedModuleName: string,\n    segmentHash: string,\n  }>,\n  callback: (?Error) => void,\n) {\n  const SegmentFetcher = require('./SegmentFetcher/NativeSegmentFetcher')\n    .default;\n  SegmentFetcher.fetchSegment(\n    segmentId,\n    options,\n    (\n      errorObject: ?{\n        message: string,\n        code: string,\n        ...\n      },\n    ) => {\n      if (errorObject) {\n        const error = new Error(errorObject.message);\n        (error: any).code = errorObject.code; // flowlint-line unclear-type: off\n        callback(error);\n      }\n\n      callback(null);\n    },\n  );\n}\n\nglobal.__fetchSegment = __fetchSegment;\n\nfunction __getSegment(\n  segmentId: number,\n  options: $ReadOnly<{\n    otaBuildNumber: ?string,\n    requestedModuleName: string,\n    segmentHash: string,\n  }>,\n  callback: (?Error, ?string) => void,\n) {\n  const SegmentFetcher = require('./SegmentFetcher/NativeSegmentFetcher')\n    .default;\n\n  if (!SegmentFetcher.getSegment) {\n    throw new Error('SegmentFetcher.getSegment must be defined');\n  }\n\n  SegmentFetcher.getSegment(\n    segmentId,\n    options,\n    (\n      errorObject: ?{\n        message: string,\n        code: string,\n        ...\n      },\n      path: ?string,\n    ) => {\n      if (errorObject) {\n        const error = new Error(errorObject.message);\n        (error: any).code = errorObject.code; // flowlint-line unclear-type: off\n        callback(error);\n      }\n\n      callback(null, path);\n    },\n  );\n}\n\nglobal.__getSegment = __getSegment;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +fetchSegment: (\n    segmentId: number,\n    options: Object, // flowlint-line unclear-type: off\n    callback: (error: ?Object) => void, // flowlint-line unclear-type: off\n  ) => void;\n  +getSegment?: (\n    segmentId: number,\n    options: Object, // flowlint-line unclear-type: off\n    callback: (error: ?Object, path: ?string) => void, // flowlint-line unclear-type: off\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('SegmentFetcher'): Spec);\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 * @format\n * @flow strict-local\n */\n\nimport typeof BatchedBridge from '../BatchedBridge/BatchedBridge';\nimport typeof ExceptionsManager from '../Core/ExceptionsManager';\nimport typeof Platform from '../Utilities/Platform';\nimport typeof RCTEventEmitter from '../EventEmitter/RCTEventEmitter';\nimport typeof ReactNativeViewConfigRegistry from '../Renderer/shims/ReactNativeViewConfigRegistry';\nimport typeof TextInputState from '../Components/TextInput/TextInputState';\nimport typeof UIManager from '../ReactNative/UIManager';\nimport typeof deepDiffer from '../Utilities/differ/deepDiffer';\nimport typeof deepFreezeAndThrowOnMutationInDev from '../Utilities/deepFreezeAndThrowOnMutationInDev';\nimport typeof flattenStyle from '../StyleSheet/flattenStyle';\nimport typeof ReactFiberErrorDialog from '../Core/ReactFiberErrorDialog';\n\n// flowlint unsafe-getters-setters:off\nmodule.exports = {\n  get BatchedBridge(): BatchedBridge {\n    return require('../BatchedBridge/BatchedBridge');\n  },\n  get ExceptionsManager(): ExceptionsManager {\n    return require('../Core/ExceptionsManager');\n  },\n  get Platform(): Platform {\n    return require('../Utilities/Platform');\n  },\n  get RCTEventEmitter(): RCTEventEmitter {\n    return require('../EventEmitter/RCTEventEmitter');\n  },\n  get ReactNativeViewConfigRegistry(): ReactNativeViewConfigRegistry {\n    return require('../Renderer/shims/ReactNativeViewConfigRegistry');\n  },\n  get TextInputState(): TextInputState {\n    return require('../Components/TextInput/TextInputState');\n  },\n  get UIManager(): UIManager {\n    return require('../ReactNative/UIManager');\n  },\n  get deepDiffer(): deepDiffer {\n    return require('../Utilities/differ/deepDiffer');\n  },\n  get deepFreezeAndThrowOnMutationInDev(): deepFreezeAndThrowOnMutationInDev<\n    // $FlowFixMe - can't properly parameterize the getter's type\n    *,\n  > {\n    return require('../Utilities/deepFreezeAndThrowOnMutationInDev');\n  },\n  get flattenStyle(): flattenStyle {\n    return require('../StyleSheet/flattenStyle');\n  },\n  get ReactFiberErrorDialog(): ReactFiberErrorDialog {\n    return require('../Core/ReactFiberErrorDialog');\n  },\n};\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst BatchedBridge = require('../BatchedBridge/BatchedBridge');\n\nconst RCTEventEmitter = {\n  register(eventEmitter: any) {\n    BatchedBridge.registerCallableModule('RCTEventEmitter', eventEmitter);\n  },\n};\n\nmodule.exports = RCTEventEmitter;\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 * @format\n * @flow strict-local\n */\n\n/* eslint-disable react-internal/invariant-args */\n\n'use strict';\n\nimport type {\n  ReactNativeBaseComponentViewConfig,\n  ViewConfigGetter,\n} from './ReactNativeTypes';\n\nconst invariant = require('invariant');\n\n// Event configs\nconst customBubblingEventTypes: {\n  [eventName: string]: $ReadOnly<{|\n    phasedRegistrationNames: $ReadOnly<{|\n      captured: string,\n      bubbled: string,\n    |}>,\n  |}>,\n  ...,\n} = {};\nconst customDirectEventTypes: {\n  [eventName: string]: $ReadOnly<{|\n    registrationName: string,\n  |}>,\n  ...,\n} = {};\n\nexports.customBubblingEventTypes = customBubblingEventTypes;\nexports.customDirectEventTypes = customDirectEventTypes;\n\nconst viewConfigCallbacks = new Map();\nconst viewConfigs = new Map();\n\nfunction processEventTypes(\n  viewConfig: ReactNativeBaseComponentViewConfig<>,\n): void {\n  const {bubblingEventTypes, directEventTypes} = viewConfig;\n\n  if (__DEV__) {\n    if (bubblingEventTypes != null && directEventTypes != null) {\n      for (const topLevelType in directEventTypes) {\n        invariant(\n          bubblingEventTypes[topLevelType] == null,\n          'Event cannot be both direct and bubbling: %s',\n          topLevelType,\n        );\n      }\n    }\n  }\n\n  if (bubblingEventTypes != null) {\n    for (const topLevelType in bubblingEventTypes) {\n      if (customBubblingEventTypes[topLevelType] == null) {\n        customBubblingEventTypes[topLevelType] =\n          bubblingEventTypes[topLevelType];\n      }\n    }\n  }\n\n  if (directEventTypes != null) {\n    for (const topLevelType in directEventTypes) {\n      if (customDirectEventTypes[topLevelType] == null) {\n        customDirectEventTypes[topLevelType] = directEventTypes[topLevelType];\n      }\n    }\n  }\n}\n\n/**\n * Registers a native view/component by name.\n * A callback is provided to load the view config from UIManager.\n * The callback is deferred until the view is actually rendered.\n */\nexports.register = function(name: string, callback: ViewConfigGetter): string {\n  invariant(\n    !viewConfigCallbacks.has(name),\n    'Tried to register two views with the same name %s',\n    name,\n  );\n  invariant(\n    typeof callback === 'function',\n    'View config getter callback for component `%s` must be a function (received `%s`)',\n    name,\n    callback === null ? 'null' : typeof callback,\n  );\n  viewConfigCallbacks.set(name, callback);\n  return name;\n};\n\n/**\n * Retrieves a config for the specified view.\n * If this is the first time the view has been used,\n * This configuration will be lazy-loaded from UIManager.\n */\nexports.get = function(name: string): ReactNativeBaseComponentViewConfig<> {\n  let viewConfig;\n  if (!viewConfigs.has(name)) {\n    const callback = viewConfigCallbacks.get(name);\n    if (typeof callback !== 'function') {\n      invariant(\n        false,\n        'View config getter callback for component `%s` must be a function (received `%s`).%s',\n        name,\n        callback === null ? 'null' : typeof callback,\n        typeof name[0] === 'string' && /[a-z]/.test(name[0])\n          ? ' Make sure to start component names with a capital letter.'\n          : '',\n      );\n    }\n    viewConfig = callback();\n    processEventTypes(viewConfig);\n    viewConfigs.set(name, viewConfig);\n\n    // Clear the callback after the config is set so that\n    // we don't mask any errors during registration.\n    viewConfigCallbacks.set(name, null);\n  } else {\n    viewConfig = viewConfigs.get(name);\n  }\n  invariant(viewConfig, 'View config not found for name %s', name);\n  return viewConfig;\n};\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 * @format\n * @flow strict-local\n */\n\n// This class is responsible for coordinating the \"focused\" state for\n// TextInputs. All calls relating to the keyboard should be funneled\n// through here.\n\n'use strict';\n\nconst React = require('react');\nconst Platform = require('../../Utilities/Platform');\nconst {findNodeHandle} = require('../../Renderer/shims/ReactNative');\nimport {Commands as AndroidTextInputCommands} from '../../Components/TextInput/AndroidTextInputNativeComponent';\nimport {Commands as iOSTextInputCommands} from '../../Components/TextInput/RCTSingelineTextInputNativeComponent';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\ntype ComponentRef = React.ElementRef<HostComponent<mixed>>;\n\nlet currentlyFocusedInputRef: ?ComponentRef = null;\nconst inputs = new Set();\n\nfunction currentlyFocusedInput(): ?ComponentRef {\n  return currentlyFocusedInputRef;\n}\n\n/**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\nfunction currentlyFocusedField(): ?number {\n  if (__DEV__) {\n    console.error(\n      'currentlyFocusedField is deprecated and will be removed in a future release. Use currentlyFocusedInput',\n    );\n  }\n\n  return findNodeHandle(currentlyFocusedInputRef);\n}\n\nfunction focusInput(textField: ?ComponentRef): void {\n  if (currentlyFocusedInputRef !== textField && textField != null) {\n    currentlyFocusedInputRef = textField;\n  }\n}\n\nfunction blurInput(textField: ?ComponentRef): void {\n  if (currentlyFocusedInputRef === textField && textField != null) {\n    currentlyFocusedInputRef = null;\n  }\n}\n\nfunction focusField(textFieldID: ?number): void {\n  if (__DEV__) {\n    console.error('focusField no longer works. Use focusInput');\n  }\n\n  return;\n}\n\nfunction blurField(textFieldID: ?number) {\n  if (__DEV__) {\n    console.error('blurField no longer works. Use blurInput');\n  }\n\n  return;\n}\n\n/**\n * @param {number} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\nfunction focusTextInput(textField: ?ComponentRef) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'focusTextInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n\n  if (currentlyFocusedInputRef !== textField && textField != null) {\n    focusInput(textField);\n    if (Platform.OS === 'ios') {\n      // This isn't necessarily a single line text input\n      // But commands don't actually care as long as the thing being passed in\n      // actually has a command with that name. So this should work with single\n      // and multiline text inputs. Ideally we'll merge them into one component\n      // in the future.\n      iOSTextInputCommands.focus(textField);\n    } else if (Platform.OS === 'android') {\n      AndroidTextInputCommands.focus(textField);\n    }\n  }\n}\n\n/**\n * @param {number} textFieldID id of the text field to unfocus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\nfunction blurTextInput(textField: ?ComponentRef) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'focusTextInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n\n  if (currentlyFocusedInputRef === textField && textField != null) {\n    blurInput(textField);\n    if (Platform.OS === 'ios') {\n      // This isn't necessarily a single line text input\n      // But commands don't actually care as long as the thing being passed in\n      // actually has a command with that name. So this should work with single\n      // and multiline text inputs. Ideally we'll merge them into one component\n      // in the future.\n      iOSTextInputCommands.blur(textField);\n    } else if (Platform.OS === 'android') {\n      AndroidTextInputCommands.blur(textField);\n    }\n  }\n}\n\nfunction registerInput(textField: ComponentRef) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'registerInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n\n  inputs.add(textField);\n}\n\nfunction unregisterInput(textField: ComponentRef) {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'unregisterInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return;\n  }\n  inputs.delete(textField);\n}\n\nfunction isTextInput(textField: ComponentRef): boolean {\n  if (typeof textField === 'number') {\n    if (__DEV__) {\n      console.error(\n        'isTextInput must be called with a host component. Passing a react tag is deprecated.',\n      );\n    }\n\n    return false;\n  }\n\n  return inputs.has(textField);\n}\n\nmodule.exports = {\n  currentlyFocusedInput,\n  focusInput,\n  blurInput,\n\n  currentlyFocusedField,\n  focusField,\n  blurField,\n  focusTextInput,\n  blurTextInput,\n  registerInput,\n  unregisterInput,\n  isTextInput,\n};\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {\n  BubblingEventHandler,\n  DirectEventHandler,\n  Double,\n  Float,\n  Int32,\n  WithDefault,\n} from '../../Types/CodegenTypes';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {TextStyleProp, ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport type {TextInputNativeCommands} from './TextInputNativeCommands';\nimport AndroidTextInputViewConfig from './AndroidTextInputViewConfig';\nconst ReactNativeViewConfigRegistry = require('../../Renderer/shims/ReactNativeViewConfigRegistry');\n\nexport type KeyboardType =\n  // Cross Platform\n  | 'default'\n  | 'email-address'\n  | 'numeric'\n  | 'phone-pad'\n  | 'number-pad'\n  | 'decimal-pad'\n  // iOS-only\n  | 'ascii-capable'\n  | 'numbers-and-punctuation'\n  | 'url'\n  | 'name-phone-pad'\n  | 'twitter'\n  | 'web-search'\n  // Android-only\n  | 'visible-password';\n\nexport type ReturnKeyType =\n  // Cross Platform\n  | 'done'\n  | 'go'\n  | 'next'\n  | 'search'\n  | 'send'\n  // Android-only\n  | 'none'\n  | 'previous'\n  // iOS-only\n  | 'default'\n  | 'emergency-call'\n  | 'google'\n  | 'join'\n  | 'route'\n  | 'yahoo';\n\nexport type NativeProps = $ReadOnly<{|\n  // This allows us to inherit everything from ViewProps except for style (see below)\n  // This must be commented for Fabric codegen to work.\n  ...$Diff<ViewProps, $ReadOnly<{|style: ?ViewStyleProp|}>>,\n\n  /**\n   * Android props after this\n   */\n  /**\n   * Determines which content to suggest on auto complete, e.g.`username`.\n   * To disable auto complete, use `off`.\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `username`\n   * - `password`\n   * - `email`\n   * - `name`\n   * - `tel`\n   * - `street-address`\n   * - `postal-code`\n   * - `cc-number`\n   * - `cc-csc`\n   * - `cc-exp`\n   * - `cc-exp-month`\n   * - `cc-exp-year`\n   * - `off`\n   *\n   * @platform android\n   */\n  autoCompleteType?: WithDefault<\n    | 'cc-csc'\n    | 'cc-exp'\n    | 'cc-exp-month'\n    | 'cc-exp-year'\n    | 'cc-number'\n    | 'email'\n    | 'name'\n    | 'password'\n    | 'postal-code'\n    | 'street-address'\n    | 'tel'\n    | 'username'\n    | 'off',\n    'off',\n  >,\n\n  /**\n   * Sets the return key to the label. Use it instead of `returnKeyType`.\n   * @platform android\n   */\n  returnKeyLabel?: ?string,\n\n  /**\n   * Sets the number of lines for a `TextInput`. Use it with multiline set to\n   * `true` to be able to fill the lines.\n   * @platform android\n   */\n  numberOfLines?: ?Int32,\n\n  /**\n   * When `false`, if there is a small amount of space available around a text input\n   * (e.g. landscape orientation on a phone), the OS may choose to have the user edit\n   * the text inside of a full screen text input mode. When `true`, this feature is\n   * disabled and users will always edit the text directly inside of the text input.\n   * Defaults to `false`.\n   * @platform android\n   */\n  disableFullscreenUI?: ?boolean,\n\n  /**\n   * Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`\n   * The default value is `simple`.\n   * @platform android\n   */\n  textBreakStrategy?: WithDefault<\n    'simple' | 'highQuality' | 'balanced',\n    'simple',\n  >,\n\n  /**\n   * The color of the `TextInput` underline.\n   * @platform android\n   */\n  underlineColorAndroid?: ?ColorValue,\n\n  /**\n   * If defined, the provided image resource will be rendered on the left.\n   * The image resource must be inside `/android/app/src/main/res/drawable` and referenced\n   * like\n   * ```\n   * <TextInput\n   *  inlineImageLeft='search_icon'\n   * />\n   * ```\n   * @platform android\n   */\n  inlineImageLeft?: ?string,\n\n  /**\n   * Padding between the inline image, if any, and the text input itself.\n   * @platform android\n   */\n  inlineImagePadding?: ?Int32,\n\n  importantForAutofill?: string /*?(\n    | 'auto'\n    | 'no'\n    | 'noExcludeDescendants'\n    | 'yes'\n    | 'yesExcludeDescendants'\n  ),*/,\n\n  /**\n   * When `false`, it will prevent the soft keyboard from showing when the field is focused.\n   * Defaults to `true`.\n   */\n  showSoftInputOnFocus?: ?boolean,\n\n  /**\n   * TextInput props after this\n   */\n  /**\n   * Can tell `TextInput` to automatically capitalize certain characters.\n   *\n   * - `characters`: all characters.\n   * - `words`: first letter of each word.\n   * - `sentences`: first letter of each sentence (*default*).\n   * - `none`: don't auto capitalize anything.\n   */\n  autoCapitalize?: WithDefault<\n    'none' | 'sentences' | 'words' | 'characters',\n    'none',\n  >,\n\n  /**\n   * If `false`, disables auto-correct. The default value is `true`.\n   */\n  autoCorrect?: ?boolean,\n\n  /**\n   * If `true`, focuses the input on `componentDidMount`.\n   * The default value is `false`.\n   */\n  autoFocus?: ?boolean,\n\n  /**\n   * Specifies whether fonts should scale to respect Text Size accessibility settings. The\n   * default is `true`.\n   */\n  allowFontScaling?: ?boolean,\n\n  /**\n   * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.\n   * Possible values:\n   * `null/undefined` (default): inherit from the parent node or the global default (0)\n   * `0`: no max, ignore parent/global default\n   * `>= 1`: sets the maxFontSizeMultiplier of this node to this value\n   */\n  maxFontSizeMultiplier?: ?Float,\n\n  /**\n   * If `false`, text is not editable. The default value is `true`.\n   */\n  editable?: ?boolean,\n\n  /**\n   * Determines which keyboard to open, e.g.`numeric`.\n   *\n   * The following values work across platforms:\n   *\n   * - `default`\n   * - `numeric`\n   * - `number-pad`\n   * - `decimal-pad`\n   * - `email-address`\n   * - `phone-pad`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `visible-password`\n   */\n  keyboardType?: WithDefault<KeyboardType, 'default'>,\n\n  /**\n   * Determines how the return key should look. On Android you can also use\n   * `returnKeyLabel`.\n   *\n   * *Cross platform*\n   *\n   * The following values work across platforms:\n   *\n   * - `done`\n   * - `go`\n   * - `next`\n   * - `search`\n   * - `send`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `none`\n   * - `previous`\n   */\n  returnKeyType?: WithDefault<ReturnKeyType, 'done'>,\n\n  /**\n   * Limits the maximum number of characters that can be entered. Use this\n   * instead of implementing the logic in JS to avoid flicker.\n   */\n  maxLength?: ?Int32,\n\n  /**\n   * If `true`, the text input can be multiple lines.\n   * The default value is `false`.\n   */\n  multiline?: ?boolean,\n\n  /**\n   * Callback that is called when the text input is blurred.\n   * `target` is the reactTag of the element\n   */\n  onBlur?: ?BubblingEventHandler<$ReadOnly<{|target: Int32|}>>,\n\n  /**\n   * Callback that is called when the text input is focused.\n   * `target` is the reactTag of the element\n   */\n  onFocus?: ?BubblingEventHandler<$ReadOnly<{|target: Int32|}>>,\n\n  /**\n   * Callback that is called when the text input's text changes.\n   * `target` is the reactTag of the element\n   * TODO: differentiate between onChange and onChangeText\n   */\n  onChange?: ?BubblingEventHandler<\n    $ReadOnly<{|target: Int32, eventCount: Int32, text: string|}>,\n  >,\n\n  /**\n   * Callback that is called when the text input's text changes.\n   * Changed text is passed as an argument to the callback handler.\n   * TODO: differentiate between onChange and onChangeText\n   */\n  onChangeText?: ?BubblingEventHandler<\n    $ReadOnly<{|target: Int32, eventCount: Int32, text: string|}>,\n  >,\n\n  /**\n   * Callback that is called when the text input's content size changes.\n   * This will be called with\n   * `{ nativeEvent: { contentSize: { width, height } } }`.\n   *\n   * Only called for multiline text inputs.\n   */\n  onContentSizeChange?: ?DirectEventHandler<\n    $ReadOnly<{|\n      target: Int32,\n      contentSize: $ReadOnly<{|width: Double, height: Double|}>,\n    |}>,\n  >,\n\n  onTextInput?: ?BubblingEventHandler<\n    $ReadOnly<{|\n      target: Int32,\n      text: string,\n      previousText: string,\n      range: $ReadOnly<{|start: Double, end: Double|}>,\n    |}>,\n  >,\n\n  /**\n   * Callback that is called when text input ends.\n   */\n  onEndEditing?: ?BubblingEventHandler<\n    $ReadOnly<{|target: Int32, text: string|}>,\n  >,\n\n  /**\n   * Callback that is called when the text input selection is changed.\n   * This will be called with\n   * `{ nativeEvent: { selection: { start, end } } }`.\n   */\n  onSelectionChange?: ?DirectEventHandler<\n    $ReadOnly<{|\n      target: Int32,\n      selection: $ReadOnly<{|start: Double, end: Double|}>,\n    |}>,\n  >,\n\n  /**\n   * Callback that is called when the text input's submit button is pressed.\n   * Invalid if `multiline={true}` is specified.\n   */\n  onSubmitEditing?: ?BubblingEventHandler<\n    $ReadOnly<{|target: Int32, text: string|}>,\n  >,\n\n  /**\n   * Callback that is called when a key is pressed.\n   * This will be called with `{ nativeEvent: { key: keyValue } }`\n   * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and\n   * the typed-in character otherwise including `' '` for space.\n   * Fires before `onChange` callbacks.\n   */\n  onKeyPress?: ?BubblingEventHandler<$ReadOnly<{|target: Int32, key: string|}>>,\n\n  /**\n   * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.\n   * May also contain other properties from ScrollEvent but on Android contentSize\n   * is not provided for performance reasons.\n   */\n  onScroll?: ?DirectEventHandler<\n    $ReadOnly<{|\n      target: Int32,\n      responderIgnoreScroll: boolean,\n      contentInset: $ReadOnly<{|\n        top: Double, // always 0 on Android\n        bottom: Double, // always 0 on Android\n        left: Double, // always 0 on Android\n        right: Double, // always 0 on Android\n      |}>,\n      contentOffset: $ReadOnly<{|\n        x: Double,\n        y: Double,\n      |}>,\n      contentSize: $ReadOnly<{|\n        width: Double, // always 0 on Android\n        height: Double, // always 0 on Android\n      |}>,\n      layoutMeasurement: $ReadOnly<{|\n        width: Double,\n        height: Double,\n      |}>,\n      velocity: $ReadOnly<{|\n        x: Double, // always 0 on Android\n        y: Double, // always 0 on Android\n      |}>,\n    |}>,\n  >,\n\n  /**\n   * The string that will be rendered before text input has been entered.\n   */\n  placeholder?: ?string,\n\n  /**\n   * The text color of the placeholder string.\n   */\n  placeholderTextColor?: ?ColorValue,\n\n  /**\n   * If `true`, the text input obscures the text entered so that sensitive text\n   * like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.\n   */\n  secureTextEntry?: ?boolean,\n\n  /**\n   * The highlight and cursor color of the text input.\n   */\n  selectionColor?: ?ColorValue,\n\n  /**\n   * The start and end of the text input's selection. Set start and end to\n   * the same value to position the cursor.\n   */\n  selection?: ?$ReadOnly<{|\n    start: Int32,\n    end?: ?Int32,\n  |}>,\n\n  /**\n   * The value to show for the text input. `TextInput` is a controlled\n   * component, which means the native value will be forced to match this\n   * value prop if provided. For most uses, this works great, but in some\n   * cases this may cause flickering - one common cause is preventing edits\n   * by keeping value the same. In addition to simply setting the same value,\n   * either set `editable={false}`, or set/update `maxLength` to prevent\n   * unwanted edits without flicker.\n   */\n  value?: ?string,\n\n  /**\n   * Provides an initial value that will change when the user starts typing.\n   * Useful for simple use-cases where you do not want to deal with listening\n   * to events and updating the value prop to keep the controlled state in sync.\n   */\n  defaultValue?: ?string,\n\n  /**\n   * If `true`, all text will automatically be selected on focus.\n   */\n  selectTextOnFocus?: ?boolean,\n\n  /**\n   * If `true`, the text field will blur when submitted.\n   * The default value is true for single-line fields and false for\n   * multiline fields. Note that for multiline fields, setting `blurOnSubmit`\n   * to `true` means that pressing return will blur the field and trigger the\n   * `onSubmitEditing` event instead of inserting a newline into the field.\n   */\n  blurOnSubmit?: ?boolean,\n\n  /**\n   * Note that not all Text styles are supported, an incomplete list of what is not supported includes:\n   *\n   * - `borderLeftWidth`\n   * - `borderTopWidth`\n   * - `borderRightWidth`\n   * - `borderBottomWidth`\n   * - `borderTopLeftRadius`\n   * - `borderTopRightRadius`\n   * - `borderBottomRightRadius`\n   * - `borderBottomLeftRadius`\n   *\n   * see [Issue#7070](https://github.com/facebook/react-native/issues/7070)\n   * for more detail.\n   *\n   * [Styles](docs/style.html)\n   */\n  // TODO: figure out what to do with this style prop for codegen/Fabric purposes\n  // This must be commented for Fabric codegen to work; it's currently not possible\n  // to override the default View style prop in codegen.\n  style?: ?TextStyleProp,\n\n  /**\n   * If `true`, caret is hidden. The default value is `false`.\n   * This property is supported only for single-line TextInput component on iOS.\n   */\n  caretHidden?: ?boolean,\n\n  /*\n   * If `true`, contextMenuHidden is hidden. The default value is `false`.\n   */\n  contextMenuHidden?: ?boolean,\n\n  /**\n   * The following are props that `BaseTextShadowNode` takes. It is unclear if they\n   * are used by TextInput.\n   */\n  textShadowColor?: ?ColorValue,\n  textShadowRadius?: ?Float,\n  textDecorationLine?: ?string,\n  fontStyle?: ?string,\n  textShadowOffset?: ?$ReadOnly<{|width?: ?Double, height?: ?Double|}>,\n  lineHeight?: ?Float,\n  textTransform?: ?string,\n  color?: ?Int32,\n  letterSpacing?: ?Float,\n  fontSize?: ?Float,\n  textAlign?: ?string,\n  includeFontPadding?: ?boolean,\n  fontWeight?: ?string,\n  fontFamily?: ?string,\n\n  /**\n   * I cannot find where these are defined but JS complains without them.\n   */\n  textAlignVertical?: ?string,\n  cursorColor?: ?ColorValue,\n\n  /**\n   * \"Private\" fields used by TextInput.js and not users of this component directly\n   */\n  mostRecentEventCount: Int32,\n  text?: ?string,\n|}>;\n\ntype NativeType = HostComponent<NativeProps>;\n\ntype NativeCommands = TextInputNativeCommands<NativeType>;\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['focus', 'blur', 'setTextAndSelection'],\n});\n\nlet AndroidTextInputNativeComponent;\nif (global.RN$Bridgeless) {\n  ReactNativeViewConfigRegistry.register('AndroidTextInput', () => {\n    return AndroidTextInputViewConfig;\n  });\n  AndroidTextInputNativeComponent = 'AndroidTextInput';\n} else {\n  AndroidTextInputNativeComponent = requireNativeComponent<NativeProps>(\n    'AndroidTextInput',\n  );\n}\n\n// flowlint-next-line unclear-type:off\nexport default ((AndroidTextInputNativeComponent: any): HostComponent<NativeProps>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst createReactNativeComponentClass = require('../Renderer/shims/createReactNativeComponentClass');\nconst getNativeComponentAttributes = require('./getNativeComponentAttributes');\n\nimport type {HostComponent} from '../Renderer/shims/ReactNativeTypes';\n\n/**\n * Creates values that can be used like React components which represent native\n * view managers. You should create JavaScript modules that wrap these values so\n * that the results are memoized. Example:\n *\n *   const View = requireNativeComponent('RCTView');\n *\n */\n\nconst requireNativeComponent = <T>(uiViewClassName: string): HostComponent<T> =>\n  ((createReactNativeComponentClass(uiViewClassName, () =>\n    getNativeComponentAttributes(uiViewClassName),\n  ): any): HostComponent<T>);\n\nmodule.exports = requireNativeComponent;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport {ReactNativeViewConfigRegistry} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface';\n\nimport type {ViewConfigGetter} from './ReactNativeTypes';\n\nconst {register} = ReactNativeViewConfigRegistry;\n\n/**\n * Creates a renderable ReactNative host component.\n * Use this method for view configs that are loaded from UIManager.\n * Use createReactNativeComponentClass() for view configs defined within JavaScript.\n *\n * @param {string} config iOS View configuration.\n * @private\n */\nconst createReactNativeComponentClass = function(\n  name: string,\n  callback: ViewConfigGetter,\n): string {\n  return register(name, callback);\n};\n\nmodule.exports = createReactNativeComponentClass;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');\nconst UIManager = require('./UIManager');\n\nconst insetsDiffer = require('../Utilities/differ/insetsDiffer');\nconst invariant = require('invariant');\nconst matricesDiffer = require('../Utilities/differ/matricesDiffer');\nconst pointsDiffer = require('../Utilities/differ/pointsDiffer');\nconst processColor = require('../StyleSheet/processColor');\nconst processColorArray = require('../StyleSheet/processColorArray');\nconst resolveAssetSource = require('../Image/resolveAssetSource');\nconst sizesDiffer = require('../Utilities/differ/sizesDiffer');\n\nfunction getNativeComponentAttributes(uiViewClassName: string): any {\n  const viewConfig = UIManager.getViewManagerConfig(uiViewClassName);\n\n  invariant(\n    viewConfig != null && viewConfig.NativeProps != null,\n    'requireNativeComponent: \"%s\" was not found in the UIManager.',\n    uiViewClassName,\n  );\n\n  // TODO: This seems like a whole lot of runtime initialization for every\n  // native component that can be either avoided or simplified.\n  let {baseModuleName, bubblingEventTypes, directEventTypes} = viewConfig;\n  let nativeProps = viewConfig.NativeProps;\n  while (baseModuleName) {\n    const baseModule = UIManager.getViewManagerConfig(baseModuleName);\n    if (!baseModule) {\n      baseModuleName = null;\n    } else {\n      bubblingEventTypes = {\n        ...baseModule.bubblingEventTypes,\n        ...bubblingEventTypes,\n      };\n      directEventTypes = {\n        ...baseModule.directEventTypes,\n        ...directEventTypes,\n      };\n      nativeProps = {\n        ...baseModule.NativeProps,\n        ...nativeProps,\n      };\n      baseModuleName = baseModule.baseModuleName;\n    }\n  }\n\n  const validAttributes = {};\n\n  for (const key in nativeProps) {\n    const typeName = nativeProps[key];\n    const diff = getDifferForType(typeName);\n    const process = getProcessorForType(typeName);\n\n    validAttributes[key] =\n      diff == null && process == null ? true : {diff, process};\n  }\n\n  // Unfortunately, the current setup declares style properties as top-level\n  // props. This makes it so we allow style properties in the `style` prop.\n  // TODO: Move style properties into a `style` prop and disallow them as\n  // top-level props on the native side.\n  validAttributes.style = ReactNativeStyleAttributes;\n\n  Object.assign(viewConfig, {\n    uiViewClassName,\n    validAttributes,\n    bubblingEventTypes,\n    directEventTypes,\n  });\n\n  if (!hasAttachedDefaultEventTypes) {\n    attachDefaultEventTypes(viewConfig);\n    hasAttachedDefaultEventTypes = true;\n  }\n\n  return viewConfig;\n}\n\n// TODO: Figure out how this makes sense. We're using a global boolean to only\n// initialize this on the first eagerly initialized native component.\nlet hasAttachedDefaultEventTypes = false;\nfunction attachDefaultEventTypes(viewConfig: any) {\n  // This is supported on UIManager platforms (ex: Android),\n  // as lazy view managers are not implemented for all platforms.\n  // See [UIManager] for details on constants and implementations.\n  const constants = UIManager.getConstants();\n  if (constants.ViewManagerNames || constants.LazyViewManagersEnabled) {\n    // Lazy view managers enabled.\n    viewConfig = merge(viewConfig, UIManager.getDefaultEventTypes());\n  } else {\n    viewConfig.bubblingEventTypes = merge(\n      viewConfig.bubblingEventTypes,\n      constants.genericBubblingEventTypes,\n    );\n    viewConfig.directEventTypes = merge(\n      viewConfig.directEventTypes,\n      constants.genericDirectEventTypes,\n    );\n  }\n}\n\n// TODO: Figure out how to avoid all this runtime initialization cost.\nfunction merge(destination: ?Object, source: ?Object): ?Object {\n  if (!source) {\n    return destination;\n  }\n  if (!destination) {\n    return source;\n  }\n\n  for (const key in source) {\n    if (!source.hasOwnProperty(key)) {\n      continue;\n    }\n\n    let sourceValue = source[key];\n    if (destination.hasOwnProperty(key)) {\n      const destinationValue = destination[key];\n      if (\n        typeof sourceValue === 'object' &&\n        typeof destinationValue === 'object'\n      ) {\n        sourceValue = merge(destinationValue, sourceValue);\n      }\n    }\n    destination[key] = sourceValue;\n  }\n  return destination;\n}\n\nfunction getDifferForType(\n  typeName: string,\n): ?(prevProp: any, nextProp: any) => boolean {\n  switch (typeName) {\n    // iOS Types\n    case 'CATransform3D':\n      return matricesDiffer;\n    case 'CGPoint':\n      return pointsDiffer;\n    case 'CGSize':\n      return sizesDiffer;\n    case 'UIEdgeInsets':\n      return insetsDiffer;\n    // Android Types\n    // (not yet implemented)\n  }\n  return null;\n}\n\nfunction getProcessorForType(typeName: string): ?(nextProp: any) => any {\n  switch (typeName) {\n    // iOS Types\n    case 'CGColor':\n    case 'UIColor':\n      return processColor;\n    case 'CGColorArray':\n    case 'UIColorArray':\n      return processColorArray;\n    case 'CGImage':\n    case 'UIImage':\n    case 'RCTImageSource':\n      return resolveAssetSource;\n    // Android Types\n    case 'Color':\n      return processColor;\n    case 'ColorArray':\n      return processColorArray;\n  }\n  return null;\n}\n\nmodule.exports = getNativeComponentAttributes;\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 * @format\n * @flow\n */\n\n'use strict';\n\ntype Inset = {\n  top: ?number,\n  left: ?number,\n  right: ?number,\n  bottom: ?number,\n  ...\n};\n\nconst dummyInsets = {\n  top: undefined,\n  left: undefined,\n  right: undefined,\n  bottom: undefined,\n};\n\nconst insetsDiffer = function(one: Inset, two: Inset): boolean {\n  one = one || dummyInsets;\n  two = two || dummyInsets;\n  return (\n    one !== two &&\n    (one.top !== two.top ||\n      one.left !== two.left ||\n      one.right !== two.right ||\n      one.bottom !== two.bottom)\n  );\n};\n\nmodule.exports = insetsDiffer;\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 * @format\n */\n\n'use strict';\n\n/**\n * Unrolls an array comparison specially for matrices. Prioritizes\n * checking of indices that are most likely to change so that the comparison\n * bails as early as possible.\n *\n * @param {MatrixMath.Matrix} one First matrix.\n * @param {MatrixMath.Matrix} two Second matrix.\n * @return {boolean} Whether or not the two matrices differ.\n */\nconst matricesDiffer = function(one, two) {\n  if (one === two) {\n    return false;\n  }\n  return (\n    !one ||\n    !two ||\n    one[12] !== two[12] ||\n    one[13] !== two[13] ||\n    one[14] !== two[14] ||\n    one[5] !== two[5] ||\n    one[10] !== two[10] ||\n    one[0] !== two[0] ||\n    one[1] !== two[1] ||\n    one[2] !== two[2] ||\n    one[3] !== two[3] ||\n    one[4] !== two[4] ||\n    one[6] !== two[6] ||\n    one[7] !== two[7] ||\n    one[8] !== two[8] ||\n    one[9] !== two[9] ||\n    one[11] !== two[11] ||\n    one[15] !== two[15]\n  );\n};\n\nmodule.exports = matricesDiffer;\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 * @format\n * @flow\n */\n\n'use strict';\n\ntype Point = {\n  x: ?number,\n  y: ?number,\n  ...\n};\n\nconst dummyPoint = {x: undefined, y: undefined};\n\nconst pointsDiffer = function(one: ?Point, two: ?Point): boolean {\n  one = one || dummyPoint;\n  two = two || dummyPoint;\n  return one !== two && (one.x !== two.x || one.y !== two.y);\n};\n\nmodule.exports = pointsDiffer;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst processColor = require('./processColor');\n\nimport type {ColorValue} from './StyleSheet';\nimport type {ProcessedColorValue} from './processColor';\n\nfunction processColorArray(\n  colors: ?Array<ColorValue>,\n): ?Array<?ProcessedColorValue> {\n  return colors == null ? null : colors.map(processColor);\n}\n\nmodule.exports = processColorArray;\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 * @format\n * @flow\n */\n\n// Resolves an asset into a `source` for `Image`.\n\n'use strict';\n\nconst AssetRegistry = require('@react-native/assets/registry');\nconst AssetSourceResolver = require('./AssetSourceResolver');\n\nimport type {ResolvedAssetSource} from './AssetSourceResolver';\n\nlet _customSourceTransformer, _serverURL, _scriptURL;\n\nlet _sourceCodeScriptURL: ?string;\nfunction getSourceCodeScriptURL(): ?string {\n  if (_sourceCodeScriptURL) {\n    return _sourceCodeScriptURL;\n  }\n\n  let sourceCode =\n    global.nativeExtensions && global.nativeExtensions.SourceCode;\n  if (!sourceCode) {\n    sourceCode = require('../NativeModules/specs/NativeSourceCode').default;\n  }\n  _sourceCodeScriptURL = sourceCode.getConstants().scriptURL;\n  return _sourceCodeScriptURL;\n}\n\nfunction getDevServerURL(): ?string {\n  if (_serverURL === undefined) {\n    const sourceCodeScriptURL = getSourceCodeScriptURL();\n    const match =\n      sourceCodeScriptURL && sourceCodeScriptURL.match(/^https?:\\/\\/.*?\\//);\n    if (match) {\n      // jsBundle was loaded from network\n      _serverURL = match[0];\n    } else {\n      // jsBundle was loaded from file\n      _serverURL = null;\n    }\n  }\n  return _serverURL;\n}\n\nfunction _coerceLocalScriptURL(scriptURL: ?string): ?string {\n  if (scriptURL) {\n    if (scriptURL.startsWith('assets://')) {\n      // android: running from within assets, no offline path to use\n      return null;\n    }\n    scriptURL = scriptURL.substring(0, scriptURL.lastIndexOf('/') + 1);\n    if (!scriptURL.includes('://')) {\n      // Add file protocol in case we have an absolute file path and not a URL.\n      // This shouldn't really be necessary. scriptURL should be a URL.\n      scriptURL = 'file://' + scriptURL;\n    }\n  }\n  return scriptURL;\n}\n\nfunction getScriptURL(): ?string {\n  if (_scriptURL === undefined) {\n    _scriptURL = _coerceLocalScriptURL(getSourceCodeScriptURL());\n  }\n  return _scriptURL;\n}\n\nfunction setCustomSourceTransformer(\n  transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource,\n): void {\n  _customSourceTransformer = transformer;\n}\n\n/**\n * `source` is either a number (opaque type returned by require('./foo.png'))\n * or an `ImageSource` like { uri: '<http location || file path>' }\n */\nfunction resolveAssetSource(source: any): ?ResolvedAssetSource {\n  if (typeof source === 'object') {\n    return source;\n  }\n\n  const asset = AssetRegistry.getAssetByID(source);\n  if (!asset) {\n    return null;\n  }\n\n  const resolver = new AssetSourceResolver(\n    getDevServerURL(),\n    getScriptURL(),\n    asset,\n  );\n  if (_customSourceTransformer) {\n    return _customSourceTransformer(resolver);\n  }\n  return resolver.defaultAsset();\n}\n\nmodule.exports = resolveAssetSource;\nmodule.exports.pickScale = AssetSourceResolver.pickScale;\nmodule.exports.setCustomSourceTransformer = setCustomSourceTransformer;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nexport type PackagerAsset = {\n  +__packager_asset: boolean,\n  +fileSystemLocation: string,\n  +httpServerLocation: string,\n  +width: ?number,\n  +height: ?number,\n  +scales: Array<number>,\n  +hash: string,\n  +name: string,\n  +type: string,\n  ...\n};\n\nconst assets: Array<PackagerAsset> = [];\n\nfunction registerAsset(asset: PackagerAsset): number {\n  // `push` returns new array length, so the first asset will\n  // get id 1 (not 0) to make the value truthy\n  return assets.push(asset);\n}\n\nfunction getAssetByID(assetId: number): PackagerAsset {\n  return assets[assetId - 1];\n}\n\nmodule.exports = {registerAsset, getAssetByID};\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 * @flow\n * @format\n */\n\n'use strict';\n\nexport type ResolvedAssetSource = {|\n  +__packager_asset: boolean,\n  +width: ?number,\n  +height: ?number,\n  +uri: string,\n  +scale: number,\n|};\n\nimport type {PackagerAsset} from '@react-native/assets/registry';\n\nconst PixelRatio = require('../Utilities/PixelRatio');\nconst Platform = require('../Utilities/Platform');\n\nconst invariant = require('invariant');\n\nconst {\n  getAndroidResourceFolderName,\n  getAndroidResourceIdentifier,\n  getBasePath,\n} = require('@react-native/assets/path-support');\n\n/**\n * Returns a path like 'assets/AwesomeModule/icon@2x.png'\n */\nfunction getScaledAssetPath(asset): string {\n  const scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get());\n  const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n  const assetDir = getBasePath(asset);\n  return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;\n}\n\n/**\n * Returns a path like 'drawable-mdpi/icon.png'\n */\nfunction getAssetPathInDrawableFolder(asset): string {\n  const scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get());\n  const drawbleFolder = getAndroidResourceFolderName(asset, scale);\n  const fileName = getAndroidResourceIdentifier(asset);\n  return drawbleFolder + '/' + fileName + '.' + asset.type;\n}\n\nclass AssetSourceResolver {\n  serverUrl: ?string;\n  // where the jsbundle is being run from\n  jsbundleUrl: ?string;\n  // the asset to resolve\n  asset: PackagerAsset;\n\n  constructor(serverUrl: ?string, jsbundleUrl: ?string, asset: PackagerAsset) {\n    this.serverUrl = serverUrl;\n    this.jsbundleUrl = jsbundleUrl;\n    this.asset = asset;\n  }\n\n  isLoadedFromServer(): boolean {\n    return !!this.serverUrl;\n  }\n\n  isLoadedFromFileSystem(): boolean {\n    return !!(this.jsbundleUrl && this.jsbundleUrl.startsWith('file://'));\n  }\n\n  defaultAsset(): ResolvedAssetSource {\n    if (this.isLoadedFromServer()) {\n      return this.assetServerURL();\n    }\n\n    if (Platform.OS === 'android') {\n      return this.isLoadedFromFileSystem()\n        ? this.drawableFolderInBundle()\n        : this.resourceIdentifierWithoutScale();\n    } else {\n      return this.scaledAssetURLNearBundle();\n    }\n  }\n\n  /**\n   * Returns an absolute URL which can be used to fetch the asset\n   * from the devserver\n   */\n  assetServerURL(): ResolvedAssetSource {\n    invariant(!!this.serverUrl, 'need server to load from');\n    return this.fromSource(\n      this.serverUrl +\n        getScaledAssetPath(this.asset) +\n        '?platform=' +\n        Platform.OS +\n        '&hash=' +\n        this.asset.hash,\n    );\n  }\n\n  /**\n   * Resolves to just the scaled asset filename\n   * E.g. 'assets/AwesomeModule/icon@2x.png'\n   */\n  scaledAssetPath(): ResolvedAssetSource {\n    return this.fromSource(getScaledAssetPath(this.asset));\n  }\n\n  /**\n   * Resolves to where the bundle is running from, with a scaled asset filename\n   * E.g. 'file:///sdcard/bundle/assets/AwesomeModule/icon@2x.png'\n   */\n  scaledAssetURLNearBundle(): ResolvedAssetSource {\n    const path = this.jsbundleUrl || 'file://';\n    return this.fromSource(\n      // Assets can have relative paths outside of the project root.\n      // When bundling them we replace `../` with `_` to make sure they\n      // don't end up outside of the expected assets directory.\n      path + getScaledAssetPath(this.asset).replace(/\\.\\.\\//g, '_'),\n    );\n  }\n\n  /**\n   * The default location of assets bundled with the app, located by\n   * resource identifier\n   * The Android resource system picks the correct scale.\n   * E.g. 'assets_awesomemodule_icon'\n   */\n  resourceIdentifierWithoutScale(): ResolvedAssetSource {\n    invariant(\n      Platform.OS === 'android',\n      'resource identifiers work on Android',\n    );\n    return this.fromSource(getAndroidResourceIdentifier(this.asset));\n  }\n\n  /**\n   * If the jsbundle is running from a sideload location, this resolves assets\n   * relative to its location\n   * E.g. 'file:///sdcard/AwesomeModule/drawable-mdpi/icon.png'\n   */\n  drawableFolderInBundle(): ResolvedAssetSource {\n    const path = this.jsbundleUrl || 'file://';\n    return this.fromSource(path + getAssetPathInDrawableFolder(this.asset));\n  }\n\n  fromSource(source: string): ResolvedAssetSource {\n    return {\n      __packager_asset: true,\n      width: this.asset.width,\n      height: this.asset.height,\n      uri: source,\n      scale: AssetSourceResolver.pickScale(this.asset.scales, PixelRatio.get()),\n    };\n  }\n\n  static pickScale(scales: Array<number>, deviceScale: number): number {\n    // Packager guarantees that `scales` array is sorted\n    for (let i = 0; i < scales.length; i++) {\n      if (scales[i] >= deviceScale) {\n        return scales[i];\n      }\n    }\n\n    // If nothing matches, device scale is larger than any available\n    // scales, so we return the biggest one. Unless the array is empty,\n    // in which case we default to 1\n    return scales[scales.length - 1] || 1;\n  }\n}\n\nmodule.exports = AssetSourceResolver;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport type {PackagerAsset} from './registry.js';\n\nconst androidScaleSuffix = {\n  '0.75': 'ldpi',\n  '1': 'mdpi',\n  '1.5': 'hdpi',\n  '2': 'xhdpi',\n  '3': 'xxhdpi',\n  '4': 'xxxhdpi',\n};\n\n/**\n * FIXME: using number to represent discrete scale numbers is fragile in essence because of\n * floating point numbers imprecision.\n */\nfunction getAndroidAssetSuffix(scale: number): string {\n  if (scale.toString() in androidScaleSuffix) {\n    return androidScaleSuffix[scale.toString()];\n  }\n\n  throw new Error('no such scale ' + scale.toString());\n}\n\n// See https://developer.android.com/guide/topics/resources/drawable-resource.html\nconst drawableFileTypes = new Set([\n  'gif',\n  'jpeg',\n  'jpg',\n  'png',\n  'svg',\n  'webp',\n  'xml',\n]);\n\nfunction getAndroidResourceFolderName(\n  asset: PackagerAsset,\n  scale: number,\n): string | $TEMPORARY$string<'raw'> {\n  if (!drawableFileTypes.has(asset.type)) {\n    return 'raw';\n  }\n  const suffix = getAndroidAssetSuffix(scale);\n  if (!suffix) {\n    throw new Error(\n      \"Don't know which android drawable suffix to use for scale: \" +\n        scale +\n        '\\nAsset: ' +\n        JSON.stringify(asset, null, '\\t') +\n        '\\nPossible scales are:' +\n        JSON.stringify(androidScaleSuffix, null, '\\t'),\n    );\n  }\n  return 'drawable-' + suffix;\n}\n\nfunction getAndroidResourceIdentifier(asset: PackagerAsset): string {\n  return (getBasePath(asset) + '/' + asset.name)\n    .toLowerCase()\n    .replace(/\\//g, '_') // Encode folder structure in file name\n    .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n    .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBasePath(asset: PackagerAsset): string {\n  const basePath = asset.httpServerLocation;\n  return basePath.startsWith('/') ? basePath.substr(1) : basePath;\n}\n\nmodule.exports = {\n  getAndroidResourceFolderName,\n  getAndroidResourceIdentifier,\n  getBasePath,\n};\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    scriptURL: string,\n  |};\n}\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>('SourceCode');\nlet constants = null;\n\nconst NativeSourceCode = {\n  getConstants(): {|\n    scriptURL: string,\n  |} {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n\n    return constants;\n  },\n};\n\nexport default NativeSourceCode;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig';\nimport type {ReactNativeBaseComponentViewConfig} from '../../Renderer/shims/ReactNativeTypes';\n\nconst AndroidTextInputViewConfig = {\n  uiViewClassName: 'AndroidTextInput',\n  bubblingEventTypes: {\n    topBlur: {\n      phasedRegistrationNames: {\n        bubbled: 'onBlur',\n        captured: 'onBlurCapture',\n      },\n    },\n    topEndEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onEndEditing',\n        captured: 'onEndEditingCapture',\n      },\n    },\n    topFocus: {\n      phasedRegistrationNames: {\n        bubbled: 'onFocus',\n        captured: 'onFocusCapture',\n      },\n    },\n    topKeyPress: {\n      phasedRegistrationNames: {\n        bubbled: 'onKeyPress',\n        captured: 'onKeyPressCapture',\n      },\n    },\n    topSubmitEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onSubmitEditing',\n        captured: 'onSubmitEditingCapture',\n      },\n    },\n    topTextInput: {\n      phasedRegistrationNames: {\n        bubbled: 'onTextInput',\n        captured: 'onTextInputCapture',\n      },\n    },\n  },\n  directEventTypes: {},\n  validAttributes: {\n    ...ReactNativeViewViewConfig.validAttributes,\n\n    maxFontSizeMultiplier: true,\n    placeholder: true,\n    inlineImagePadding: true,\n    contextMenuHidden: true,\n    textShadowColor: {process: require('../../StyleSheet/processColor')},\n    maxLength: true,\n    selectTextOnFocus: true,\n    textShadowRadius: true,\n    underlineColorAndroid: {process: require('../../StyleSheet/processColor')},\n    textDecorationLine: true,\n    blurOnSubmit: true,\n    textAlignVertical: true,\n    fontStyle: true,\n    textShadowOffset: true,\n    selectionColor: {process: require('../../StyleSheet/processColor')},\n    selection: true,\n    placeholderTextColor: {process: require('../../StyleSheet/processColor')},\n    importantForAutofill: true,\n    lineHeight: true,\n    textTransform: true,\n    returnKeyType: true,\n    keyboardType: true,\n    multiline: true,\n    color: true,\n    autoCompleteType: true,\n    numberOfLines: true,\n    letterSpacing: true,\n    returnKeyLabel: true,\n    fontSize: true,\n    onKeyPress: true,\n    cursorColor: {process: require('../../StyleSheet/processColor')},\n    text: true,\n    showSoftInputOnFocus: true,\n    textAlign: true,\n    autoCapitalize: true,\n    autoCorrect: true,\n    caretHidden: true,\n    secureTextEntry: true,\n    textBreakStrategy: true,\n    onScroll: true,\n    onContentSizeChange: true,\n    disableFullscreenUI: true,\n    includeFontPadding: true,\n    fontWeight: true,\n    fontFamily: true,\n    allowFontScaling: true,\n    onSelectionChange: true,\n    mostRecentEventCount: true,\n    inlineImageLeft: true,\n    editable: true,\n    fontVariant: true,\n  },\n};\n\nmodule.exports = (AndroidTextInputViewConfig: ReactNativeBaseComponentViewConfig<>);\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 * @flow\n * @format\n */\n\n'use strict';\nimport ReactNativeViewViewConfigAndroid from './ReactNativeViewViewConfigAndroid';\nimport {Platform} from 'react-native';\n\nconst ReactNativeViewConfig = {\n  uiViewClassName: 'RCTView',\n  baseModuleName: null,\n  Manager: 'ViewManager',\n  Commands: ({}: {...}),\n  Constants: ({}: {...}),\n  bubblingEventTypes: {\n    ...ReactNativeViewViewConfigAndroid.bubblingEventTypes,\n    topBlur: {\n      phasedRegistrationNames: {\n        bubbled: 'onBlur',\n        captured: 'onBlurCapture',\n      },\n    },\n    topChange: {\n      phasedRegistrationNames: {\n        bubbled: 'onChange',\n        captured: 'onChangeCapture',\n      },\n    },\n    topEndEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onEndEditing',\n        captured: 'onEndEditingCapture',\n      },\n    },\n    topFocus: {\n      phasedRegistrationNames: {\n        bubbled: 'onFocus',\n        captured: 'onFocusCapture',\n      },\n    },\n    topKeyPress: {\n      phasedRegistrationNames: {\n        bubbled: 'onKeyPress',\n        captured: 'onKeyPressCapture',\n      },\n    },\n    topPress: {\n      phasedRegistrationNames: {\n        bubbled: 'onPress',\n        captured: 'onPressCapture',\n      },\n    },\n    topSubmitEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onSubmitEditing',\n        captured: 'onSubmitEditingCapture',\n      },\n    },\n    topTouchCancel: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchCancel',\n        captured: 'onTouchCancelCapture',\n      },\n    },\n    topTouchEnd: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchEnd',\n        captured: 'onTouchEndCapture',\n      },\n    },\n    topTouchMove: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchMove',\n        captured: 'onTouchMoveCapture',\n      },\n    },\n    topTouchStart: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchStart',\n        captured: 'onTouchStartCapture',\n      },\n    },\n  },\n  directEventTypes: {\n    ...ReactNativeViewViewConfigAndroid.directEventTypes,\n    topAccessibilityAction: {\n      registrationName: 'onAccessibilityAction',\n    },\n    topAccessibilityEscape: {\n      registrationName: 'onAccessibilityEscape',\n    },\n    topAccessibilityTap: {\n      registrationName: 'onAccessibilityTap',\n    },\n    topLayout: {\n      registrationName: 'onLayout',\n    },\n    topMagicTap: {\n      registrationName: 'onMagicTap',\n    },\n    // Events for react-native-gesture-handler (T45765076)\n    // Remove once this library can handle JS View Configs\n    onGestureHandlerEvent: {\n      registrationName: 'onGestureHandlerEvent',\n    },\n    onGestureHandlerStateChange: {\n      registrationName: 'onGestureHandlerStateChange',\n    },\n  },\n  validAttributes: {\n    ...ReactNativeViewViewConfigAndroid.validAttributes,\n    accessibilityActions: true,\n    accessibilityElementsHidden: true,\n    accessibilityHint: true,\n    accessibilityIgnoresInvertColors: true,\n    accessibilityLabel: true,\n    accessibilityLiveRegion: true,\n    accessibilityRole: true,\n    accessibilityStates: true, // TODO: Can be removed after next release\n    accessibilityState: true,\n    accessibilityValue: true,\n    accessibilityViewIsModal: true,\n    accessible: true,\n    alignContent: true,\n    alignItems: true,\n    alignSelf: true,\n    aspectRatio: true,\n    backfaceVisibility: true,\n    backgroundColor: {process: require('../../StyleSheet/processColor')},\n    borderBottomColor: {process: require('../../StyleSheet/processColor')},\n    borderBottomEndRadius: true,\n    borderBottomLeftRadius: true,\n    borderBottomRightRadius: true,\n    borderBottomStartRadius: true,\n    borderBottomWidth: true,\n    borderColor: {process: require('../../StyleSheet/processColor')},\n    borderEndColor: {process: require('../../StyleSheet/processColor')},\n    borderEndWidth: true,\n    borderLeftColor: {process: require('../../StyleSheet/processColor')},\n    borderLeftWidth: true,\n    borderRadius: true,\n    borderRightColor: {process: require('../../StyleSheet/processColor')},\n    borderRightWidth: true,\n    borderStartColor: {process: require('../../StyleSheet/processColor')},\n    borderStartWidth: true,\n    borderStyle: true,\n    borderTopColor: {process: require('../../StyleSheet/processColor')},\n    borderTopEndRadius: true,\n    borderTopLeftRadius: true,\n    borderTopRightRadius: true,\n    borderTopStartRadius: true,\n    borderTopWidth: true,\n    borderWidth: true,\n    bottom: true,\n    clickable: true,\n    collapsable: true,\n    direction: true,\n    display: true,\n    elevation: true,\n    end: true,\n    flex: true,\n    flexBasis: true,\n    flexDirection: true,\n    flexGrow: true,\n    flexShrink: true,\n    flexWrap: true,\n    height: true,\n    hitSlop: {diff: (require('../../Utilities/differ/insetsDiffer'): any)},\n    importantForAccessibility: true,\n    justifyContent: true,\n    left: true,\n    margin: true,\n    marginBottom: true,\n    marginEnd: true,\n    marginHorizontal: true,\n    marginLeft: true,\n    marginRight: true,\n    marginStart: true,\n    marginTop: true,\n    marginVertical: true,\n    maxHeight: true,\n    maxWidth: true,\n    minHeight: true,\n    minWidth: true,\n    nativeID: true,\n    needsOffscreenAlphaCompositing: true,\n    onAccessibilityAction: true,\n    onAccessibilityEscape: true,\n    onAccessibilityTap: true,\n    onLayout: true,\n    onMagicTap: true,\n    opacity: true,\n    overflow: true,\n    padding: true,\n    paddingBottom: true,\n    paddingEnd: true,\n    paddingHorizontal: true,\n    paddingLeft: true,\n    paddingRight: true,\n    paddingStart: true,\n    paddingTop: true,\n    paddingVertical: true,\n    pointerEvents: true,\n    position: true,\n    removeClippedSubviews: true,\n    renderToHardwareTextureAndroid: true,\n    right: true,\n    rotation: true,\n    scaleX: true,\n    scaleY: true,\n    shadowColor: {process: require('../../StyleSheet/processColor')},\n    shadowOffset: {diff: require('../../Utilities/differ/sizesDiffer')},\n    shadowOpacity: true,\n    shadowRadius: true,\n    shouldRasterizeIOS: true,\n    start: true,\n    style: {\n      alignContent: true,\n      alignItems: true,\n      alignSelf: true,\n      aspectRatio: true,\n      backfaceVisibility: true,\n      backgroundColor: {process: require('../../StyleSheet/processColor')},\n      borderBottomColor: {process: require('../../StyleSheet/processColor')},\n      borderBottomEndRadius: true,\n      borderBottomLeftRadius: true,\n      borderBottomRightRadius: true,\n      borderBottomStartRadius: true,\n      borderBottomWidth: true,\n      borderColor: {process: require('../../StyleSheet/processColor')},\n      borderEndColor: {process: require('../../StyleSheet/processColor')},\n      borderEndWidth: true,\n      borderLeftColor: {process: require('../../StyleSheet/processColor')},\n      borderLeftWidth: true,\n      borderRadius: true,\n      borderRightColor: {process: require('../../StyleSheet/processColor')},\n      borderRightWidth: true,\n      borderStartColor: {process: require('../../StyleSheet/processColor')},\n      borderStartWidth: true,\n      borderStyle: true,\n      borderTopColor: {process: require('../../StyleSheet/processColor')},\n      borderTopEndRadius: true,\n      borderTopLeftRadius: true,\n      borderTopRightRadius: true,\n      borderTopStartRadius: true,\n      borderTopWidth: true,\n      borderWidth: true,\n      bottom: true,\n      color: {process: require('../../StyleSheet/processColor')},\n      decomposedMatrix: true,\n      direction: true,\n      display: true,\n      elevation: true,\n      end: true,\n      flex: true,\n      flexBasis: true,\n      flexDirection: true,\n      flexGrow: true,\n      flexShrink: true,\n      flexWrap: true,\n      fontFamily: true,\n      fontSize: true,\n      fontStyle: true,\n      fontVariant: true,\n      fontWeight: true,\n      height: true,\n      includeFontPadding: true,\n      justifyContent: true,\n      left: true,\n      letterSpacing: true,\n      lineHeight: true,\n      margin: true,\n      marginBottom: true,\n      marginEnd: true,\n      marginHorizontal: true,\n      marginLeft: true,\n      marginRight: true,\n      marginStart: true,\n      marginTop: true,\n      marginVertical: true,\n      maxHeight: true,\n      maxWidth: true,\n      minHeight: true,\n      minWidth: true,\n      opacity: true,\n      overflow: true,\n      overlayColor: {process: require('../../StyleSheet/processColor')},\n      padding: true,\n      paddingBottom: true,\n      paddingEnd: true,\n      paddingHorizontal: true,\n      paddingLeft: true,\n      paddingRight: true,\n      paddingStart: true,\n      paddingTop: true,\n      paddingVertical: true,\n      position: true,\n      resizeMode: true,\n      right: true,\n      rotation: true,\n      scaleX: true,\n      scaleY: true,\n      shadowColor: {process: require('../../StyleSheet/processColor')},\n      shadowOffset: {diff: require('../../Utilities/differ/sizesDiffer')},\n      shadowOpacity: true,\n      shadowRadius: true,\n      start: true,\n      textAlign: true,\n      textAlignVertical: true,\n      textDecorationColor: {process: require('../../StyleSheet/processColor')},\n      textDecorationLine: true,\n      textDecorationStyle: true,\n      textShadowColor: {process: require('../../StyleSheet/processColor')},\n      textShadowOffset: true,\n      textShadowRadius: true,\n      textTransform: true,\n      tintColor: {process: require('../../StyleSheet/processColor')},\n      top: true,\n      transform: ((Platform.OS === 'ios'\n        ? {diff: require('../../Utilities/differ/matricesDiffer')}\n        : {process: require('../../StyleSheet/processTransform')}): any),\n      transformMatrix: true,\n      translateX: true,\n      translateY: true,\n      width: true,\n      writingDirection: true,\n      zIndex: true,\n    },\n    testID: true,\n    top: true,\n    transform: ((Platform.OS === 'ios'\n      ? {diff: require('../../Utilities/differ/matricesDiffer')}\n      : {process: require('../../StyleSheet/processTransform')}): any),\n    translateX: true,\n    translateY: true,\n    width: true,\n    zIndex: true,\n  },\n};\n\nmodule.exports = ReactNativeViewConfig;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst ReactNativeViewViewConfigAndroid = {\n  uiViewClassName: 'RCTView',\n  bubblingEventTypes: {\n    topSelect: {\n      phasedRegistrationNames: {\n        bubbled: 'onSelect',\n        captured: 'onSelectCapture',\n      },\n    },\n    topAssetDidLoad: {\n      phasedRegistrationNames: {\n        bubbled: 'onAssetDidLoad',\n        captured: 'onAssetDidLoadCapture',\n      },\n    },\n  },\n  directEventTypes: {\n    topClick: {\n      registrationName: 'onClick',\n    },\n    topContentSizeChange: {\n      registrationName: 'onContentSizeChange',\n    },\n    topLoadingError: {\n      registrationName: 'onLoadingError',\n    },\n    topLoadingFinish: {\n      registrationName: 'onLoadingFinish',\n    },\n    topLoadingStart: {\n      registrationName: 'onLoadingStart',\n    },\n    topMessage: {\n      registrationName: 'onMessage',\n    },\n    topMomentumScrollBegin: {\n      registrationName: 'onMomentumScrollBegin',\n    },\n    topMomentumScrollEnd: {\n      registrationName: 'onMomentumScrollEnd',\n    },\n    topScroll: {\n      registrationName: 'onScroll',\n    },\n    topScrollBeginDrag: {\n      registrationName: 'onScrollBeginDrag',\n    },\n    topScrollEndDrag: {\n      registrationName: 'onScrollEndDrag',\n    },\n    topSelectionChange: {\n      registrationName: 'onSelectionChange',\n    },\n    onAssetDidLoad: {\n      registrationName: 'onAssetDidLoad',\n    },\n  },\n  validAttributes: {\n    hasTVPreferredFocus: true,\n    focusable: true,\n    nativeBackgroundAndroid: true,\n    nativeForegroundAndroid: true,\n    nextFocusDown: true,\n    nextFocusForward: true,\n    nextFocusLeft: true,\n    nextFocusRight: true,\n    nextFocusUp: true,\n  },\n};\n\nmodule.exports = ReactNativeViewViewConfigAndroid;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport type {TextInputNativeCommands} from './TextInputNativeCommands';\nimport RCTSinglelineTextInputViewConfig from './RCTSinglelineTextInputViewConfig';\nconst ReactNativeViewConfigRegistry = require('../../Renderer/shims/ReactNativeViewConfigRegistry');\n\ntype NativeType = HostComponent<mixed>;\n\ntype NativeCommands = TextInputNativeCommands<NativeType>;\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['focus', 'blur', 'setTextAndSelection'],\n});\n\nlet SinglelineTextInputNativeComponent;\nif (global.RN$Bridgeless) {\n  ReactNativeViewConfigRegistry.register('RCTSinglelineTextInputView', () => {\n    return RCTSinglelineTextInputViewConfig;\n  });\n  SinglelineTextInputNativeComponent = 'RCTSinglelineTextInputView';\n} else {\n  SinglelineTextInputNativeComponent = requireNativeComponent<mixed>(\n    'RCTSinglelineTextInputView',\n  );\n}\n\n// flowlint-next-line unclear-type:off\nexport default ((SinglelineTextInputNativeComponent: any): HostComponent<mixed>);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig';\nimport type {ReactNativeBaseComponentViewConfig} from '../../Renderer/shims/ReactNativeTypes';\n\nconst RCTSinglelineTextInputViewConfig = {\n  uiViewClassName: 'RCTSinglelineTextInputView',\n  bubblingEventTypes: {\n    topBlur: {\n      phasedRegistrationNames: {\n        bubbled: 'onBlur',\n        captured: 'onBlurCapture',\n      },\n    },\n    topChange: {\n      phasedRegistrationNames: {\n        bubbled: 'onChange',\n        captured: 'onChangeCapture',\n      },\n    },\n    topEndEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onEndEditing',\n        captured: 'onEndEditingCapture',\n      },\n    },\n    topFocus: {\n      phasedRegistrationNames: {\n        bubbled: 'onFocus',\n        captured: 'onFocusCapture',\n      },\n    },\n    topKeyPress: {\n      phasedRegistrationNames: {\n        bubbled: 'onKeyPress',\n        captured: 'onKeyPressCapture',\n      },\n    },\n    topSubmitEditing: {\n      phasedRegistrationNames: {\n        bubbled: 'onSubmitEditing',\n        captured: 'onSubmitEditingCapture',\n      },\n    },\n    topTouchCancel: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchCancel',\n        captured: 'onTouchCancelCapture',\n      },\n    },\n    topTouchEnd: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchEnd',\n        captured: 'onTouchEndCapture',\n      },\n    },\n\n    topTouchMove: {\n      phasedRegistrationNames: {\n        bubbled: 'onTouchMove',\n        captured: 'onTouchMoveCapture',\n      },\n    },\n  },\n  directEventTypes: {},\n  validAttributes: {\n    ...ReactNativeViewViewConfig.validAttributes,\n    fontSize: true,\n    fontWeight: true,\n    fontVariant: true,\n    // flowlint-next-line untyped-import:off\n    textShadowOffset: {diff: require('../../Utilities/differ/sizesDiffer')},\n    allowFontScaling: true,\n    fontStyle: true,\n    textTransform: true,\n    textAlign: true,\n    fontFamily: true,\n    lineHeight: true,\n    isHighlighted: true,\n    writingDirection: true,\n    textDecorationLine: true,\n    textShadowRadius: true,\n    letterSpacing: true,\n    textDecorationStyle: true,\n    textDecorationColor: {process: require('../../StyleSheet/processColor')},\n    color: {process: require('../../StyleSheet/processColor')},\n    maxFontSizeMultiplier: true,\n    textShadowColor: {process: require('../../StyleSheet/processColor')},\n    editable: true,\n    inputAccessoryViewID: true,\n    caretHidden: true,\n    enablesReturnKeyAutomatically: true,\n    placeholderTextColor: {process: require('../../StyleSheet/processColor')},\n    onSelectionChange: true,\n    clearButtonMode: true,\n    onContentSizeChange: true,\n    keyboardType: true,\n    selection: true,\n    returnKeyType: true,\n    blurOnSubmit: true,\n    mostRecentEventCount: true,\n    onChange: true,\n    scrollEnabled: true,\n    selectionColor: {process: require('../../StyleSheet/processColor')},\n    contextMenuHidden: true,\n    secureTextEntry: true,\n    onTextInput: true,\n    placeholder: true,\n    autoCorrect: true,\n    onScroll: true,\n    multiline: true,\n    textContentType: true,\n    maxLength: true,\n    autoCapitalize: true,\n    keyboardAppearance: true,\n    passwordRules: true,\n    spellCheck: true,\n    selectTextOnFocus: true,\n    text: true,\n    clearTextOnFocus: true,\n  },\n};\n\nmodule.exports = (RCTSinglelineTextInputViewConfig: ReactNativeBaseComponentViewConfig<>);\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 * @format\n * @flow\n */\n\n'use strict';\n\nlet logListeners;\n\ntype LogListeners = {|\n  +onDifferentFunctionsIgnored: (nameOne: ?string, nameTwo: ?string) => void,\n|};\n\ntype Options = {|+unsafelyIgnoreFunctions?: boolean|};\n\nfunction unstable_setLogListeners(listeners: ?LogListeners) {\n  logListeners = listeners;\n}\n\n/*\n * @returns {bool} true if different, false if equal\n */\nconst deepDiffer = function(\n  one: any,\n  two: any,\n  maxDepthOrOptions: Options | number = -1,\n  maybeOptions?: Options,\n): boolean {\n  const options =\n    typeof maxDepthOrOptions === 'number' ? maybeOptions : maxDepthOrOptions;\n  const maxDepth =\n    typeof maxDepthOrOptions === 'number' ? maxDepthOrOptions : -1;\n  if (maxDepth === 0) {\n    return true;\n  }\n  if (one === two) {\n    // Short circuit on identical object references instead of traversing them.\n    return false;\n  }\n  if (typeof one === 'function' && typeof two === 'function') {\n    // We consider all functions equal unless explicitly configured otherwise\n    let unsafelyIgnoreFunctions = options?.unsafelyIgnoreFunctions;\n    if (unsafelyIgnoreFunctions == null) {\n      if (\n        logListeners &&\n        logListeners.onDifferentFunctionsIgnored &&\n        (!options || !('unsafelyIgnoreFunctions' in options))\n      ) {\n        logListeners.onDifferentFunctionsIgnored(one.name, two.name);\n      }\n      unsafelyIgnoreFunctions = true;\n    }\n    return !unsafelyIgnoreFunctions;\n  }\n  if (typeof one !== 'object' || one === null) {\n    // Primitives can be directly compared\n    return one !== two;\n  }\n  if (typeof two !== 'object' || two === null) {\n    // We know they are different because the previous case would have triggered\n    // otherwise.\n    return true;\n  }\n  if (one.constructor !== two.constructor) {\n    return true;\n  }\n  if (Array.isArray(one)) {\n    // We know two is also an array because the constructors are equal\n    const len = one.length;\n    if (two.length !== len) {\n      return true;\n    }\n    for (let ii = 0; ii < len; ii++) {\n      if (deepDiffer(one[ii], two[ii], maxDepth - 1, options)) {\n        return true;\n      }\n    }\n  } else {\n    for (const key in one) {\n      if (deepDiffer(one[key], two[key], maxDepth - 1, options)) {\n        return true;\n      }\n    }\n    for (const twoKey in two) {\n      // The only case we haven't checked yet is keys that are in two but aren't\n      // in one, which means they are different.\n      if (one[twoKey] === undefined && two[twoKey] !== undefined) {\n        return true;\n      }\n    }\n  }\n  return false;\n};\n\nmodule.exports = deepDiffer;\nmodule.exports.unstable_setLogListeners = unstable_setLogListeners;\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 * @format\n * @flow strict-local\n */\n\nexport type CapturedError = {\n  +componentStack: string,\n  +error: mixed,\n  +errorBoundary: ?{...},\n  ...\n};\n\nimport type {ExtendedError} from './Devtools/parseErrorStack';\n\nimport {handleException, SyntheticError} from './ExceptionsManager';\n\n/**\n * Intercept lifecycle errors and ensure they are shown with the correct stack\n * trace within the native redbox component.\n */\nfunction showErrorDialog(capturedError: CapturedError): boolean {\n  const {componentStack, error} = capturedError;\n\n  let errorToHandle;\n\n  // Typically Errors are thrown but eg strings or null can be thrown as well.\n  if (error instanceof Error) {\n    errorToHandle = (error: ExtendedError);\n  } else if (typeof error === 'string') {\n    errorToHandle = (new SyntheticError(error): ExtendedError);\n  } else {\n    errorToHandle = (new SyntheticError('Unspecified error'): ExtendedError);\n  }\n  try {\n    errorToHandle.componentStack = componentStack;\n    errorToHandle.isComponentError = true;\n  } catch (e) {}\n  handleException(errorToHandle, false);\n\n  // Return false here to prevent ReactFiberErrorLogger default behavior of\n  // logging error details to console.error. Calls to console.error are\n  // automatically routed to the native redbox controller, which we've already\n  // done above by calling ExceptionsManager.\n  return false;\n}\n\nmodule.exports = {showErrorDialog};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.20.2\n * scheduler.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 f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst ReactNativeViewConfigRegistry = require('../Renderer/shims/ReactNativeViewConfigRegistry');\nconst ReactNativeViewViewConfig = require('../Components/View/ReactNativeViewViewConfig');\nimport verifyComponentAttributeEquivalence from './verifyComponentAttributeEquivalence';\n\nexport type GeneratedViewConfig = {\n  uiViewClassName: string,\n  bubblingEventTypes?: $ReadOnly<{\n    [eventName: string]: $ReadOnly<{|\n      phasedRegistrationNames: $ReadOnly<{|\n        captured: string,\n        bubbled: string,\n      |}>,\n    |}>,\n    ...,\n  }>,\n  directEventTypes?: $ReadOnly<{\n    [eventName: string]: $ReadOnly<{|\n      registrationName: string,\n    |}>,\n    ...,\n  }>,\n  validAttributes?: {\n    [propName: string]:\n      | true\n      | $ReadOnly<{|\n          diff?: <T>(arg1: any, arg2: any) => boolean,\n          process?: (arg1: any) => any,\n        |}>,\n    ...,\n  },\n  ...\n};\n\nfunction registerGeneratedViewConfig(\n  componentName: string,\n  viewConfig: GeneratedViewConfig,\n) {\n  const mergedViewConfig = {\n    uiViewClassName: componentName,\n    Commands: {},\n    /* $FlowFixMe(>=0.122.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.122.0 was deployed. To see the error, delete\n     * this comment and run Flow. */\n    bubblingEventTypes: {\n      ...ReactNativeViewViewConfig.bubblingEventTypes,\n      ...(viewConfig.bubblingEventTypes || {}),\n    },\n    /* $FlowFixMe(>=0.122.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.122.0 was deployed. To see the error, delete\n     * this comment and run Flow. */\n    directEventTypes: {\n      ...ReactNativeViewViewConfig.directEventTypes,\n      ...(viewConfig.directEventTypes || {}),\n    },\n    /* $FlowFixMe(>=0.122.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.122.0 was deployed. To see the error, delete\n     * this comment and run Flow. */\n    validAttributes: {\n      ...ReactNativeViewViewConfig.validAttributes,\n      ...(viewConfig.validAttributes || {}),\n    },\n  };\n\n  ReactNativeViewConfigRegistry.register(componentName, () => {\n    verifyComponentAttributeEquivalence(componentName, mergedViewConfig);\n\n    return mergedViewConfig;\n  });\n}\n\nmodule.exports = registerGeneratedViewConfig;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst getNativeComponentAttributes = require('../ReactNative/getNativeComponentAttributes');\n\nimport ReactNativeViewViewConfig from '../Components/View/ReactNativeViewViewConfig';\nimport type {ReactNativeBaseComponentViewConfig} from '../Renderer/shims/ReactNativeTypes';\n\nconst IGNORED_KEYS = ['transform', 'hitSlop'];\n/**\n * The purpose of this function is to validate that the view config that\n * native exposes for a given view manager is the same as the view config\n * that is specified for that view manager in JS.\n *\n * In order to improve perf, we want to avoid calling into native to get\n * the view config when each view manager is used. To do this, we are moving\n * the configs to JS. In the future we will use these JS based view configs\n * to codegen the view manager on native to ensure they stay in sync without\n * this runtime check.\n *\n * If this function fails, that likely means a change was made to the native\n * view manager without updating the JS config as well. Ideally you can make\n * that direct change to the JS config. If you don't know what the differences\n * are, the best approach I've found is to create a view that prints\n * the return value of getNativeComponentAttributes, and then copying that\n * text and pasting it back into JS:\n * <Text selectable={true}>{JSON.stringify(getNativeComponentAttributes('RCTView'))}</Text>\n *\n * This is meant to be a stopgap until the time comes when we only have a\n * single source of truth. I wonder if this message will still be here two\n * years from now...\n */\nfunction verifyComponentAttributeEquivalence(\n  componentName: string,\n  config: ReactNativeBaseComponentViewConfig<>,\n) {\n  if (!global.RN$Bridgeless) {\n    const nativeAttributes = getNativeComponentAttributes(componentName);\n\n    ['validAttributes', 'bubblingEventTypes', 'directEventTypes'].forEach(\n      prop => {\n        const diffKeys = Object.keys(\n          lefthandObjectDiff(nativeAttributes[prop], config[prop]),\n        );\n\n        if (diffKeys.length) {\n          console.error(\n            `${componentName} generated view config for ${prop} does not match native, missing: ${diffKeys.join(\n              ' ',\n            )}`,\n          );\n        }\n      },\n    );\n  }\n}\n\nexport function lefthandObjectDiff(leftObj: Object, rightObj: Object): Object {\n  const differentKeys = {};\n\n  function compare(leftItem, rightItem, key) {\n    if (typeof leftItem !== typeof rightItem && leftItem != null) {\n      differentKeys[key] = rightItem;\n      return;\n    }\n\n    if (typeof leftItem === 'object') {\n      const objDiff = lefthandObjectDiff(leftItem, rightItem);\n      if (Object.keys(objDiff).length > 1) {\n        differentKeys[key] = objDiff;\n      }\n      return;\n    }\n\n    if (leftItem !== rightItem) {\n      differentKeys[key] = rightItem;\n      return;\n    }\n  }\n\n  for (const key in leftObj) {\n    if (IGNORED_KEYS.includes(key)) {\n      continue;\n    }\n\n    if (!rightObj) {\n      differentKeys[key] = {};\n    } else if (leftObj.hasOwnProperty(key)) {\n      compare(leftObj[key], rightObj[key], key);\n    }\n  }\n\n  return differentKeys;\n}\n\nexport function getConfigWithoutViewProps(\n  viewConfig: ReactNativeBaseComponentViewConfig<>,\n  propName: string,\n): {...} {\n  if (!viewConfig[propName]) {\n    return {};\n  }\n\n  return Object.keys(viewConfig[propName])\n    .filter(prop => !ReactNativeViewViewConfig[propName][prop])\n    .reduce((obj, prop) => {\n      obj[prop] = viewConfig[propName][prop];\n      return obj;\n    }, {});\n}\n\nexport function stringifyViewConfig(viewConfig: any): string {\n  return JSON.stringify(\n    viewConfig,\n    (key, val) => {\n      if (typeof val === 'function') {\n        return `ƒ ${val.name}`;\n      }\n      return val;\n    },\n    2,\n  );\n}\n\nexport default verifyComponentAttributeEquivalence;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst React = require('react');\n\n/**\n * Whether the current element is the descendant of a <Text> element.\n */\nmodule.exports = (React.createContext(false): React$Context<$FlowFixMe>);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {WithDefault} from '../../Types/CodegenTypes';\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * Whether the indicator should hide when not animating (true by default).\n   *\n   * See https://reactnative.dev/docs/activityindicator.html#hideswhenstopped\n   */\n  hidesWhenStopped?: WithDefault<boolean, false>,\n\n  /**\n   * Whether to show the indicator (true, the default) or hide it (false).\n   *\n   * See https://reactnative.dev/docs/activityindicator.html#animating\n   */\n  animating?: WithDefault<boolean, false>,\n\n  /**\n   * The foreground color of the spinner (default is gray).\n   *\n   * See https://reactnative.dev/docs/activityindicator.html#color\n   */\n  color?: ?ColorValue,\n\n  /**\n   * Size of the indicator (default is 'small').\n   * Passing a number to the size prop is only supported on Android.\n   *\n   * See https://reactnative.dev/docs/activityindicator.html#size\n   */\n  size?: WithDefault<'small' | 'large', 'small'>,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>('ActivityIndicatorView', {\n  paperComponentName: 'RCTActivityIndicatorView',\n}): HostComponent<NativeProps>);\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 * @format\n * @flow strict-local\n */\n\n// TODO: move this file to shims/ReactNative (requires React update and sync)\n\n'use strict';\n\nimport requireNativeComponent from '../../Libraries/ReactNative/requireNativeComponent';\nimport type {HostComponent} from '../../Libraries/Renderer/shims/ReactNativeTypes';\nimport UIManager from '../ReactNative/UIManager';\n\n// TODO: import from CodegenSchema once workspaces are enabled\ntype Options = $ReadOnly<{|\n  interfaceOnly?: boolean,\n  paperComponentName?: string,\n  paperComponentNameDeprecated?: string,\n  excludedPlatforms?: $ReadOnlyArray<'iOS' | 'android'>,\n|}>;\n\nexport type NativeComponentType<T> = HostComponent<T>;\n\nfunction codegenNativeComponent<Props>(\n  componentName: string,\n  options?: Options,\n): NativeComponentType<Props> {\n  let componentNameInUse =\n    options && options.paperComponentName != null\n      ? options.paperComponentName\n      : componentName;\n\n  if (options != null && options.paperComponentNameDeprecated != null) {\n    if (UIManager.getViewManagerConfig(componentName)) {\n      componentNameInUse = componentName;\n    } else if (\n      options.paperComponentNameDeprecated != null &&\n      UIManager.getViewManagerConfig(options.paperComponentNameDeprecated)\n    ) {\n      componentNameInUse = options.paperComponentNameDeprecated;\n    } else {\n      throw new Error(\n        `Failed to find native component for either ${componentName} or ${options.paperComponentNameDeprecated ??\n          '(unknown)'}`,\n      );\n    }\n  }\n\n  // If this function is run at runtime then that means the view configs were not\n  // generated with the view config babel plugin, so we need to require the native component.\n  //\n  // This will be useful during migration, but eventually this will error.\n  return (requireNativeComponent<Props>(\n    componentNameInUse,\n  ): HostComponent<Props>);\n}\n\nexport default codegenNativeComponent;\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 * @format\n * @flow\n * @generate-docs\n */\n\n'use strict';\n\nconst Platform = require('../Utilities/Platform');\nconst React = require('react');\nconst StyleSheet = require('../StyleSheet/StyleSheet');\nconst Text = require('../Text/Text');\nconst TouchableNativeFeedback = require('./Touchable/TouchableNativeFeedback');\nconst TouchableOpacity = require('./Touchable/TouchableOpacity');\nconst View = require('./View/View');\n\nconst invariant = require('invariant');\n\nimport type {PressEvent} from '../Types/CoreEventTypes';\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\n\ntype ButtonProps = $ReadOnly<{|\n  /**\n    Text to display inside the button. On Android the given title will be\n    converted to the uppercased form.\n   */\n  title: string,\n\n  /**\n    Handler to be called when the user taps the button. The first function\n    argument is an event in form of [PressEvent](pressevent).\n   */\n  onPress: (event?: PressEvent) => mixed,\n\n  /**\n    If `true`, doesn't play system sound on touch.\n\n    @platform android\n\n    @default false\n   */\n  touchSoundDisabled?: ?boolean,\n\n  /**\n    Color of the text (iOS), or background color of the button (Android).\n\n    @default {@platform android} '#2196F3'\n    @default {@platform ios} '#007AFF'\n   */\n  color?: ?ColorValue,\n\n  /**\n    TV preferred focus.\n\n    @platform tv\n\n    @default false\n   */\n  hasTVPreferredFocus?: ?boolean,\n\n  /**\n    Designates the next view to receive focus when the user navigates down. See\n    the [Android documentation][android:nextFocusDown].\n\n    [android:nextFocusDown]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusDown\n\n    @platform android, tv\n   */\n  nextFocusDown?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates forward.\n    See the [Android documentation][android:nextFocusForward].\n\n    [android:nextFocusForward]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusForward\n\n    @platform android, tv\n   */\n  nextFocusForward?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates left. See\n    the [Android documentation][android:nextFocusLeft].\n\n    [android:nextFocusLeft]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusLeft\n\n    @platform android, tv\n   */\n  nextFocusLeft?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates right. See\n    the [Android documentation][android:nextFocusRight].\n\n    [android:nextFocusRight]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusRight\n\n    @platform android, tv\n   */\n  nextFocusRight?: ?number,\n\n  /**\n    Designates the next view to receive focus when the user navigates up. See\n    the [Android documentation][android:nextFocusUp].\n\n    [android:nextFocusUp]:\n    https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusUp\n\n    @platform android, tv\n   */\n  nextFocusUp?: ?number,\n\n  /**\n    Text to display for blindness accessibility features.\n   */\n  accessibilityLabel?: ?string,\n\n  /**\n    If `true`, disable all interactions for this component.\n\n    @default false\n   */\n  disabled?: ?boolean,\n\n  /**\n    Used to locate this view in end-to-end tests.\n   */\n  testID?: ?string,\n|}>;\n\n/**\n  A basic button component that should render nicely on any platform. Supports a\n  minimal level of customization.\n\n  If this button doesn't look right for your app, you can build your own button\n  using [TouchableOpacity](touchableopacity) or\n  [TouchableWithoutFeedback](touchablewithoutfeedback). For inspiration, look at\n  the [source code for this button component][button:source]. Or, take a look at\n  the [wide variety of button components built by the community]\n  [button:examples].\n\n  [button:source]:\n  https://github.com/facebook/react-native/blob/master/Libraries/Components/Button.js\n\n  [button:examples]:\n  https://js.coach/?menu%5Bcollections%5D=React%20Native&page=1&query=button\n\n  ```jsx\n  <Button\n    onPress={onPressLearnMore}\n    title=\"Learn More\"\n    color=\"#841584\"\n    accessibilityLabel=\"Learn more about this purple button\"\n  />\n  ```\n\n  ```SnackPlayer name=Button%20Example\n  import React from 'react';\n  import { StyleSheet, Button, View, SafeAreaView, Text, Alert } from 'react-native';\n\n  const Separator = () => (\n    <View style={styles.separator} />\n  );\n\n  const App = () => (\n    <SafeAreaView style={styles.container}>\n      <View>\n        <Text style={styles.title}>\n          The title and onPress handler are required. It is recommended to set accessibilityLabel to help make your app usable by everyone.\n        </Text>\n        <Button\n          title=\"Press me\"\n          onPress={() => Alert.alert('Simple Button pressed')}\n        />\n      </View>\n      <Separator />\n      <View>\n        <Text style={styles.title}>\n          Adjust the color in a way that looks standard on each platform. On  iOS, the color prop controls the color of the text. On Android, the color adjusts the background color of the button.\n        </Text>\n        <Button\n          title=\"Press me\"\n          color=\"#f194ff\"\n          onPress={() => Alert.alert('Button with adjusted color pressed')}\n        />\n      </View>\n      <Separator />\n      <View>\n        <Text style={styles.title}>\n          All interaction for the component are disabled.\n        </Text>\n        <Button\n          title=\"Press me\"\n          disabled\n          onPress={() => Alert.alert('Cannot press this one')}\n        />\n      </View>\n      <Separator />\n      <View>\n        <Text style={styles.title}>\n          This layout strategy lets the title define the width of the button.\n        </Text>\n        <View style={styles.fixToText}>\n          <Button\n            title=\"Left button\"\n            onPress={() => Alert.alert('Left button pressed')}\n          />\n          <Button\n            title=\"Right button\"\n            onPress={() => Alert.alert('Right button pressed')}\n          />\n        </View>\n      </View>\n    </SafeAreaView>\n  );\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      justifyContent: 'center',\n      marginHorizontal: 16,\n    },\n    title: {\n      textAlign: 'center',\n      marginVertical: 8,\n    },\n    fixToText: {\n      flexDirection: 'row',\n      justifyContent: 'space-between',\n    },\n    separator: {\n      marginVertical: 8,\n      borderBottomColor: '#737373',\n      borderBottomWidth: StyleSheet.hairlineWidth,\n    },\n  });\n\n  export default App;\n  ```\n */\n\nclass Button extends React.Component<ButtonProps> {\n  render(): React.Node {\n    const {\n      accessibilityLabel,\n      color,\n      onPress,\n      touchSoundDisabled,\n      title,\n      hasTVPreferredFocus,\n      nextFocusDown,\n      nextFocusForward,\n      nextFocusLeft,\n      nextFocusRight,\n      nextFocusUp,\n      disabled,\n      testID,\n    } = this.props;\n    const buttonStyles = [styles.button];\n    const textStyles = [styles.text];\n    if (color) {\n      if (Platform.OS === 'ios') {\n        textStyles.push({color: color});\n      } else {\n        buttonStyles.push({backgroundColor: color});\n      }\n    }\n    const accessibilityState = {};\n    if (disabled) {\n      buttonStyles.push(styles.buttonDisabled);\n      textStyles.push(styles.textDisabled);\n      accessibilityState.disabled = true;\n    }\n    invariant(\n      typeof title === 'string',\n      'The title prop of a Button must be a string',\n    );\n    const formattedTitle =\n      Platform.OS === 'android' ? title.toUpperCase() : title;\n    const Touchable =\n      Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;\n    return (\n      <Touchable\n        accessibilityLabel={accessibilityLabel}\n        accessibilityRole=\"button\"\n        accessibilityState={accessibilityState}\n        hasTVPreferredFocus={hasTVPreferredFocus}\n        nextFocusDown={nextFocusDown}\n        nextFocusForward={nextFocusForward}\n        nextFocusLeft={nextFocusLeft}\n        nextFocusRight={nextFocusRight}\n        nextFocusUp={nextFocusUp}\n        testID={testID}\n        disabled={disabled}\n        onPress={onPress}\n        touchSoundDisabled={touchSoundDisabled}>\n        <View style={buttonStyles}>\n          <Text style={textStyles} disabled={disabled}>\n            {formattedTitle}\n          </Text>\n        </View>\n      </Touchable>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  button: Platform.select({\n    ios: {},\n    android: {\n      elevation: 4,\n      // Material design blue from https://material.google.com/style/color.html#color-color-palette\n      backgroundColor: '#2196F3',\n      borderRadius: 2,\n    },\n  }),\n  text: {\n    textAlign: 'center',\n    margin: 8,\n    ...Platform.select({\n      ios: {\n        // iOS blue from https://developer.apple.com/ios/human-interface-guidelines/visual-design/color/\n        color: '#007AFF',\n        fontSize: 18,\n      },\n      android: {\n        color: 'white',\n        fontWeight: '500',\n      },\n    }),\n  },\n  buttonDisabled: Platform.select({\n    ios: {},\n    android: {\n      elevation: 0,\n      backgroundColor: '#dfdfdf',\n    },\n  }),\n  textDisabled: Platform.select({\n    ios: {\n      color: '#cdcdcd',\n    },\n    android: {\n      color: '#a1a1a1',\n    },\n  }),\n});\n\nmodule.exports = Button;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport TextInjection from './TextInjection';\nimport {NativeText, NativeVirtualText} from './TextNativeComponent';\n\nconst DeprecatedTextPropTypes = require('../DeprecatedPropTypes/DeprecatedTextPropTypes');\nconst React = require('react');\nconst TextAncestor = require('./TextAncestor');\nconst Touchable = require('../Components/Touchable/Touchable');\n\nconst nullthrows = require('nullthrows');\nconst processColor = require('../StyleSheet/processColor');\n\nimport type {PressEvent} from '../Types/CoreEventTypes';\nimport type {PressRetentionOffset, TextProps} from './TextProps';\n\ntype ResponseHandlers = $ReadOnly<{|\n  onStartShouldSetResponder: () => boolean,\n  onResponderGrant: (event: PressEvent) => void,\n  onResponderMove: (event: PressEvent) => void,\n  onResponderRelease: (event: PressEvent) => void,\n  onResponderTerminate: (event: PressEvent) => void,\n  onResponderTerminationRequest: () => boolean,\n|}>;\n\ntype Props = $ReadOnly<{|\n  ...TextProps,\n  forwardedRef: ?React.Ref<typeof NativeText | typeof NativeVirtualText>,\n|}>;\n\ntype State = {|\n  touchable: {|\n    touchState: ?string,\n    responderID: ?number,\n  |},\n  isHighlighted: boolean,\n  createResponderHandlers: () => ResponseHandlers,\n  responseHandlers: ?ResponseHandlers,\n|};\n\nconst PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\n/**\n * A React component for displaying text.\n *\n * See https://reactnative.dev/docs/text.html\n */\nclass TouchableText extends React.Component<Props, State> {\n  static defaultProps = {\n    accessible: true,\n    allowFontScaling: true,\n    ellipsizeMode: 'tail',\n  };\n\n  touchableGetPressRectOffset: ?() => PressRetentionOffset;\n  touchableHandleActivePressIn: ?() => void;\n  touchableHandleActivePressOut: ?() => void;\n  touchableHandleLongPress: ?(event: PressEvent) => void;\n  touchableHandlePress: ?(event: PressEvent) => void;\n  touchableHandleResponderGrant: ?(event: PressEvent) => void;\n  touchableHandleResponderMove: ?(event: PressEvent) => void;\n  touchableHandleResponderRelease: ?(event: PressEvent) => void;\n  touchableHandleResponderTerminate: ?(event: PressEvent) => void;\n  touchableHandleResponderTerminationRequest: ?() => boolean;\n\n  state = {\n    ...Touchable.Mixin.touchableGetInitialState(),\n    isHighlighted: false,\n    createResponderHandlers: this._createResponseHandlers.bind(this),\n    responseHandlers: null,\n  };\n\n  static getDerivedStateFromProps(\n    nextProps: Props,\n    prevState: State,\n  ): $Shape<State> | null {\n    return prevState.responseHandlers == null && isTouchable(nextProps)\n      ? {\n          responseHandlers: prevState.createResponderHandlers(),\n        }\n      : null;\n  }\n\n  render(): React.Node {\n    let {forwardedRef, selectionColor, ...props} = this.props;\n    if (isTouchable(this.props)) {\n      props = {\n        ...props,\n        ...this.state.responseHandlers,\n        isHighlighted: this.state.isHighlighted,\n      };\n    }\n    if (selectionColor != null) {\n      props = {\n        ...props,\n        selectionColor: processColor(selectionColor),\n      };\n    }\n    if (__DEV__) {\n      if (Touchable.TOUCH_TARGET_DEBUG && props.onPress != null) {\n        props = {\n          ...props,\n          style: [props.style, {color: 'magenta'}],\n        };\n      }\n    }\n    return (\n      <TextAncestor.Consumer>\n        {hasTextAncestor =>\n          hasTextAncestor ? (\n            // $FlowFixMe[prop-missing] For the `onClick` workaround.\n            <NativeVirtualText\n              {...props}\n              // This is used on Android to call a nested Text component's press handler from the context menu.\n              // TODO T75145059 Clean this up once Text is migrated off of Touchable\n              onClick={props.onPress}\n              ref={forwardedRef}\n            />\n          ) : (\n            <TextAncestor.Provider value={true}>\n              <NativeText {...props} ref={forwardedRef} />\n            </TextAncestor.Provider>\n          )\n        }\n      </TextAncestor.Consumer>\n    );\n  }\n\n  _createResponseHandlers(): ResponseHandlers {\n    return {\n      onStartShouldSetResponder: (): boolean => {\n        const {onStartShouldSetResponder} = this.props;\n        const shouldSetResponder =\n          (onStartShouldSetResponder == null\n            ? false\n            : onStartShouldSetResponder()) || isTouchable(this.props);\n\n        if (shouldSetResponder) {\n          this._attachTouchHandlers();\n        }\n        return shouldSetResponder;\n      },\n      onResponderGrant: (event: PressEvent): void => {\n        nullthrows(this.touchableHandleResponderGrant)(event);\n        if (this.props.onResponderGrant != null) {\n          this.props.onResponderGrant.call(this, event);\n        }\n      },\n      onResponderMove: (event: PressEvent): void => {\n        nullthrows(this.touchableHandleResponderMove)(event);\n        if (this.props.onResponderMove != null) {\n          this.props.onResponderMove.call(this, event);\n        }\n      },\n      onResponderRelease: (event: PressEvent): void => {\n        nullthrows(this.touchableHandleResponderRelease)(event);\n        if (this.props.onResponderRelease != null) {\n          this.props.onResponderRelease.call(this, event);\n        }\n      },\n      onResponderTerminate: (event: PressEvent): void => {\n        nullthrows(this.touchableHandleResponderTerminate)(event);\n        if (this.props.onResponderTerminate != null) {\n          this.props.onResponderTerminate.call(this, event);\n        }\n      },\n      onResponderTerminationRequest: (): boolean => {\n        const {onResponderTerminationRequest} = this.props;\n        if (!nullthrows(this.touchableHandleResponderTerminationRequest)()) {\n          return false;\n        }\n        if (onResponderTerminationRequest == null) {\n          return true;\n        }\n        return onResponderTerminationRequest();\n      },\n    };\n  }\n\n  /**\n   * Lazily attaches Touchable.Mixin handlers.\n   */\n  _attachTouchHandlers(): void {\n    if (this.touchableGetPressRectOffset != null) {\n      return;\n    }\n    for (const key in Touchable.Mixin) {\n      if (typeof Touchable.Mixin[key] === 'function') {\n        (this: any)[key] = Touchable.Mixin[key].bind(this);\n      }\n    }\n    this.touchableHandleActivePressIn = (): void => {\n      if (!this.props.suppressHighlighting && isTouchable(this.props)) {\n        this.setState({isHighlighted: true});\n      }\n    };\n    this.touchableHandleActivePressOut = (): void => {\n      if (!this.props.suppressHighlighting && isTouchable(this.props)) {\n        this.setState({isHighlighted: false});\n      }\n    };\n    this.touchableHandlePress = (event: PressEvent): void => {\n      if (this.props.onPress != null) {\n        this.props.onPress(event);\n      }\n    };\n    this.touchableHandleLongPress = (event: PressEvent): void => {\n      if (this.props.onLongPress != null) {\n        this.props.onLongPress(event);\n      }\n    };\n    this.touchableGetPressRectOffset = (): PressRetentionOffset =>\n      this.props.pressRetentionOffset == null\n        ? PRESS_RECT_OFFSET\n        : this.props.pressRetentionOffset;\n  }\n}\n\nconst isTouchable = (props: Props): boolean =>\n  props.onPress != null ||\n  props.onLongPress != null ||\n  props.onStartShouldSetResponder != null;\n\nconst Text: React.AbstractComponent<\n  TextProps,\n  React.ElementRef<typeof NativeText | typeof NativeVirtualText>,\n> = React.forwardRef(\n  (\n    props: TextProps,\n    forwardedRef: ?React.Ref<typeof NativeText | typeof NativeVirtualText>,\n  ) => {\n    return <TouchableText {...props} forwardedRef={forwardedRef} />;\n  },\n);\nText.displayName = 'Text';\n\n// TODO: Deprecate this.\n/* $FlowFixMe(>=0.89.0 site=react_native_fb) This comment suppresses an error\n * found when Flow v0.89 was deployed. To see the error, delete this comment\n * and run Flow. */\nText.propTypes = DeprecatedTextPropTypes;\n\nconst TextToExport: typeof Text &\n  $ReadOnly<{|\n    propTypes: typeof DeprecatedTextPropTypes,\n  |}> =\n  // $FlowFixMe[incompatible-type] - No good way to type a React.AbstractComponent with statics.\n  TextInjection.unstable_Text == null ? Text : TextInjection.unstable_Text;\n\nmodule.exports = TextToExport;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport typeof Text from './Text';\n\nexport default {\n  unstable_Text: (null: ?Text),\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport ReactNativeViewAttributes from '../Components/View/ReactNativeViewAttributes';\nimport UIManager from '../ReactNative/UIManager';\nimport {type HostComponent} from '../Renderer/shims/ReactNativeTypes';\nimport createReactNativeComponentClass from '../Renderer/shims/createReactNativeComponentClass';\nimport {type ProcessedColorValue} from '../StyleSheet/processColor';\nimport {type TextProps} from './TextProps';\n\ntype NativeTextProps = $ReadOnly<{\n  ...TextProps,\n  isHighlighted?: ?boolean,\n  selectionColor?: ?ProcessedColorValue,\n}>;\n\nexport const NativeText: HostComponent<NativeTextProps> = (createReactNativeComponentClass(\n  'RCTText',\n  () => ({\n    validAttributes: {\n      ...ReactNativeViewAttributes.UIView,\n      isHighlighted: true,\n      numberOfLines: true,\n      ellipsizeMode: true,\n      allowFontScaling: true,\n      maxFontSizeMultiplier: true,\n      disabled: true,\n      selectable: true,\n      selectionColor: true,\n      adjustsFontSizeToFit: true,\n      minimumFontScale: true,\n      textBreakStrategy: true,\n      onTextLayout: true,\n      onInlineViewLayout: true,\n      dataDetectorType: true,\n    },\n    directEventTypes: {\n      topTextLayout: {\n        registrationName: 'onTextLayout',\n      },\n      topInlineViewLayout: {\n        registrationName: 'onInlineViewLayout',\n      },\n    },\n    uiViewClassName: 'RCTText',\n  }),\n): any);\n\nexport const NativeVirtualText: HostComponent<NativeTextProps> =\n  UIManager.getViewManagerConfig('RCTVirtualText') == null\n    ? NativeText\n    : (createReactNativeComponentClass('RCTVirtualText', () => ({\n        validAttributes: {\n          ...ReactNativeViewAttributes.UIView,\n          isHighlighted: true,\n          maxFontSizeMultiplier: true,\n        },\n        uiViewClassName: 'RCTVirtualText',\n      })): any);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst ReactNativeStyleAttributes = require('./ReactNativeStyleAttributes');\n\nconst UIView = {\n  pointerEvents: true,\n  accessible: true,\n  accessibilityActions: true,\n  accessibilityLabel: true,\n  accessibilityLiveRegion: true,\n  accessibilityRole: true,\n  accessibilityState: true,\n  accessibilityValue: true,\n  accessibilityHint: true,\n  importantForAccessibility: true,\n  nativeID: true,\n  testID: true,\n  renderToHardwareTextureAndroid: true,\n  shouldRasterizeIOS: true,\n  onLayout: true,\n  onAccessibilityAction: true,\n  onAccessibilityTap: true,\n  onMagicTap: true,\n  onAccessibilityEscape: true,\n  collapsable: true,\n  needsOffscreenAlphaCompositing: true,\n  style: ReactNativeStyleAttributes,\n};\n\nconst RCTView = {\n  ...UIView,\n\n  // This is a special performance property exposed by RCTView and useful for\n  // scrolling content when there are many subviews, most of which are offscreen.\n  // For this property to be effective, it must be applied to a view that contains\n  // many subviews that extend outside its bound. The subviews must also have\n  // overflow: hidden, as should the containing view (or one of its superviews).\n  removeClippedSubviews: true,\n};\n\nconst ReactNativeViewAttributes = {\n  UIView: UIView,\n  RCTView: RCTView,\n};\n\nmodule.exports = ReactNativeViewAttributes;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedColorPropType = require('./DeprecatedColorPropType');\nconst DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');\nconst DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');\nconst PropTypes = require('prop-types');\nconst DeprecatedTextStylePropTypes = require('./DeprecatedTextStylePropTypes');\n\nconst stylePropType: ReactPropsCheckType = DeprecatedStyleSheetPropType(\n  DeprecatedTextStylePropTypes,\n);\n\nconst DataDetectorTypes = ['phoneNumber', 'link', 'email', 'none', 'all'];\n\nmodule.exports = {\n  /**\n   * When `numberOfLines` is set, this prop defines how text will be\n   * truncated.\n   *\n   * See https://reactnative.dev/docs/text.html#ellipsizemode\n   */\n  ellipsizeMode: (PropTypes.oneOf([\n    'head',\n    'middle',\n    'tail',\n    'clip',\n  ]): React$PropType$Primitive<'head' | 'middle' | 'tail' | 'clip'>),\n  /**\n   * Used to truncate the text with an ellipsis.\n   *\n   * See https://reactnative.dev/docs/text.html#numberoflines\n   */\n  numberOfLines: PropTypes.number,\n  /**\n   * Set text break strategy on Android.\n   *\n   * See https://reactnative.dev/docs/text.html#textbreakstrategy\n   */\n  textBreakStrategy: (PropTypes.oneOf([\n    'simple',\n    'highQuality',\n    'balanced',\n  ]): React$PropType$Primitive<'simple' | 'highQuality' | 'balanced'>),\n  /**\n   * Invoked on mount and layout changes.\n   *\n   * See https://reactnative.dev/docs/text.html#onlayout\n   */\n  onLayout: PropTypes.func,\n  /**\n   * This function is called on press.\n   *\n   * See https://reactnative.dev/docs/text.html#onpress\n   */\n  onPress: PropTypes.func,\n  /**\n   * This function is called on long press.\n   *\n   * See https://reactnative.dev/docs/text.html#onlongpress\n   */\n  onLongPress: PropTypes.func,\n  /**\n   * Defines how far your touch may move off of the button, before\n   * deactivating the button.\n   *\n   * See https://reactnative.dev/docs/text.html#pressretentionoffset\n   */\n  pressRetentionOffset: DeprecatedEdgeInsetsPropType,\n  /**\n   * Lets the user select text.\n   *\n   * See https://reactnative.dev/docs/text.html#selectable\n   */\n  selectable: PropTypes.bool,\n  /**\n   * The highlight color of the text.\n   *\n   * See https://reactnative.dev/docs/text.html#selectioncolor\n   */\n  selectionColor: DeprecatedColorPropType,\n  /**\n   * When `true`, no visual change is made when text is pressed down.\n   *\n   * See https://reactnative.dev/docs/text.html#supperhighlighting\n   */\n  suppressHighlighting: PropTypes.bool,\n  style: stylePropType,\n  /**\n   * Used to locate this view in end-to-end tests.\n   *\n   * See https://reactnative.dev/docs/text.html#testid\n   */\n  testID: PropTypes.string,\n  /**\n   * Used to locate this view from native code.\n   *\n   * See https://reactnative.dev/docs/text.html#nativeid\n   */\n  nativeID: PropTypes.string,\n  /**\n   * Whether fonts should scale to respect Text Size accessibility settings.\n   *\n   * See https://reactnative.dev/docs/text.html#allowfontscaling\n   */\n  allowFontScaling: PropTypes.bool,\n  /**\n   * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.\n   * Possible values:\n   * `null/undefined` (default): inherit from the parent node or the global default (0)\n   * `0`: no max, ignore parent/global default\n   * `>= 1`: sets the maxFontSizeMultiplier of this node to this value\n   */\n  maxFontSizeMultiplier: PropTypes.number,\n  /**\n   * Indicates whether the view is an accessibility element.\n   *\n   * See https://reactnative.dev/docs/text.html#accessible\n   */\n  accessible: PropTypes.bool,\n  /**\n   * Whether font should be scaled down automatically.\n   *\n   * See https://reactnative.dev/docs/text.html#adjustsfontsizetofit\n   */\n  adjustsFontSizeToFit: PropTypes.bool,\n  /**\n   * Smallest possible scale a font can reach.\n   *\n   * See https://reactnative.dev/docs/text.html#minimumfontscale\n   */\n  minimumFontScale: PropTypes.number,\n  /**\n   * Specifies the disabled state of the text view for testing purposes.\n   *\n   * See https://reactnative.dev/docs/text.html#disabled\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Determines the types of data converted to clickable URLs in text.\n   *\n   * See https://reactnative.dev/docs/text.html#dataDetectorType\n   */\n  dataDetectorType: (PropTypes.oneOf(\n    DataDetectorTypes,\n  ): React$PropType$Primitive<\n    'phoneNumber' | 'link' | 'email' | 'none' | 'all',\n  >),\n};\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst PropTypes = require('prop-types');\n\nconst DeprecatedEdgeInsetsPropType: React$PropType$Primitive<{\n  bottom?: number,\n  left?: number,\n  right?: number,\n  top?: number,\n  ...\n}> = PropTypes.shape({\n  top: PropTypes.number,\n  left: PropTypes.number,\n  bottom: PropTypes.number,\n  right: PropTypes.number,\n});\n\nmodule.exports = DeprecatedEdgeInsetsPropType;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst deprecatedCreateStrictShapeTypeChecker = require('./deprecatedCreateStrictShapeTypeChecker');\nconst flattenStyle = require('../StyleSheet/flattenStyle');\n\nfunction DeprecatedStyleSheetPropType(shape: {\n  [key: string]: ReactPropsCheckType,\n  ...,\n}): ReactPropsCheckType {\n  const shapePropType = deprecatedCreateStrictShapeTypeChecker(shape);\n  return function(props, propName, componentName, location?, ...rest) {\n    let newProps = props;\n    if (props[propName]) {\n      // Just make a dummy prop object with only the flattened style\n      newProps = {};\n      newProps[propName] = flattenStyle(props[propName]);\n    }\n    return shapePropType(newProps, propName, componentName, location, ...rest);\n  };\n}\n\nmodule.exports = DeprecatedStyleSheetPropType;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nfunction deprecatedCreateStrictShapeTypeChecker(shapeTypes: {\n  [key: string]: ReactPropsCheckType,\n  ...,\n}): ReactPropsChainableTypeChecker {\n  function checkType(\n    isRequired,\n    props,\n    propName,\n    componentName,\n    location?,\n    ...rest\n  ) {\n    if (!props[propName]) {\n      if (isRequired) {\n        invariant(\n          false,\n          `Required object \\`${propName}\\` was not specified in ` +\n            `\\`${componentName}\\`.`,\n        );\n      }\n      return;\n    }\n    const propValue = props[propName];\n    const propType = typeof propValue;\n    const locationName = location || '(unknown)';\n    if (propType !== 'object') {\n      invariant(\n        false,\n        `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n          `supplied to \\`${componentName}\\`, expected \\`object\\`.`,\n      );\n    }\n    // We need to check all keys in case some are required but missing from\n    // props.\n    const allKeys = {...props[propName], ...shapeTypes};\n    for (const key in allKeys) {\n      const checker = shapeTypes[key];\n      if (!checker) {\n        invariant(\n          false,\n          `Invalid props.${propName} key \\`${key}\\` supplied to \\`${componentName}\\`.` +\n            '\\nBad object: ' +\n            JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' +\n            JSON.stringify(Object.keys(shapeTypes), null, '  '),\n        );\n      }\n      const error = checker(propValue, key, componentName, location, ...rest);\n      if (error) {\n        invariant(\n          false,\n          error.message +\n            '\\nBad object: ' +\n            JSON.stringify(props[propName], null, '  '),\n        );\n      }\n    }\n  }\n  function chainedCheckType(\n    props: {[key: string]: any, ...},\n    propName: string,\n    componentName: string,\n    location?: string,\n    ...rest\n  ): ?Error {\n    return checkType(false, props, propName, componentName, location, ...rest);\n  }\n  chainedCheckType.isRequired = checkType.bind(null, true);\n  return chainedCheckType;\n}\n\nmodule.exports = deprecatedCreateStrictShapeTypeChecker;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst BoundingDimensions = require('./BoundingDimensions');\nconst Platform = require('../../Utilities/Platform');\nconst Position = require('./Position');\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst UIManager = require('../../ReactNative/UIManager');\nconst View = require('../View/View');\nconst SoundManager = require('../Sound/SoundManager');\n\nconst normalizeColor = require('../../StyleSheet/normalizeColor');\n\nimport type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';\nimport type {PressEvent} from '../../Types/CoreEventTypes';\n\nconst extractSingleTouch = nativeEvent => {\n  const touches = nativeEvent.touches;\n  const changedTouches = nativeEvent.changedTouches;\n  const hasTouches = touches && touches.length > 0;\n  const hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n  return !hasTouches && hasChangedTouches\n    ? changedTouches[0]\n    : hasTouches\n    ? touches[0]\n    : nativeEvent;\n};\n\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n *   of the element, and no other element (like scroller) has \"stolen\" touch\n *   lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the element, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n *   getInitialState: function() {\n *     return merge(this.touchableGetInitialState(), yourComponentState);\n *   }\n *\n * - Choose the rendered component who's touches should start the interactive\n *   sequence. On that rendered node, forward all `Touchable` responder\n *   handlers. You can choose any rendered node you like. Choose a node whose\n *   hit target you'd like to instigate the interaction sequence:\n *\n *   // In render function:\n *   return (\n *     <View\n *       onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n *       onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n *       onResponderGrant={this.touchableHandleResponderGrant}\n *       onResponderMove={this.touchableHandleResponderMove}\n *       onResponderRelease={this.touchableHandleResponderRelease}\n *       onResponderTerminate={this.touchableHandleResponderTerminate}>\n *       <View>\n *         Even though the hit detection/interactions are triggered by the\n *         wrapping (typically larger) node, we usually end up implementing\n *         custom logic that highlights this inner one.\n *       </View>\n *     </View>\n *   );\n *\n * - You may set up your own handlers for each of these events, so long as you\n *   also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n *   feedback to the user. See documentation for each of these class methods\n *   that you should implement.\n *\n *   touchableHandlePress: function() {\n *      this.performBounceAnimation();  // or whatever you want to do.\n *   },\n *   touchableHandleActivePressIn: function() {\n *     this.beginHighlighting(...);  // Whatever you like to convey activation\n *   },\n *   touchableHandleActivePressOut: function() {\n *     this.endHighlighting(...);  // Whatever you like to convey deactivation\n *   },\n *\n * - There are more advanced methods you can implement (see documentation below):\n *   touchableGetHighlightDelayMS: function() {\n *     return 20;\n *   }\n *   // In practice, *always* use a predeclared constant (conserve memory).\n *   touchableGetPressRectOffset: function() {\n *     return {top: 20, left: 20, right: 20, bottom: 100};\n *   }\n */\n\n/**\n * Touchable states.\n */\n\nconst States = {\n  NOT_RESPONDER: 'NOT_RESPONDER', // Not the responder\n  RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN', // Responder, inactive, in the `PressRect`\n  RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT', // Responder, inactive, out of `PressRect`\n  RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN', // Responder, active, in the `PressRect`\n  RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT', // Responder, active, out of `PressRect`\n  RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN', // Responder, active, in the `PressRect`, after long press threshold\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT', // Responder, active, out of `PressRect`, after long press threshold\n  ERROR: 'ERROR',\n};\n\ntype State =\n  | typeof States.NOT_RESPONDER\n  | typeof States.RESPONDER_INACTIVE_PRESS_IN\n  | typeof States.RESPONDER_INACTIVE_PRESS_OUT\n  | typeof States.RESPONDER_ACTIVE_PRESS_IN\n  | typeof States.RESPONDER_ACTIVE_PRESS_OUT\n  | typeof States.RESPONDER_ACTIVE_LONG_PRESS_IN\n  | typeof States.RESPONDER_ACTIVE_LONG_PRESS_OUT\n  | typeof States.ERROR;\n\n/*\n * Quick lookup map for states that are considered to be \"active\"\n */\n\nconst baseStatesConditions = {\n  NOT_RESPONDER: false,\n  RESPONDER_INACTIVE_PRESS_IN: false,\n  RESPONDER_INACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_PRESS_IN: false,\n  RESPONDER_ACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n  ERROR: false,\n};\n\nconst IsActive = {\n  ...baseStatesConditions,\n  RESPONDER_ACTIVE_PRESS_OUT: true,\n  RESPONDER_ACTIVE_PRESS_IN: true,\n};\n\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\nconst IsPressingIn = {\n  ...baseStatesConditions,\n  RESPONDER_INACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst IsLongPressingIn = {\n  ...baseStatesConditions,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\n/**\n * Inputs to the state machine.\n */\nconst Signals = {\n  DELAY: 'DELAY',\n  RESPONDER_GRANT: 'RESPONDER_GRANT',\n  RESPONDER_RELEASE: 'RESPONDER_RELEASE',\n  RESPONDER_TERMINATED: 'RESPONDER_TERMINATED',\n  ENTER_PRESS_RECT: 'ENTER_PRESS_RECT',\n  LEAVE_PRESS_RECT: 'LEAVE_PRESS_RECT',\n  LONG_PRESS_DETECTED: 'LONG_PRESS_DETECTED',\n};\n\ntype Signal =\n  | typeof Signals.DELAY\n  | typeof Signals.RESPONDER_GRANT\n  | typeof Signals.RESPONDER_RELEASE\n  | typeof Signals.RESPONDER_TERMINATED\n  | typeof Signals.ENTER_PRESS_RECT\n  | typeof Signals.LEAVE_PRESS_RECT\n  | typeof Signals.LONG_PRESS_DETECTED;\n\n/**\n * Mapping from States x Signals => States\n */\nconst Transitions = {\n  NOT_RESPONDER: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.ERROR,\n    RESPONDER_TERMINATED: States.ERROR,\n    ENTER_PRESS_RECT: States.ERROR,\n    LEAVE_PRESS_RECT: States.ERROR,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_INACTIVE_PRESS_IN: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_INACTIVE_PRESS_OUT: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_ACTIVE_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n  },\n  RESPONDER_ACTIVE_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR,\n  },\n  error: {\n    DELAY: States.NOT_RESPONDER,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.NOT_RESPONDER,\n    LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n    LONG_PRESS_DETECTED: States.NOT_RESPONDER,\n  },\n};\n\n// ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\nconst HIGHLIGHT_DELAY_MS = 130;\n\nconst PRESS_EXPAND_PX = 20;\n\nconst LONG_PRESS_THRESHOLD = 500;\n\nconst LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nconst LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n// Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n *  +--------------------------+\n *  |                          | - \"Start\" events in `HitRect` cause `HitRect`\n *  |  +--------------------+  |   to become the responder.\n *  |  |  +--------------+  |  | - `HitRect` is typically expanded around\n *  |  |  |              |  |  |   the `VisualRect`, but shifted downward.\n *  |  |  |  VisualRect  |  |  | - After pressing down, after some delay,\n *  |  |  |              |  |  |   and before letting up, the Visual React\n *  |  |  +--------------+  |  |   will become \"active\". This makes it eligible\n *  |  |     HitRect        |  |   for being highlighted (so long as the\n *  |  +--------------------+  |   press remains in the `PressRect`).\n *  |        PressRect     o   |\n *  +----------------------|---+\n *           Out Region    |\n *                         +-----+ This gap between the `HitRect` and\n *                                 `PressRect` allows a touch to move far away\n *                                 from the original hit rect, and remain\n *                                 highlighted, and eligible for a \"Press\".\n *                                 Customize this via\n *                                 `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n *     +\n *     | RESPONDER_GRANT (HitRect)\n *     v\n * +---------------------------+  DELAY   +-------------------------+  T + DELAY     +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+          +-------------------------+                +------------------------------+\n *     +            ^                         +           ^                                 +           ^\n *     |LEAVE_      |ENTER_                   |LEAVE_     |ENTER_                           |LEAVE_     |ENTER_\n *     |PRESS_RECT  |PRESS_RECT               |PRESS_RECT |PRESS_RECT                       |PRESS_RECT |PRESS_RECT\n *     |            |                         |           |                                 |           |\n *     v            +                         v           +                                 v           +\n * +----------------------------+  DELAY  +--------------------------+               +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT|               |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+         +--------------------------+               +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\nconst TouchableMixin = {\n  componentDidMount: function() {\n    if (!Platform.isTV) {\n      return;\n    }\n  },\n\n  /**\n   * Clear all timeouts on unmount\n   */\n  componentWillUnmount: function() {\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n  },\n\n  /**\n   * It's prefer that mixins determine state in this way, having the class\n   * explicitly mix the state in the one and only `getInitialState` method.\n   *\n   * @return {object} State object to be placed inside of\n   * `this.state.touchable`.\n   */\n  touchableGetInitialState: function(): $TEMPORARY$object<{|\n    touchable: $TEMPORARY$object<{|responderID: null, touchState: void|}>,\n  |}> {\n    return {\n      touchable: {touchState: undefined, responderID: null},\n    };\n  },\n\n  // ==== Hooks to Gesture Responder system ====\n  /**\n   * Must return true if embedded in a native platform scroll view.\n   */\n  touchableHandleResponderTerminationRequest: function(): any {\n    return !this.props.rejectResponderTermination;\n  },\n\n  /**\n   * Must return true to start the process of `Touchable`.\n   */\n  touchableHandleStartShouldSetResponder: function(): any {\n    return !this.props.disabled;\n  },\n\n  /**\n   * Return true to cancel press on long press.\n   */\n  touchableLongPressCancelsPress: function(): boolean {\n    return true;\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderGrant` event.\n   * @param {SyntheticEvent} e Synthetic event from event system.\n   *\n   */\n  touchableHandleResponderGrant: function(e: PressEvent) {\n    const dispatchID = e.currentTarget;\n    // Since e is used in a callback invoked on another event loop\n    // (as in setTimeout etc), we need to call e.persist() on the\n    // event to make sure it doesn't get reused in the event object pool.\n    e.persist();\n\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n    this.pressOutDelayTimeout = null;\n\n    this.state.touchable.touchState = States.NOT_RESPONDER;\n    this.state.touchable.responderID = dispatchID;\n    this._receiveSignal(Signals.RESPONDER_GRANT, e);\n    let delayMS =\n      this.touchableGetHighlightDelayMS !== undefined\n        ? Math.max(this.touchableGetHighlightDelayMS(), 0)\n        : HIGHLIGHT_DELAY_MS;\n    delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n    if (delayMS !== 0) {\n      this.touchableDelayTimeout = setTimeout(\n        this._handleDelay.bind(this, e),\n        delayMS,\n      );\n    } else {\n      this._handleDelay(e);\n    }\n\n    let longDelayMS =\n      this.touchableGetLongPressDelayMS !== undefined\n        ? Math.max(this.touchableGetLongPressDelayMS(), 10)\n        : LONG_PRESS_DELAY_MS;\n    longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n    this.longPressDelayTimeout = setTimeout(\n      this._handleLongDelay.bind(this, e),\n      longDelayMS + delayMS,\n    );\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderRelease` event.\n   */\n  touchableHandleResponderRelease: function(e: PressEvent) {\n    this.pressInLocation = null;\n    this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderTerminate` event.\n   */\n  touchableHandleResponderTerminate: function(e: PressEvent) {\n    this.pressInLocation = null;\n    this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderMove` event.\n   */\n  touchableHandleResponderMove: function(e: PressEvent) {\n    // Measurement may not have returned yet.\n    if (!this.state.touchable.positionOnActivate) {\n      return;\n    }\n\n    const positionOnActivate = this.state.touchable.positionOnActivate;\n    const dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n    const pressRectOffset = this.touchableGetPressRectOffset\n      ? this.touchableGetPressRectOffset()\n      : {\n          left: PRESS_EXPAND_PX,\n          right: PRESS_EXPAND_PX,\n          top: PRESS_EXPAND_PX,\n          bottom: PRESS_EXPAND_PX,\n        };\n\n    let pressExpandLeft = pressRectOffset.left;\n    let pressExpandTop = pressRectOffset.top;\n    let pressExpandRight = pressRectOffset.right;\n    let pressExpandBottom = pressRectOffset.bottom;\n\n    const hitSlop = this.touchableGetHitSlop\n      ? this.touchableGetHitSlop()\n      : null;\n\n    if (hitSlop) {\n      pressExpandLeft += hitSlop.left || 0;\n      pressExpandTop += hitSlop.top || 0;\n      pressExpandRight += hitSlop.right || 0;\n      pressExpandBottom += hitSlop.bottom || 0;\n    }\n\n    const touch = extractSingleTouch(e.nativeEvent);\n    const pageX = touch && touch.pageX;\n    const pageY = touch && touch.pageY;\n\n    if (this.pressInLocation) {\n      const movedDistance = this._getDistanceBetweenPoints(\n        pageX,\n        pageY,\n        this.pressInLocation.pageX,\n        this.pressInLocation.pageY,\n      );\n      if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n        this._cancelLongPressDelayTimeout();\n      }\n    }\n\n    const isTouchWithinActive =\n      pageX > positionOnActivate.left - pressExpandLeft &&\n      pageY > positionOnActivate.top - pressExpandTop &&\n      pageX <\n        positionOnActivate.left +\n          dimensionsOnActivate.width +\n          pressExpandRight &&\n      pageY <\n        positionOnActivate.top +\n          dimensionsOnActivate.height +\n          pressExpandBottom;\n    if (isTouchWithinActive) {\n      const prevState = this.state.touchable.touchState;\n      this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n      const curState = this.state.touchable.touchState;\n      if (\n        curState === States.RESPONDER_INACTIVE_PRESS_IN &&\n        prevState !== States.RESPONDER_INACTIVE_PRESS_IN\n      ) {\n        // fix for t7967420\n        this._cancelLongPressDelayTimeout();\n      }\n    } else {\n      this._cancelLongPressDelayTimeout();\n      this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n    }\n  },\n\n  /**\n   * Invoked when the item receives focus. Mixers might override this to\n   * visually distinguish the `VisualRect` so that the user knows that it\n   * currently has the focus. Most platforms only support a single element being\n   * focused at a time, in which case there may have been a previously focused\n   * element that was blurred just prior to this. This can be overridden when\n   * using `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n   */\n  touchableHandleFocus: function(e: Event) {\n    this.props.onFocus && this.props.onFocus(e);\n  },\n\n  /**\n   * Invoked when the item loses focus. Mixers might override this to\n   * visually distinguish the `VisualRect` so that the user knows that it\n   * no longer has focus. Most platforms only support a single element being\n   * focused at a time, in which case the focus may have moved to another.\n   * This can be overridden when using\n   * `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n   */\n  touchableHandleBlur: function(e: Event) {\n    this.props.onBlur && this.props.onBlur(e);\n  },\n\n  // ==== Abstract Application Callbacks ====\n\n  /**\n   * Invoked when the item should be highlighted. Mixers should implement this\n   * to visually distinguish the `VisualRect` so that the user knows that\n   * releasing a touch will result in a \"selection\" (analog to click).\n   *\n   * @abstract\n   * touchableHandleActivePressIn: function,\n   */\n\n  /**\n   * Invoked when the item is \"active\" (in that it is still eligible to become\n   * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n   * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n   * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n   * again and the mixer should probably highlight the `VisualRect` again. This\n   * event will not fire on an `touchEnd/mouseUp` event, only move events while\n   * the user is depressing the mouse/touch.\n   *\n   * @abstract\n   * touchableHandleActivePressOut: function\n   */\n\n  /**\n   * Invoked when the item is \"selected\" - meaning the interaction ended by\n   * letting up while the item was either in the state\n   * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n   *\n   * @abstract\n   * touchableHandlePress: function\n   */\n\n  /**\n   * Invoked when the item is long pressed - meaning the interaction ended by\n   * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n   * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n   * be called as it normally is. If `touchableHandleLongPress` is provided, by\n   * default any `touchableHandlePress` callback will not be invoked. To\n   * override this default behavior, override `touchableLongPressCancelsPress`\n   * to return false. As a result, `touchableHandlePress` will be called when\n   * lifting up, even if `touchableHandleLongPress` has also been called.\n   *\n   * @abstract\n   * touchableHandleLongPress: function\n   */\n\n  /**\n   * Returns the number of millis to wait before triggering a highlight.\n   *\n   * @abstract\n   * touchableGetHighlightDelayMS: function\n   */\n\n  /**\n   * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n   * numbers mean the size expands outwards.\n   *\n   * @abstract\n   * touchableGetPressRectOffset: function\n   */\n\n  // ==== Internal Logic ====\n\n  /**\n   * Measures the `HitRect` node on activation. The Bounding rectangle is with\n   * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n   * should result in points that are in the same coordinate system as an\n   * event's `globalX/globalY` data values.\n   *\n   * - Consider caching this for the lifetime of the component, or possibly\n   *   being able to share this cache between any `ScrollMap` view.\n   *\n   * @sideeffects\n   * @private\n   */\n  _remeasureMetricsOnActivation: function() {\n    const responderID = this.state.touchable.responderID;\n    if (responderID == null) {\n      return;\n    }\n\n    if (typeof responderID === 'number') {\n      UIManager.measure(responderID, this._handleQueryLayout);\n    } else {\n      responderID.measure(this._handleQueryLayout);\n    }\n  },\n\n  _handleQueryLayout: function(\n    l: number,\n    t: number,\n    w: number,\n    h: number,\n    globalX: number,\n    globalY: number,\n  ) {\n    //don't do anything UIManager failed to measure node\n    if (!l && !t && !w && !h && !globalX && !globalY) {\n      return;\n    }\n    this.state.touchable.positionOnActivate &&\n      Position.release(this.state.touchable.positionOnActivate);\n    this.state.touchable.dimensionsOnActivate &&\n      BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n    this.state.touchable.positionOnActivate = Position.getPooled(\n      globalX,\n      globalY,\n    );\n    this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(\n      w,\n      h,\n    );\n  },\n\n  _handleDelay: function(e: PressEvent) {\n    this.touchableDelayTimeout = null;\n    this._receiveSignal(Signals.DELAY, e);\n  },\n\n  _handleLongDelay: function(e: PressEvent) {\n    this.longPressDelayTimeout = null;\n    const curState = this.state.touchable.touchState;\n    if (\n      curState === States.RESPONDER_ACTIVE_PRESS_IN ||\n      curState === States.RESPONDER_ACTIVE_LONG_PRESS_IN\n    ) {\n      this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n    }\n  },\n\n  /**\n   * Receives a state machine signal, performs side effects of the transition\n   * and stores the new state. Validates the transition as well.\n   *\n   * @param {Signals} signal State machine signal.\n   * @throws Error if invalid state transition or unrecognized signal.\n   * @sideeffects\n   */\n  _receiveSignal: function(signal: Signal, e: PressEvent) {\n    const responderID = this.state.touchable.responderID;\n    const curState = this.state.touchable.touchState;\n    const nextState = Transitions[curState] && Transitions[curState][signal];\n    if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n      return;\n    }\n    if (!nextState) {\n      throw new Error(\n        'Unrecognized signal `' +\n          signal +\n          '` or state `' +\n          curState +\n          '` for Touchable responder `' +\n          typeof this.state.touchable.responderID ===\n        'number'\n          ? this.state.touchable.responderID\n          : 'host component' + '`',\n      );\n    }\n    if (nextState === States.ERROR) {\n      throw new Error(\n        'Touchable cannot transition from `' +\n          curState +\n          '` to `' +\n          signal +\n          '` for responder `' +\n          typeof this.state.touchable.responderID ===\n        'number'\n          ? this.state.touchable.responderID\n          : '<<host component>>' + '`',\n      );\n    }\n    if (curState !== nextState) {\n      this._performSideEffectsForTransition(curState, nextState, signal, e);\n      this.state.touchable.touchState = nextState;\n    }\n  },\n\n  _cancelLongPressDelayTimeout: function() {\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.longPressDelayTimeout = null;\n  },\n\n  _isHighlight: function(state: State): boolean {\n    return (\n      state === States.RESPONDER_ACTIVE_PRESS_IN ||\n      state === States.RESPONDER_ACTIVE_LONG_PRESS_IN\n    );\n  },\n\n  _savePressInLocation: function(e: PressEvent) {\n    const touch = extractSingleTouch(e.nativeEvent);\n    const pageX = touch && touch.pageX;\n    const pageY = touch && touch.pageY;\n    const locationX = touch && touch.locationX;\n    const locationY = touch && touch.locationY;\n    this.pressInLocation = {pageX, pageY, locationX, locationY};\n  },\n\n  _getDistanceBetweenPoints: function(\n    aX: number,\n    aY: number,\n    bX: number,\n    bY: number,\n  ): number {\n    const deltaX = aX - bX;\n    const deltaY = aY - bY;\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  },\n\n  /**\n   * Will perform a transition between touchable states, and identify any\n   * highlighting or unhighlighting that must be performed for this particular\n   * transition.\n   *\n   * @param {States} curState Current Touchable state.\n   * @param {States} nextState Next Touchable state.\n   * @param {Signal} signal Signal that triggered the transition.\n   * @param {Event} e Native event.\n   * @sideeffects\n   */\n  _performSideEffectsForTransition: function(\n    curState: State,\n    nextState: State,\n    signal: Signal,\n    e: PressEvent,\n  ) {\n    const curIsHighlight = this._isHighlight(curState);\n    const newIsHighlight = this._isHighlight(nextState);\n\n    const isFinalSignal =\n      signal === Signals.RESPONDER_TERMINATED ||\n      signal === Signals.RESPONDER_RELEASE;\n\n    if (isFinalSignal) {\n      this._cancelLongPressDelayTimeout();\n    }\n\n    const isInitialTransition =\n      curState === States.NOT_RESPONDER &&\n      nextState === States.RESPONDER_INACTIVE_PRESS_IN;\n\n    const isActiveTransition = !IsActive[curState] && IsActive[nextState];\n    if (isInitialTransition || isActiveTransition) {\n      this._remeasureMetricsOnActivation();\n    }\n\n    if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n      this.touchableHandleLongPress && this.touchableHandleLongPress(e);\n    }\n\n    if (newIsHighlight && !curIsHighlight) {\n      this._startHighlight(e);\n    } else if (!newIsHighlight && curIsHighlight) {\n      this._endHighlight(e);\n    }\n\n    if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n      const hasLongPressHandler = !!this.props.onLongPress;\n      const pressIsLongButStillCallOnPress =\n        IsLongPressingIn[curState] && // We *are* long pressing.. // But either has no long handler\n        (!hasLongPressHandler || !this.touchableLongPressCancelsPress()); // or we're told to ignore it.\n\n      const shouldInvokePress =\n        !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n      if (shouldInvokePress && this.touchableHandlePress) {\n        if (!newIsHighlight && !curIsHighlight) {\n          // we never highlighted because of delay, but we should highlight now\n          this._startHighlight(e);\n          this._endHighlight(e);\n        }\n        if (Platform.OS === 'android' && !this.props.touchSoundDisabled) {\n          SoundManager.playTouchSound();\n        }\n        this.touchableHandlePress(e);\n      }\n    }\n\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.touchableDelayTimeout = null;\n  },\n\n  _startHighlight: function(e: PressEvent) {\n    this._savePressInLocation(e);\n    this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n  },\n\n  _endHighlight: function(e: PressEvent) {\n    if (this.touchableHandleActivePressOut) {\n      if (\n        this.touchableGetPressOutDelayMS &&\n        this.touchableGetPressOutDelayMS()\n      ) {\n        this.pressOutDelayTimeout = setTimeout(() => {\n          this.touchableHandleActivePressOut(e);\n        }, this.touchableGetPressOutDelayMS());\n      } else {\n        this.touchableHandleActivePressOut(e);\n      }\n    }\n  },\n\n  withoutDefaultFocusAndBlur: ({}: $TEMPORARY$object<{||}>),\n};\n\n/**\n * Provide an optional version of the mixin where `touchableHandleFocus` and\n * `touchableHandleBlur` can be overridden. This allows appropriate defaults to\n * be set on TV platforms, without breaking existing implementations of\n * `Touchable`.\n */\nconst {\n  touchableHandleFocus,\n  touchableHandleBlur,\n  ...TouchableMixinWithoutDefaultFocusAndBlur\n} = TouchableMixin;\nTouchableMixin.withoutDefaultFocusAndBlur = TouchableMixinWithoutDefaultFocusAndBlur;\n\nconst Touchable = {\n  Mixin: TouchableMixin,\n  TOUCH_TARGET_DEBUG: false, // Highlights all touchable targets. Toggle with Inspector.\n  /**\n   * Renders a debugging overlay to visualize touch target with hitSlop (might not work on Android).\n   */\n  renderDebugView: ({\n    color,\n    hitSlop,\n  }: {\n    color: string | number,\n    hitSlop: EdgeInsetsProp,\n    ...\n  }): null | React.Node => {\n    if (!Touchable.TOUCH_TARGET_DEBUG) {\n      return null;\n    }\n    if (!__DEV__) {\n      throw Error(\n        'Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!',\n      );\n    }\n    const debugHitSlopStyle = {};\n    hitSlop = hitSlop || {top: 0, bottom: 0, left: 0, right: 0};\n    for (const key in hitSlop) {\n      debugHitSlopStyle[key] = -hitSlop[key];\n    }\n    const normalizedColor = normalizeColor(color);\n    if (typeof normalizedColor !== 'number') {\n      return null;\n    }\n    const hexColor =\n      '#' + ('00000000' + normalizedColor.toString(16)).substr(-8);\n    return (\n      <View\n        pointerEvents=\"none\"\n        style={[\n          styles.debug,\n          /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses\n           * an error found when Flow v0.111 was deployed. To see the error,\n           * delete this comment and run Flow. */\n          {\n            borderColor: hexColor.slice(0, -2) + '55', // More opaque\n            backgroundColor: hexColor.slice(0, -2) + '0F', // Less opaque\n            ...debugHitSlopStyle,\n          },\n        ]}\n      />\n    );\n  },\n};\n\nconst styles = StyleSheet.create({\n  debug: {\n    position: 'absolute',\n    borderWidth: 1,\n    borderStyle: 'dashed',\n  },\n});\n\nmodule.exports = Touchable;\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 * @format\n */\n\n'use strict';\n\nconst PooledClass = require('./PooledClass');\n\nconst twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * PooledClass representing the bounding rectangle of a region.\n *\n * @param {number} width Width of bounding rectangle.\n * @param {number} height Height of bounding rectangle.\n * @constructor BoundingDimensions\n */\nfunction BoundingDimensions(width, height) {\n  this.width = width;\n  this.height = height;\n}\n\nBoundingDimensions.prototype.destructor = function() {\n  this.width = null;\n  this.height = null;\n};\n\n/**\n * @param {HTMLElement} element Element to return `BoundingDimensions` for.\n * @return {BoundingDimensions} Bounding dimensions of `element`.\n */\nBoundingDimensions.getPooledFromElement = function(element) {\n  return BoundingDimensions.getPooled(\n    element.offsetWidth,\n    element.offsetHeight,\n  );\n};\n\nPooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nconst oneArgumentPooler = function(copyFieldsFrom) {\n  const Klass = this;\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, copyFieldsFrom);\n    return instance;\n  } else {\n    return new Klass(copyFieldsFrom);\n  }\n};\n\nconst twoArgumentPooler = function(a1, a2) {\n  const Klass = this;\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2);\n    return instance;\n  } else {\n    return new Klass(a1, a2);\n  }\n};\n\nconst threeArgumentPooler = function(a1, a2, a3) {\n  const Klass = this;\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3);\n  }\n};\n\nconst fourArgumentPooler = function(a1, a2, a3, a4) {\n  const Klass = this;\n  if (Klass.instancePool.length) {\n    const instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3, a4);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3, a4);\n  }\n};\n\nconst standardReleaser = function(instance) {\n  const Klass = this;\n  invariant(\n    instance instanceof Klass,\n    'Trying to release an instance into a pool of a different type.',\n  );\n  instance.destructor();\n  if (Klass.instancePool.length < Klass.poolSize) {\n    Klass.instancePool.push(instance);\n  }\n};\n\nconst DEFAULT_POOL_SIZE = 10;\nconst DEFAULT_POOLER = oneArgumentPooler;\n\ntype Pooler = any;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nconst addPoolingTo = function<T>(\n  CopyConstructor: Class<T>,\n  pooler: Pooler,\n): Class<T> & {\n  getPooled(\n    ...args: $ReadOnlyArray<mixed>\n  ): /* arguments of the constructor */ T,\n  release(instance: mixed): void,\n  ...\n} {\n  // Casting as any so that flow ignores the actual implementation and trusts\n  // it to match the type we declared\n  const NewKlass = (CopyConstructor: any);\n  NewKlass.instancePool = [];\n  NewKlass.getPooled = pooler || DEFAULT_POOLER;\n  if (!NewKlass.poolSize) {\n    NewKlass.poolSize = DEFAULT_POOL_SIZE;\n  }\n  NewKlass.release = standardReleaser;\n  return NewKlass;\n};\n\nconst PooledClass = {\n  addPoolingTo: addPoolingTo,\n  oneArgumentPooler: (oneArgumentPooler: Pooler),\n  twoArgumentPooler: (twoArgumentPooler: Pooler),\n  threeArgumentPooler: (threeArgumentPooler: Pooler),\n  fourArgumentPooler: (fourArgumentPooler: Pooler),\n};\n\nmodule.exports = PooledClass;\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 * @format\n */\n\n'use strict';\n\nconst PooledClass = require('./PooledClass');\n\nconst twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * Position does not expose methods for construction via an `HTMLDOMElement`,\n * because it isn't meaningful to construct such a thing without first defining\n * a frame of reference.\n *\n * @param {number} windowStartKey Key that window starts at.\n * @param {number} windowEndKey Key that window ends at.\n */\nfunction Position(left, top) {\n  this.left = left;\n  this.top = top;\n}\n\nPosition.prototype.destructor = function() {\n  this.left = null;\n  this.top = null;\n};\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\n\nmodule.exports = Position;\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 * @format\n * @flow strict\n */\n\n'use strict';\nimport NativeSoundManager from './NativeSoundManager';\n\nconst SoundManager = {\n  playTouchSound: function(): void {\n    if (NativeSoundManager) {\n      NativeSoundManager.playTouchSound();\n    }\n  },\n};\n\nmodule.exports = SoundManager;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\n/**\n * Native Module used for playing sounds in native platform.\n */\nexport interface Spec extends TurboModule {\n  +playTouchSound: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('SoundManager'): ?Spec);\n","'use strict';\n\nfunction nullthrows(x, message) {\n  if (x != null) {\n    return x;\n  }\n  var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n  error.framesToPop = 1; // Skip nullthrows's own stack frame.\n  throw error;\n}\n\nmodule.exports = nullthrows;\nmodule.exports.default = nullthrows;\n\nObject.defineProperty(module.exports, '__esModule', {value: true});\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport typeof TouchableWithoutFeedback from './TouchableWithoutFeedback';\nimport {Commands} from 'react-native/Libraries/Components/View/ViewNativeComponent';\nimport ReactNative from 'react-native/Libraries/Renderer/shims/ReactNative';\nimport type {PressEvent} from 'react-native/Libraries/Types/CoreEventTypes';\nimport Platform from '../../Utilities/Platform';\nimport View from '../../Components/View/View';\nimport processColor from '../../StyleSheet/processColor';\nimport * as React from 'react';\nimport invariant from 'invariant';\n\ntype Props = $ReadOnly<{|\n  ...React.ElementConfig<TouchableWithoutFeedback>,\n\n  /**\n   * Determines the type of background drawable that's going to be used to\n   * display feedback. It takes an object with `type` property and extra data\n   * depending on the `type`. It's recommended to use one of the static\n   * methods to generate that dictionary.\n   */\n  background?: ?(\n    | $ReadOnly<{|\n        type: 'ThemeAttrAndroid',\n        attribute:\n          | 'selectableItemBackground'\n          | 'selectableItemBackgroundBorderless',\n        rippleRadius: ?number,\n      |}>\n    | $ReadOnly<{|\n        type: 'RippleAndroid',\n        color: ?number,\n        borderless: boolean,\n        rippleRadius: ?number,\n      |}>\n  ),\n\n  /**\n   * TV preferred focus (see documentation for the View component).\n   */\n  hasTVPreferredFocus?: ?boolean,\n\n  /**\n   * TV next focus down (see documentation for the View component).\n   */\n  nextFocusDown?: ?number,\n\n  /**\n   * TV next focus forward (see documentation for the View component).\n   */\n  nextFocusForward?: ?number,\n\n  /**\n   * TV next focus left (see documentation for the View component).\n   */\n  nextFocusLeft?: ?number,\n\n  /**\n   * TV next focus right (see documentation for the View component).\n   */\n  nextFocusRight?: ?number,\n\n  /**\n   * TV next focus up (see documentation for the View component).\n   */\n  nextFocusUp?: ?number,\n\n  /**\n   * Set to true to add the ripple effect to the foreground of the view, instead\n   * of the background. This is useful if one of your child views has a\n   * background of its own, or you're e.g. displaying images, and you don't want\n   * the ripple to be covered by them.\n   *\n   * Check TouchableNativeFeedback.canUseNativeForeground() first, as this is\n   * only available on Android 6.0 and above. If you try to use this on older\n   * versions, this will fallback to background.\n   */\n  useForeground?: ?boolean,\n|}>;\n\ntype State = $ReadOnly<{|\n  pressability: Pressability,\n|}>;\n\nclass TouchableNativeFeedback extends React.Component<Props, State> {\n  /**\n   * Creates a value for the `background` prop that uses the Android theme's\n   * default background for selectable elements.\n   */\n  static SelectableBackground: (\n    rippleRadius: ?number,\n  ) => $ReadOnly<{|\n    attribute: 'selectableItemBackground',\n    type: 'ThemeAttrAndroid',\n    rippleRadius: ?number,\n  |}> = (rippleRadius: ?number) => ({\n    type: 'ThemeAttrAndroid',\n    attribute: 'selectableItemBackground',\n    rippleRadius,\n  });\n\n  /**\n   * Creates a value for the `background` prop that uses the Android theme's\n   * default background for borderless selectable elements. Requires API 21+.\n   */\n  static SelectableBackgroundBorderless: (\n    rippleRadius: ?number,\n  ) => $ReadOnly<{|\n    attribute: 'selectableItemBackgroundBorderless',\n    type: 'ThemeAttrAndroid',\n    rippleRadius: ?number,\n  |}> = (rippleRadius: ?number) => ({\n    type: 'ThemeAttrAndroid',\n    attribute: 'selectableItemBackgroundBorderless',\n    rippleRadius,\n  });\n\n  /**\n   * Creates a value for the `background` prop that uses the Android ripple with\n   * the supplied color. If `borderless` is true, the ripple will render outside\n   * of the view bounds. Requires API 21+.\n   */\n  static Ripple: (\n    color: string,\n    borderless: boolean,\n    rippleRadius: ?number,\n  ) => $ReadOnly<{|\n    borderless: boolean,\n    color: ?number,\n    rippleRadius: ?number,\n    type: 'RippleAndroid',\n  |}> = (color: string, borderless: boolean, rippleRadius: ?number) => {\n    const processedColor = processColor(color);\n    invariant(\n      processedColor == null || typeof processedColor === 'number',\n      'Unexpected color given for Ripple color',\n    );\n    return {\n      type: 'RippleAndroid',\n      color: processedColor,\n      borderless,\n      rippleRadius,\n    };\n  };\n\n  /**\n   * Whether `useForeground` is supported.\n   */\n  static canUseNativeForeground: () => boolean = () =>\n    Platform.OS === 'android' && Platform.Version >= 23;\n\n  state: State = {\n    pressability: new Pressability(this._createPressabilityConfig()),\n  };\n\n  _createPressabilityConfig(): PressabilityConfig {\n    return {\n      cancelable: !this.props.rejectResponderTermination,\n      disabled: this.props.disabled,\n      hitSlop: this.props.hitSlop,\n      delayLongPress: this.props.delayLongPress,\n      delayPressIn: this.props.delayPressIn,\n      delayPressOut: this.props.delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: this.props.pressRetentionOffset,\n      android_disableSound: this.props.touchSoundDisabled,\n      onLongPress: this.props.onLongPress,\n      onPress: this.props.onPress,\n      onPressIn: event => {\n        if (Platform.OS === 'android') {\n          this._dispatchPressedStateChange(true);\n          this._dispatchHotspotUpdate(event);\n        }\n        if (this.props.onPressIn != null) {\n          this.props.onPressIn(event);\n        }\n      },\n      onPressMove: event => {\n        if (Platform.OS === 'android') {\n          this._dispatchHotspotUpdate(event);\n        }\n      },\n      onPressOut: event => {\n        if (Platform.OS === 'android') {\n          this._dispatchPressedStateChange(false);\n        }\n        if (this.props.onPressOut != null) {\n          this.props.onPressOut(event);\n        }\n      },\n    };\n  }\n\n  _dispatchPressedStateChange(pressed: boolean): void {\n    if (Platform.OS === 'android') {\n      const hostComponentRef = ReactNative.findHostInstance_DEPRECATED(this);\n      if (hostComponentRef == null) {\n        console.warn(\n          'Touchable: Unable to find HostComponent instance. ' +\n            'Has your Touchable component been unmounted?',\n        );\n      } else {\n        Commands.setPressed(hostComponentRef, pressed);\n      }\n    }\n  }\n\n  _dispatchHotspotUpdate(event: PressEvent): void {\n    if (Platform.OS === 'android') {\n      const {locationX, locationY} = event.nativeEvent;\n      const hostComponentRef = ReactNative.findHostInstance_DEPRECATED(this);\n      if (hostComponentRef == null) {\n        console.warn(\n          'Touchable: Unable to find HostComponent instance. ' +\n            'Has your Touchable component been unmounted?',\n        );\n      } else {\n        Commands.hotspotUpdate(\n          hostComponentRef,\n          locationX ?? 0,\n          locationY ?? 0,\n        );\n      }\n    }\n  }\n\n  render(): React.Node {\n    const element = React.Children.only(this.props.children);\n    const children = [element.props.children];\n    if (__DEV__) {\n      if (element.type === View) {\n        children.push(\n          <PressabilityDebugView color=\"brown\" hitSlop={this.props.hitSlop} />,\n        );\n      }\n    }\n\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {\n      onBlur,\n      onFocus,\n      ...eventHandlersWithoutBlurAndFocus\n    } = this.state.pressability.getEventHandlers();\n\n    return React.cloneElement(\n      element,\n      {\n        ...eventHandlersWithoutBlurAndFocus,\n        ...getBackgroundProp(\n          this.props.background === undefined\n            ? TouchableNativeFeedback.SelectableBackground()\n            : this.props.background,\n          this.props.useForeground === true,\n        ),\n        accessible: this.props.accessible !== false,\n        accessibilityHint: this.props.accessibilityHint,\n        accessibilityLabel: this.props.accessibilityLabel,\n        accessibilityRole: this.props.accessibilityRole,\n        accessibilityState: this.props.accessibilityState,\n        accessibilityActions: this.props.accessibilityActions,\n        onAccessibilityAction: this.props.onAccessibilityAction,\n        accessibilityValue: this.props.accessibilityValue,\n        importantForAccessibility: this.props.importantForAccessibility,\n        accessibilityLiveRegion: this.props.accessibilityLiveRegion,\n        accessibilityViewIsModal: this.props.accessibilityViewIsModal,\n        accessibilityElementsHidden: this.props.accessibilityElementsHidden,\n        hasTVPreferredFocus: this.props.hasTVPreferredFocus,\n        hitSlop: this.props.hitSlop,\n        focusable:\n          this.props.focusable !== false &&\n          this.props.onPress !== undefined &&\n          !this.props.disabled,\n        nativeID: this.props.nativeID,\n        nextFocusDown: this.props.nextFocusDown,\n        nextFocusForward: this.props.nextFocusForward,\n        nextFocusLeft: this.props.nextFocusLeft,\n        nextFocusRight: this.props.nextFocusRight,\n        nextFocusUp: this.props.nextFocusUp,\n        onLayout: this.props.onLayout,\n        testID: this.props.testID,\n      },\n      ...children,\n    );\n  }\n\n  componentDidUpdate(prevProps: Props, prevState: State) {\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentWillUnmount(): void {\n    this.state.pressability.reset();\n  }\n}\n\nconst getBackgroundProp =\n  Platform.OS === 'android'\n    ? (background, useForeground) =>\n        useForeground && TouchableNativeFeedback.canUseNativeForeground()\n          ? {nativeForegroundAndroid: background}\n          : {nativeBackgroundAndroid: background}\n    : (background, useForeground) => null;\n\nmodule.exports = TouchableNativeFeedback;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport {isHoverEnabled} from './HoverState';\nimport invariant from 'invariant';\nimport SoundManager from '../Components/Sound/SoundManager';\nimport {normalizeRect, type RectOrSize} from '../StyleSheet/Rect';\nimport type {\n  BlurEvent,\n  FocusEvent,\n  PressEvent,\n  MouseEvent,\n} from '../Types/CoreEventTypes';\nimport Platform from '../Utilities/Platform';\nimport UIManager from '../ReactNative/UIManager';\nimport type {HostComponent} from '../Renderer/shims/ReactNativeTypes';\nimport * as React from 'react';\n\nexport type PressabilityConfig = $ReadOnly<{|\n  /**\n   * Whether a press gesture can be interrupted by a parent gesture such as a\n   * scroll event. Defaults to true.\n   */\n  cancelable?: ?boolean,\n\n  /**\n   * Whether to disable initialization of the press gesture.\n   */\n  disabled?: ?boolean,\n\n  /**\n   * Amount to extend the `VisualRect` by to create `HitRect`.\n   */\n  hitSlop?: ?RectOrSize,\n\n  /**\n   * Amount to extend the `HitRect` by to create `PressRect`.\n   */\n  pressRectOffset?: ?RectOrSize,\n\n  /**\n   * Whether to disable the systemm sound when `onPress` fires on Android.\n   **/\n  android_disableSound?: ?boolean,\n\n  /**\n   * Duration to wait after hover in before calling `onHoverIn`.\n   */\n  delayHoverIn?: ?number,\n\n  /**\n   * Duration to wait after hover out before calling `onHoverOut`.\n   */\n  delayHoverOut?: ?number,\n\n  /**\n   * Duration (in addition to `delayPressIn`) after which a press gesture is\n   * considered a long press gesture. Defaults to 500 (milliseconds).\n   */\n  delayLongPress?: ?number,\n\n  /**\n   * Duration to wait after press down before calling `onPressIn`.\n   */\n  delayPressIn?: ?number,\n\n  /**\n   * Duration to wait after letting up before calling `onPressOut`.\n   */\n  delayPressOut?: ?number,\n\n  /**\n   * Minimum duration to wait between calling `onPressIn` and `onPressOut`.\n   */\n  minPressDuration?: ?number,\n\n  /**\n   * Called after the element loses focus.\n   */\n  onBlur?: ?(event: BlurEvent) => mixed,\n\n  /**\n   * Called after the element is focused.\n   */\n  onFocus?: ?(event: FocusEvent) => mixed,\n\n  /**\n   * Called when the hover is activated to provide visual feedback.\n   */\n  onHoverIn?: ?(event: MouseEvent) => mixed,\n\n  /**\n   * Called when the hover is deactivated to undo visual feedback.\n   */\n  onHoverOut?: ?(event: MouseEvent) => mixed,\n\n  /**\n   * Called when a long press gesture has been triggered.\n   */\n  onLongPress?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Called when a press gestute has been triggered.\n   */\n  onPress?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Called when the press is activated to provide visual feedback.\n   */\n  onPressIn?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Called when the press location moves. (This should rarely be used.)\n   */\n  onPressMove?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Called when the press is deactivated to undo visual feedback.\n   */\n  onPressOut?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Returns whether a long press gesture should cancel the press gesture.\n   * Defaults to true.\n   */\n  onLongPressShouldCancelPress_DEPRECATED?: ?() => boolean,\n\n  /**\n   * If `cancelable` is set, this will be ignored.\n   *\n   * Returns whether to yield to a lock termination request (e.g. if a native\n   * scroll gesture attempts to steal the responder lock).\n   */\n  onResponderTerminationRequest_DEPRECATED?: ?() => boolean,\n\n  /**\n   * If `disabled` is set, this will be ignored.\n   *\n   * Returns whether to start a press gesture.\n   *\n   * @deprecated\n   */\n  onStartShouldSetResponder_DEPRECATED?: ?() => boolean,\n|}>;\n\nexport type EventHandlers = $ReadOnly<{|\n  onBlur: (event: BlurEvent) => void,\n  onClick: (event: PressEvent) => void,\n  onFocus: (event: FocusEvent) => void,\n  onMouseEnter?: (event: MouseEvent) => void,\n  onMouseLeave?: (event: MouseEvent) => void,\n  onResponderGrant: (event: PressEvent) => void,\n  onResponderMove: (event: PressEvent) => void,\n  onResponderRelease: (event: PressEvent) => void,\n  onResponderTerminate: (event: PressEvent) => void,\n  onResponderTerminationRequest: () => boolean,\n  onStartShouldSetResponder: () => boolean,\n|}>;\n\ntype TouchState =\n  | 'NOT_RESPONDER'\n  | 'RESPONDER_INACTIVE_PRESS_IN'\n  | 'RESPONDER_INACTIVE_PRESS_OUT'\n  | 'RESPONDER_ACTIVE_PRESS_IN'\n  | 'RESPONDER_ACTIVE_PRESS_OUT'\n  | 'RESPONDER_ACTIVE_LONG_PRESS_IN'\n  | 'RESPONDER_ACTIVE_LONG_PRESS_OUT'\n  | 'ERROR';\n\ntype TouchSignal =\n  | 'DELAY'\n  | 'RESPONDER_GRANT'\n  | 'RESPONDER_RELEASE'\n  | 'RESPONDER_TERMINATED'\n  | 'ENTER_PRESS_RECT'\n  | 'LEAVE_PRESS_RECT'\n  | 'LONG_PRESS_DETECTED';\n\nconst Transitions = Object.freeze({\n  NOT_RESPONDER: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n    RESPONDER_RELEASE: 'ERROR',\n    RESPONDER_TERMINATED: 'ERROR',\n    ENTER_PRESS_RECT: 'ERROR',\n    LEAVE_PRESS_RECT: 'ERROR',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_INACTIVE_PRESS_IN: {\n    DELAY: 'RESPONDER_ACTIVE_PRESS_IN',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_INACTIVE_PRESS_OUT: {\n    DELAY: 'RESPONDER_ACTIVE_PRESS_OUT',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_INACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_ACTIVE_PRESS_IN: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n  },\n  RESPONDER_ACTIVE_PRESS_OUT: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_IN: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n    DELAY: 'ERROR',\n    RESPONDER_GRANT: 'ERROR',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n    LEAVE_PRESS_RECT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n    LONG_PRESS_DETECTED: 'ERROR',\n  },\n  ERROR: {\n    DELAY: 'NOT_RESPONDER',\n    RESPONDER_GRANT: 'RESPONDER_INACTIVE_PRESS_IN',\n    RESPONDER_RELEASE: 'NOT_RESPONDER',\n    RESPONDER_TERMINATED: 'NOT_RESPONDER',\n    ENTER_PRESS_RECT: 'NOT_RESPONDER',\n    LEAVE_PRESS_RECT: 'NOT_RESPONDER',\n    LONG_PRESS_DETECTED: 'NOT_RESPONDER',\n  },\n});\n\nconst isActiveSignal = signal =>\n  signal === 'RESPONDER_ACTIVE_PRESS_IN' ||\n  signal === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n\nconst isActivationSignal = signal =>\n  signal === 'RESPONDER_ACTIVE_PRESS_OUT' ||\n  signal === 'RESPONDER_ACTIVE_PRESS_IN';\n\nconst isPressInSignal = signal =>\n  signal === 'RESPONDER_INACTIVE_PRESS_IN' ||\n  signal === 'RESPONDER_ACTIVE_PRESS_IN' ||\n  signal === 'RESPONDER_ACTIVE_LONG_PRESS_IN';\n\nconst isTerminalSignal = signal =>\n  signal === 'RESPONDER_TERMINATED' || signal === 'RESPONDER_RELEASE';\n\nconst DEFAULT_LONG_PRESS_DELAY_MS = 500;\nconst DEFAULT_PRESS_RECT_OFFSETS = {\n  bottom: 30,\n  left: 20,\n  right: 20,\n  top: 20,\n};\nconst DEFAULT_MIN_PRESS_DURATION = 130;\n\n/**\n * Pressability implements press handling capabilities.\n *\n * =========================== Pressability Tutorial ===========================\n *\n * The `Pressability` class helps you create press interactions by analyzing the\n * geometry of elements and observing when another responder (e.g. ScrollView)\n * has stolen the touch lock. It offers hooks for your component to provide\n * interaction feedback to the user:\n *\n * - When a press has activated (e.g. highlight an element)\n * - When a press has deactivated (e.g. un-highlight an element)\n * - When a press sould trigger an action, meaning it activated and deactivated\n *   while within the geometry of the element without the lock being stolen.\n *\n * A high quality interaction isn't as simple as you might think. There should\n * be a slight delay before activation. Moving your finger beyond an element's\n * bounds should trigger deactivation, but moving the same finger back within an\n * element's bounds should trigger reactivation.\n *\n * In order to use `Pressability`, do the following:\n *\n * 1. Instantiate `Pressability` and store it on your component's state.\n *\n *    state = {\n *      pressability: new Pressability({\n *        // ...\n *      }),\n *    };\n *\n * 2. Choose the rendered component who should collect the press events. On that\n *    element, spread `pressability.getEventHandlers()` into its props.\n *\n *    return (\n *      <View {...this.state.pressability.getEventHandlers()} />\n *    );\n *\n * 3. Reset `Pressability` when your component unmounts.\n *\n *    componentWillUnmount() {\n *      this.state.pressability.reset();\n *    }\n *\n * ==================== Pressability Implementation Details ====================\n *\n * `Pressability` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * # Geometry\n *\n *  ┌────────────────────────┐\n *  │  ┌──────────────────┐  │ - Presses start anywhere within `HitRect`, which\n *  │  │  ┌────────────┐  │  │   is expanded via the prop `hitSlop`.\n *  │  │  │ VisualRect │  │  │\n *  │  │  └────────────┘  │  │ - When pressed down for sufficient amount of time\n *  │  │    HitRect       │  │   before letting up, `VisualRect` activates for\n *  │  └──────────────────┘  │   as long as the press stays within `PressRect`.\n *  │       PressRect    o   │\n *  └────────────────────│───┘\n *          Out Region   └────── `PressRect`, which is expanded via the prop\n *                               `pressRectOffset`, allows presses to move\n *                               beyond `HitRect` while maintaining activation\n *                               and being eligible for a \"press\".\n *\n * # State Machine\n *\n * ┌───────────────┐ ◀──── RESPONDER_RELEASE\n * │ NOT_RESPONDER │\n * └───┬───────────┘ ◀──── RESPONDER_TERMINATED\n *     │\n *     │ RESPONDER_GRANT (HitRect)\n *     │\n *     ▼\n * ┌─────────────────────┐          ┌───────────────────┐              ┌───────────────────┐\n * │ RESPONDER_INACTIVE_ │  DELAY   │ RESPONDER_ACTIVE_ │  T + DELAY   │ RESPONDER_ACTIVE_ │\n * │ PRESS_IN            ├────────▶ │ PRESS_IN          ├────────────▶ │ LONG_PRESS_IN     │\n * └─┬───────────────────┘          └─┬─────────────────┘              └─┬─────────────────┘\n *   │           ▲                    │           ▲                      │           ▲\n *   │LEAVE_     │                    │LEAVE_     │                      │LEAVE_     │\n *   │PRESS_RECT │ENTER_              │PRESS_RECT │ENTER_                │PRESS_RECT │ENTER_\n *   │           │PRESS_RECT          │           │PRESS_RECT            │           │PRESS_RECT\n *   ▼           │                    ▼           │                      ▼           │\n * ┌─────────────┴───────┐          ┌─────────────┴─────┐              ┌─────────────┴─────┐\n * │ RESPONDER_INACTIVE_ │  DELAY   │ RESPONDER_ACTIVE_ │              │ RESPONDER_ACTIVE_ │\n * │ PRESS_OUT           ├────────▶ │ PRESS_OUT         │              │ LONG_PRESS_OUT    │\n * └─────────────────────┘          └───────────────────┘              └───────────────────┘\n *\n * T + DELAY => LONG_PRESS_DELAY + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the invocation of `onPress` and `onLongPress` that occur when a\n * responder is release while in the \"press in\" states.\n */\nexport default class Pressability {\n  _config: PressabilityConfig;\n  _eventHandlers: ?EventHandlers = null;\n  _hoverInDelayTimeout: ?TimeoutID = null;\n  _hoverOutDelayTimeout: ?TimeoutID = null;\n  _isHovered: boolean = false;\n  _longPressDelayTimeout: ?TimeoutID = null;\n  _pressDelayTimeout: ?TimeoutID = null;\n  _pressOutDelayTimeout: ?TimeoutID = null;\n  _responderID: ?number | React.ElementRef<HostComponent<mixed>> = null;\n  _responderRegion: ?$ReadOnly<{|\n    bottom: number,\n    left: number,\n    right: number,\n    top: number,\n  |}> = null;\n  _touchActivatePosition: ?$ReadOnly<{|\n    pageX: number,\n    pageY: number,\n  |}>;\n  _touchActivateTime: ?number;\n  _touchState: TouchState = 'NOT_RESPONDER';\n\n  constructor(config: PressabilityConfig) {\n    this.configure(config);\n  }\n\n  configure(config: PressabilityConfig): void {\n    this._config = config;\n  }\n\n  /**\n   * Resets any pending timers. This should be called on unmount.\n   */\n  reset(): void {\n    this._cancelHoverInDelayTimeout();\n    this._cancelHoverOutDelayTimeout();\n    this._cancelLongPressDelayTimeout();\n    this._cancelPressDelayTimeout();\n    this._cancelPressOutDelayTimeout();\n\n    // Ensure that, if any async event handlers are fired after unmount\n    // due to a race, we don't call any configured callbacks.\n    this._config = Object.freeze({});\n  }\n\n  /**\n   * Returns a set of props to spread into the interactive element.\n   */\n  getEventHandlers(): EventHandlers {\n    if (this._eventHandlers == null) {\n      this._eventHandlers = this._createEventHandlers();\n    }\n    return this._eventHandlers;\n  }\n\n  _createEventHandlers(): EventHandlers {\n    const focusEventHandlers = {\n      onBlur: (event: BlurEvent): void => {\n        const {onBlur} = this._config;\n        if (onBlur != null) {\n          onBlur(event);\n        }\n      },\n      onFocus: (event: FocusEvent): void => {\n        const {onFocus} = this._config;\n        if (onFocus != null) {\n          onFocus(event);\n        }\n      },\n    };\n\n    const responderEventHandlers = {\n      onStartShouldSetResponder: (): boolean => {\n        const {disabled} = this._config;\n        if (disabled == null) {\n          const {onStartShouldSetResponder_DEPRECATED} = this._config;\n          return onStartShouldSetResponder_DEPRECATED == null\n            ? true\n            : onStartShouldSetResponder_DEPRECATED();\n        }\n        return !disabled;\n      },\n\n      onResponderGrant: (event: PressEvent): void => {\n        event.persist();\n\n        this._cancelPressOutDelayTimeout();\n\n        this._responderID = event.currentTarget;\n        this._touchState = 'NOT_RESPONDER';\n        this._receiveSignal('RESPONDER_GRANT', event);\n\n        const delayPressIn = normalizeDelay(this._config.delayPressIn);\n        if (delayPressIn > 0) {\n          this._pressDelayTimeout = setTimeout(() => {\n            this._receiveSignal('DELAY', event);\n          }, delayPressIn);\n        } else {\n          this._receiveSignal('DELAY', event);\n        }\n\n        const delayLongPress = normalizeDelay(\n          this._config.delayLongPress,\n          10,\n          DEFAULT_LONG_PRESS_DELAY_MS - delayPressIn,\n        );\n        this._longPressDelayTimeout = setTimeout(() => {\n          this._handleLongPress(event);\n        }, delayLongPress + delayPressIn);\n      },\n\n      onResponderMove: (event: PressEvent): void => {\n        if (this._config.onPressMove != null) {\n          this._config.onPressMove(event);\n        }\n\n        // Region may not have finished being measured, yet.\n        const responderRegion = this._responderRegion;\n        if (responderRegion == null) {\n          return;\n        }\n\n        const touch = getTouchFromPressEvent(event);\n        if (touch == null) {\n          this._cancelLongPressDelayTimeout();\n          this._receiveSignal('LEAVE_PRESS_RECT', event);\n          return;\n        }\n\n        if (this._touchActivatePosition != null) {\n          const deltaX = this._touchActivatePosition.pageX - touch.pageX;\n          const deltaY = this._touchActivatePosition.pageY - touch.pageY;\n          if (Math.hypot(deltaX, deltaY) > 10) {\n            this._cancelLongPressDelayTimeout();\n          }\n        }\n\n        if (this._isTouchWithinResponderRegion(touch, responderRegion)) {\n          this._receiveSignal('ENTER_PRESS_RECT', event);\n        } else {\n          this._cancelLongPressDelayTimeout();\n          this._receiveSignal('LEAVE_PRESS_RECT', event);\n        }\n      },\n\n      onResponderRelease: (event: PressEvent): void => {\n        this._receiveSignal('RESPONDER_RELEASE', event);\n      },\n\n      onResponderTerminate: (event: PressEvent): void => {\n        this._receiveSignal('RESPONDER_TERMINATED', event);\n      },\n\n      onResponderTerminationRequest: (): boolean => {\n        const {cancelable} = this._config;\n        if (cancelable == null) {\n          const {onResponderTerminationRequest_DEPRECATED} = this._config;\n          return onResponderTerminationRequest_DEPRECATED == null\n            ? true\n            : onResponderTerminationRequest_DEPRECATED();\n        }\n        return cancelable;\n      },\n\n      onClick: (event: PressEvent): void => {\n        const {onPress} = this._config;\n        if (onPress != null) {\n          onPress(event);\n        }\n      },\n    };\n\n    if (process.env.NODE_ENV === 'test') {\n      // We are setting this in order to find this node in ReactNativeTestTools\n      responderEventHandlers.onStartShouldSetResponder.testOnly_pressabilityConfig = () =>\n        this._config;\n    }\n\n    const mouseEventHandlers =\n      Platform.OS === 'ios' || Platform.OS === 'android'\n        ? null\n        : {\n            onMouseEnter: (event: MouseEvent): void => {\n              if (isHoverEnabled()) {\n                this._isHovered = true;\n                this._cancelHoverOutDelayTimeout();\n                const {onHoverIn} = this._config;\n                if (onHoverIn != null) {\n                  const delayHoverIn = normalizeDelay(\n                    this._config.delayHoverIn,\n                  );\n                  if (delayHoverIn > 0) {\n                    event.persist();\n                    this._hoverInDelayTimeout = setTimeout(() => {\n                      onHoverIn(event);\n                    }, delayHoverIn);\n                  } else {\n                    onHoverIn(event);\n                  }\n                }\n              }\n            },\n\n            onMouseLeave: (event: MouseEvent): void => {\n              if (this._isHovered) {\n                this._isHovered = false;\n                this._cancelHoverInDelayTimeout();\n                const {onHoverOut} = this._config;\n                if (onHoverOut != null) {\n                  const delayHoverOut = normalizeDelay(\n                    this._config.delayHoverOut,\n                  );\n                  if (delayHoverOut > 0) {\n                    event.persist();\n                    this._hoverInDelayTimeout = setTimeout(() => {\n                      onHoverOut(event);\n                    }, delayHoverOut);\n                  } else {\n                    onHoverOut(event);\n                  }\n                }\n              }\n            },\n          };\n\n    return {\n      ...focusEventHandlers,\n      ...responderEventHandlers,\n      ...mouseEventHandlers,\n    };\n  }\n\n  /**\n   * Receives a state machine signal, performs side effects of the transition\n   * and stores the new state. Validates the transition as well.\n   */\n  _receiveSignal(signal: TouchSignal, event: PressEvent): void {\n    const prevState = this._touchState;\n    const nextState = Transitions[prevState]?.[signal];\n    if (this._responderID == null && signal === 'RESPONDER_RELEASE') {\n      return;\n    }\n    invariant(\n      nextState != null && nextState !== 'ERROR',\n      'Pressability: Invalid signal `%s` for state `%s` on responder: %s',\n      signal,\n      prevState,\n      typeof this._responderID === 'number'\n        ? this._responderID\n        : '<<host component>>',\n    );\n    if (prevState !== nextState) {\n      this._performTransitionSideEffects(prevState, nextState, signal, event);\n      this._touchState = nextState;\n    }\n  }\n\n  /**\n   * Performs a transition between touchable states and identify any activations\n   * or deactivations (and callback invocations).\n   */\n  _performTransitionSideEffects(\n    prevState: TouchState,\n    nextState: TouchState,\n    signal: TouchSignal,\n    event: PressEvent,\n  ): void {\n    if (isTerminalSignal(signal)) {\n      this._touchActivatePosition = null;\n      this._cancelLongPressDelayTimeout();\n    }\n\n    const isInitialTransition =\n      prevState === 'NOT_RESPONDER' &&\n      nextState === 'RESPONDER_INACTIVE_PRESS_IN';\n\n    const isActivationTransiton =\n      !isActivationSignal(prevState) && isActivationSignal(nextState);\n\n    if (isInitialTransition || isActivationTransiton) {\n      this._measureResponderRegion();\n    }\n\n    if (isPressInSignal(prevState) && signal === 'LONG_PRESS_DETECTED') {\n      const {onLongPress} = this._config;\n      if (onLongPress != null) {\n        onLongPress(event);\n      }\n    }\n\n    const isPrevActive = isActiveSignal(prevState);\n    const isNextActive = isActiveSignal(nextState);\n\n    if (!isPrevActive && isNextActive) {\n      this._activate(event);\n    } else if (isPrevActive && !isNextActive) {\n      this._deactivate(event);\n    }\n\n    if (isPressInSignal(prevState) && signal === 'RESPONDER_RELEASE') {\n      // If we never activated (due to delays), activate and deactivate now.\n      if (!isNextActive && !isPrevActive) {\n        this._activate(event);\n        this._deactivate(event);\n      }\n      const {onLongPress, onPress, android_disableSound} = this._config;\n      if (onPress != null) {\n        const isPressCanceledByLongPress =\n          onLongPress != null &&\n          prevState === 'RESPONDER_ACTIVE_LONG_PRESS_IN' &&\n          this._shouldLongPressCancelPress();\n        if (!isPressCanceledByLongPress) {\n          if (Platform.OS === 'android' && android_disableSound !== true) {\n            SoundManager.playTouchSound();\n          }\n          onPress(event);\n        }\n      }\n    }\n\n    this._cancelPressDelayTimeout();\n  }\n\n  _activate(event: PressEvent): void {\n    const {onPressIn} = this._config;\n    const touch = getTouchFromPressEvent(event);\n    this._touchActivatePosition = {\n      pageX: touch.pageX,\n      pageY: touch.pageY,\n    };\n    this._touchActivateTime = Date.now();\n    if (onPressIn != null) {\n      onPressIn(event);\n    }\n  }\n\n  _deactivate(event: PressEvent): void {\n    const {onPressOut} = this._config;\n    if (onPressOut != null) {\n      const minPressDuration = normalizeDelay(\n        this._config.minPressDuration,\n        0,\n        DEFAULT_MIN_PRESS_DURATION,\n      );\n      const pressDuration = Date.now() - (this._touchActivateTime ?? 0);\n      const delayPressOut = Math.max(\n        minPressDuration - pressDuration,\n        normalizeDelay(this._config.delayPressOut),\n      );\n      if (delayPressOut > 0) {\n        event.persist();\n        this._pressOutDelayTimeout = setTimeout(() => {\n          onPressOut(event);\n        }, delayPressOut);\n      } else {\n        onPressOut(event);\n      }\n    }\n    this._touchActivateTime = null;\n  }\n\n  _measureResponderRegion(): void {\n    if (this._responderID == null) {\n      return;\n    }\n\n    if (typeof this._responderID === 'number') {\n      UIManager.measure(this._responderID, this._measureCallback);\n    } else {\n      this._responderID.measure(this._measureCallback);\n    }\n  }\n\n  _measureCallback = (left, top, width, height, pageX, pageY) => {\n    if (!left && !top && !width && !height && !pageX && !pageY) {\n      return;\n    }\n    this._responderRegion = {\n      bottom: pageY + height,\n      left: pageX,\n      right: pageX + width,\n      top: pageY,\n    };\n  };\n\n  _isTouchWithinResponderRegion(\n    touch: $PropertyType<PressEvent, 'nativeEvent'>,\n    responderRegion: $ReadOnly<{|\n      bottom: number,\n      left: number,\n      right: number,\n      top: number,\n    |}>,\n  ): boolean {\n    const hitSlop = normalizeRect(this._config.hitSlop);\n    const pressRectOffset = normalizeRect(this._config.pressRectOffset);\n\n    let regionBottom = responderRegion.bottom;\n    let regionLeft = responderRegion.left;\n    let regionRight = responderRegion.right;\n    let regionTop = responderRegion.top;\n\n    if (hitSlop != null) {\n      if (hitSlop.bottom != null) {\n        regionBottom += hitSlop.bottom;\n      }\n      if (hitSlop.left != null) {\n        regionLeft -= hitSlop.left;\n      }\n      if (hitSlop.right != null) {\n        regionRight += hitSlop.right;\n      }\n      if (hitSlop.top != null) {\n        regionTop -= hitSlop.top;\n      }\n    }\n\n    regionBottom +=\n      pressRectOffset?.bottom ?? DEFAULT_PRESS_RECT_OFFSETS.bottom;\n    regionLeft -= pressRectOffset?.left ?? DEFAULT_PRESS_RECT_OFFSETS.left;\n    regionRight += pressRectOffset?.right ?? DEFAULT_PRESS_RECT_OFFSETS.right;\n    regionTop -= pressRectOffset?.top ?? DEFAULT_PRESS_RECT_OFFSETS.top;\n\n    return (\n      touch.pageX > regionLeft &&\n      touch.pageX < regionRight &&\n      touch.pageY > regionTop &&\n      touch.pageY < regionBottom\n    );\n  }\n\n  _handleLongPress(event: PressEvent): void {\n    if (\n      this._touchState === 'RESPONDER_ACTIVE_PRESS_IN' ||\n      this._touchState === 'RESPONDER_ACTIVE_LONG_PRESS_IN'\n    ) {\n      this._receiveSignal('LONG_PRESS_DETECTED', event);\n    }\n  }\n\n  _shouldLongPressCancelPress(): boolean {\n    return (\n      this._config.onLongPressShouldCancelPress_DEPRECATED == null ||\n      this._config.onLongPressShouldCancelPress_DEPRECATED()\n    );\n  }\n\n  _cancelHoverInDelayTimeout(): void {\n    if (this._hoverInDelayTimeout != null) {\n      clearTimeout(this._hoverInDelayTimeout);\n      this._hoverInDelayTimeout = null;\n    }\n  }\n\n  _cancelHoverOutDelayTimeout(): void {\n    if (this._hoverOutDelayTimeout != null) {\n      clearTimeout(this._hoverOutDelayTimeout);\n      this._hoverOutDelayTimeout = null;\n    }\n  }\n\n  _cancelLongPressDelayTimeout(): void {\n    if (this._longPressDelayTimeout != null) {\n      clearTimeout(this._longPressDelayTimeout);\n      this._longPressDelayTimeout = null;\n    }\n  }\n\n  _cancelPressDelayTimeout(): void {\n    if (this._pressDelayTimeout != null) {\n      clearTimeout(this._pressDelayTimeout);\n      this._pressDelayTimeout = null;\n    }\n  }\n\n  _cancelPressOutDelayTimeout(): void {\n    if (this._pressOutDelayTimeout != null) {\n      clearTimeout(this._pressOutDelayTimeout);\n      this._pressOutDelayTimeout = null;\n    }\n  }\n}\n\nfunction normalizeDelay(delay: ?number, min = 0, fallback = 0): number {\n  return Math.max(min, delay ?? fallback);\n}\n\nconst getTouchFromPressEvent = (event: PressEvent) => {\n  const {changedTouches, touches} = event.nativeEvent;\n\n  if (touches != null && touches.length > 0) {\n    return touches[0];\n  }\n  if (changedTouches != null && changedTouches.length > 0) {\n    return changedTouches[0];\n  }\n  return event.nativeEvent;\n};\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport Platform from '../Utilities/Platform';\n\nlet isEnabled = false;\n\nif (Platform.OS === 'web') {\n  const canUseDOM = Boolean(\n    typeof window !== 'undefined' &&\n      window.document &&\n      window.document.createElement,\n  );\n\n  if (canUseDOM) {\n    /**\n     * Web browsers emulate mouse events (and hover states) after touch events.\n     * This code infers when the currently-in-use modality supports hover\n     * (including for multi-modality devices) and considers \"hover\" to be enabled\n     * if a mouse movement occurs more than 1 second after the last touch event.\n     * This threshold is long enough to account for longer delays between the\n     * browser firing touch and mouse events on low-powered devices.\n     */\n    const HOVER_THRESHOLD_MS = 1000;\n    let lastTouchTimestamp = 0;\n\n    const enableHover = () => {\n      if (isEnabled || Date.now() - lastTouchTimestamp < HOVER_THRESHOLD_MS) {\n        return;\n      }\n      isEnabled = true;\n    };\n\n    const disableHover = () => {\n      lastTouchTimestamp = Date.now();\n      if (isEnabled) {\n        isEnabled = false;\n      }\n    };\n\n    document.addEventListener('touchstart', disableHover, true);\n    document.addEventListener('touchmove', disableHover, true);\n    document.addEventListener('mousemove', enableHover, true);\n  }\n}\n\nexport function isHoverEnabled(): boolean {\n  return isEnabled;\n}\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nexport type Rect = $ReadOnly<{|\n  bottom?: ?number,\n  left?: ?number,\n  right?: ?number,\n  top?: ?number,\n|}>;\n\nexport type RectOrSize = Rect | number;\n\nexport function createSquare(size: number): Rect {\n  return {bottom: size, left: size, right: size, top: size};\n}\n\nexport function normalizeRect(rectOrSize: ?RectOrSize): ?Rect {\n  return typeof rectOrSize === 'number' ? createSquare(rectOrSize) : rectOrSize;\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport normalizeColor from '../StyleSheet/normalizeColor';\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\n\nimport Touchable from '../Components/Touchable/Touchable';\nimport View from '../Components/View/View';\nimport * as React from 'react';\n\ntype Props = $ReadOnly<{|\n  color: ColorValue,\n  hitSlop: ?$ReadOnly<{|\n    bottom?: ?number,\n    left?: ?number,\n    right?: ?number,\n    top?: ?number,\n  |}>,\n|}>;\n\n/**\n * Displays a debug overlay to visualize press targets when enabled via the\n * React Native Inspector. Calls to this module should be guarded by `__DEV__`,\n * for example:\n *\n *   return (\n *     <View>\n *       {children}\n *       {__DEV__ ? (\n *         <PressabilityDebugView color=\"...\" hitSlop={props.hitSlop} />\n *       ) : null}\n *     </View>\n *   );\n *\n */\nexport function PressabilityDebugView({color, hitSlop}: Props): React.Node {\n  if (__DEV__) {\n    if (isEnabled()) {\n      const normalizedColor = normalizeColor(color);\n      if (typeof normalizedColor !== 'number') {\n        return null;\n      }\n      const baseColor =\n        '#' + (normalizedColor ?? 0).toString(16).padStart(8, '0');\n\n      return (\n        <View\n          pointerEvents=\"none\"\n          style={{\n            backgroundColor: baseColor.slice(0, -2) + '0F', // 15%\n            borderColor: baseColor.slice(0, -2) + '55', // 85%\n            borderStyle: 'dashed',\n            borderWidth: 1,\n            bottom: -(hitSlop?.bottom ?? 0),\n            left: -(hitSlop?.left ?? 0),\n            position: 'absolute',\n            right: -(hitSlop?.right ?? 0),\n            top: -(hitSlop?.top ?? 0),\n          }}\n        />\n      );\n    }\n  }\n  return null;\n}\n\nexport function isEnabled(): boolean {\n  if (__DEV__) {\n    return Touchable.TOUCH_TARGET_DEBUG;\n  }\n  return false;\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport typeof TouchableWithoutFeedback from './TouchableWithoutFeedback';\nimport Animated from 'react-native/Libraries/Animated/Animated';\nimport Easing from 'react-native/Libraries/Animated/Easing';\nimport type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';\nimport flattenStyle from 'react-native/Libraries/StyleSheet/flattenStyle';\nimport Platform from '../../Utilities/Platform';\nimport * as React from 'react';\n\ntype TVProps = $ReadOnly<{|\n  hasTVPreferredFocus?: ?boolean,\n  nextFocusDown?: ?number,\n  nextFocusForward?: ?number,\n  nextFocusLeft?: ?number,\n  nextFocusRight?: ?number,\n  nextFocusUp?: ?number,\n|}>;\n\ntype Props = $ReadOnly<{|\n  ...React.ElementConfig<TouchableWithoutFeedback>,\n  ...TVProps,\n\n  activeOpacity?: ?number,\n  style?: ?ViewStyleProp,\n\n  hostRef: React.Ref<typeof Animated.View>,\n|}>;\n\ntype State = $ReadOnly<{|\n  anim: Animated.Value,\n  pressability: Pressability,\n|}>;\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n *\n * Opacity is controlled by wrapping the children in an Animated.View, which is\n * added to the view hierarchy.  Be aware that this can affect layout.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n *   return (\n *     <TouchableOpacity onPress={this._onPressButton}>\n *       <Image\n *         style={styles.button}\n *         source={require('./myButton.png')}\n *       />\n *     </TouchableOpacity>\n *   );\n * },\n * ```\n * ### Example\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react'\n * import {\n *   AppRegistry,\n *   StyleSheet,\n *   TouchableOpacity,\n *   Text,\n *   View,\n * } from 'react-native'\n *\n * class App extends Component {\n *   state = { count: 0 }\n *\n *   onPress = () => {\n *     this.setState(state => ({\n *       count: state.count + 1\n *     }));\n *   };\n *\n *  render() {\n *    return (\n *      <View style={styles.container}>\n *        <TouchableOpacity\n *          style={styles.button}\n *          onPress={this.onPress}>\n *          <Text> Touch Here </Text>\n *        </TouchableOpacity>\n *        <View style={[styles.countContainer]}>\n *          <Text style={[styles.countText]}>\n *             { this.state.count !== 0 ? this.state.count: null}\n *           </Text>\n *         </View>\n *       </View>\n *     )\n *   }\n * }\n *\n * const styles = StyleSheet.create({\n *   container: {\n *     flex: 1,\n *     justifyContent: 'center',\n *     paddingHorizontal: 10\n *   },\n *   button: {\n *     alignItems: 'center',\n *     backgroundColor: '#DDDDDD',\n *     padding: 10\n *   },\n *   countContainer: {\n *     alignItems: 'center',\n *     padding: 10\n *   },\n *   countText: {\n *     color: '#FF00FF'\n *   }\n * })\n *\n * AppRegistry.registerComponent('App', () => App)\n * ```\n *\n */\nclass TouchableOpacity extends React.Component<Props, State> {\n  state: State = {\n    anim: new Animated.Value(this._getChildStyleOpacityWithDefault()),\n    pressability: new Pressability(this._createPressabilityConfig()),\n  };\n\n  _createPressabilityConfig(): PressabilityConfig {\n    return {\n      cancelable: !this.props.rejectResponderTermination,\n      disabled: this.props.disabled,\n      hitSlop: this.props.hitSlop,\n      delayLongPress: this.props.delayLongPress,\n      delayPressIn: this.props.delayPressIn,\n      delayPressOut: this.props.delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: this.props.pressRetentionOffset,\n      onBlur: event => {\n        if (Platform.isTV) {\n          this._opacityInactive(250);\n        }\n        if (this.props.onBlur != null) {\n          this.props.onBlur(event);\n        }\n      },\n      onFocus: event => {\n        if (Platform.isTV) {\n          this._opacityActive(150);\n        }\n        if (this.props.onFocus != null) {\n          this.props.onFocus(event);\n        }\n      },\n      onLongPress: this.props.onLongPress,\n      onPress: this.props.onPress,\n      onPressIn: event => {\n        this._opacityActive(\n          event.dispatchConfig.registrationName === 'onResponderGrant'\n            ? 0\n            : 150,\n        );\n        if (this.props.onPressIn != null) {\n          this.props.onPressIn(event);\n        }\n      },\n      onPressOut: event => {\n        this._opacityInactive(250);\n        if (this.props.onPressOut != null) {\n          this.props.onPressOut(event);\n        }\n      },\n    };\n  }\n\n  /**\n   * Animate the touchable to a new opacity.\n   */\n  _setOpacityTo(toValue: number, duration: number): void {\n    Animated.timing(this.state.anim, {\n      toValue,\n      duration,\n      easing: Easing.inOut(Easing.quad),\n      useNativeDriver: true,\n    }).start();\n  }\n\n  _opacityActive(duration: number): void {\n    this._setOpacityTo(this.props.activeOpacity ?? 0.2, duration);\n  }\n\n  _opacityInactive(duration: number): void {\n    this._setOpacityTo(this._getChildStyleOpacityWithDefault(), duration);\n  }\n\n  _getChildStyleOpacityWithDefault(): number {\n    const opacity = flattenStyle(this.props.style)?.opacity;\n    return typeof opacity === 'number' ? opacity : 1;\n  }\n\n  render(): React.Node {\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {\n      onBlur,\n      onFocus,\n      ...eventHandlersWithoutBlurAndFocus\n    } = this.state.pressability.getEventHandlers();\n\n    return (\n      <Animated.View\n        accessible={this.props.accessible !== false}\n        accessibilityLabel={this.props.accessibilityLabel}\n        accessibilityHint={this.props.accessibilityHint}\n        accessibilityRole={this.props.accessibilityRole}\n        accessibilityState={this.props.accessibilityState}\n        accessibilityActions={this.props.accessibilityActions}\n        onAccessibilityAction={this.props.onAccessibilityAction}\n        accessibilityValue={this.props.accessibilityValue}\n        importantForAccessibility={this.props.importantForAccessibility}\n        accessibilityLiveRegion={this.props.accessibilityLiveRegion}\n        accessibilityViewIsModal={this.props.accessibilityViewIsModal}\n        accessibilityElementsHidden={this.props.accessibilityElementsHidden}\n        style={[this.props.style, {opacity: this.state.anim}]}\n        nativeID={this.props.nativeID}\n        testID={this.props.testID}\n        onLayout={this.props.onLayout}\n        nextFocusDown={this.props.nextFocusDown}\n        nextFocusForward={this.props.nextFocusForward}\n        nextFocusLeft={this.props.nextFocusLeft}\n        nextFocusRight={this.props.nextFocusRight}\n        nextFocusUp={this.props.nextFocusUp}\n        hasTVPreferredFocus={this.props.hasTVPreferredFocus}\n        hitSlop={this.props.hitSlop}\n        focusable={\n          this.props.focusable !== false && this.props.onPress !== undefined\n        }\n        ref={this.props.hostRef}\n        {...eventHandlersWithoutBlurAndFocus}>\n        {this.props.children}\n        {__DEV__ ? (\n          <PressabilityDebugView color=\"cyan\" hitSlop={this.props.hitSlop} />\n        ) : null}\n      </Animated.View>\n    );\n  }\n\n  componentDidUpdate(prevProps: Props, prevState: State) {\n    this.state.pressability.configure(this._createPressabilityConfig());\n    if (this.props.disabled !== prevProps.disabled) {\n      this._opacityInactive(250);\n    }\n  }\n\n  componentWillUnmount(): void {\n    this.state.pressability.reset();\n  }\n}\n\nmodule.exports = (React.forwardRef((props, hostRef) => (\n  <TouchableOpacity {...props} hostRef={hostRef} />\n)): React.AbstractComponent<$ReadOnly<$Diff<Props, {|hostRef: mixed|}>>>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport Platform from '../Utilities/Platform';\nimport typeof AnimatedFlatList from './components/AnimatedFlatList';\nimport typeof AnimatedImage from './components/AnimatedImage';\nimport typeof AnimatedScrollView from './components/AnimatedScrollView';\nimport typeof AnimatedSectionList from './components/AnimatedSectionList';\nimport typeof AnimatedText from './components/AnimatedText';\nimport typeof AnimatedView from './components/AnimatedView';\n\nconst AnimatedMock = require('./AnimatedMock');\nconst AnimatedImplementation = require('./AnimatedImplementation');\n\nconst Animated = ((Platform.isTesting\n  ? AnimatedMock\n  : AnimatedImplementation): typeof AnimatedMock);\n\nmodule.exports = {\n  get FlatList(): AnimatedFlatList {\n    return require('./components/AnimatedFlatList');\n  },\n  get Image(): AnimatedImage {\n    return require('./components/AnimatedImage');\n  },\n  get ScrollView(): AnimatedScrollView {\n    return require('./components/AnimatedScrollView');\n  },\n  get SectionList(): AnimatedSectionList {\n    return require('./components/AnimatedSectionList');\n  },\n  get Text(): AnimatedText {\n    return require('./components/AnimatedText');\n  },\n  get View(): AnimatedView {\n    return require('./components/AnimatedView');\n  },\n  ...Animated,\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst {AnimatedEvent, attachNativeEvent} = require('./AnimatedEvent');\nconst AnimatedImplementation = require('./AnimatedImplementation');\nconst AnimatedInterpolation = require('./nodes/AnimatedInterpolation');\nconst AnimatedNode = require('./nodes/AnimatedNode');\nconst AnimatedProps = require('./nodes/AnimatedProps');\nconst AnimatedValue = require('./nodes/AnimatedValue');\nconst AnimatedValueXY = require('./nodes/AnimatedValueXY');\n\nconst createAnimatedComponent = require('./createAnimatedComponent');\n\nimport type {EndCallback} from './animations/Animation';\nimport type {TimingAnimationConfig} from './animations/TimingAnimation';\nimport type {DecayAnimationConfig} from './animations/DecayAnimation';\nimport type {SpringAnimationConfig} from './animations/SpringAnimation';\nimport type {Mapping, EventConfig} from './AnimatedEvent';\n\n/**\n * Animations are a source of flakiness in snapshot testing. This mock replaces\n * animation functions from AnimatedImplementation with empty animations for\n * predictability in tests.\n */\nexport type CompositeAnimation = {\n  start: (callback?: ?EndCallback) => void,\n  stop: () => void,\n  reset: () => void,\n  _startNativeLoop: (iterations?: number) => void,\n  _isUsingNativeDriver: () => boolean,\n  ...\n};\n\nconst emptyAnimation = {\n  start: () => {},\n  stop: () => {},\n  reset: () => {},\n  _startNativeLoop: () => {},\n  _isUsingNativeDriver: () => {\n    return false;\n  },\n};\n\nconst spring = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: SpringAnimationConfig,\n): CompositeAnimation {\n  const anyValue: any = value;\n  return {\n    ...emptyAnimation,\n    start: (callback?: ?EndCallback): void => {\n      anyValue.setValue(config.toValue);\n      callback && callback({finished: true});\n    },\n  };\n};\n\nconst timing = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: TimingAnimationConfig,\n): CompositeAnimation {\n  const anyValue: any = value;\n  return {\n    ...emptyAnimation,\n    start: (callback?: ?EndCallback): void => {\n      anyValue.setValue(config.toValue);\n      callback && callback({finished: true});\n    },\n  };\n};\n\nconst decay = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: DecayAnimationConfig,\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\nconst sequence = function(\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\ntype ParallelConfig = {stopTogether?: boolean, ...};\nconst parallel = function(\n  animations: Array<CompositeAnimation>,\n  config?: ?ParallelConfig,\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\nconst delay = function(time: number): CompositeAnimation {\n  return emptyAnimation;\n};\n\nconst stagger = function(\n  time: number,\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\ntype LoopAnimationConfig = {\n  iterations: number,\n  resetBeforeIteration?: boolean,\n  ...\n};\n\nconst loop = function(\n  animation: CompositeAnimation,\n  {iterations = -1}: LoopAnimationConfig = {},\n): CompositeAnimation {\n  return emptyAnimation;\n};\n\nconst event = function(argMapping: Array<?Mapping>, config: EventConfig): any {\n  return null;\n};\n\nmodule.exports = {\n  Value: AnimatedValue,\n  ValueXY: AnimatedValueXY,\n  Interpolation: AnimatedInterpolation,\n  Node: AnimatedNode,\n  decay,\n  timing,\n  spring,\n  add: AnimatedImplementation.add,\n  subtract: AnimatedImplementation.subtract,\n  divide: AnimatedImplementation.divide,\n  multiply: AnimatedImplementation.multiply,\n  modulo: AnimatedImplementation.modulo,\n  diffClamp: AnimatedImplementation.diffClamp,\n  delay,\n  sequence,\n  parallel,\n  stagger,\n  loop,\n  event,\n  createAnimatedComponent,\n  attachNativeEvent,\n  forkEvent: AnimatedImplementation.forkEvent,\n  unforkEvent: AnimatedImplementation.unforkEvent,\n  Event: AnimatedEvent,\n  __PropsOnlyForTests: AnimatedProps,\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedValue = require('./nodes/AnimatedValue');\nconst NativeAnimatedHelper = require('./NativeAnimatedHelper');\nconst ReactNative = require('../Renderer/shims/ReactNative');\n\nconst invariant = require('invariant');\n\nconst {shouldUseNativeDriver} = require('./NativeAnimatedHelper');\n\nexport type Mapping = {[key: string]: Mapping, ...} | AnimatedValue;\nexport type EventConfig = {\n  listener?: ?Function,\n  useNativeDriver: boolean,\n};\n\nfunction attachNativeEvent(\n  viewRef: any,\n  eventName: string,\n  argMapping: $ReadOnlyArray<?Mapping>,\n): {detach: () => void} {\n  // Find animated values in `argMapping` and create an array representing their\n  // key path inside the `nativeEvent` object. Ex.: ['contentOffset', 'x'].\n  const eventMappings = [];\n\n  const traverse = (value, path) => {\n    if (value instanceof AnimatedValue) {\n      value.__makeNative();\n\n      eventMappings.push({\n        nativeEventPath: path,\n        animatedValueTag: value.__getNativeTag(),\n      });\n    } else if (typeof value === 'object') {\n      for (const key in value) {\n        traverse(value[key], path.concat(key));\n      }\n    }\n  };\n\n  invariant(\n    argMapping[0] && argMapping[0].nativeEvent,\n    'Native driven events only support animated values contained inside `nativeEvent`.',\n  );\n\n  // Assume that the event containing `nativeEvent` is always the first argument.\n  traverse(argMapping[0].nativeEvent, []);\n\n  const viewTag = ReactNative.findNodeHandle(viewRef);\n  if (viewTag != null) {\n    eventMappings.forEach(mapping => {\n      NativeAnimatedHelper.API.addAnimatedEventToView(\n        viewTag,\n        eventName,\n        mapping,\n      );\n    });\n  }\n\n  return {\n    detach() {\n      if (viewTag != null) {\n        eventMappings.forEach(mapping => {\n          NativeAnimatedHelper.API.removeAnimatedEventFromView(\n            viewTag,\n            eventName,\n            mapping.animatedValueTag,\n          );\n        });\n      }\n    },\n  };\n}\n\nfunction validateMapping(argMapping, args) {\n  const validate = (recMapping, recEvt, key) => {\n    if (recMapping instanceof AnimatedValue) {\n      invariant(\n        typeof recEvt === 'number',\n        'Bad mapping of event key ' +\n          key +\n          ', should be number but got ' +\n          typeof recEvt,\n      );\n      return;\n    }\n    if (typeof recEvt === 'number') {\n      invariant(\n        recMapping instanceof AnimatedValue,\n        'Bad mapping of type ' +\n          typeof recMapping +\n          ' for key ' +\n          key +\n          ', event value must map to AnimatedValue',\n      );\n      return;\n    }\n    invariant(\n      typeof recMapping === 'object',\n      'Bad mapping of type ' + typeof recMapping + ' for key ' + key,\n    );\n    invariant(\n      typeof recEvt === 'object',\n      'Bad event of type ' + typeof recEvt + ' for key ' + key,\n    );\n    for (const mappingKey in recMapping) {\n      validate(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n    }\n  };\n\n  invariant(\n    args.length >= argMapping.length,\n    'Event has less arguments than mapping',\n  );\n  argMapping.forEach((mapping, idx) => {\n    validate(mapping, args[idx], 'arg' + idx);\n  });\n}\n\nclass AnimatedEvent {\n  _argMapping: $ReadOnlyArray<?Mapping>;\n  _listeners: Array<Function> = [];\n  _callListeners: Function;\n  _attachedEvent: ?{detach: () => void, ...};\n  __isNative: boolean;\n\n  constructor(argMapping: $ReadOnlyArray<?Mapping>, config: EventConfig) {\n    this._argMapping = argMapping;\n\n    if (config == null) {\n      console.warn('Animated.event now requires a second argument for options');\n      config = {useNativeDriver: false};\n    }\n\n    if (config.listener) {\n      this.__addListener(config.listener);\n    }\n    this._callListeners = this._callListeners.bind(this);\n    this._attachedEvent = null;\n    this.__isNative = shouldUseNativeDriver(config);\n  }\n\n  __addListener(callback: Function): void {\n    this._listeners.push(callback);\n  }\n\n  __removeListener(callback: Function): void {\n    this._listeners = this._listeners.filter(listener => listener !== callback);\n  }\n\n  __attach(viewRef: any, eventName: string) {\n    invariant(\n      this.__isNative,\n      'Only native driven events need to be attached.',\n    );\n\n    this._attachedEvent = attachNativeEvent(\n      viewRef,\n      eventName,\n      this._argMapping,\n    );\n  }\n\n  __detach(viewTag: any, eventName: string) {\n    invariant(\n      this.__isNative,\n      'Only native driven events need to be detached.',\n    );\n\n    this._attachedEvent && this._attachedEvent.detach();\n  }\n\n  __getHandler(): any | ((...args: any) => void) {\n    if (this.__isNative) {\n      if (__DEV__) {\n        let validatedMapping = false;\n        return (...args: any) => {\n          if (!validatedMapping) {\n            validateMapping(this._argMapping, args);\n            validatedMapping = true;\n          }\n          this._callListeners(...args);\n        };\n      } else {\n        return this._callListeners;\n      }\n    }\n\n    let validatedMapping = false;\n    return (...args: any) => {\n      if (__DEV__ && !validatedMapping) {\n        validateMapping(this._argMapping, args);\n        validatedMapping = true;\n      }\n\n      const traverse = (recMapping, recEvt, key) => {\n        if (recMapping instanceof AnimatedValue) {\n          if (typeof recEvt === 'number') {\n            recMapping.setValue(recEvt);\n          }\n        } else if (typeof recMapping === 'object') {\n          for (const mappingKey in recMapping) {\n            /* $FlowFixMe(>=0.120.0) This comment suppresses an error found\n             * when Flow v0.120 was deployed. To see the error, delete this\n             * comment and run Flow. */\n            traverse(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n          }\n        }\n      };\n      this._argMapping.forEach((mapping, idx) => {\n        traverse(mapping, args[idx], 'arg' + idx);\n      });\n\n      this._callListeners(...args);\n    };\n  }\n\n  _callListeners(...args: any) {\n    this._listeners.forEach(listener => listener(...args));\n  }\n}\n\nmodule.exports = {AnimatedEvent, attachNativeEvent};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst InteractionManager = require('../../Interaction/InteractionManager');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nimport type Animation, {EndCallback} from '../animations/Animation';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedTracking from './AnimatedTracking';\n\nconst NativeAnimatedAPI = NativeAnimatedHelper.API;\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n *               new Animated.Value(0)\n *     .interpolate()        .interpolate()    new Animated.Value(1)\n *         opacity               translateY      scale\n *          style                         transform\n *         View#234                         style\n *                                         View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction _flush(rootNode: AnimatedValue): void {\n  const animatedStyles = new Set();\n  function findAnimatedStyles(node) {\n    /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.68 was deployed. To see the error delete this\n     * comment and run Flow. */\n    if (typeof node.update === 'function') {\n      animatedStyles.add(node);\n    } else {\n      node.__getChildren().forEach(findAnimatedStyles);\n    }\n  }\n  findAnimatedStyles(rootNode);\n  /* $FlowFixMe */\n  animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n\n/**\n * Standard value for driving animations.  One `Animated.Value` can drive\n * multiple properties in a synchronized fashion, but can only be driven by one\n * mechanism at a time.  Using a new mechanism (e.g. starting a new animation,\n * or calling `setValue`) will stop any previous ones.\n *\n * See https://reactnative.dev/docs/animatedvalue.html\n */\nclass AnimatedValue extends AnimatedWithChildren {\n  _value: number;\n  _startingValue: number;\n  _offset: number;\n  _animation: ?Animation;\n  _tracking: ?AnimatedTracking;\n\n  constructor(value: number) {\n    super();\n    if (typeof value !== 'number') {\n      throw new Error('AnimatedValue: Attempting to set value to undefined');\n    }\n    this._startingValue = this._value = value;\n    this._offset = 0;\n    this._animation = null;\n  }\n\n  __detach() {\n    if (this.__isNative) {\n      NativeAnimatedAPI.getValue(this.__getNativeTag(), value => {\n        this._value = value;\n      });\n    }\n    this.stopAnimation();\n    super.__detach();\n  }\n\n  __getValue(): number {\n    return this._value + this._offset;\n  }\n\n  /**\n   * Directly set the value.  This will stop any animations running on the value\n   * and update all the bound properties.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#setvalue\n   */\n  setValue(value: number): void {\n    if (this._animation) {\n      this._animation.stop();\n      this._animation = null;\n    }\n    this._updateValue(\n      value,\n      !this.__isNative /* don't perform a flush for natively driven values */,\n    );\n    if (this.__isNative) {\n      NativeAnimatedAPI.setAnimatedNodeValue(this.__getNativeTag(), value);\n    }\n  }\n\n  /**\n   * Sets an offset that is applied on top of whatever value is set, whether via\n   * `setValue`, an animation, or `Animated.event`.  Useful for compensating\n   * things like the start of a pan gesture.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#setoffset\n   */\n  setOffset(offset: number): void {\n    this._offset = offset;\n    if (this.__isNative) {\n      NativeAnimatedAPI.setAnimatedNodeOffset(this.__getNativeTag(), offset);\n    }\n  }\n\n  /**\n   * Merges the offset value into the base value and resets the offset to zero.\n   * The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#flattenoffset\n   */\n  flattenOffset(): void {\n    this._value += this._offset;\n    this._offset = 0;\n    if (this.__isNative) {\n      NativeAnimatedAPI.flattenAnimatedNodeOffset(this.__getNativeTag());\n    }\n  }\n\n  /**\n   * Sets the offset value to the base value, and resets the base value to zero.\n   * The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#extractoffset\n   */\n  extractOffset(): void {\n    this._offset += this._value;\n    this._value = 0;\n    if (this.__isNative) {\n      NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag());\n    }\n  }\n\n  /**\n   * Stops any running animation or tracking. `callback` is invoked with the\n   * final value after stopping the animation, which is useful for updating\n   * state to match the animation position with layout.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#stopanimation\n   */\n  stopAnimation(callback?: ?(value: number) => void): void {\n    this.stopTracking();\n    this._animation && this._animation.stop();\n    this._animation = null;\n    callback && callback(this.__getValue());\n  }\n\n  /**\n   * Stops any animation and resets the value to its original.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#resetanimation\n   */\n  resetAnimation(callback?: ?(value: number) => void): void {\n    this.stopAnimation(callback);\n    this._value = this._startingValue;\n  }\n\n  _onAnimatedValueUpdateReceived(value: number): void {\n    this._updateValue(value, false /*flush*/);\n  }\n\n  /**\n   * Interpolates the value before updating the property, e.g. mapping 0-1 to\n   * 0-10.\n   */\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  /**\n   * Typically only used internally, but could be used by a custom Animation\n   * class.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#animate\n   */\n  animate(animation: Animation, callback: ?EndCallback): void {\n    let handle = null;\n    if (animation.__isInteraction) {\n      handle = InteractionManager.createInteractionHandle();\n    }\n    const previousAnimation = this._animation;\n    this._animation && this._animation.stop();\n    this._animation = animation;\n    animation.start(\n      this._value,\n      value => {\n        // Natively driven animations will never call into that callback, therefore we can always\n        // pass flush = true to allow the updated value to propagate to native with setNativeProps\n        this._updateValue(value, true /* flush */);\n      },\n      result => {\n        this._animation = null;\n        if (handle !== null) {\n          InteractionManager.clearInteractionHandle(handle);\n        }\n        callback && callback(result);\n      },\n      previousAnimation,\n      this,\n    );\n  }\n\n  /**\n   * Typically only used internally.\n   */\n  stopTracking(): void {\n    this._tracking && this._tracking.__detach();\n    this._tracking = null;\n  }\n\n  /**\n   * Typically only used internally.\n   */\n  track(tracking: AnimatedTracking): void {\n    this.stopTracking();\n    this._tracking = tracking;\n  }\n\n  _updateValue(value: number, flush: boolean): void {\n    if (value === undefined) {\n      throw new Error('AnimatedValue: Attempting to set value to undefined');\n    }\n\n    this._value = value;\n    if (flush) {\n      _flush(this);\n    }\n    super.__callListeners(this.__getValue());\n  }\n\n  __getNativeConfig(): Object {\n    return {\n      type: 'value',\n      value: this._value,\n      offset: this._offset,\n    };\n  }\n}\n\nmodule.exports = AnimatedValue;\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 * @flow\n * @format\n */\n\n/* eslint no-bitwise: 0 */\n\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nconst invariant = require('invariant');\nconst normalizeColor = require('../../StyleSheet/normalizeColor');\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\nexport type InterpolationConfigType = {\n  inputRange: $ReadOnlyArray<number>,\n  outputRange: $ReadOnlyArray<number> | $ReadOnlyArray<string>,\n  easing?: (input: number) => number,\n  extrapolate?: ExtrapolateType,\n  extrapolateLeft?: ExtrapolateType,\n  extrapolateRight?: ExtrapolateType,\n};\n\nconst linear = t => t;\n\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\nfunction createInterpolation(\n  config: InterpolationConfigType,\n): (input: number) => number | string {\n  if (config.outputRange && typeof config.outputRange[0] === 'string') {\n    return createInterpolationFromStringOutputRange(config);\n  }\n\n  const outputRange: Array<number> = (config.outputRange: any);\n  checkInfiniteRange('outputRange', outputRange);\n\n  const inputRange = config.inputRange;\n  checkInfiniteRange('inputRange', inputRange);\n  checkValidInputRange(inputRange);\n\n  invariant(\n    inputRange.length === outputRange.length,\n    'inputRange (' +\n      inputRange.length +\n      ') and outputRange (' +\n      outputRange.length +\n      ') must have the same length',\n  );\n\n  const easing = config.easing || linear;\n\n  let extrapolateLeft: ExtrapolateType = 'extend';\n  if (config.extrapolateLeft !== undefined) {\n    extrapolateLeft = config.extrapolateLeft;\n  } else if (config.extrapolate !== undefined) {\n    extrapolateLeft = config.extrapolate;\n  }\n\n  let extrapolateRight: ExtrapolateType = 'extend';\n  if (config.extrapolateRight !== undefined) {\n    extrapolateRight = config.extrapolateRight;\n  } else if (config.extrapolate !== undefined) {\n    extrapolateRight = config.extrapolate;\n  }\n\n  return input => {\n    invariant(\n      typeof input === 'number',\n      'Cannot interpolation an input which is not a number',\n    );\n\n    const range = findRange(input, inputRange);\n    return interpolate(\n      input,\n      inputRange[range],\n      inputRange[range + 1],\n      outputRange[range],\n      outputRange[range + 1],\n      easing,\n      extrapolateLeft,\n      extrapolateRight,\n    );\n  };\n}\n\nfunction interpolate(\n  input: number,\n  inputMin: number,\n  inputMax: number,\n  outputMin: number,\n  outputMax: number,\n  easing: (input: number) => number,\n  extrapolateLeft: ExtrapolateType,\n  extrapolateRight: ExtrapolateType,\n) {\n  let result = input;\n\n  // Extrapolate\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') {\n      return result;\n    } else if (extrapolateLeft === 'clamp') {\n      result = inputMin;\n    } else if (extrapolateLeft === 'extend') {\n      // noop\n    }\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') {\n      return result;\n    } else if (extrapolateRight === 'clamp') {\n      result = inputMax;\n    } else if (extrapolateRight === 'extend') {\n      // noop\n    }\n  }\n\n  if (outputMin === outputMax) {\n    return outputMin;\n  }\n\n  if (inputMin === inputMax) {\n    if (input <= inputMin) {\n      return outputMin;\n    }\n    return outputMax;\n  }\n\n  // Input Range\n  if (inputMin === -Infinity) {\n    result = -result;\n  } else if (inputMax === Infinity) {\n    result = result - inputMin;\n  } else {\n    result = (result - inputMin) / (inputMax - inputMin);\n  }\n\n  // Easing\n  result = easing(result);\n\n  // Output Range\n  if (outputMin === -Infinity) {\n    result = -result;\n  } else if (outputMax === Infinity) {\n    result = result + outputMin;\n  } else {\n    result = result * (outputMax - outputMin) + outputMin;\n  }\n\n  return result;\n}\n\nfunction colorToRgba(input: string): string {\n  let normalizedColor = normalizeColor(input);\n  if (normalizedColor === null || typeof normalizedColor !== 'number') {\n    return input;\n  }\n\n  normalizedColor = normalizedColor || 0;\n\n  const r = (normalizedColor & 0xff000000) >>> 24;\n  const g = (normalizedColor & 0x00ff0000) >>> 16;\n  const b = (normalizedColor & 0x0000ff00) >>> 8;\n  const a = (normalizedColor & 0x000000ff) / 255;\n\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst stringShapeRegex = /[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:[eE][+-]?\\d+)?/g;\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape.  Supports\n * things like:\n *\n *   rgba(123, 42, 99, 0.36) // colors\n *   -45deg                  // values with units\n */\nfunction createInterpolationFromStringOutputRange(\n  config: InterpolationConfigType,\n): (input: number) => string {\n  let outputRange: Array<string> = (config.outputRange: any);\n  invariant(outputRange.length >= 2, 'Bad output range');\n  outputRange = outputRange.map(colorToRgba);\n  checkPattern(outputRange);\n\n  // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']\n  // ->\n  // [\n  //   [0, 50],\n  //   [100, 150],\n  //   [200, 250],\n  //   [0, 0.5],\n  // ]\n  /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to\n   * guard against this possibility.\n   */\n  const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n  outputRange.forEach(value => {\n    /* $FlowFixMe(>=0.18.0): `value.match()` can return `null`. Need to guard\n     * against this possibility.\n     */\n    value.match(stringShapeRegex).forEach((number, i) => {\n      outputRanges[i].push(+number);\n    });\n  });\n\n  const interpolations = outputRange[0]\n    .match(stringShapeRegex)\n    /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need\n     * to guard against this possibility. */\n    .map((value, i) => {\n      return createInterpolation({\n        ...config,\n        outputRange: outputRanges[i],\n      });\n    });\n\n  // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n  // round the opacity (4th column).\n  const shouldRound = isRgbOrRgba(outputRange[0]);\n\n  return input => {\n    let i = 0;\n    // 'rgba(0, 100, 200, 0)'\n    // ->\n    // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n    return outputRange[0].replace(stringShapeRegex, () => {\n      let val = +interpolations[i++](input);\n      if (shouldRound) {\n        val = i < 4 ? Math.round(val) : Math.round(val * 1000) / 1000;\n      }\n      return String(val);\n    });\n  };\n}\n\nfunction isRgbOrRgba(range) {\n  return typeof range === 'string' && range.startsWith('rgb');\n}\n\nfunction checkPattern(arr: $ReadOnlyArray<string>) {\n  const pattern = arr[0].replace(stringShapeRegex, '');\n  for (let i = 1; i < arr.length; ++i) {\n    invariant(\n      pattern === arr[i].replace(stringShapeRegex, ''),\n      'invalid pattern ' + arr[0] + ' and ' + arr[i],\n    );\n  }\n}\n\nfunction findRange(input: number, inputRange: $ReadOnlyArray<number>) {\n  let i;\n  for (i = 1; i < inputRange.length - 1; ++i) {\n    if (inputRange[i] >= input) {\n      break;\n    }\n  }\n  return i - 1;\n}\n\nfunction checkValidInputRange(arr: $ReadOnlyArray<number>) {\n  invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n  for (let i = 1; i < arr.length; ++i) {\n    invariant(\n      arr[i] >= arr[i - 1],\n      /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n       * one or both of the operands may be something that doesn't cleanly\n       * convert to a string, like undefined, null, and object, etc. If you really\n       * mean this implicit string conversion, you can do something like\n       * String(myThing)\n       */\n      'inputRange must be monotonically non-decreasing ' + arr,\n    );\n  }\n}\n\nfunction checkInfiniteRange(name: string, arr: $ReadOnlyArray<number>) {\n  invariant(arr.length >= 2, name + ' must have at least 2 elements');\n  invariant(\n    arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n    /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n     * one or both of the operands may be something that doesn't cleanly convert\n     * to a string, like undefined, null, and object, etc. If you really mean\n     * this implicit string conversion, you can do something like\n     * String(myThing)\n     */\n    name + 'cannot be ]-infinity;+infinity[ ' + arr,\n  );\n}\n\nclass AnimatedInterpolation extends AnimatedWithChildren {\n  // Export for testing.\n  static __createInterpolation: (\n    config: InterpolationConfigType,\n  ) => (input: number) => number | string = createInterpolation;\n\n  _parent: AnimatedNode;\n  _config: InterpolationConfigType;\n  _interpolation: (input: number) => number | string;\n\n  constructor(parent: AnimatedNode, config: InterpolationConfigType) {\n    super();\n    this._parent = parent;\n    this._config = config;\n    this._interpolation = createInterpolation(config);\n  }\n\n  __makeNative() {\n    this._parent.__makeNative();\n    super.__makeNative();\n  }\n\n  __getValue(): number | string {\n    const parentValue: number = this._parent.__getValue();\n    invariant(\n      typeof parentValue === 'number',\n      'Cannot interpolate an input which is not a number.',\n    );\n    return this._interpolation(parentValue);\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._parent.__addChild(this);\n  }\n\n  __detach(): void {\n    this._parent.__removeChild(this);\n    super.__detach();\n  }\n\n  __transformDataType(range: Array<any>): Array<any> {\n    return range.map(NativeAnimatedHelper.transformDataType);\n  }\n\n  __getNativeConfig(): any {\n    if (__DEV__) {\n      NativeAnimatedHelper.validateInterpolation(this._config);\n    }\n\n    return {\n      inputRange: this._config.inputRange,\n      // Only the `outputRange` can contain strings so we don't need to transform `inputRange` here\n      /* $FlowFixMe(>=0.38.0) - Flow error detected during the deployment of\n       * v0.38.0. To see the error, remove this comment and run flow */\n      outputRange: this.__transformDataType(this._config.outputRange),\n      extrapolateLeft:\n        this._config.extrapolateLeft || this._config.extrapolate || 'extend',\n      extrapolateRight:\n        this._config.extrapolateRight || this._config.extrapolate || 'extend',\n      type: 'interpolation',\n    };\n  }\n}\n\nmodule.exports = AnimatedInterpolation;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nconst NativeAnimatedAPI = NativeAnimatedHelper.API;\nconst invariant = require('invariant');\n\ntype ValueListenerCallback = (state: {value: number, ...}) => mixed;\n\nlet _uniqueId = 1;\n\n// Note(vjeux): this would be better as an interface but flow doesn't\n// support them yet\nclass AnimatedNode {\n  _listeners: {[key: string]: ValueListenerCallback, ...};\n  __nativeAnimatedValueListener: ?any;\n  __attach(): void {}\n  __detach(): void {\n    if (this.__isNative && this.__nativeTag != null) {\n      NativeAnimatedHelper.API.dropAnimatedNode(this.__nativeTag);\n      this.__nativeTag = undefined;\n    }\n  }\n  __getValue(): any {}\n  __getAnimatedValue(): any {\n    return this.__getValue();\n  }\n  __addChild(child: AnimatedNode) {}\n  __removeChild(child: AnimatedNode) {}\n  __getChildren(): Array<AnimatedNode> {\n    return [];\n  }\n\n  /* Methods and props used by native Animated impl */\n  __isNative: boolean;\n  __nativeTag: ?number;\n  __shouldUpdateListenersForNewNativeTag: boolean;\n\n  constructor() {\n    this._listeners = {};\n  }\n\n  __makeNative() {\n    if (!this.__isNative) {\n      throw new Error('This node cannot be made a \"native\" animated node');\n    }\n\n    if (this.hasListeners()) {\n      this._startListeningToNativeValueUpdates();\n    }\n  }\n\n  /**\n   * Adds an asynchronous listener to the value so you can observe updates from\n   * animations.  This is useful because there is no way to\n   * synchronously read the value because it might be driven natively.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#addlistener\n   */\n  addListener(callback: (value: any) => mixed): string {\n    const id = String(_uniqueId++);\n    this._listeners[id] = callback;\n    if (this.__isNative) {\n      this._startListeningToNativeValueUpdates();\n    }\n    return id;\n  }\n\n  /**\n   * Unregister a listener. The `id` param shall match the identifier\n   * previously returned by `addListener()`.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#removelistener\n   */\n  removeListener(id: string): void {\n    delete this._listeners[id];\n    if (this.__isNative && !this.hasListeners()) {\n      this._stopListeningForNativeValueUpdates();\n    }\n  }\n\n  /**\n   * Remove all registered listeners.\n   *\n   * See https://reactnative.dev/docs/animatedvalue.html#removealllisteners\n   */\n  removeAllListeners(): void {\n    this._listeners = {};\n    if (this.__isNative) {\n      this._stopListeningForNativeValueUpdates();\n    }\n  }\n\n  hasListeners(): boolean {\n    return !!Object.keys(this._listeners).length;\n  }\n\n  _startListeningToNativeValueUpdates() {\n    if (\n      this.__nativeAnimatedValueListener &&\n      !this.__shouldUpdateListenersForNewNativeTag\n    ) {\n      return;\n    }\n\n    if (this.__shouldUpdateListenersForNewNativeTag) {\n      this.__shouldUpdateListenersForNewNativeTag = false;\n      this._stopListeningForNativeValueUpdates();\n    }\n\n    NativeAnimatedAPI.startListeningToAnimatedNodeValue(this.__getNativeTag());\n    this.__nativeAnimatedValueListener = NativeAnimatedHelper.nativeEventEmitter.addListener(\n      'onAnimatedValueUpdate',\n      data => {\n        if (data.tag !== this.__getNativeTag()) {\n          return;\n        }\n        this._onAnimatedValueUpdateReceived(data.value);\n      },\n    );\n  }\n\n  _onAnimatedValueUpdateReceived(value: number) {\n    this.__callListeners(value);\n  }\n\n  __callListeners(value: number): void {\n    for (const key in this._listeners) {\n      this._listeners[key]({value});\n    }\n  }\n\n  _stopListeningForNativeValueUpdates() {\n    if (!this.__nativeAnimatedValueListener) {\n      return;\n    }\n\n    this.__nativeAnimatedValueListener.remove();\n    this.__nativeAnimatedValueListener = null;\n    NativeAnimatedAPI.stopListeningToAnimatedNodeValue(this.__getNativeTag());\n  }\n\n  __getNativeTag(): number {\n    NativeAnimatedHelper.assertNativeAnimatedModule();\n    invariant(\n      this.__isNative,\n      'Attempt to get native tag from node not marked as \"native\"',\n    );\n\n    const nativeTag =\n      this.__nativeTag ?? NativeAnimatedHelper.generateNewNodeTag();\n\n    if (this.__nativeTag == null) {\n      this.__nativeTag = nativeTag;\n      NativeAnimatedHelper.API.createAnimatedNode(\n        nativeTag,\n        this.__getNativeConfig(),\n      );\n      this.__shouldUpdateListenersForNewNativeTag = true;\n    }\n\n    return nativeTag;\n  }\n  __getNativeConfig(): Object {\n    throw new Error(\n      'This JS animated node type cannot be used as native animated node',\n    );\n  }\n  toJSON(): any {\n    return this.__getValue();\n  }\n}\n\nmodule.exports = AnimatedNode;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport NativeAnimatedNonTurboModule from './NativeAnimatedModule';\nimport NativeAnimatedTurboModule from './NativeAnimatedTurboModule';\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport Platform from '../Utilities/Platform';\nimport type {EventConfig} from './AnimatedEvent';\nimport type {\n  EventMapping,\n  AnimatedNodeConfig,\n  AnimatingNodeConfig,\n} from './NativeAnimatedModule';\nimport type {AnimationConfig, EndCallback} from './animations/Animation';\nimport type {InterpolationConfigType} from './nodes/AnimatedInterpolation';\nimport invariant from 'invariant';\n\n// TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.\nconst NativeAnimatedModule =\n  Platform.OS === 'ios' && global.RN$Bridgeless\n    ? NativeAnimatedTurboModule\n    : NativeAnimatedNonTurboModule;\n\nlet __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */\nlet __nativeAnimationIdCount = 1; /* used for started animations */\n\nlet nativeEventEmitter;\n\nlet waitingForQueuedOperations = new Set();\nlet queueOperations = false;\nlet queue: Array<() => void> = [];\n\n/**\n * Simple wrappers around NativeAnimatedModule to provide flow and autocomplete support for\n * the native module methods\n */\nconst API = {\n  getValue: function(\n    tag: number,\n    saveValueCallback: (value: number) => void,\n  ): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    if (NativeAnimatedModule.getValue) {\n      NativeAnimatedModule.getValue(tag, saveValueCallback);\n    }\n  },\n  setWaitingForIdentifier: function(id: string): void {\n    waitingForQueuedOperations.add(id);\n    queueOperations = true;\n  },\n  unsetWaitingForIdentifier: function(id: string): void {\n    waitingForQueuedOperations.delete(id);\n\n    if (waitingForQueuedOperations.size === 0) {\n      queueOperations = false;\n      API.disableQueue();\n    }\n  },\n  disableQueue: function(): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (Platform.OS === 'android') {\n      NativeAnimatedModule.startOperationBatch();\n    }\n    for (let q = 0, l = queue.length; q < l; q++) {\n      queue[q]();\n    }\n    queue.length = 0;\n    if (Platform.OS === 'android') {\n      NativeAnimatedModule.finishOperationBatch();\n    }\n  },\n  queueOperation: (fn: () => void): void => {\n    if (queueOperations) {\n      queue.push(fn);\n    } else {\n      fn();\n    }\n  },\n  createAnimatedNode: function(tag: number, config: AnimatedNodeConfig): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.createAnimatedNode(tag, config),\n    );\n  },\n  startListeningToAnimatedNodeValue: function(tag: number) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.startListeningToAnimatedNodeValue(tag),\n    );\n  },\n  stopListeningToAnimatedNodeValue: function(tag: number) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.stopListeningToAnimatedNodeValue(tag),\n    );\n  },\n  connectAnimatedNodes: function(parentTag: number, childTag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag),\n    );\n  },\n  disconnectAnimatedNodes: function(parentTag: number, childTag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag),\n    );\n  },\n  startAnimatingNode: function(\n    animationId: number,\n    nodeTag: number,\n    config: AnimatingNodeConfig,\n    endCallback: EndCallback,\n  ): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.startAnimatingNode(\n        animationId,\n        nodeTag,\n        config,\n        endCallback,\n      ),\n    );\n  },\n  stopAnimation: function(animationId: number) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() => NativeAnimatedModule.stopAnimation(animationId));\n  },\n  setAnimatedNodeValue: function(nodeTag: number, value: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value),\n    );\n  },\n  setAnimatedNodeOffset: function(nodeTag: number, offset: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.setAnimatedNodeOffset(nodeTag, offset),\n    );\n  },\n  flattenAnimatedNodeOffset: function(nodeTag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.flattenAnimatedNodeOffset(nodeTag),\n    );\n  },\n  extractAnimatedNodeOffset: function(nodeTag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.extractAnimatedNodeOffset(nodeTag),\n    );\n  },\n  connectAnimatedNodeToView: function(nodeTag: number, viewTag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag),\n    );\n  },\n  disconnectAnimatedNodeFromView: function(\n    nodeTag: number,\n    viewTag: number,\n  ): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag),\n    );\n  },\n  restoreDefaultValues: function(nodeTag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    // Backwards compat with older native runtimes, can be removed later.\n    if (NativeAnimatedModule.restoreDefaultValues != null) {\n      API.queueOperation(() =>\n        NativeAnimatedModule.restoreDefaultValues(nodeTag),\n      );\n    }\n  },\n  dropAnimatedNode: function(tag: number): void {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() => NativeAnimatedModule.dropAnimatedNode(tag));\n  },\n  addAnimatedEventToView: function(\n    viewTag: number,\n    eventName: string,\n    eventMapping: EventMapping,\n  ) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.addAnimatedEventToView(\n        viewTag,\n        eventName,\n        eventMapping,\n      ),\n    );\n  },\n  removeAnimatedEventFromView(\n    viewTag: number,\n    eventName: string,\n    animatedNodeTag: number,\n  ) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(() =>\n      NativeAnimatedModule.removeAnimatedEventFromView(\n        viewTag,\n        eventName,\n        animatedNodeTag,\n      ),\n    );\n  },\n};\n\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties).\n */\nconst SUPPORTED_STYLES = {\n  opacity: true,\n  transform: true,\n  borderRadius: true,\n  borderBottomEndRadius: true,\n  borderBottomLeftRadius: true,\n  borderBottomRightRadius: true,\n  borderBottomStartRadius: true,\n  borderTopEndRadius: true,\n  borderTopLeftRadius: true,\n  borderTopRightRadius: true,\n  borderTopStartRadius: true,\n  elevation: true,\n  zIndex: true,\n  /* ios styles */\n  shadowOpacity: true,\n  shadowRadius: true,\n  /* legacy android transform properties */\n  scaleX: true,\n  scaleY: true,\n  translateX: true,\n  translateY: true,\n};\n\nconst SUPPORTED_TRANSFORMS = {\n  translateX: true,\n  translateY: true,\n  scale: true,\n  scaleX: true,\n  scaleY: true,\n  rotate: true,\n  rotateX: true,\n  rotateY: true,\n  rotateZ: true,\n  perspective: true,\n};\n\nconst SUPPORTED_INTERPOLATION_PARAMS = {\n  inputRange: true,\n  outputRange: true,\n  extrapolate: true,\n  extrapolateRight: true,\n  extrapolateLeft: true,\n};\n\nfunction addWhitelistedStyleProp(prop: string): void {\n  SUPPORTED_STYLES[prop] = true;\n}\n\nfunction addWhitelistedTransformProp(prop: string): void {\n  SUPPORTED_TRANSFORMS[prop] = true;\n}\n\nfunction addWhitelistedInterpolationParam(param: string): void {\n  SUPPORTED_INTERPOLATION_PARAMS[param] = true;\n}\n\nfunction validateTransform(\n  configs: Array<\n    | {\n        type: 'animated',\n        property: string,\n        nodeTag: ?number,\n        ...\n      }\n    | {\n        type: 'static',\n        property: string,\n        value: number | string,\n        ...\n      },\n  >,\n): void {\n  configs.forEach(config => {\n    if (!SUPPORTED_TRANSFORMS.hasOwnProperty(config.property)) {\n      throw new Error(\n        `Property '${config.property}' is not supported by native animated module`,\n      );\n    }\n  });\n}\n\nfunction validateStyles(styles: {[key: string]: ?number, ...}): void {\n  for (const key in styles) {\n    if (!SUPPORTED_STYLES.hasOwnProperty(key)) {\n      throw new Error(\n        `Style property '${key}' is not supported by native animated module`,\n      );\n    }\n  }\n}\n\nfunction validateInterpolation(config: InterpolationConfigType): void {\n  for (const key in config) {\n    if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(key)) {\n      throw new Error(\n        `Interpolation property '${key}' is not supported by native animated module`,\n      );\n    }\n  }\n}\n\nfunction generateNewNodeTag(): number {\n  return __nativeAnimatedNodeTagCount++;\n}\n\nfunction generateNewAnimationId(): number {\n  return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule(): void {\n  invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nlet _warnedMissingNativeAnimated = false;\n\nfunction shouldUseNativeDriver(\n  config: {...AnimationConfig, ...} | EventConfig,\n): boolean {\n  if (config.useNativeDriver == null) {\n    console.warn(\n      'Animated: `useNativeDriver` was not specified. This is a required ' +\n        'option and must be explicitly set to `true` or `false`',\n    );\n  }\n\n  if (config.useNativeDriver === true && !NativeAnimatedModule) {\n    if (!_warnedMissingNativeAnimated) {\n      console.warn(\n        'Animated: `useNativeDriver` is not supported because the native ' +\n          'animated module is missing. Falling back to JS-based animation. To ' +\n          'resolve this, add `RCTAnimation` module to this app, or remove ' +\n          '`useNativeDriver`. ' +\n          'Make sure to run `pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md',\n      );\n      _warnedMissingNativeAnimated = true;\n    }\n    return false;\n  }\n\n  return config.useNativeDriver || false;\n}\n\nfunction transformDataType(value: number | string): number | string {\n  // Change the string type to number type so we can reuse the same logic in\n  // iOS and Android platform\n  if (typeof value !== 'string') {\n    return value;\n  }\n  if (/deg$/.test(value)) {\n    const degrees = parseFloat(value) || 0;\n    const radians = (degrees * Math.PI) / 180.0;\n    return radians;\n  } else {\n    return value;\n  }\n}\n\nmodule.exports = {\n  API,\n  addWhitelistedStyleProp,\n  addWhitelistedTransformProp,\n  addWhitelistedInterpolationParam,\n  validateStyles,\n  validateTransform,\n  validateInterpolation,\n  generateNewNodeTag,\n  generateNewAnimationId,\n  assertNativeAnimatedModule,\n  shouldUseNativeDriver,\n  transformDataType,\n  // $FlowExpectedError - unsafe getter lint suppresion\n  get nativeEventEmitter(): NativeEventEmitter {\n    if (!nativeEventEmitter) {\n      nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule);\n    }\n    return nativeEventEmitter;\n  },\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\ntype EndResult = {finished: boolean, ...};\ntype EndCallback = (result: EndResult) => void;\ntype SaveValueCallback = (value: number) => void;\n\nexport type EventMapping = {|\n  nativeEventPath: Array<string>,\n  animatedValueTag: ?number,\n|};\n\n// The config has different keys depending on the type of the Node\n// TODO(T54896888): Make these types strict\nexport type AnimatedNodeConfig = Object;\nexport type AnimatingNodeConfig = Object;\n\nexport interface Spec extends TurboModule {\n  +startOperationBatch: () => void;\n  +finishOperationBatch: () => void;\n  +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void;\n  +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void;\n  +startListeningToAnimatedNodeValue: (tag: number) => void;\n  +stopListeningToAnimatedNodeValue: (tag: number) => void;\n  +connectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +startAnimatingNode: (\n    animationId: number,\n    nodeTag: number,\n    config: AnimatingNodeConfig,\n    endCallback: EndCallback,\n  ) => void;\n  +stopAnimation: (animationId: number) => void;\n  +setAnimatedNodeValue: (nodeTag: number, value: number) => void;\n  +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void;\n  +flattenAnimatedNodeOffset: (nodeTag: number) => void;\n  +extractAnimatedNodeOffset: (nodeTag: number) => void;\n  +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void;\n  +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void;\n  +restoreDefaultValues: (nodeTag: number) => void;\n  +dropAnimatedNode: (tag: number) => void;\n  +addAnimatedEventToView: (\n    viewTag: number,\n    eventName: string,\n    eventMapping: EventMapping,\n  ) => void;\n  +removeAnimatedEventFromView: (\n    viewTag: number,\n    eventName: string,\n    animatedNodeTag: number,\n  ) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('NativeAnimatedModule'): ?Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\ntype EndResult = {finished: boolean, ...};\ntype EndCallback = (result: EndResult) => void;\ntype SaveValueCallback = (value: number) => void;\n\nexport type EventMapping = {|\n  nativeEventPath: Array<string>,\n  animatedValueTag: ?number,\n|};\n\n// The config has different keys depending on the type of the Node\n// TODO(T54896888): Make these types strict\nexport type AnimatedNodeConfig = Object;\nexport type AnimatingNodeConfig = Object;\n\nexport interface Spec extends TurboModule {\n  +startOperationBatch: () => void;\n  +finishOperationBatch: () => void;\n  +createAnimatedNode: (tag: number, config: AnimatedNodeConfig) => void;\n  +getValue: (tag: number, saveValueCallback: SaveValueCallback) => void;\n  +startListeningToAnimatedNodeValue: (tag: number) => void;\n  +stopListeningToAnimatedNodeValue: (tag: number) => void;\n  +connectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +disconnectAnimatedNodes: (parentTag: number, childTag: number) => void;\n  +startAnimatingNode: (\n    animationId: number,\n    nodeTag: number,\n    config: AnimatingNodeConfig,\n    endCallback: EndCallback,\n  ) => void;\n  +stopAnimation: (animationId: number) => void;\n  +setAnimatedNodeValue: (nodeTag: number, value: number) => void;\n  +setAnimatedNodeOffset: (nodeTag: number, offset: number) => void;\n  +flattenAnimatedNodeOffset: (nodeTag: number) => void;\n  +extractAnimatedNodeOffset: (nodeTag: number) => void;\n  +connectAnimatedNodeToView: (nodeTag: number, viewTag: number) => void;\n  +disconnectAnimatedNodeFromView: (nodeTag: number, viewTag: number) => void;\n  +restoreDefaultValues: (nodeTag: number) => void;\n  +dropAnimatedNode: (tag: number) => void;\n  +addAnimatedEventToView: (\n    viewTag: number,\n    eventName: string,\n    eventMapping: EventMapping,\n  ) => void;\n  +removeAnimatedEventFromView: (\n    viewTag: number,\n    eventName: string,\n    animatedNodeTag: number,\n  ) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>(\n  'NativeAnimatedTurboModule',\n): ?Spec);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nclass AnimatedWithChildren extends AnimatedNode {\n  _children: Array<AnimatedNode>;\n\n  constructor() {\n    super();\n    this._children = [];\n  }\n\n  __makeNative() {\n    if (!this.__isNative) {\n      this.__isNative = true;\n      for (const child of this._children) {\n        child.__makeNative();\n        NativeAnimatedHelper.API.connectAnimatedNodes(\n          this.__getNativeTag(),\n          child.__getNativeTag(),\n        );\n      }\n    }\n    super.__makeNative();\n  }\n\n  __addChild(child: AnimatedNode): void {\n    if (this._children.length === 0) {\n      this.__attach();\n    }\n    this._children.push(child);\n    if (this.__isNative) {\n      // Only accept \"native\" animated nodes as children\n      child.__makeNative();\n      NativeAnimatedHelper.API.connectAnimatedNodes(\n        this.__getNativeTag(),\n        child.__getNativeTag(),\n      );\n    }\n  }\n\n  __removeChild(child: AnimatedNode): void {\n    const index = this._children.indexOf(child);\n    if (index === -1) {\n      console.warn(\"Trying to remove a child that doesn't exist\");\n      return;\n    }\n    if (this.__isNative && child.__isNative) {\n      NativeAnimatedHelper.API.disconnectAnimatedNodes(\n        this.__getNativeTag(),\n        child.__getNativeTag(),\n      );\n    }\n    this._children.splice(index, 1);\n    if (this._children.length === 0) {\n      this.__detach();\n    }\n  }\n\n  __getChildren(): Array<AnimatedNode> {\n    return this._children;\n  }\n\n  __callListeners(value: number): void {\n    super.__callListeners(value);\n    if (!this.__isNative) {\n      for (const child of this._children) {\n        if (child.__getValue) {\n          child.__callListeners(child.__getValue());\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = AnimatedWithChildren;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst BatchedBridge = require('../BatchedBridge/BatchedBridge');\nconst TaskQueue = require('./TaskQueue');\n\nconst infoLog = require('../Utilities/infoLog');\nconst invariant = require('invariant');\n\nimport EventEmitter from '../vendor/emitter/EventEmitter';\n\nexport type Handle = number;\nimport type {Task} from './TaskQueue';\n\nconst _emitter = new EventEmitter();\n\nconst DEBUG_DELAY: 0 = 0;\nconst DEBUG: false = false;\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n *   // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n *\n * `runAfterInteractions` takes either a plain callback function, or a\n * `PromiseTask` object with a `gen` method that returns a `Promise`.  If a\n * `PromiseTask` is supplied, then it is fully resolved (including asynchronous\n * dependencies that also schedule more tasks via `runAfterInteractions`) before\n * starting on the next task that might have been queued up synchronously\n * earlier.\n *\n * By default, queued tasks are executed together in a loop in one\n * `setImmediate` batch. If `setDeadline` is called with a positive number, then\n * tasks will only be executed until the deadline (in terms of js event loop run\n * time) approaches, at which point execution will yield via setTimeout,\n * allowing events such as touches to start interactions and block queued tasks\n * from executing, making apps more responsive.\n */\nconst InteractionManager = {\n  Events: {\n    interactionStart: 'interactionStart',\n    interactionComplete: 'interactionComplete',\n  },\n\n  /**\n   * Schedule a function to run after all interactions have completed. Returns a cancellable\n   * \"promise\".\n   */\n  runAfterInteractions(\n    task: ?Task,\n  ): {\n    then: <U>(\n      onFulfill?: ?(void) => ?(Promise<U> | U),\n      onReject?: ?(error: mixed) => ?(Promise<U> | U),\n    ) => Promise<U>,\n    done: () => void,\n    cancel: () => void,\n    ...\n  } {\n    const tasks: Array<Task> = [];\n    const promise = new Promise((resolve: () => void) => {\n      _scheduleUpdate();\n      if (task) {\n        tasks.push(task);\n      }\n      tasks.push({\n        run: resolve,\n        name: 'resolve ' + ((task && task.name) || '?'),\n      });\n      _taskQueue.enqueueTasks(tasks);\n    });\n    return {\n      then: promise.then.bind(promise),\n      done: (...args) => {\n        if (promise.done) {\n          return promise.done(...args);\n        } else {\n          console.warn(\n            'Tried to call done when not supported by current Promise implementation.',\n          );\n        }\n      },\n      cancel: function() {\n        _taskQueue.cancelTasks(tasks);\n      },\n    };\n  },\n\n  /**\n   * Notify manager that an interaction has started.\n   */\n  createInteractionHandle(): Handle {\n    DEBUG && infoLog('InteractionManager: create interaction handle');\n    _scheduleUpdate();\n    const handle = ++_inc;\n    _addInteractionSet.add(handle);\n    return handle;\n  },\n\n  /**\n   * Notify manager that an interaction has completed.\n   */\n  clearInteractionHandle(handle: Handle) {\n    DEBUG && infoLog('InteractionManager: clear interaction handle');\n    invariant(!!handle, 'InteractionManager: Must provide a handle to clear.');\n    _scheduleUpdate();\n    _addInteractionSet.delete(handle);\n    _deleteInteractionSet.add(handle);\n  },\n\n  addListener: (_emitter.addListener.bind(_emitter): $FlowFixMe),\n\n  /**\n   * A positive number will use setTimeout to schedule any tasks after the\n   * eventLoopRunningTime hits the deadline value, otherwise all tasks will be\n   * executed in one setImmediate batch (default).\n   */\n  setDeadline(deadline: number) {\n    _deadline = deadline;\n  },\n};\n\nconst _interactionSet = new Set();\nconst _addInteractionSet = new Set();\nconst _deleteInteractionSet = new Set();\nconst _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});\nlet _nextUpdateHandle = 0;\nlet _inc = 0;\nlet _deadline = -1;\n\n/**\n * Schedule an asynchronous update to the interaction state.\n */\nfunction _scheduleUpdate() {\n  if (!_nextUpdateHandle) {\n    if (_deadline > 0) {\n      /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.63 was deployed. To see the error delete this\n       * comment and run Flow. */\n      _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY);\n    } else {\n      _nextUpdateHandle = setImmediate(_processUpdate);\n    }\n  }\n}\n\n/**\n * Notify listeners, process queue, etc\n */\nfunction _processUpdate() {\n  _nextUpdateHandle = 0;\n\n  const interactionCount = _interactionSet.size;\n  _addInteractionSet.forEach(handle => _interactionSet.add(handle));\n  _deleteInteractionSet.forEach(handle => _interactionSet.delete(handle));\n  const nextInteractionCount = _interactionSet.size;\n\n  if (interactionCount !== 0 && nextInteractionCount === 0) {\n    // transition from 1+ --> 0 interactions\n    _emitter.emit(InteractionManager.Events.interactionComplete);\n  } else if (interactionCount === 0 && nextInteractionCount !== 0) {\n    // transition from 0 --> 1+ interactions\n    _emitter.emit(InteractionManager.Events.interactionStart);\n  }\n\n  // process the queue regardless of a transition\n  if (nextInteractionCount === 0) {\n    while (_taskQueue.hasTasksToProcess()) {\n      _taskQueue.processNext();\n      if (\n        _deadline > 0 &&\n        BatchedBridge.getEventLoopRunningTime() >= _deadline\n      ) {\n        // Hit deadline before processing all tasks, so process more later.\n        _scheduleUpdate();\n        break;\n      }\n    }\n  }\n  _addInteractionSet.clear();\n  _deleteInteractionSet.clear();\n}\n\nmodule.exports = InteractionManager;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst infoLog = require('../Utilities/infoLog');\nconst invariant = require('invariant');\n\ntype SimpleTask = {\n  name: string,\n  run: () => void,\n};\ntype PromiseTask = {\n  name: string,\n  gen: () => Promise<void>,\n};\nexport type Task = SimpleTask | PromiseTask | (() => void);\n\nconst DEBUG: false = false;\n\n/**\n * TaskQueue - A system for queueing and executing a mix of simple callbacks and\n * trees of dependent tasks based on Promises. No tasks are executed unless\n * `processNext` is called.\n *\n * `enqueue` takes a Task object with either a simple `run` callback, or a\n * `gen` function that returns a `Promise` and puts it in the queue.  If a gen\n * function is supplied, then the promise it returns will block execution of\n * tasks already in the queue until it resolves. This can be used to make sure\n * the first task is fully resolved (including asynchronous dependencies that\n * also schedule more tasks via `enqueue`) before starting on the next task.\n * The `onMoreTasks` constructor argument is used to inform the owner that an\n * async task has resolved and that the queue should be processed again.\n *\n * Note: Tasks are only actually executed with explicit calls to `processNext`.\n */\nclass TaskQueue {\n  /**\n   * TaskQueue instances are self contained and independent, so multiple tasks\n   * of varying semantics and priority can operate together.\n   *\n   * `onMoreTasks` is invoked when `PromiseTask`s resolve if there are more\n   * tasks to process.\n   */\n  constructor({onMoreTasks}: {onMoreTasks: () => void, ...}) {\n    this._onMoreTasks = onMoreTasks;\n    this._queueStack = [{tasks: [], popable: false}];\n  }\n\n  /**\n   * Add a task to the queue.  It is recommended to name your tasks for easier\n   * async debugging. Tasks will not be executed until `processNext` is called\n   * explicitly.\n   */\n  enqueue(task: Task): void {\n    this._getCurrentQueue().push(task);\n  }\n\n  enqueueTasks(tasks: Array<Task>): void {\n    tasks.forEach(task => this.enqueue(task));\n  }\n\n  cancelTasks(tasksToCancel: Array<Task>): void {\n    // search through all tasks and remove them.\n    this._queueStack = this._queueStack\n      .map(queue => ({\n        ...queue,\n        tasks: queue.tasks.filter(task => tasksToCancel.indexOf(task) === -1),\n      }))\n      .filter((queue, idx) => queue.tasks.length > 0 || idx === 0);\n  }\n\n  /**\n   * Check to see if `processNext` should be called.\n   *\n   * @returns {boolean} Returns true if there are tasks that are ready to be\n   * processed with `processNext`, or returns false if there are no more tasks\n   * to be processed right now, although there may be tasks in the queue that\n   * are blocked by earlier `PromiseTask`s that haven't resolved yet.\n   * `onMoreTasks` will be called after each `PromiseTask` resolves if there are\n   * tasks ready to run at that point.\n   */\n  hasTasksToProcess(): boolean {\n    return this._getCurrentQueue().length > 0;\n  }\n\n  /**\n   * Executes the next task in the queue.\n   */\n  processNext(): void {\n    const queue = this._getCurrentQueue();\n    if (queue.length) {\n      const task = queue.shift();\n      try {\n        if (typeof task === 'object' && task.gen) {\n          DEBUG && infoLog('TaskQueue: genPromise for task ' + task.name);\n          this._genPromise(task);\n        } else if (typeof task === 'object' && task.run) {\n          DEBUG && infoLog('TaskQueue: run task ' + task.name);\n          task.run();\n        } else {\n          invariant(\n            typeof task === 'function',\n            'Expected Function, SimpleTask, or PromiseTask, but got:\\n' +\n              JSON.stringify(task, null, 2),\n          );\n          DEBUG && infoLog('TaskQueue: run anonymous task');\n          task();\n        }\n      } catch (e) {\n        e.message =\n          'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message;\n        throw e;\n      }\n    }\n  }\n\n  _queueStack: Array<{\n    tasks: Array<Task>,\n    popable: boolean,\n    ...\n  }>;\n  _onMoreTasks: () => void;\n\n  _getCurrentQueue(): Array<Task> {\n    const stackIdx = this._queueStack.length - 1;\n    const queue = this._queueStack[stackIdx];\n    if (\n      queue.popable &&\n      queue.tasks.length === 0 &&\n      this._queueStack.length > 1\n    ) {\n      this._queueStack.pop();\n      DEBUG &&\n        infoLog('TaskQueue: popped queue: ', {\n          stackIdx,\n          queueStackSize: this._queueStack.length,\n        });\n      return this._getCurrentQueue();\n    } else {\n      return queue.tasks;\n    }\n  }\n\n  _genPromise(task: PromiseTask) {\n    // Each async task pushes it's own queue onto the queue stack. This\n    // effectively defers execution of previously queued tasks until the promise\n    // resolves, at which point we allow the new queue to be popped, which\n    // happens once it is fully processed.\n    this._queueStack.push({tasks: [], popable: false});\n    const stackIdx = this._queueStack.length - 1;\n    const stackItem = this._queueStack[stackIdx];\n    DEBUG && infoLog('TaskQueue: push new queue: ', {stackIdx});\n    DEBUG && infoLog('TaskQueue: exec gen task ' + task.name);\n    task\n      .gen()\n      .then(() => {\n        DEBUG &&\n          infoLog('TaskQueue: onThen for gen task ' + task.name, {\n            stackIdx,\n            queueStackSize: this._queueStack.length,\n          });\n        stackItem.popable = true;\n        this.hasTasksToProcess() && this._onMoreTasks();\n      })\n      .catch(ex => {\n        ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`;\n        throw ex;\n      })\n      .done();\n  }\n}\n\nmodule.exports = TaskQueue;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst {AnimatedEvent, attachNativeEvent} = require('./AnimatedEvent');\nconst AnimatedAddition = require('./nodes/AnimatedAddition');\nconst AnimatedDiffClamp = require('./nodes/AnimatedDiffClamp');\nconst AnimatedDivision = require('./nodes/AnimatedDivision');\nconst AnimatedInterpolation = require('./nodes/AnimatedInterpolation');\nconst AnimatedModulo = require('./nodes/AnimatedModulo');\nconst AnimatedMultiplication = require('./nodes/AnimatedMultiplication');\nconst AnimatedNode = require('./nodes/AnimatedNode');\nconst AnimatedProps = require('./nodes/AnimatedProps');\nconst AnimatedSubtraction = require('./nodes/AnimatedSubtraction');\nconst AnimatedTracking = require('./nodes/AnimatedTracking');\nconst AnimatedValue = require('./nodes/AnimatedValue');\nconst AnimatedValueXY = require('./nodes/AnimatedValueXY');\nconst DecayAnimation = require('./animations/DecayAnimation');\nconst SpringAnimation = require('./animations/SpringAnimation');\nconst TimingAnimation = require('./animations/TimingAnimation');\n\nconst createAnimatedComponent = require('./createAnimatedComponent');\n\nimport type {\n  AnimationConfig,\n  EndCallback,\n  EndResult,\n} from './animations/Animation';\nimport type {TimingAnimationConfig} from './animations/TimingAnimation';\nimport type {DecayAnimationConfig} from './animations/DecayAnimation';\nimport type {SpringAnimationConfig} from './animations/SpringAnimation';\nimport type {Mapping, EventConfig} from './AnimatedEvent';\n\nexport type CompositeAnimation = {\n  start: (callback?: ?EndCallback) => void,\n  stop: () => void,\n  reset: () => void,\n  _startNativeLoop: (iterations?: number) => void,\n  _isUsingNativeDriver: () => boolean,\n  ...\n};\n\nconst add = function(\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedAddition {\n  return new AnimatedAddition(a, b);\n};\n\nconst subtract = function(\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedSubtraction {\n  return new AnimatedSubtraction(a, b);\n};\n\nconst divide = function(\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedDivision {\n  return new AnimatedDivision(a, b);\n};\n\nconst multiply = function(\n  a: AnimatedNode | number,\n  b: AnimatedNode | number,\n): AnimatedMultiplication {\n  return new AnimatedMultiplication(a, b);\n};\n\nconst modulo = function(a: AnimatedNode, modulus: number): AnimatedModulo {\n  return new AnimatedModulo(a, modulus);\n};\n\nconst diffClamp = function(\n  a: AnimatedNode,\n  min: number,\n  max: number,\n): AnimatedDiffClamp {\n  return new AnimatedDiffClamp(a, min, max);\n};\n\nconst _combineCallbacks = function(\n  callback: ?EndCallback,\n  config: {...AnimationConfig, ...},\n) {\n  if (callback && config.onComplete) {\n    return (...args) => {\n      config.onComplete && config.onComplete(...args);\n      callback && callback(...args);\n    };\n  } else {\n    return callback || config.onComplete;\n  }\n};\n\nconst maybeVectorAnim = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: Object,\n  anim: (value: AnimatedValue, config: Object) => CompositeAnimation,\n): ?CompositeAnimation {\n  if (value instanceof AnimatedValueXY) {\n    const configX = {...config};\n    const configY = {...config};\n    for (const key in config) {\n      const {x, y} = config[key];\n      if (x !== undefined && y !== undefined) {\n        configX[key] = x;\n        configY[key] = y;\n      }\n    }\n    const aX = anim((value: AnimatedValueXY).x, configX);\n    const aY = anim((value: AnimatedValueXY).y, configY);\n    // We use `stopTogether: false` here because otherwise tracking will break\n    // because the second animation will get stopped before it can update.\n    return parallel([aX, aY], {stopTogether: false});\n  }\n  return null;\n};\n\nconst spring = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: SpringAnimationConfig,\n): CompositeAnimation {\n  const start = function(\n    animatedValue: AnimatedValue | AnimatedValueXY,\n    configuration: SpringAnimationConfig,\n    callback?: ?EndCallback,\n  ): void {\n    callback = _combineCallbacks(callback, configuration);\n    const singleValue: any = animatedValue;\n    const singleConfig: any = configuration;\n    singleValue.stopTracking();\n    if (configuration.toValue instanceof AnimatedNode) {\n      singleValue.track(\n        new AnimatedTracking(\n          singleValue,\n          configuration.toValue,\n          SpringAnimation,\n          singleConfig,\n          callback,\n        ),\n      );\n    } else {\n      singleValue.animate(new SpringAnimation(singleConfig), callback);\n    }\n  };\n  return (\n    maybeVectorAnim(value, config, spring) || {\n      start: function(callback?: ?EndCallback): void {\n        start(value, config, callback);\n      },\n\n      stop: function(): void {\n        value.stopAnimation();\n      },\n\n      reset: function(): void {\n        value.resetAnimation();\n      },\n\n      _startNativeLoop: function(iterations?: number): void {\n        const singleConfig = {...config, iterations};\n        start(value, singleConfig);\n      },\n\n      _isUsingNativeDriver: function(): boolean {\n        return config.useNativeDriver || false;\n      },\n    }\n  );\n};\n\nconst timing = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: TimingAnimationConfig,\n): CompositeAnimation {\n  const start = function(\n    animatedValue: AnimatedValue | AnimatedValueXY,\n    configuration: TimingAnimationConfig,\n    callback?: ?EndCallback,\n  ): void {\n    callback = _combineCallbacks(callback, configuration);\n    const singleValue: any = animatedValue;\n    const singleConfig: any = configuration;\n    singleValue.stopTracking();\n    if (configuration.toValue instanceof AnimatedNode) {\n      singleValue.track(\n        new AnimatedTracking(\n          singleValue,\n          configuration.toValue,\n          TimingAnimation,\n          singleConfig,\n          callback,\n        ),\n      );\n    } else {\n      singleValue.animate(new TimingAnimation(singleConfig), callback);\n    }\n  };\n\n  return (\n    maybeVectorAnim(value, config, timing) || {\n      start: function(callback?: ?EndCallback): void {\n        start(value, config, callback);\n      },\n\n      stop: function(): void {\n        value.stopAnimation();\n      },\n\n      reset: function(): void {\n        value.resetAnimation();\n      },\n\n      _startNativeLoop: function(iterations?: number): void {\n        const singleConfig = {...config, iterations};\n        start(value, singleConfig);\n      },\n\n      _isUsingNativeDriver: function(): boolean {\n        return config.useNativeDriver || false;\n      },\n    }\n  );\n};\n\nconst decay = function(\n  value: AnimatedValue | AnimatedValueXY,\n  config: DecayAnimationConfig,\n): CompositeAnimation {\n  const start = function(\n    animatedValue: AnimatedValue | AnimatedValueXY,\n    configuration: DecayAnimationConfig,\n    callback?: ?EndCallback,\n  ): void {\n    callback = _combineCallbacks(callback, configuration);\n    const singleValue: any = animatedValue;\n    const singleConfig: any = configuration;\n    singleValue.stopTracking();\n    singleValue.animate(new DecayAnimation(singleConfig), callback);\n  };\n\n  return (\n    maybeVectorAnim(value, config, decay) || {\n      start: function(callback?: ?EndCallback): void {\n        start(value, config, callback);\n      },\n\n      stop: function(): void {\n        value.stopAnimation();\n      },\n\n      reset: function(): void {\n        value.resetAnimation();\n      },\n\n      _startNativeLoop: function(iterations?: number): void {\n        const singleConfig = {...config, iterations};\n        start(value, singleConfig);\n      },\n\n      _isUsingNativeDriver: function(): boolean {\n        return config.useNativeDriver || false;\n      },\n    }\n  );\n};\n\nconst sequence = function(\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  let current = 0;\n  return {\n    start: function(callback?: ?EndCallback) {\n      const onComplete = function(result) {\n        if (!result.finished) {\n          callback && callback(result);\n          return;\n        }\n\n        current++;\n\n        if (current === animations.length) {\n          callback && callback(result);\n          return;\n        }\n\n        animations[current].start(onComplete);\n      };\n\n      if (animations.length === 0) {\n        callback && callback({finished: true});\n      } else {\n        animations[current].start(onComplete);\n      }\n    },\n\n    stop: function() {\n      if (current < animations.length) {\n        animations[current].stop();\n      }\n    },\n\n    reset: function() {\n      animations.forEach((animation, idx) => {\n        if (idx <= current) {\n          animation.reset();\n        }\n      });\n      current = 0;\n    },\n\n    _startNativeLoop: function() {\n      throw new Error(\n        'Loops run using the native driver cannot contain Animated.sequence animations',\n      );\n    },\n\n    _isUsingNativeDriver: function(): boolean {\n      return false;\n    },\n  };\n};\n\ntype ParallelConfig = {\n  // If one is stopped, stop all.  default: true\n  stopTogether?: boolean,\n  ...\n};\nconst parallel = function(\n  animations: Array<CompositeAnimation>,\n  config?: ?ParallelConfig,\n): CompositeAnimation {\n  let doneCount = 0;\n  // Make sure we only call stop() at most once for each animation\n  const hasEnded = {};\n  const stopTogether = !(config && config.stopTogether === false);\n\n  const result = {\n    start: function(callback?: ?EndCallback) {\n      if (doneCount === animations.length) {\n        callback && callback({finished: true});\n        return;\n      }\n\n      animations.forEach((animation, idx) => {\n        const cb = function(endResult) {\n          hasEnded[idx] = true;\n          doneCount++;\n          if (doneCount === animations.length) {\n            doneCount = 0;\n            callback && callback(endResult);\n            return;\n          }\n\n          if (!endResult.finished && stopTogether) {\n            result.stop();\n          }\n        };\n\n        if (!animation) {\n          cb({finished: true});\n        } else {\n          animation.start(cb);\n        }\n      });\n    },\n\n    stop: function(): void {\n      animations.forEach((animation, idx) => {\n        !hasEnded[idx] && animation.stop();\n        hasEnded[idx] = true;\n      });\n    },\n\n    reset: function(): void {\n      animations.forEach((animation, idx) => {\n        animation.reset();\n        hasEnded[idx] = false;\n        doneCount = 0;\n      });\n    },\n\n    _startNativeLoop: function() {\n      throw new Error(\n        'Loops run using the native driver cannot contain Animated.parallel animations',\n      );\n    },\n\n    _isUsingNativeDriver: function(): boolean {\n      return false;\n    },\n  };\n\n  return result;\n};\n\nconst delay = function(time: number): CompositeAnimation {\n  // Would be nice to make a specialized implementation\n  return timing(new AnimatedValue(0), {\n    toValue: 0,\n    delay: time,\n    duration: 0,\n    useNativeDriver: false,\n  });\n};\n\nconst stagger = function(\n  time: number,\n  animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n  return parallel(\n    animations.map((animation, i) => {\n      return sequence([delay(time * i), animation]);\n    }),\n  );\n};\n\ntype LoopAnimationConfig = {\n  iterations: number,\n  resetBeforeIteration?: boolean,\n  ...\n};\n\nconst loop = function(\n  animation: CompositeAnimation,\n  {iterations = -1, resetBeforeIteration = true}: LoopAnimationConfig = {},\n): CompositeAnimation {\n  let isFinished = false;\n  let iterationsSoFar = 0;\n  return {\n    start: function(callback?: ?EndCallback) {\n      const restart = function(result: EndResult = {finished: true}): void {\n        if (\n          isFinished ||\n          iterationsSoFar === iterations ||\n          result.finished === false\n        ) {\n          callback && callback(result);\n        } else {\n          iterationsSoFar++;\n          resetBeforeIteration && animation.reset();\n          animation.start(restart);\n        }\n      };\n      if (!animation || iterations === 0) {\n        callback && callback({finished: true});\n      } else {\n        if (animation._isUsingNativeDriver()) {\n          animation._startNativeLoop(iterations);\n        } else {\n          restart(); // Start looping recursively on the js thread\n        }\n      }\n    },\n\n    stop: function(): void {\n      isFinished = true;\n      animation.stop();\n    },\n\n    reset: function(): void {\n      iterationsSoFar = 0;\n      isFinished = false;\n      animation.reset();\n    },\n\n    _startNativeLoop: function() {\n      throw new Error(\n        'Loops run using the native driver cannot contain Animated.loop animations',\n      );\n    },\n\n    _isUsingNativeDriver: function(): boolean {\n      return animation._isUsingNativeDriver();\n    },\n  };\n};\n\nfunction forkEvent(\n  event: ?AnimatedEvent | ?Function,\n  listener: Function,\n): AnimatedEvent | Function {\n  if (!event) {\n    return listener;\n  } else if (event instanceof AnimatedEvent) {\n    event.__addListener(listener);\n    return event;\n  } else {\n    return (...args) => {\n      typeof event === 'function' && event(...args);\n      listener(...args);\n    };\n  }\n}\n\nfunction unforkEvent(\n  event: ?AnimatedEvent | ?Function,\n  listener: Function,\n): void {\n  if (event && event instanceof AnimatedEvent) {\n    event.__removeListener(listener);\n  }\n}\n\nconst event = function(\n  argMapping: $ReadOnlyArray<?Mapping>,\n  config: EventConfig,\n): any {\n  const animatedEvent = new AnimatedEvent(argMapping, config);\n  if (animatedEvent.__isNative) {\n    return animatedEvent;\n  } else {\n    return animatedEvent.__getHandler();\n  }\n};\n\n/**\n * The `Animated` library is designed to make animations fluid, powerful, and\n * easy to build and maintain. `Animated` focuses on declarative relationships\n * between inputs and outputs, with configurable transforms in between, and\n * simple `start`/`stop` methods to control time-based animation execution.\n * If additional transforms are added, be sure to include them in\n * AnimatedMock.js as well.\n *\n * See https://reactnative.dev/docs/animated.html\n */\nmodule.exports = {\n  /**\n   * Standard value class for driving animations.  Typically initialized with\n   * `new Animated.Value(0);`\n   *\n   * See https://reactnative.dev/docs/animated.html#value\n   */\n  Value: AnimatedValue,\n  /**\n   * 2D value class for driving 2D animations, such as pan gestures.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html\n   */\n  ValueXY: AnimatedValueXY,\n  /**\n   * Exported to use the Interpolation type in flow.\n   *\n   * See https://reactnative.dev/docs/animated.html#interpolation\n   */\n  Interpolation: AnimatedInterpolation,\n  /**\n   * Exported for ease of type checking. All animated values derive from this\n   * class.\n   *\n   * See https://reactnative.dev/docs/animated.html#node\n   */\n  Node: AnimatedNode,\n\n  /**\n   * Animates a value from an initial velocity to zero based on a decay\n   * coefficient.\n   *\n   * See https://reactnative.dev/docs/animated.html#decay\n   */\n  decay,\n  /**\n   * Animates a value along a timed easing curve. The Easing module has tons of\n   * predefined curves, or you can use your own function.\n   *\n   * See https://reactnative.dev/docs/animated.html#timing\n   */\n  timing,\n  /**\n   * Animates a value according to an analytical spring model based on\n   * damped harmonic oscillation.\n   *\n   * See https://reactnative.dev/docs/animated.html#spring\n   */\n  spring,\n\n  /**\n   * Creates a new Animated value composed from two Animated values added\n   * together.\n   *\n   * See https://reactnative.dev/docs/animated.html#add\n   */\n  add,\n\n  /**\n   * Creates a new Animated value composed by subtracting the second Animated\n   * value from the first Animated value.\n   *\n   * See https://reactnative.dev/docs/animated.html#subtract\n   */\n  subtract,\n\n  /**\n   * Creates a new Animated value composed by dividing the first Animated value\n   * by the second Animated value.\n   *\n   * See https://reactnative.dev/docs/animated.html#divide\n   */\n  divide,\n\n  /**\n   * Creates a new Animated value composed from two Animated values multiplied\n   * together.\n   *\n   * See https://reactnative.dev/docs/animated.html#multiply\n   */\n  multiply,\n\n  /**\n   * Creates a new Animated value that is the (non-negative) modulo of the\n   * provided Animated value.\n   *\n   * See https://reactnative.dev/docs/animated.html#modulo\n   */\n  modulo,\n\n  /**\n   * Create a new Animated value that is limited between 2 values. It uses the\n   * difference between the last value so even if the value is far from the\n   * bounds it will start changing when the value starts getting closer again.\n   *\n   * See https://reactnative.dev/docs/animated.html#diffclamp\n   */\n  diffClamp,\n\n  /**\n   * Starts an animation after the given delay.\n   *\n   * See https://reactnative.dev/docs/animated.html#delay\n   */\n  delay,\n  /**\n   * Starts an array of animations in order, waiting for each to complete\n   * before starting the next. If the current running animation is stopped, no\n   * following animations will be started.\n   *\n   * See https://reactnative.dev/docs/animated.html#sequence\n   */\n  sequence,\n  /**\n   * Starts an array of animations all at the same time. By default, if one\n   * of the animations is stopped, they will all be stopped. You can override\n   * this with the `stopTogether` flag.\n   *\n   * See https://reactnative.dev/docs/animated.html#parallel\n   */\n  parallel,\n  /**\n   * Array of animations may run in parallel (overlap), but are started in\n   * sequence with successive delays.  Nice for doing trailing effects.\n   *\n   * See https://reactnative.dev/docs/animated.html#stagger\n   */\n  stagger,\n  /**\n   * Loops a given animation continuously, so that each time it reaches the\n   * end, it resets and begins again from the start.\n   *\n   * See https://reactnative.dev/docs/animated.html#loop\n   */\n  loop,\n\n  /**\n   * Takes an array of mappings and extracts values from each arg accordingly,\n   * then calls `setValue` on the mapped outputs.\n   *\n   * See https://reactnative.dev/docs/animated.html#event\n   */\n  event,\n\n  /**\n   * Make any React component Animatable.  Used to create `Animated.View`, etc.\n   *\n   * See https://reactnative.dev/docs/animated.html#createanimatedcomponent\n   */\n  createAnimatedComponent,\n\n  /**\n   * Imperative API to attach an animated value to an event on a view. Prefer\n   * using `Animated.event` with `useNativeDrive: true` if possible.\n   *\n   * See https://reactnative.dev/docs/animated.html#attachnativeevent\n   */\n  attachNativeEvent,\n\n  /**\n   * Advanced imperative API for snooping on animated events that are passed in\n   * through props. Use values directly where possible.\n   *\n   * See https://reactnative.dev/docs/animated.html#forkevent\n   */\n  forkEvent,\n  unforkEvent,\n\n  /**\n   * Expose Event class, so it can be used as a type for type checkers.\n   */\n  Event: AnimatedEvent,\n\n  __PropsOnlyForTests: AnimatedProps,\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedAddition extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n\n  constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n    super();\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative() {\n    this._a.__makeNative();\n    this._b.__makeNative();\n    super.__makeNative();\n  }\n\n  __getValue(): number {\n    return this._a.__getValue() + this._b.__getValue();\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'addition',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n    };\n  }\n}\n\nmodule.exports = AnimatedAddition;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedDiffClamp extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _min: number;\n  _max: number;\n  _value: number;\n  _lastValue: number;\n\n  constructor(a: AnimatedNode, min: number, max: number) {\n    super();\n\n    this._a = a;\n    this._min = min;\n    this._max = max;\n    this._value = this._lastValue = this._a.__getValue();\n  }\n\n  __makeNative() {\n    this._a.__makeNative();\n    super.__makeNative();\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __getValue(): number {\n    const value = this._a.__getValue();\n    const diff = value - this._lastValue;\n    this._lastValue = value;\n    this._value = Math.min(Math.max(this._value + diff, this._min), this._max);\n    return this._value;\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'diffclamp',\n      input: this._a.__getNativeTag(),\n      min: this._min,\n      max: this._max,\n    };\n  }\n}\n\nmodule.exports = AnimatedDiffClamp;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedDivision extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n  _warnedAboutDivideByZero: boolean = false;\n\n  constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n    super();\n    if (b === 0 || (b instanceof AnimatedNode && b.__getValue() === 0)) {\n      console.error('Detected potential division by zero in AnimatedDivision');\n    }\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative() {\n    this._a.__makeNative();\n    this._b.__makeNative();\n    super.__makeNative();\n  }\n\n  __getValue(): number {\n    const a = this._a.__getValue();\n    const b = this._b.__getValue();\n    if (b === 0) {\n      // Prevent spamming the console/LogBox\n      if (!this._warnedAboutDivideByZero) {\n        console.error('Detected division by zero in AnimatedDivision');\n        this._warnedAboutDivideByZero = true;\n      }\n      // Passing infinity/NaN to Fabric will cause a native crash\n      return 0;\n    }\n    this._warnedAboutDivideByZero = false;\n    return a / b;\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'division',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n    };\n  }\n}\n\nmodule.exports = AnimatedDivision;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedModulo extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _modulus: number;\n\n  constructor(a: AnimatedNode, modulus: number) {\n    super();\n    this._a = a;\n    this._modulus = modulus;\n  }\n\n  __makeNative() {\n    this._a.__makeNative();\n    super.__makeNative();\n  }\n\n  __getValue(): number {\n    return (\n      ((this._a.__getValue() % this._modulus) + this._modulus) % this._modulus\n    );\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'modulus',\n      input: this._a.__getNativeTag(),\n      modulus: this._modulus,\n    };\n  }\n}\n\nmodule.exports = AnimatedModulo;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedMultiplication extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n\n  constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n    super();\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative() {\n    this._a.__makeNative();\n    this._b.__makeNative();\n    super.__makeNative();\n  }\n\n  __getValue(): number {\n    return this._a.__getValue() * this._b.__getValue();\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'multiplication',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n    };\n  }\n}\n\nmodule.exports = AnimatedMultiplication;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst {AnimatedEvent} = require('../AnimatedEvent');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedStyle = require('./AnimatedStyle');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\nconst ReactNative = require('../../Renderer/shims/ReactNative');\n\nconst invariant = require('invariant');\n\nclass AnimatedProps extends AnimatedNode {\n  _props: Object;\n  _animatedView: any;\n  _callback: () => void;\n\n  constructor(props: Object, callback: () => void) {\n    super();\n    if (props.style) {\n      props = {\n        ...props,\n        style: new AnimatedStyle(props.style),\n      };\n    }\n    this._props = props;\n    this._callback = callback;\n    this.__attach();\n  }\n\n  __getValue(): Object {\n    const props = {};\n    for (const key in this._props) {\n      const value = this._props[key];\n      if (value instanceof AnimatedNode) {\n        if (!value.__isNative || value instanceof AnimatedStyle) {\n          // We cannot use value of natively driven nodes this way as the value we have access from\n          // JS may not be up to date.\n          props[key] = value.__getValue();\n        }\n      } else if (value instanceof AnimatedEvent) {\n        props[key] = value.__getHandler();\n      } else {\n        props[key] = value;\n      }\n    }\n    return props;\n  }\n\n  __getAnimatedValue(): Object {\n    const props = {};\n    for (const key in this._props) {\n      const value = this._props[key];\n      if (value instanceof AnimatedNode) {\n        props[key] = value.__getAnimatedValue();\n      }\n    }\n    return props;\n  }\n\n  __attach(): void {\n    for (const key in this._props) {\n      const value = this._props[key];\n      if (value instanceof AnimatedNode) {\n        value.__addChild(this);\n      }\n    }\n  }\n\n  __detach(): void {\n    if (this.__isNative && this._animatedView) {\n      this.__disconnectAnimatedView();\n    }\n    for (const key in this._props) {\n      const value = this._props[key];\n      if (value instanceof AnimatedNode) {\n        value.__removeChild(this);\n      }\n    }\n    super.__detach();\n  }\n\n  update(): void {\n    this._callback();\n  }\n\n  __makeNative(): void {\n    if (!this.__isNative) {\n      this.__isNative = true;\n      for (const key in this._props) {\n        const value = this._props[key];\n        if (value instanceof AnimatedNode) {\n          value.__makeNative();\n        }\n      }\n      if (this._animatedView) {\n        this.__connectAnimatedView();\n      }\n    }\n  }\n\n  setNativeView(animatedView: any): void {\n    if (this._animatedView === animatedView) {\n      return;\n    }\n    this._animatedView = animatedView;\n    if (this.__isNative) {\n      this.__connectAnimatedView();\n    }\n  }\n\n  __connectAnimatedView(): void {\n    invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n    const nativeViewTag: ?number = ReactNative.findNodeHandle(\n      this._animatedView,\n    );\n    invariant(\n      nativeViewTag != null,\n      'Unable to locate attached view in the native tree',\n    );\n    NativeAnimatedHelper.API.connectAnimatedNodeToView(\n      this.__getNativeTag(),\n      nativeViewTag,\n    );\n  }\n\n  __disconnectAnimatedView(): void {\n    invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n    const nativeViewTag: ?number = ReactNative.findNodeHandle(\n      this._animatedView,\n    );\n    invariant(\n      nativeViewTag != null,\n      'Unable to locate attached view in the native tree',\n    );\n    NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(\n      this.__getNativeTag(),\n      nativeViewTag,\n    );\n  }\n\n  __restoreDefaultValues(): void {\n    // When using the native driver, view properties need to be restored to\n    // their default values manually since react no longer tracks them. This\n    // is needed to handle cases where a prop driven by native animated is removed\n    // after having been changed natively by an animation.\n    if (this.__isNative) {\n      NativeAnimatedHelper.API.restoreDefaultValues(this.__getNativeTag());\n    }\n  }\n\n  __getNativeConfig(): Object {\n    const propsConfig = {};\n    for (const propKey in this._props) {\n      const value = this._props[propKey];\n      if (value instanceof AnimatedNode) {\n        value.__makeNative();\n        propsConfig[propKey] = value.__getNativeTag();\n      }\n    }\n    return {\n      type: 'props',\n      props: propsConfig,\n    };\n  }\n}\n\nmodule.exports = AnimatedProps;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedTransform = require('./AnimatedTransform');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nconst flattenStyle = require('../../StyleSheet/flattenStyle');\n\nclass AnimatedStyle extends AnimatedWithChildren {\n  _style: Object;\n\n  constructor(style: any) {\n    super();\n    style = flattenStyle(style) || {};\n    if (style.transform) {\n      style = {\n        ...style,\n        transform: new AnimatedTransform(style.transform),\n      };\n    }\n    this._style = style;\n  }\n\n  // Recursively get values for nested styles (like iOS's shadowOffset)\n  _walkStyleAndGetValues(style) {\n    const updatedStyle = {};\n    for (const key in style) {\n      const value = style[key];\n      if (value instanceof AnimatedNode) {\n        if (!value.__isNative) {\n          // We cannot use value of natively driven nodes this way as the value we have access from\n          // JS may not be up to date.\n          updatedStyle[key] = value.__getValue();\n        }\n      } else if (value && !Array.isArray(value) && typeof value === 'object') {\n        // Support animating nested values (for example: shadowOffset.height)\n        updatedStyle[key] = this._walkStyleAndGetValues(value);\n      } else {\n        updatedStyle[key] = value;\n      }\n    }\n    return updatedStyle;\n  }\n\n  __getValue(): Object {\n    return this._walkStyleAndGetValues(this._style);\n  }\n\n  // Recursively get animated values for nested styles (like iOS's shadowOffset)\n  _walkStyleAndGetAnimatedValues(style) {\n    const updatedStyle = {};\n    for (const key in style) {\n      const value = style[key];\n      if (value instanceof AnimatedNode) {\n        updatedStyle[key] = value.__getAnimatedValue();\n      } else if (value && !Array.isArray(value) && typeof value === 'object') {\n        // Support animating nested values (for example: shadowOffset.height)\n        updatedStyle[key] = this._walkStyleAndGetAnimatedValues(value);\n      }\n    }\n    return updatedStyle;\n  }\n\n  __getAnimatedValue(): Object {\n    return this._walkStyleAndGetAnimatedValues(this._style);\n  }\n\n  __attach(): void {\n    for (const key in this._style) {\n      const value = this._style[key];\n      if (value instanceof AnimatedNode) {\n        value.__addChild(this);\n      }\n    }\n  }\n\n  __detach(): void {\n    for (const key in this._style) {\n      const value = this._style[key];\n      if (value instanceof AnimatedNode) {\n        value.__removeChild(this);\n      }\n    }\n    super.__detach();\n  }\n\n  __makeNative() {\n    for (const key in this._style) {\n      const value = this._style[key];\n      if (value instanceof AnimatedNode) {\n        value.__makeNative();\n      }\n    }\n    super.__makeNative();\n  }\n\n  __getNativeConfig(): Object {\n    const styleConfig = {};\n    for (const styleKey in this._style) {\n      if (this._style[styleKey] instanceof AnimatedNode) {\n        const style = this._style[styleKey];\n        style.__makeNative();\n        styleConfig[styleKey] = style.__getNativeTag();\n      }\n      // Non-animated styles are set using `setNativeProps`, no need\n      // to pass those as a part of the node config\n    }\n    NativeAnimatedHelper.validateStyles(styleConfig);\n    return {\n      type: 'style',\n      style: styleConfig,\n    };\n  }\n}\n\nmodule.exports = AnimatedStyle;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nclass AnimatedTransform extends AnimatedWithChildren {\n  _transforms: $ReadOnlyArray<Object>;\n\n  constructor(transforms: $ReadOnlyArray<Object>) {\n    super();\n    this._transforms = transforms;\n  }\n\n  __makeNative() {\n    this._transforms.forEach(transform => {\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          value.__makeNative();\n        }\n      }\n    });\n    super.__makeNative();\n  }\n\n  __getValue(): $ReadOnlyArray<Object> {\n    return this._transforms.map(transform => {\n      const result = {};\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          result[key] = value.__getValue();\n        } else {\n          result[key] = value;\n        }\n      }\n      return result;\n    });\n  }\n\n  __getAnimatedValue(): $ReadOnlyArray<Object> {\n    return this._transforms.map(transform => {\n      const result = {};\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          result[key] = value.__getAnimatedValue();\n        } else {\n          // All transform components needed to recompose matrix\n          result[key] = value;\n        }\n      }\n      return result;\n    });\n  }\n\n  __attach(): void {\n    this._transforms.forEach(transform => {\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          value.__addChild(this);\n        }\n      }\n    });\n  }\n\n  __detach(): void {\n    this._transforms.forEach(transform => {\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          value.__removeChild(this);\n        }\n      }\n    });\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    const transConfigs = [];\n\n    this._transforms.forEach(transform => {\n      for (const key in transform) {\n        const value = transform[key];\n        if (value instanceof AnimatedNode) {\n          transConfigs.push({\n            type: 'animated',\n            property: key,\n            nodeTag: value.__getNativeTag(),\n          });\n        } else {\n          transConfigs.push({\n            type: 'static',\n            property: key,\n            value: NativeAnimatedHelper.transformDataType(value),\n          });\n        }\n      }\n    });\n\n    NativeAnimatedHelper.validateTransform(transConfigs);\n    return {\n      type: 'transform',\n      transforms: transConfigs,\n    };\n  }\n}\n\nmodule.exports = AnimatedTransform;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedSubtraction extends AnimatedWithChildren {\n  _a: AnimatedNode;\n  _b: AnimatedNode;\n\n  constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n    super();\n    this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n    this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n  }\n\n  __makeNative() {\n    this._a.__makeNative();\n    this._b.__makeNative();\n    super.__makeNative();\n  }\n\n  __getValue(): number {\n    return this._a.__getValue() - this._b.__getValue();\n  }\n\n  interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n    return new AnimatedInterpolation(this, config);\n  }\n\n  __attach(): void {\n    this._a.__addChild(this);\n    this._b.__addChild(this);\n  }\n\n  __detach(): void {\n    this._a.__removeChild(this);\n    this._b.__removeChild(this);\n    super.__detach();\n  }\n\n  __getNativeConfig(): any {\n    return {\n      type: 'subtraction',\n      input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n    };\n  }\n}\n\nmodule.exports = AnimatedSubtraction;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedNode = require('./AnimatedNode');\nconst {\n  generateNewAnimationId,\n  shouldUseNativeDriver,\n} = require('../NativeAnimatedHelper');\n\nimport type {EndCallback} from '../animations/Animation';\n\nclass AnimatedTracking extends AnimatedNode {\n  _value: AnimatedValue;\n  _parent: AnimatedNode;\n  _callback: ?EndCallback;\n  _animationConfig: Object;\n  _animationClass: any;\n  _useNativeDriver: boolean;\n\n  constructor(\n    value: AnimatedValue,\n    parent: AnimatedNode,\n    animationClass: any,\n    animationConfig: Object,\n    callback?: ?EndCallback,\n  ) {\n    super();\n    this._value = value;\n    this._parent = parent;\n    this._animationClass = animationClass;\n    this._animationConfig = animationConfig;\n    this._useNativeDriver = shouldUseNativeDriver(animationConfig);\n    this._callback = callback;\n    this.__attach();\n  }\n\n  __makeNative() {\n    this.__isNative = true;\n    this._parent.__makeNative();\n    super.__makeNative();\n    this._value.__makeNative();\n  }\n\n  __getValue(): Object {\n    return this._parent.__getValue();\n  }\n\n  __attach(): void {\n    this._parent.__addChild(this);\n    if (this._useNativeDriver) {\n      // when the tracking starts we need to convert this node to a \"native node\"\n      // so that the parent node will be made \"native\" too. This is necessary as\n      // if we don't do this `update` method will get called. At that point it\n      // may be too late as it would mean the JS driver has already started\n      // updating node values\n      this.__makeNative();\n    }\n  }\n\n  __detach(): void {\n    this._parent.__removeChild(this);\n    super.__detach();\n  }\n\n  update(): void {\n    this._value.animate(\n      new this._animationClass({\n        ...this._animationConfig,\n        toValue: (this._animationConfig.toValue: any).__getValue(),\n      }),\n      this._callback,\n    );\n  }\n\n  __getNativeConfig(): any {\n    const animation = new this._animationClass({\n      ...this._animationConfig,\n      // remove toValue from the config as it's a ref to Animated.Value\n      toValue: undefined,\n    });\n    const animationConfig = animation.__getNativeAnimationConfig();\n    return {\n      type: 'tracking',\n      animationId: generateNewAnimationId(),\n      animationConfig,\n      toValue: this._parent.__getNativeTag(),\n      value: this._value.__getNativeTag(),\n    };\n  }\n}\n\nmodule.exports = AnimatedTracking;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nconst invariant = require('invariant');\n\ntype ValueXYListenerCallback = (value: {\n  x: number,\n  y: number,\n  ...\n}) => mixed;\n\nlet _uniqueId = 1;\n\n/**\n * 2D Value for driving 2D animations, such as pan gestures. Almost identical\n * API to normal `Animated.Value`, but multiplexed.\n *\n * See https://reactnative.dev/docs/animatedvaluexy.html\n */\nclass AnimatedValueXY extends AnimatedWithChildren {\n  x: AnimatedValue;\n  y: AnimatedValue;\n  _listeners: {\n    [key: string]: {\n      x: string,\n      y: string,\n      ...\n    },\n    ...,\n  };\n\n  constructor(\n    valueIn?: ?{\n      +x: number | AnimatedValue,\n      +y: number | AnimatedValue,\n      ...\n    },\n  ) {\n    super();\n    const value: any = valueIn || {x: 0, y: 0}; // @flowfixme: shouldn't need `: any`\n    if (typeof value.x === 'number' && typeof value.y === 'number') {\n      this.x = new AnimatedValue(value.x);\n      this.y = new AnimatedValue(value.y);\n    } else {\n      invariant(\n        value.x instanceof AnimatedValue && value.y instanceof AnimatedValue,\n        'AnimatedValueXY must be initialized with an object of numbers or ' +\n          'AnimatedValues.',\n      );\n      this.x = value.x;\n      this.y = value.y;\n    }\n    this._listeners = {};\n  }\n\n  /**\n   * Directly set the value. This will stop any animations running on the value\n   * and update all the bound properties.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#setvalue\n   */\n  setValue(value: {x: number, y: number, ...}) {\n    this.x.setValue(value.x);\n    this.y.setValue(value.y);\n  }\n\n  /**\n   * Sets an offset that is applied on top of whatever value is set, whether\n   * via `setValue`, an animation, or `Animated.event`. Useful for compensating\n   * things like the start of a pan gesture.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#setoffset\n   */\n  setOffset(offset: {x: number, y: number, ...}) {\n    this.x.setOffset(offset.x);\n    this.y.setOffset(offset.y);\n  }\n\n  /**\n   * Merges the offset value into the base value and resets the offset to zero.\n   * The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#flattenoffset\n   */\n  flattenOffset(): void {\n    this.x.flattenOffset();\n    this.y.flattenOffset();\n  }\n\n  /**\n   * Sets the offset value to the base value, and resets the base value to\n   * zero. The final output of the value is unchanged.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#extractoffset\n   */\n  extractOffset(): void {\n    this.x.extractOffset();\n    this.y.extractOffset();\n  }\n\n  __getValue(): {\n    x: number,\n    y: number,\n    ...\n  } {\n    return {\n      x: this.x.__getValue(),\n      y: this.y.__getValue(),\n    };\n  }\n\n  /**\n   * Stops any animation and resets the value to its original.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#resetanimation\n   */\n  resetAnimation(\n    callback?: (value: {\n      x: number,\n      y: number,\n      ...\n    }) => void,\n  ): void {\n    this.x.resetAnimation();\n    this.y.resetAnimation();\n    callback && callback(this.__getValue());\n  }\n\n  /**\n   * Stops any running animation or tracking. `callback` is invoked with the\n   * final value after stopping the animation, which is useful for updating\n   * state to match the animation position with layout.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#stopanimation\n   */\n  stopAnimation(\n    callback?: (value: {\n      x: number,\n      y: number,\n      ...\n    }) => void,\n  ): void {\n    this.x.stopAnimation();\n    this.y.stopAnimation();\n    callback && callback(this.__getValue());\n  }\n\n  /**\n   * Adds an asynchronous listener to the value so you can observe updates from\n   * animations.  This is useful because there is no way to synchronously read\n   * the value because it might be driven natively.\n   *\n   * Returns a string that serves as an identifier for the listener.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#addlistener\n   */\n  addListener(callback: ValueXYListenerCallback): string {\n    const id = String(_uniqueId++);\n    const jointCallback = ({value: number}) => {\n      callback(this.__getValue());\n    };\n    this._listeners[id] = {\n      x: this.x.addListener(jointCallback),\n      y: this.y.addListener(jointCallback),\n    };\n    return id;\n  }\n\n  /**\n   * Unregister a listener. The `id` param shall match the identifier\n   * previously returned by `addListener()`.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#removelistener\n   */\n  removeListener(id: string): void {\n    this.x.removeListener(this._listeners[id].x);\n    this.y.removeListener(this._listeners[id].y);\n    delete this._listeners[id];\n  }\n\n  /**\n   * Remove all registered listeners.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#removealllisteners\n   */\n  removeAllListeners(): void {\n    this.x.removeAllListeners();\n    this.y.removeAllListeners();\n    this._listeners = {};\n  }\n\n  /**\n   * Converts `{x, y}` into `{left, top}` for use in style.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#getlayout\n   */\n  getLayout(): {[key: string]: AnimatedValue, ...} {\n    return {\n      left: this.x,\n      top: this.y,\n    };\n  }\n\n  /**\n   * Converts `{x, y}` into a useable translation transform.\n   *\n   * See https://reactnative.dev/docs/animatedvaluexy.html#gettranslatetransform\n   */\n  getTranslateTransform(): Array<{[key: string]: AnimatedValue, ...}> {\n    return [{translateX: this.x}, {translateY: this.y}];\n  }\n}\n\nmodule.exports = AnimatedValueXY;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Animation = require('./Animation');\n\nconst {shouldUseNativeDriver} = require('../NativeAnimatedHelper');\n\nimport type AnimatedValue from '../nodes/AnimatedValue';\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nexport type DecayAnimationConfig = {\n  ...AnimationConfig,\n  velocity:\n    | number\n    | {\n        x: number,\n        y: number,\n        ...\n      },\n  deceleration?: number,\n};\n\nexport type DecayAnimationConfigSingle = {\n  ...AnimationConfig,\n  velocity: number,\n  deceleration?: number,\n};\n\nclass DecayAnimation extends Animation {\n  _startTime: number;\n  _lastValue: number;\n  _fromValue: number;\n  _deceleration: number;\n  _velocity: number;\n  _onUpdate: (value: number) => void;\n  _animationFrame: any;\n  _useNativeDriver: boolean;\n\n  constructor(config: DecayAnimationConfigSingle) {\n    super();\n    this._deceleration = config.deceleration ?? 0.998;\n    this._velocity = config.velocity;\n    this._useNativeDriver = shouldUseNativeDriver(config);\n    this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;\n    this.__iterations = config.iterations ?? 1;\n  }\n\n  __getNativeAnimationConfig(): {|\n    deceleration: number,\n    iterations: number,\n    type: $TEMPORARY$string<'decay'>,\n    velocity: number,\n  |} {\n    return {\n      type: 'decay',\n      deceleration: this._deceleration,\n      velocity: this._velocity,\n      iterations: this.__iterations,\n    };\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    this.__active = true;\n    this._lastValue = fromValue;\n    this._fromValue = fromValue;\n    this._onUpdate = onUpdate;\n    this.__onEnd = onEnd;\n    this._startTime = Date.now();\n    if (this._useNativeDriver) {\n      this.__startNativeAnimation(animatedValue);\n    } else {\n      this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n    }\n  }\n\n  onUpdate(): void {\n    const now = Date.now();\n\n    const value =\n      this._fromValue +\n      (this._velocity / (1 - this._deceleration)) *\n        (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n    this._onUpdate(value);\n\n    if (Math.abs(this._lastValue - value) < 0.1) {\n      this.__debouncedOnEnd({finished: true});\n      return;\n    }\n\n    this._lastValue = value;\n    if (this.__active) {\n      this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n    }\n  }\n\n  stop(): void {\n    super.stop();\n    this.__active = false;\n    global.cancelAnimationFrame(this._animationFrame);\n    this.__debouncedOnEnd({finished: false});\n  }\n}\n\nmodule.exports = DecayAnimation;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nimport type AnimatedValue from '../nodes/AnimatedValue';\n\nexport type EndResult = {finished: boolean, ...};\nexport type EndCallback = (result: EndResult) => void;\n\nexport type AnimationConfig = {\n  isInteraction?: boolean,\n  useNativeDriver: boolean,\n  onComplete?: ?EndCallback,\n  iterations?: number,\n};\n\nlet startNativeAnimationNextId = 1;\n\n// Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\nclass Animation {\n  __active: boolean;\n  __isInteraction: boolean;\n  __nativeId: number;\n  __onEnd: ?EndCallback;\n  __iterations: number;\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {}\n  stop(): void {\n    if (this.__nativeId) {\n      NativeAnimatedHelper.API.stopAnimation(this.__nativeId);\n    }\n  }\n  __getNativeAnimationConfig(): any {\n    // Subclasses that have corresponding animation implementation done in native\n    // should override this method\n    throw new Error('This animation type cannot be offloaded to native');\n  }\n  // Helper function for subclasses to make sure onEnd is only called once.\n  __debouncedOnEnd(result: EndResult): void {\n    const onEnd = this.__onEnd;\n    this.__onEnd = null;\n    onEnd && onEnd(result);\n  }\n  __startNativeAnimation(animatedValue: AnimatedValue): void {\n    const startNativeAnimationWaitId = `${startNativeAnimationNextId}:startAnimation`;\n    startNativeAnimationNextId += 1;\n    NativeAnimatedHelper.API.setWaitingForIdentifier(\n      startNativeAnimationWaitId,\n    );\n    try {\n      animatedValue.__makeNative();\n      this.__nativeId = NativeAnimatedHelper.generateNewAnimationId();\n      NativeAnimatedHelper.API.startAnimatingNode(\n        this.__nativeId,\n        animatedValue.__getNativeTag(),\n        this.__getNativeAnimationConfig(),\n        this.__debouncedOnEnd.bind(this),\n      );\n    } catch (e) {\n      throw e;\n    } finally {\n      NativeAnimatedHelper.API.unsetWaitingForIdentifier(\n        startNativeAnimationWaitId,\n      );\n    }\n  }\n}\n\nmodule.exports = Animation;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedValue = require('../nodes/AnimatedValue');\nconst AnimatedValueXY = require('../nodes/AnimatedValueXY');\nconst AnimatedInterpolation = require('../nodes/AnimatedInterpolation');\nconst Animation = require('./Animation');\nconst SpringConfig = require('../SpringConfig');\n\nconst invariant = require('invariant');\n\nconst {shouldUseNativeDriver} = require('../NativeAnimatedHelper');\n\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nexport type SpringAnimationConfig = {\n  ...AnimationConfig,\n  toValue:\n    | number\n    | AnimatedValue\n    | {\n        x: number,\n        y: number,\n        ...\n      }\n    | AnimatedValueXY\n    | AnimatedInterpolation,\n  overshootClamping?: boolean,\n  restDisplacementThreshold?: number,\n  restSpeedThreshold?: number,\n  velocity?:\n    | number\n    | {\n        x: number,\n        y: number,\n        ...\n      },\n  bounciness?: number,\n  speed?: number,\n  tension?: number,\n  friction?: number,\n  stiffness?: number,\n  damping?: number,\n  mass?: number,\n  delay?: number,\n};\n\nexport type SpringAnimationConfigSingle = {\n  ...AnimationConfig,\n  toValue: number | AnimatedValue | AnimatedInterpolation,\n  overshootClamping?: boolean,\n  restDisplacementThreshold?: number,\n  restSpeedThreshold?: number,\n  velocity?: number,\n  bounciness?: number,\n  speed?: number,\n  tension?: number,\n  friction?: number,\n  stiffness?: number,\n  damping?: number,\n  mass?: number,\n  delay?: number,\n};\n\nclass SpringAnimation extends Animation {\n  _overshootClamping: boolean;\n  _restDisplacementThreshold: number;\n  _restSpeedThreshold: number;\n  _lastVelocity: number;\n  _startPosition: number;\n  _lastPosition: number;\n  _fromValue: number;\n  _toValue: any;\n  _stiffness: number;\n  _damping: number;\n  _mass: number;\n  _initialVelocity: number;\n  _delay: number;\n  _timeout: any;\n  _startTime: number;\n  _lastTime: number;\n  _frameTime: number;\n  _onUpdate: (value: number) => void;\n  _animationFrame: any;\n  _useNativeDriver: boolean;\n\n  constructor(config: SpringAnimationConfigSingle) {\n    super();\n\n    this._overshootClamping = config.overshootClamping ?? false;\n    this._restDisplacementThreshold = config.restDisplacementThreshold ?? 0.001;\n    this._restSpeedThreshold = config.restSpeedThreshold ?? 0.001;\n    this._initialVelocity = config.velocity ?? 0;\n    this._lastVelocity = config.velocity ?? 0;\n    this._toValue = config.toValue;\n    this._delay = config.delay ?? 0;\n    this._useNativeDriver = shouldUseNativeDriver(config);\n    this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;\n    this.__iterations = config.iterations ?? 1;\n\n    if (\n      config.stiffness !== undefined ||\n      config.damping !== undefined ||\n      config.mass !== undefined\n    ) {\n      invariant(\n        config.bounciness === undefined &&\n          config.speed === undefined &&\n          config.tension === undefined &&\n          config.friction === undefined,\n        'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one',\n      );\n      this._stiffness = config.stiffness ?? 100;\n      this._damping = config.damping ?? 10;\n      this._mass = config.mass ?? 1;\n    } else if (config.bounciness !== undefined || config.speed !== undefined) {\n      // Convert the origami bounciness/speed values to stiffness/damping\n      // We assume mass is 1.\n      invariant(\n        config.tension === undefined &&\n          config.friction === undefined &&\n          config.stiffness === undefined &&\n          config.damping === undefined &&\n          config.mass === undefined,\n        'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one',\n      );\n      const springConfig = SpringConfig.fromBouncinessAndSpeed(\n        config.bounciness ?? 8,\n        config.speed ?? 12,\n      );\n      this._stiffness = springConfig.stiffness;\n      this._damping = springConfig.damping;\n      this._mass = 1;\n    } else {\n      // Convert the origami tension/friction values to stiffness/damping\n      // We assume mass is 1.\n      const springConfig = SpringConfig.fromOrigamiTensionAndFriction(\n        config.tension ?? 40,\n        config.friction ?? 7,\n      );\n      this._stiffness = springConfig.stiffness;\n      this._damping = springConfig.damping;\n      this._mass = 1;\n    }\n\n    invariant(this._stiffness > 0, 'Stiffness value must be greater than 0');\n    invariant(this._damping > 0, 'Damping value must be greater than 0');\n    invariant(this._mass > 0, 'Mass value must be greater than 0');\n  }\n\n  __getNativeAnimationConfig(): {|\n    damping: number,\n    initialVelocity: number,\n    iterations: number,\n    mass: number,\n    overshootClamping: boolean,\n    restDisplacementThreshold: number,\n    restSpeedThreshold: number,\n    stiffness: number,\n    toValue: any,\n    type: $TEMPORARY$string<'spring'>,\n  |} {\n    return {\n      type: 'spring',\n      overshootClamping: this._overshootClamping,\n      restDisplacementThreshold: this._restDisplacementThreshold,\n      restSpeedThreshold: this._restSpeedThreshold,\n      stiffness: this._stiffness,\n      damping: this._damping,\n      mass: this._mass,\n      initialVelocity: this._initialVelocity ?? this._lastVelocity,\n      toValue: this._toValue,\n      iterations: this.__iterations,\n    };\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    this.__active = true;\n    this._startPosition = fromValue;\n    this._lastPosition = this._startPosition;\n\n    this._onUpdate = onUpdate;\n    this.__onEnd = onEnd;\n    this._lastTime = Date.now();\n    this._frameTime = 0.0;\n\n    if (previousAnimation instanceof SpringAnimation) {\n      const internalState = previousAnimation.getInternalState();\n      this._lastPosition = internalState.lastPosition;\n      this._lastVelocity = internalState.lastVelocity;\n      // Set the initial velocity to the last velocity\n      this._initialVelocity = this._lastVelocity;\n      this._lastTime = internalState.lastTime;\n    }\n\n    const start = () => {\n      if (this._useNativeDriver) {\n        this.__startNativeAnimation(animatedValue);\n      } else {\n        this.onUpdate();\n      }\n    };\n\n    //  If this._delay is more than 0, we start after the timeout.\n    if (this._delay) {\n      this._timeout = setTimeout(start, this._delay);\n    } else {\n      start();\n    }\n  }\n\n  getInternalState(): Object {\n    return {\n      lastPosition: this._lastPosition,\n      lastVelocity: this._lastVelocity,\n      lastTime: this._lastTime,\n    };\n  }\n\n  /**\n   * This spring model is based off of a damped harmonic oscillator\n   * (https://en.wikipedia.org/wiki/Harmonic_oscillator#Damped_harmonic_oscillator).\n   *\n   * We use the closed form of the second order differential equation:\n   *\n   * x'' + (2ζ⍵_0)x' + ⍵^2x = 0\n   *\n   * where\n   *    ⍵_0 = √(k / m) (undamped angular frequency of the oscillator),\n   *    ζ = c / 2√mk (damping ratio),\n   *    c = damping constant\n   *    k = stiffness\n   *    m = mass\n   *\n   * The derivation of the closed form is described in detail here:\n   * http://planetmath.org/sites/default/files/texpdf/39745.pdf\n   *\n   * This algorithm happens to match the algorithm used by CASpringAnimation,\n   * a QuartzCore (iOS) API that creates spring animations.\n   */\n  onUpdate(): void {\n    // If for some reason we lost a lot of frames (e.g. process large payload or\n    // stopped in the debugger), we only advance by 4 frames worth of\n    // computation and will continue on the next frame. It's better to have it\n    // running at faster speed than jumping to the end.\n    const MAX_STEPS = 64;\n    let now = Date.now();\n    if (now > this._lastTime + MAX_STEPS) {\n      now = this._lastTime + MAX_STEPS;\n    }\n\n    const deltaTime = (now - this._lastTime) / 1000;\n    this._frameTime += deltaTime;\n\n    const c: number = this._damping;\n    const m: number = this._mass;\n    const k: number = this._stiffness;\n    const v0: number = -this._initialVelocity;\n\n    const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n    const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n    const omega1 = omega0 * Math.sqrt(1.0 - zeta * zeta); // exponential decay\n    const x0 = this._toValue - this._startPosition; // calculate the oscillation from x0 = 1 to x = 0\n\n    let position = 0.0;\n    let velocity = 0.0;\n    const t = this._frameTime;\n    if (zeta < 1) {\n      // Under damped\n      const envelope = Math.exp(-zeta * omega0 * t);\n      position =\n        this._toValue -\n        envelope *\n          (((v0 + zeta * omega0 * x0) / omega1) * Math.sin(omega1 * t) +\n            x0 * Math.cos(omega1 * t));\n      // This looks crazy -- it's actually just the derivative of the\n      // oscillation function\n      velocity =\n        zeta *\n          omega0 *\n          envelope *\n          ((Math.sin(omega1 * t) * (v0 + zeta * omega0 * x0)) / omega1 +\n            x0 * Math.cos(omega1 * t)) -\n        envelope *\n          (Math.cos(omega1 * t) * (v0 + zeta * omega0 * x0) -\n            omega1 * x0 * Math.sin(omega1 * t));\n    } else {\n      // Critically damped\n      const envelope = Math.exp(-omega0 * t);\n      position = this._toValue - envelope * (x0 + (v0 + omega0 * x0) * t);\n      velocity =\n        envelope * (v0 * (t * omega0 - 1) + t * x0 * (omega0 * omega0));\n    }\n\n    this._lastTime = now;\n    this._lastPosition = position;\n    this._lastVelocity = velocity;\n\n    this._onUpdate(position);\n    if (!this.__active) {\n      // a listener might have stopped us in _onUpdate\n      return;\n    }\n\n    // Conditions for stopping the spring animation\n    let isOvershooting = false;\n    if (this._overshootClamping && this._stiffness !== 0) {\n      if (this._startPosition < this._toValue) {\n        isOvershooting = position > this._toValue;\n      } else {\n        isOvershooting = position < this._toValue;\n      }\n    }\n    const isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n    let isDisplacement = true;\n    if (this._stiffness !== 0) {\n      isDisplacement =\n        Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n    }\n\n    if (isOvershooting || (isVelocity && isDisplacement)) {\n      if (this._stiffness !== 0) {\n        // Ensure that we end up with a round value\n        this._lastPosition = this._toValue;\n        this._lastVelocity = 0;\n        this._onUpdate(this._toValue);\n      }\n\n      this.__debouncedOnEnd({finished: true});\n      return;\n    }\n    this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n  }\n\n  stop(): void {\n    super.stop();\n    this.__active = false;\n    clearTimeout(this._timeout);\n    global.cancelAnimationFrame(this._animationFrame);\n    this.__debouncedOnEnd({finished: false});\n  }\n}\n\nmodule.exports = SpringAnimation;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\ntype SpringConfigType = {\n  stiffness: number,\n  damping: number,\n  ...\n};\n\nfunction stiffnessFromOrigamiValue(oValue) {\n  return (oValue - 30) * 3.62 + 194;\n}\n\nfunction dampingFromOrigamiValue(oValue) {\n  return (oValue - 8) * 3 + 25;\n}\n\nfunction fromOrigamiTensionAndFriction(\n  tension: number,\n  friction: number,\n): SpringConfigType {\n  return {\n    stiffness: stiffnessFromOrigamiValue(tension),\n    damping: dampingFromOrigamiValue(friction),\n  };\n}\n\nfunction fromBouncinessAndSpeed(\n  bounciness: number,\n  speed: number,\n): SpringConfigType {\n  function normalize(value, startValue, endValue) {\n    return (value - startValue) / (endValue - startValue);\n  }\n\n  function projectNormal(n, start, end) {\n    return start + n * (end - start);\n  }\n\n  function linearInterpolation(t, start, end) {\n    return t * end + (1 - t) * start;\n  }\n\n  function quadraticOutInterpolation(t, start, end) {\n    return linearInterpolation(2 * t - t * t, start, end);\n  }\n\n  function b3Friction1(x) {\n    return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28;\n  }\n\n  function b3Friction2(x) {\n    return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2;\n  }\n\n  function b3Friction3(x) {\n    return (\n      0.00000045 * Math.pow(x, 3) -\n      0.000332 * Math.pow(x, 2) +\n      0.1078 * x +\n      5.84\n    );\n  }\n\n  function b3Nobounce(tension) {\n    if (tension <= 18) {\n      return b3Friction1(tension);\n    } else if (tension > 18 && tension <= 44) {\n      return b3Friction2(tension);\n    } else {\n      return b3Friction3(tension);\n    }\n  }\n\n  let b = normalize(bounciness / 1.7, 0, 20);\n  b = projectNormal(b, 0, 0.8);\n  const s = normalize(speed / 1.7, 0, 20);\n  const bouncyTension = projectNormal(s, 0.5, 200);\n  const bouncyFriction = quadraticOutInterpolation(\n    b,\n    b3Nobounce(bouncyTension),\n    0.01,\n  );\n\n  return {\n    stiffness: stiffnessFromOrigamiValue(bouncyTension),\n    damping: dampingFromOrigamiValue(bouncyFriction),\n  };\n}\n\nmodule.exports = {\n  fromOrigamiTensionAndFriction,\n  fromBouncinessAndSpeed,\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst AnimatedValue = require('../nodes/AnimatedValue');\nconst AnimatedValueXY = require('../nodes/AnimatedValueXY');\nconst AnimatedInterpolation = require('../nodes/AnimatedInterpolation');\nconst Animation = require('./Animation');\n\nconst {shouldUseNativeDriver} = require('../NativeAnimatedHelper');\n\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nexport type TimingAnimationConfig = {\n  ...AnimationConfig,\n  toValue:\n    | number\n    | AnimatedValue\n    | {\n        x: number,\n        y: number,\n        ...\n      }\n    | AnimatedValueXY\n    | AnimatedInterpolation,\n  easing?: (value: number) => number,\n  duration?: number,\n  delay?: number,\n};\n\nexport type TimingAnimationConfigSingle = {\n  ...AnimationConfig,\n  toValue: number | AnimatedValue | AnimatedInterpolation,\n  easing?: (value: number) => number,\n  duration?: number,\n  delay?: number,\n};\n\nlet _easeInOut;\nfunction easeInOut() {\n  if (!_easeInOut) {\n    const Easing = require('../Easing');\n    _easeInOut = Easing.inOut(Easing.ease);\n  }\n  return _easeInOut;\n}\n\nclass TimingAnimation extends Animation {\n  _startTime: number;\n  _fromValue: number;\n  _toValue: any;\n  _duration: number;\n  _delay: number;\n  _easing: (value: number) => number;\n  _onUpdate: (value: number) => void;\n  _animationFrame: any;\n  _timeout: any;\n  _useNativeDriver: boolean;\n\n  constructor(config: TimingAnimationConfigSingle) {\n    super();\n    this._toValue = config.toValue;\n    this._easing = config.easing ?? easeInOut();\n    this._duration = config.duration ?? 500;\n    this._delay = config.delay ?? 0;\n    this.__iterations = config.iterations ?? 1;\n    this._useNativeDriver = shouldUseNativeDriver(config);\n    this.__isInteraction = config.isInteraction ?? !this._useNativeDriver;\n  }\n\n  __getNativeAnimationConfig(): any {\n    const frameDuration = 1000.0 / 60.0;\n    const frames = [];\n    const numFrames = Math.round(this._duration / frameDuration);\n    for (let frame = 0; frame < numFrames; frame++) {\n      frames.push(this._easing(frame / numFrames));\n    }\n    frames.push(this._easing(1));\n    return {\n      type: 'frames',\n      frames,\n      toValue: this._toValue,\n      iterations: this.__iterations,\n    };\n  }\n\n  start(\n    fromValue: number,\n    onUpdate: (value: number) => void,\n    onEnd: ?EndCallback,\n    previousAnimation: ?Animation,\n    animatedValue: AnimatedValue,\n  ): void {\n    this.__active = true;\n    this._fromValue = fromValue;\n    this._onUpdate = onUpdate;\n    this.__onEnd = onEnd;\n\n    const start = () => {\n      // Animations that sometimes have 0 duration and sometimes do not\n      // still need to use the native driver when duration is 0 so as to\n      // not cause intermixed JS and native animations.\n      if (this._duration === 0 && !this._useNativeDriver) {\n        this._onUpdate(this._toValue);\n        this.__debouncedOnEnd({finished: true});\n      } else {\n        this._startTime = Date.now();\n        if (this._useNativeDriver) {\n          this.__startNativeAnimation(animatedValue);\n        } else {\n          this._animationFrame = requestAnimationFrame(\n            this.onUpdate.bind(this),\n          );\n        }\n      }\n    };\n    if (this._delay) {\n      this._timeout = setTimeout(start, this._delay);\n    } else {\n      start();\n    }\n  }\n\n  onUpdate(): void {\n    const now = Date.now();\n    if (now >= this._startTime + this._duration) {\n      if (this._duration === 0) {\n        this._onUpdate(this._toValue);\n      } else {\n        this._onUpdate(\n          this._fromValue + this._easing(1) * (this._toValue - this._fromValue),\n        );\n      }\n      this.__debouncedOnEnd({finished: true});\n      return;\n    }\n\n    this._onUpdate(\n      this._fromValue +\n        this._easing((now - this._startTime) / this._duration) *\n          (this._toValue - this._fromValue),\n    );\n    if (this.__active) {\n      this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n    }\n  }\n\n  stop(): void {\n    super.stop();\n    this.__active = false;\n    clearTimeout(this._timeout);\n    global.cancelAnimationFrame(this._animationFrame);\n    this.__debouncedOnEnd({finished: false});\n  }\n}\n\nmodule.exports = TimingAnimation;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nlet ease;\n\n/**\n * The `Easing` module implements common easing functions. This module is used\n * by [Animate.timing()](docs/animate.html#timing) to convey physically\n * believable motion in animations.\n *\n * You can find a visualization of some common easing functions at\n * http://easings.net/\n *\n * ### Predefined animations\n *\n * The `Easing` module provides several predefined animations through the\n * following methods:\n *\n * - [`back`](docs/easing.html#back) provides a simple animation where the\n *   object goes slightly back before moving forward\n * - [`bounce`](docs/easing.html#bounce) provides a bouncing animation\n * - [`ease`](docs/easing.html#ease) provides a simple inertial animation\n * - [`elastic`](docs/easing.html#elastic) provides a simple spring interaction\n *\n * ### Standard functions\n *\n * Three standard easing functions are provided:\n *\n * - [`linear`](docs/easing.html#linear)\n * - [`quad`](docs/easing.html#quad)\n * - [`cubic`](docs/easing.html#cubic)\n *\n * The [`poly`](docs/easing.html#poly) function can be used to implement\n * quartic, quintic, and other higher power functions.\n *\n * ### Additional functions\n *\n * Additional mathematical functions are provided by the following methods:\n *\n * - [`bezier`](docs/easing.html#bezier) provides a cubic bezier curve\n * - [`circle`](docs/easing.html#circle) provides a circular function\n * - [`sin`](docs/easing.html#sin) provides a sinusoidal function\n * - [`exp`](docs/easing.html#exp) provides an exponential function\n *\n * The following helpers are used to modify other easing functions.\n *\n * - [`in`](docs/easing.html#in) runs an easing function forwards\n * - [`inOut`](docs/easing.html#inout) makes any easing function symmetrical\n * - [`out`](docs/easing.html#out) runs an easing function backwards\n */\nclass Easing {\n  /**\n   * A stepping function, returns 1 for any positive value of `n`.\n   */\n  static step0(n: number): number {\n    return n > 0 ? 1 : 0;\n  }\n\n  /**\n   * A stepping function, returns 1 if `n` is greater than or equal to 1.\n   */\n  static step1(n: number): number {\n    return n >= 1 ? 1 : 0;\n  }\n\n  /**\n   * A linear function, `f(t) = t`. Position correlates to elapsed time one to\n   * one.\n   *\n   * http://cubic-bezier.com/#0,0,1,1\n   */\n  static linear(t: number): number {\n    return t;\n  }\n\n  /**\n   * A simple inertial interaction, similar to an object slowly accelerating to\n   * speed.\n   *\n   * http://cubic-bezier.com/#.42,0,1,1\n   */\n  static ease(t: number): number {\n    if (!ease) {\n      ease = Easing.bezier(0.42, 0, 1, 1);\n    }\n    return ease(t);\n  }\n\n  /**\n   * A quadratic function, `f(t) = t * t`. Position equals the square of elapsed\n   * time.\n   *\n   * http://easings.net/#easeInQuad\n   */\n  static quad(t: number): number {\n    return t * t;\n  }\n\n  /**\n   * A cubic function, `f(t) = t * t * t`. Position equals the cube of elapsed\n   * time.\n   *\n   * http://easings.net/#easeInCubic\n   */\n  static cubic(t: number): number {\n    return t * t * t;\n  }\n\n  /**\n   * A power function. Position is equal to the Nth power of elapsed time.\n   *\n   * n = 4: http://easings.net/#easeInQuart\n   * n = 5: http://easings.net/#easeInQuint\n   */\n  static poly(n: number): (t: number) => number {\n    return (t: number) => Math.pow(t, n);\n  }\n\n  /**\n   * A sinusoidal function.\n   *\n   * http://easings.net/#easeInSine\n   */\n  static sin(t: number): number {\n    return 1 - Math.cos((t * Math.PI) / 2);\n  }\n\n  /**\n   * A circular function.\n   *\n   * http://easings.net/#easeInCirc\n   */\n  static circle(t: number): number {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n\n  /**\n   * An exponential function.\n   *\n   * http://easings.net/#easeInExpo\n   */\n  static exp(t: number): number {\n    return Math.pow(2, 10 * (t - 1));\n  }\n\n  /**\n   * A simple elastic interaction, similar to a spring oscillating back and\n   * forth.\n   *\n   * Default bounciness is 1, which overshoots a little bit once. 0 bounciness\n   * doesn't overshoot at all, and bounciness of N > 1 will overshoot about N\n   * times.\n   *\n   * http://easings.net/#easeInElastic\n   */\n  static elastic(bounciness: number = 1): (t: number) => number {\n    const p = bounciness * Math.PI;\n    return t => 1 - Math.pow(Math.cos((t * Math.PI) / 2), 3) * Math.cos(t * p);\n  }\n\n  /**\n   * Use with `Animated.parallel()` to create a simple effect where the object\n   * animates back slightly as the animation starts.\n   *\n   * Wolfram Plot:\n   *\n   * - http://tiny.cc/back_default (s = 1.70158, default)\n   */\n  static back(s: number = 1.70158): (t: number) => number {\n    return t => t * t * ((s + 1) * t - s);\n  }\n\n  /**\n   * Provides a simple bouncing effect.\n   *\n   * http://easings.net/#easeInBounce\n   */\n  static bounce(t: number): number {\n    if (t < 1 / 2.75) {\n      return 7.5625 * t * t;\n    }\n\n    if (t < 2 / 2.75) {\n      const t2 = t - 1.5 / 2.75;\n      return 7.5625 * t2 * t2 + 0.75;\n    }\n\n    if (t < 2.5 / 2.75) {\n      const t2 = t - 2.25 / 2.75;\n      return 7.5625 * t2 * t2 + 0.9375;\n    }\n\n    const t2 = t - 2.625 / 2.75;\n    return 7.5625 * t2 * t2 + 0.984375;\n  }\n\n  /**\n   * Provides a cubic bezier curve, equivalent to CSS Transitions'\n   * `transition-timing-function`.\n   *\n   * A useful tool to visualize cubic bezier curves can be found at\n   * http://cubic-bezier.com/\n   */\n  static bezier(\n    x1: number,\n    y1: number,\n    x2: number,\n    y2: number,\n  ): (t: number) => number {\n    const _bezier = require('./bezier');\n    return _bezier(x1, y1, x2, y2);\n  }\n\n  /**\n   * Runs an easing function forwards.\n   */\n  static in(easing: (t: number) => number): (t: number) => number {\n    return easing;\n  }\n\n  /**\n   * Runs an easing function backwards.\n   */\n  static out(easing: (t: number) => number): (t: number) => number {\n    return t => 1 - easing(1 - t);\n  }\n\n  /**\n   * Makes any easing function symmetrical. The easing function will run\n   * forwards for half of the duration, then backwards for the rest of the\n   * duration.\n   */\n  static inOut(easing: (t: number) => number): (t: number) => number {\n    return t => {\n      if (t < 0.5) {\n        return easing(t * 2) / 2;\n      }\n      return 1 - easing((1 - t) * 2) / 2;\n    };\n  }\n}\n\nmodule.exports = Easing;\n","/**\n * Portions 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 * @flow strict\n * @format\n */\n\n/**\n * BezierEasing - use bezier curve for transition easing function\n * https://github.com/gre/bezier-easing\n * @copyright 2014-2015 Gaëtan Renaudeau. MIT License.\n */\n\n'use strict';\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nconst NEWTON_ITERATIONS = 4;\nconst NEWTON_MIN_SLOPE = 0.001;\nconst SUBDIVISION_PRECISION = 0.0000001;\nconst SUBDIVISION_MAX_ITERATIONS = 10;\n\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nconst float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A(aA1, aA2) {\n  return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\nfunction B(aA1, aA2) {\n  return 3.0 * aA2 - 6.0 * aA1;\n}\nfunction C(aA1) {\n  return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT, aA1, aA2) {\n  return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT, aA1, aA2) {\n  return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(aX, _aA, _aB, mX1, mX2) {\n  let currentX,\n    currentT,\n    i = 0,\n    aA = _aA,\n    aB = _aB;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (\n    Math.abs(currentX) > SUBDIVISION_PRECISION &&\n    ++i < SUBDIVISION_MAX_ITERATIONS\n  );\n  return currentT;\n}\n\nfunction newtonRaphsonIterate(aX, _aGuessT, mX1, mX2) {\n  let aGuessT = _aGuessT;\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\n    const currentSlope = getSlope(aGuessT, mX1, mX2);\n    if (currentSlope === 0.0) {\n      return aGuessT;\n    }\n    const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n    aGuessT -= currentX / currentSlope;\n  }\n  return aGuessT;\n}\n\nmodule.exports = function bezier(\n  mX1: number,\n  mY1: number,\n  mX2: number,\n  mY2: number,\n): (x: number) => number {\n  if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  // Precompute samples table\n  const sampleValues = float32ArraySupported\n    ? new Float32Array(kSplineTableSize)\n    : new Array(kSplineTableSize);\n  if (mX1 !== mY1 || mX2 !== mY2) {\n    for (let i = 0; i < kSplineTableSize; ++i) {\n      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  function getTForX(aX) {\n    let intervalStart = 0.0;\n    let currentSample = 1;\n    const lastSample = kSplineTableSize - 1;\n\n    for (\n      ;\n      currentSample !== lastSample && sampleValues[currentSample] <= aX;\n      ++currentSample\n    ) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    const dist =\n      (aX - sampleValues[currentSample]) /\n      (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    const guessForT = intervalStart + dist * kSampleStepSize;\n\n    const initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(\n        aX,\n        intervalStart,\n        intervalStart + kSampleStepSize,\n        mX1,\n        mX2,\n      );\n    }\n  }\n\n  return function BezierEasing(x: number): number {\n    if (mX1 === mY1 && mX2 === mY2) {\n      return x; // linear\n    }\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n};\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst View = require('../Components/View/View');\nconst {AnimatedEvent} = require('./AnimatedEvent');\nconst AnimatedProps = require('./nodes/AnimatedProps');\nconst React = require('react');\nconst NativeAnimatedHelper = require('./NativeAnimatedHelper');\n\nconst invariant = require('invariant');\nconst setAndForwardRef = require('../Utilities/setAndForwardRef');\n\nlet animatedComponentNextId = 1;\n\nexport type AnimatedComponentType<\n  Props: {+[string]: mixed, ...},\n  Instance,\n> = React.AbstractComponent<\n  $ObjMap<\n    Props &\n      $ReadOnly<{\n        passthroughAnimatedPropExplicitValues?: React.ElementConfig<\n          typeof View,\n        >,\n      }>,\n    () => any,\n  >,\n  Instance,\n>;\n\nfunction createAnimatedComponent<Props: {+[string]: mixed, ...}, Instance>(\n  Component: React.AbstractComponent<Props, Instance>,\n): AnimatedComponentType<Props, Instance> {\n  invariant(\n    typeof Component !== 'function' ||\n      (Component.prototype && Component.prototype.isReactComponent),\n    '`createAnimatedComponent` does not support stateless functional components; ' +\n      'use a class component instead.',\n  );\n\n  class AnimatedComponent extends React.Component<Object> {\n    _component: any; // TODO T53738161: flow type this, and the whole file\n    _invokeAnimatedPropsCallbackOnMount: boolean = false;\n    _prevComponent: any;\n    _propsAnimated: AnimatedProps;\n    _eventDetachers: Array<Function> = [];\n\n    // Only to be used in this file, and only in Fabric.\n    _animatedComponentId: string = `${animatedComponentNextId++}:animatedComponent`;\n\n    _attachNativeEvents() {\n      // Make sure to get the scrollable node for components that implement\n      // `ScrollResponder.Mixin`.\n      const scrollableNode = this._component?.getScrollableNode\n        ? this._component.getScrollableNode()\n        : this._component;\n\n      for (const key in this.props) {\n        const prop = this.props[key];\n        if (prop instanceof AnimatedEvent && prop.__isNative) {\n          prop.__attach(scrollableNode, key);\n          this._eventDetachers.push(() => prop.__detach(scrollableNode, key));\n        }\n      }\n    }\n\n    _detachNativeEvents() {\n      this._eventDetachers.forEach(remove => remove());\n      this._eventDetachers = [];\n    }\n\n    _isFabric = (): boolean => {\n      if (this._component == null) {\n        return false;\n      }\n      return (\n        // eslint-disable-next-line dot-notation\n        this._component['_internalInstanceHandle']?.stateNode?.canonical !=\n          null ||\n        // Some components have a setNativeProps function but aren't a host component\n        // such as lists like FlatList and SectionList. These should also use\n        // forceUpdate in Fabric since setNativeProps doesn't exist on the underlying\n        // host component. This crazy hack is essentially special casing those lists and\n        // ScrollView itself to use forceUpdate in Fabric.\n        // If these components end up using forwardRef then these hacks can go away\n        // as this._component would actually be the underlying host component and the above check\n        // would be sufficient.\n        (this._component.getNativeScrollRef != null &&\n          this._component.getNativeScrollRef() != null &&\n          // eslint-disable-next-line dot-notation\n          this._component.getNativeScrollRef()['_internalInstanceHandle']\n            ?.stateNode?.canonical != null) ||\n        (this._component.getScrollResponder != null &&\n          this._component.getScrollResponder() != null &&\n          this._component.getScrollResponder().getNativeScrollRef != null &&\n          this._component.getScrollResponder().getNativeScrollRef() != null &&\n          this._component.getScrollResponder().getNativeScrollRef()[\n            // eslint-disable-next-line dot-notation\n            '_internalInstanceHandle'\n          ]?.stateNode?.canonical != null)\n      );\n    };\n\n    _waitForUpdate = (): void => {\n      if (this._isFabric()) {\n        NativeAnimatedHelper.API.setWaitingForIdentifier(\n          this._animatedComponentId,\n        );\n      }\n    };\n\n    _markUpdateComplete = (): void => {\n      if (this._isFabric()) {\n        NativeAnimatedHelper.API.unsetWaitingForIdentifier(\n          this._animatedComponentId,\n        );\n      }\n    };\n\n    // The system is best designed when setNativeProps is implemented. It is\n    // able to avoid re-rendering and directly set the attributes that changed.\n    // However, setNativeProps can only be implemented on leaf native\n    // components. If you want to animate a composite component, you need to\n    // re-render it. In this case, we have a fallback that uses forceUpdate.\n    // This fallback is also called in Fabric.\n    _animatedPropsCallback = () => {\n      if (this._component == null) {\n        // AnimatedProps is created in will-mount because it's used in render.\n        // But this callback may be invoked before mount in async mode,\n        // In which case we should defer the setNativeProps() call.\n        // React may throw away uncommitted work in async mode,\n        // So a deferred call won't always be invoked.\n        this._invokeAnimatedPropsCallbackOnMount = true;\n      } else if (\n        process.env.NODE_ENV === 'test' ||\n        // For animating properties of non-leaf/non-native components\n        typeof this._component.setNativeProps !== 'function' ||\n        // In Fabric, force animations to go through forceUpdate and skip setNativeProps\n        this._isFabric()\n      ) {\n        this.forceUpdate();\n      } else if (!this._propsAnimated.__isNative) {\n        this._component.setNativeProps(\n          this._propsAnimated.__getAnimatedValue(),\n        );\n      } else {\n        throw new Error(\n          'Attempting to run JS driven animation on animated ' +\n            'node that has been moved to \"native\" earlier by starting an ' +\n            'animation with `useNativeDriver: true`',\n        );\n      }\n    };\n\n    _attachProps(nextProps) {\n      const oldPropsAnimated = this._propsAnimated;\n\n      if (nextProps === oldPropsAnimated) {\n        return;\n      }\n\n      this._propsAnimated = new AnimatedProps(\n        nextProps,\n        this._animatedPropsCallback,\n      );\n\n      // When you call detach, it removes the element from the parent list\n      // of children. If it goes to 0, then the parent also detaches itself\n      // and so on.\n      // An optimization is to attach the new elements and THEN detach the old\n      // ones instead of detaching and THEN attaching.\n      // This way the intermediate state isn't to go to 0 and trigger\n      // this expensive recursive detaching to then re-attach everything on\n      // the very next operation.\n      if (oldPropsAnimated) {\n        oldPropsAnimated.__restoreDefaultValues();\n        oldPropsAnimated.__detach();\n      }\n    }\n\n    _setComponentRef = setAndForwardRef({\n      getForwardedRef: () => this.props.forwardedRef,\n      setLocalRef: ref => {\n        this._prevComponent = this._component;\n        this._component = ref;\n\n        // TODO: Delete this in a future release.\n        if (ref != null && ref.getNode == null) {\n          ref.getNode = () => {\n            console.warn(\n              '%s: Calling `getNode()` on the ref of an Animated component ' +\n                'is no longer necessary. You can now directly use the ref ' +\n                'instead. This method will be removed in a future release.',\n              ref.constructor.name ?? '<<anonymous>>',\n            );\n            return ref;\n          };\n        }\n      },\n    });\n\n    render() {\n      const {style = {}, ...props} = this._propsAnimated.__getValue() || {};\n      const {style: passthruStyle = {}, ...passthruProps} =\n        this.props.passthroughAnimatedPropExplicitValues || {};\n      const mergedStyle = {...style, ...passthruStyle};\n      return (\n        <Component\n          {...props}\n          {...passthruProps}\n          style={mergedStyle}\n          ref={this._setComponentRef}\n          nativeID={\n            props.nativeID ??\n            (this._isFabric() ? 'animatedComponent' : undefined)\n          } /* TODO: T68258846. */\n          // The native driver updates views directly through the UI thread so we\n          // have to make sure the view doesn't get optimized away because it cannot\n          // go through the NativeViewHierarchyManager since it operates on the shadow\n          // thread.\n          collapsable={\n            this._propsAnimated.__isNative ? false : props.collapsable\n          }\n        />\n      );\n    }\n\n    UNSAFE_componentWillMount() {\n      this._waitForUpdate();\n      this._attachProps(this.props);\n    }\n\n    componentDidMount() {\n      if (this._invokeAnimatedPropsCallbackOnMount) {\n        this._invokeAnimatedPropsCallbackOnMount = false;\n        this._animatedPropsCallback();\n      }\n\n      this._propsAnimated.setNativeView(this._component);\n      this._attachNativeEvents();\n      this._markUpdateComplete();\n    }\n\n    UNSAFE_componentWillReceiveProps(newProps) {\n      this._waitForUpdate();\n      this._attachProps(newProps);\n    }\n\n    componentDidUpdate(prevProps) {\n      if (this._component !== this._prevComponent) {\n        this._propsAnimated.setNativeView(this._component);\n      }\n      if (this._component !== this._prevComponent || prevProps !== this.props) {\n        this._detachNativeEvents();\n        this._attachNativeEvents();\n      }\n      this._markUpdateComplete();\n    }\n\n    componentWillUnmount() {\n      this._propsAnimated && this._propsAnimated.__detach();\n      this._detachNativeEvents();\n      this._markUpdateComplete();\n    }\n  }\n\n  return React.forwardRef(function AnimatedComponentWrapper(props, ref) {\n    return (\n      <AnimatedComponent\n        {...props}\n        {...(ref == null ? null : {forwardedRef: ref})}\n      />\n    );\n  });\n}\n\nmodule.exports = createAnimatedComponent;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type {ElementRef, Ref} from 'react';\n\ntype Args = $ReadOnly<{|\n  getForwardedRef: () => ?Ref<any>,\n  setLocalRef: (ref: ElementRef<any>) => mixed,\n|}>;\n\n/**\n * This is a helper function for when a component needs to be able to forward a ref\n * to a child component, but still needs to have access to that component as part of\n * its implementation.\n *\n * Its main use case is in wrappers for native components.\n *\n * Usage:\n *\n *   class MyView extends React.Component {\n *     _nativeRef = null;\n *\n *     _setNativeRef = setAndForwardRef({\n *       getForwardedRef: () => this.props.forwardedRef,\n *       setLocalRef: ref => {\n *         this._nativeRef = ref;\n *       },\n *     });\n *\n *     render() {\n *       return <View ref={this._setNativeRef} />;\n *     }\n *   }\n *\n *   const MyViewWithRef = React.forwardRef((props, ref) => (\n *     <MyView {...props} forwardedRef={ref} />\n *   ));\n *\n *   module.exports = MyViewWithRef;\n */\n\nfunction setAndForwardRef({\n  getForwardedRef,\n  setLocalRef,\n}: Args): (ref: ElementRef<any>) => void {\n  return function forwardRef(ref: ElementRef<any>) {\n    const forwardedRef = getForwardedRef();\n\n    setLocalRef(ref);\n\n    // Forward to user ref prop (if one has been specified)\n    if (typeof forwardedRef === 'function') {\n      // Handle function-based refs. String-based refs are handled as functions.\n      forwardedRef(ref);\n    } else if (typeof forwardedRef === 'object' && forwardedRef != null) {\n      // Handle createRef-based refs\n      forwardedRef.current = ref;\n    }\n  };\n}\n\nmodule.exports = setAndForwardRef;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nconst FlatList = require('../../Lists/FlatList');\nconst createAnimatedComponent = require('../createAnimatedComponent');\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nconst FlatListWithEventThrottle = React.forwardRef((props, ref) => (\n  <FlatList scrollEventThrottle={0.0001} {...props} ref={ref} />\n));\n\nmodule.exports = (createAnimatedComponent(\n  FlatListWithEventThrottle,\n): AnimatedComponentType<\n  React.ElementConfig<typeof FlatList>,\n  React.ElementRef<typeof FlatList>,\n>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Platform = require('../Utilities/Platform');\nconst deepDiffer = require('../Utilities/differ/deepDiffer');\nconst React = require('react');\nconst View = require('../Components/View/View');\nconst VirtualizedList = require('./VirtualizedList');\nconst StyleSheet = require('../StyleSheet/StyleSheet');\n\nconst invariant = require('invariant');\n\nimport {type ScrollResponderType} from '../Components/ScrollView/ScrollView';\nimport type {ScrollViewNativeComponentType} from '../Components/ScrollView/ScrollViewNativeComponentType.js';\nimport type {ViewStyleProp} from '../StyleSheet/StyleSheet';\nimport type {\n  ViewToken,\n  ViewabilityConfigCallbackPair,\n} from './ViewabilityHelper';\nimport type {RenderItemType, RenderItemProps} from './VirtualizedList';\n\ntype RequiredProps<ItemT> = {|\n  /**\n   * For simplicity, data is just a plain array. If you want to use something else, like an\n   * immutable list, use the underlying `VirtualizedList` directly.\n   */\n  data: ?$ReadOnlyArray<ItemT>,\n|};\ntype OptionalProps<ItemT> = {|\n  /**\n   * Takes an item from `data` and renders it into the list. Example usage:\n   *\n   *     <FlatList\n   *       ItemSeparatorComponent={Platform.OS !== 'android' && ({highlighted}) => (\n   *         <View style={[style.separator, highlighted && {marginLeft: 0}]} />\n   *       )}\n   *       data={[{title: 'Title Text', key: 'item1'}]}\n   *       renderItem={({item, separators}) => (\n   *         <TouchableHighlight\n   *           onPress={() => this._onPress(item)}\n   *           onShowUnderlay={separators.highlight}\n   *           onHideUnderlay={separators.unhighlight}>\n   *           <View style={{backgroundColor: 'white'}}>\n   *             <Text>{item.title}</Text>\n   *           </View>\n   *         </TouchableHighlight>\n   *       )}\n   *     />\n   *\n   * Provides additional metadata like `index` if you need it, as well as a more generic\n   * `separators.updateProps` function which let's you set whatever props you want to change the\n   * rendering of either the leading separator or trailing separator in case the more common\n   * `highlight` and `unhighlight` (which set the `highlighted: boolean` prop) are insufficient for\n   * your use-case.\n   */\n  renderItem?: ?RenderItemType<ItemT>,\n\n  /**\n   * Optional custom style for multi-item rows generated when numColumns > 1.\n   */\n  columnWrapperStyle?: ViewStyleProp,\n  /**\n   * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n   * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n   * `data` prop, stick it here and treat it immutably.\n   */\n  extraData?: any,\n  /**\n   * `getItemLayout` is an optional optimizations that let us skip measurement of dynamic content if\n   * you know the height of items a priori. `getItemLayout` is the most efficient, and is easy to\n   * use if you have fixed height items, for example:\n   *\n   *     getItemLayout={(data, index) => (\n   *       {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}\n   *     )}\n   *\n   * Adding `getItemLayout` can be a great performance boost for lists of several hundred items.\n   * Remember to include separator length (height or width) in your offset calculation if you\n   * specify `ItemSeparatorComponent`.\n   */\n  getItemLayout?: (\n    data: ?Array<ItemT>,\n    index: number,\n  ) => {\n    length: number,\n    offset: number,\n    index: number,\n    ...\n  },\n  /**\n   * If true, renders items next to each other horizontally instead of stacked vertically.\n   */\n  horizontal?: ?boolean,\n  /**\n   * How many items to render in the initial batch. This should be enough to fill the screen but not\n   * much more. Note these items will never be unmounted as part of the windowed rendering in order\n   * to improve perceived performance of scroll-to-top actions.\n   */\n  initialNumToRender: number,\n  /**\n   * Instead of starting at the top with the first item, start at `initialScrollIndex`. This\n   * disables the \"scroll to top\" optimization that keeps the first `initialNumToRender` items\n   * always rendered and immediately renders the items starting at this initial index. Requires\n   * `getItemLayout` to be implemented.\n   */\n  initialScrollIndex?: ?number,\n  /**\n   * Reverses the direction of scroll. Uses scale transforms of -1.\n   */\n  inverted?: ?boolean,\n  /**\n   * Used to extract a unique key for a given item at the specified index. Key is used for caching\n   * and as the react key to track item re-ordering. The default extractor checks `item.key`, then\n   * falls back to using the index, like React does.\n   */\n  keyExtractor: (item: ItemT, index: number) => string,\n  /**\n   * Multiple columns can only be rendered with `horizontal={false}` and will zig-zag like a\n   * `flexWrap` layout. Items should all be the same height - masonry layouts are not supported.\n   */\n  numColumns: number,\n  /**\n   * See `ScrollView` for flow type and further documentation.\n   */\n  fadingEdgeLength?: ?number,\n|};\n\ntype FlatListProps<ItemT> = {|\n  ...RequiredProps<ItemT>,\n  ...OptionalProps<ItemT>,\n|};\n\ntype VirtualizedListProps = React.ElementConfig<typeof VirtualizedList>;\n\nexport type Props<ItemT> = {\n  ...$Diff<\n    VirtualizedListProps,\n    {\n      getItem: $PropertyType<VirtualizedListProps, 'getItem'>,\n      getItemCount: $PropertyType<VirtualizedListProps, 'getItemCount'>,\n      getItemLayout: $PropertyType<VirtualizedListProps, 'getItemLayout'>,\n      renderItem: $PropertyType<VirtualizedListProps, 'renderItem'>,\n      keyExtractor: $PropertyType<VirtualizedListProps, 'keyExtractor'>,\n      ...\n    },\n  >,\n  ...FlatListProps<ItemT>,\n  ...\n};\n\nconst defaultProps = {\n  ...VirtualizedList.defaultProps,\n  numColumns: 1,\n  /**\n   * Enabling this prop on Android greatly improves scrolling performance with no known issues.\n   * The alternative is that scrolling on Android is unusably bad. Enabling it on iOS has a few\n   * known issues.\n   */\n  removeClippedSubviews: Platform.OS === 'android',\n};\nexport type DefaultProps = typeof defaultProps;\n\n/**\n * A performant interface for rendering simple, flat lists, supporting the most handy features:\n *\n *  - Fully cross-platform.\n *  - Optional horizontal mode.\n *  - Configurable viewability callbacks.\n *  - Header support.\n *  - Footer support.\n *  - Separator support.\n *  - Pull to Refresh.\n *  - Scroll loading.\n *  - ScrollToIndex support.\n *\n * If you need section support, use [`<SectionList>`](docs/sectionlist.html).\n *\n * Minimal Example:\n *\n *     <FlatList\n *       data={[{key: 'a'}, {key: 'b'}]}\n *       renderItem={({item}) => <Text>{item.key}</Text>}\n *     />\n *\n * More complex, multi-select example demonstrating `PureComponent` usage for perf optimization and avoiding bugs.\n *\n * - By binding the `onPressItem` handler, the props will remain `===` and `PureComponent` will\n *   prevent wasteful re-renders unless the actual `id`, `selected`, or `title` props change, even\n *   if the components rendered in `MyListItem` did not have such optimizations.\n * - By passing `extraData={this.state}` to `FlatList` we make sure `FlatList` itself will re-render\n *   when the `state.selected` changes. Without setting this prop, `FlatList` would not know it\n *   needs to re-render any items because it is also a `PureComponent` and the prop comparison will\n *   not show any changes.\n * - `keyExtractor` tells the list to use the `id`s for the react keys instead of the default `key` property.\n *\n *\n *     class MyListItem extends React.PureComponent {\n *       _onPress = () => {\n *         this.props.onPressItem(this.props.id);\n *       };\n *\n *       render() {\n *         const textColor = this.props.selected ? \"red\" : \"black\";\n *         return (\n *           <TouchableOpacity onPress={this._onPress}>\n *             <View>\n *               <Text style={{ color: textColor }}>\n *                 {this.props.title}\n *               </Text>\n *             </View>\n *           </TouchableOpacity>\n *         );\n *       }\n *     }\n *\n *     class MultiSelectList extends React.PureComponent {\n *       state = {selected: (new Map(): Map<string, boolean>)};\n *\n *       _keyExtractor = (item, index) => item.id;\n *\n *       _onPressItem = (id: string) => {\n *         // updater functions are preferred for transactional updates\n *         this.setState((state) => {\n *           // copy the map rather than modifying state.\n *           const selected = new Map(state.selected);\n *           selected.set(id, !selected.get(id)); // toggle\n *           return {selected};\n *         });\n *       };\n *\n *       _renderItem = ({item}) => (\n *         <MyListItem\n *           id={item.id}\n *           onPressItem={this._onPressItem}\n *           selected={!!this.state.selected.get(item.id)}\n *           title={item.title}\n *         />\n *       );\n *\n *       render() {\n *         return (\n *           <FlatList\n *             data={this.props.data}\n *             extraData={this.state}\n *             keyExtractor={this._keyExtractor}\n *             renderItem={this._renderItem}\n *           />\n *         );\n *       }\n *     }\n *\n * This is a convenience wrapper around [`<VirtualizedList>`](docs/virtualizedlist.html),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n *   your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n *   equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n *   (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n *   changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n *   offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n *   blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n *   and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n *   Alternatively, you can provide a custom `keyExtractor` prop.\n *\n * Also inherits [ScrollView Props](docs/scrollview.html#props), unless it is nested in another FlatList of same orientation.\n */\nclass FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {\n  static defaultProps: DefaultProps = defaultProps;\n  props: Props<ItemT>;\n  /**\n   * Scrolls to the end of the content. May be janky without `getItemLayout` prop.\n   */\n  scrollToEnd(params?: ?{animated?: ?boolean, ...}) {\n    if (this._listRef) {\n      this._listRef.scrollToEnd(params);\n    }\n  }\n\n  /**\n   * Scrolls to the item at the specified index such that it is positioned in the viewable area\n   * such that `viewPosition` 0 places it at the top, 1 at the bottom, and 0.5 centered in the\n   * middle. `viewOffset` is a fixed number of pixels to offset the final target position.\n   *\n   * Note: cannot scroll to locations outside the render window without specifying the\n   * `getItemLayout` prop.\n   */\n  scrollToIndex(params: {\n    animated?: ?boolean,\n    index: number,\n    viewOffset?: number,\n    viewPosition?: number,\n    ...\n  }) {\n    if (this._listRef) {\n      this._listRef.scrollToIndex(params);\n    }\n  }\n\n  /**\n   * Requires linear scan through data - use `scrollToIndex` instead if possible.\n   *\n   * Note: cannot scroll to locations outside the render window without specifying the\n   * `getItemLayout` prop.\n   */\n  scrollToItem(params: {\n    animated?: ?boolean,\n    item: ItemT,\n    viewPosition?: number,\n    ...\n  }) {\n    if (this._listRef) {\n      this._listRef.scrollToItem(params);\n    }\n  }\n\n  /**\n   * Scroll to a specific content pixel offset in the list.\n   *\n   * Check out [scrollToOffset](docs/virtualizedlist.html#scrolltooffset) of VirtualizedList\n   */\n  scrollToOffset(params: {animated?: ?boolean, offset: number, ...}) {\n    if (this._listRef) {\n      this._listRef.scrollToOffset(params);\n    }\n  }\n\n  /**\n   * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n   * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n   * taps on items or by navigation actions.\n   */\n  recordInteraction() {\n    if (this._listRef) {\n      this._listRef.recordInteraction();\n    }\n  }\n\n  /**\n   * Displays the scroll indicators momentarily.\n   *\n   * @platform ios\n   */\n  flashScrollIndicators() {\n    if (this._listRef) {\n      this._listRef.flashScrollIndicators();\n    }\n  }\n\n  /**\n   * Provides a handle to the underlying scroll responder.\n   */\n  getScrollResponder(): ?ScrollResponderType {\n    if (this._listRef) {\n      return this._listRef.getScrollResponder();\n    }\n  }\n\n  /**\n   * Provides a reference to the underlying host component\n   */\n  getNativeScrollRef():\n    | ?React.ElementRef<typeof View>\n    | ?React.ElementRef<ScrollViewNativeComponentType> {\n    if (this._listRef) {\n      return this._listRef.getScrollRef();\n    }\n  }\n\n  getScrollableNode(): any {\n    if (this._listRef) {\n      return this._listRef.getScrollableNode();\n    }\n  }\n\n  setNativeProps(props: {[string]: mixed, ...}) {\n    if (this._listRef) {\n      this._listRef.setNativeProps(props);\n    }\n  }\n\n  constructor(props: Props<ItemT>) {\n    super(props);\n    this._checkProps(this.props);\n    if (this.props.viewabilityConfigCallbackPairs) {\n      this._virtualizedListPairs = this.props.viewabilityConfigCallbackPairs.map(\n        pair => ({\n          viewabilityConfig: pair.viewabilityConfig,\n          onViewableItemsChanged: this._createOnViewableItemsChanged(\n            pair.onViewableItemsChanged,\n          ),\n        }),\n      );\n    } else if (this.props.onViewableItemsChanged) {\n      this._virtualizedListPairs.push({\n        /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n         * error found when Flow v0.63 was deployed. To see the error delete\n         * this comment and run Flow. */\n        viewabilityConfig: this.props.viewabilityConfig,\n        onViewableItemsChanged: this._createOnViewableItemsChanged(\n          this.props.onViewableItemsChanged,\n        ),\n      });\n    }\n  }\n\n  componentDidUpdate(prevProps: Props<ItemT>) {\n    invariant(\n      prevProps.numColumns === this.props.numColumns,\n      'Changing numColumns on the fly is not supported. Change the key prop on FlatList when ' +\n        'changing the number of columns to force a fresh render of the component.',\n    );\n    invariant(\n      prevProps.onViewableItemsChanged === this.props.onViewableItemsChanged,\n      'Changing onViewableItemsChanged on the fly is not supported',\n    );\n    invariant(\n      !deepDiffer(prevProps.viewabilityConfig, this.props.viewabilityConfig),\n      'Changing viewabilityConfig on the fly is not supported',\n    );\n    invariant(\n      prevProps.viewabilityConfigCallbackPairs ===\n        this.props.viewabilityConfigCallbackPairs,\n      'Changing viewabilityConfigCallbackPairs on the fly is not supported',\n    );\n\n    this._checkProps(this.props);\n  }\n\n  _listRef: ?React.ElementRef<typeof VirtualizedList>;\n  _virtualizedListPairs: Array<ViewabilityConfigCallbackPair> = [];\n\n  _captureRef = ref => {\n    this._listRef = ref;\n  };\n\n  _checkProps(props: Props<ItemT>) {\n    const {\n      // $FlowFixMe this prop doesn't exist, is only used for an invariant\n      getItem,\n      // $FlowFixMe this prop doesn't exist, is only used for an invariant\n      getItemCount,\n      horizontal,\n      numColumns,\n      columnWrapperStyle,\n      onViewableItemsChanged,\n      viewabilityConfigCallbackPairs,\n    } = props;\n    invariant(\n      !getItem && !getItemCount,\n      'FlatList does not support custom data formats.',\n    );\n    if (numColumns > 1) {\n      invariant(!horizontal, 'numColumns does not support horizontal.');\n    } else {\n      invariant(\n        !columnWrapperStyle,\n        'columnWrapperStyle not supported for single column lists',\n      );\n    }\n    invariant(\n      !(onViewableItemsChanged && viewabilityConfigCallbackPairs),\n      'FlatList does not support setting both onViewableItemsChanged and ' +\n        'viewabilityConfigCallbackPairs.',\n    );\n  }\n\n  _getItem = (data: Array<ItemT>, index: number) => {\n    const {numColumns} = this.props;\n    if (numColumns > 1) {\n      const ret = [];\n      for (let kk = 0; kk < numColumns; kk++) {\n        const item = data[index * numColumns + kk];\n        if (item != null) {\n          ret.push(item);\n        }\n      }\n      return ret;\n    } else {\n      return data[index];\n    }\n  };\n\n  _getItemCount = (data: ?Array<ItemT>): number => {\n    if (data) {\n      const {numColumns} = this.props;\n      return numColumns > 1 ? Math.ceil(data.length / numColumns) : data.length;\n    } else {\n      return 0;\n    }\n  };\n\n  _keyExtractor = (items: ItemT | Array<ItemT>, index: number) => {\n    const {keyExtractor, numColumns} = this.props;\n    if (numColumns > 1) {\n      invariant(\n        Array.isArray(items),\n        'FlatList: Encountered internal consistency error, expected each item to consist of an ' +\n          'array with 1-%s columns; instead, received a single item.',\n        numColumns,\n      );\n      return items\n        .map((it, kk) => keyExtractor(it, index * numColumns + kk))\n        .join(':');\n    } else {\n      // $FlowFixMe Can't call keyExtractor with an array\n      return keyExtractor(items, index);\n    }\n  };\n\n  _pushMultiColumnViewable(arr: Array<ViewToken>, v: ViewToken): void {\n    const {numColumns, keyExtractor} = this.props;\n    v.item.forEach((item, ii) => {\n      invariant(v.index != null, 'Missing index!');\n      const index = v.index * numColumns + ii;\n      arr.push({...v, item, key: keyExtractor(item, index), index});\n    });\n  }\n\n  _createOnViewableItemsChanged(\n    onViewableItemsChanged: ?(info: {\n      viewableItems: Array<ViewToken>,\n      changed: Array<ViewToken>,\n      ...\n    }) => void,\n  ) {\n    return (info: {\n      viewableItems: Array<ViewToken>,\n      changed: Array<ViewToken>,\n      ...\n    }) => {\n      const {numColumns} = this.props;\n      if (onViewableItemsChanged) {\n        if (numColumns > 1) {\n          const changed = [];\n          const viewableItems = [];\n          info.viewableItems.forEach(v =>\n            this._pushMultiColumnViewable(viewableItems, v),\n          );\n          info.changed.forEach(v => this._pushMultiColumnViewable(changed, v));\n          onViewableItemsChanged({viewableItems, changed});\n        } else {\n          onViewableItemsChanged(info);\n        }\n      }\n    };\n  }\n\n  _renderer = () => {\n    const {\n      ListItemComponent,\n      renderItem,\n      numColumns,\n      columnWrapperStyle,\n    } = this.props;\n\n    let virtualizedListRenderKey = ListItemComponent\n      ? 'ListItemComponent'\n      : 'renderItem';\n\n    const renderer = (props): React.Node => {\n      if (ListItemComponent) {\n        // $FlowFixMe Component isn't valid\n        return <ListItemComponent {...props} />;\n      } else if (renderItem) {\n        return renderItem(props);\n      } else {\n        return null;\n      }\n    };\n\n    return {\n      /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.111 was deployed. To see the error, delete\n       * this comment and run Flow. */\n      [virtualizedListRenderKey]: (info: RenderItemProps<ItemT>) => {\n        if (numColumns > 1) {\n          const {item, index} = info;\n          invariant(\n            Array.isArray(item),\n            'Expected array of items with numColumns > 1',\n          );\n          return (\n            <View style={StyleSheet.compose(styles.row, columnWrapperStyle)}>\n              {item.map((it, kk) => {\n                const element = renderer({\n                  item: it,\n                  index: index * numColumns + kk,\n                  separators: info.separators,\n                });\n                return element != null ? (\n                  <React.Fragment key={kk}>{element}</React.Fragment>\n                ) : null;\n              })}\n            </View>\n          );\n        } else {\n          return renderer(info);\n        }\n      },\n    };\n  };\n\n  render(): React.Node {\n    const {numColumns, columnWrapperStyle, ...restProps} = this.props;\n\n    return (\n      <VirtualizedList\n        {...restProps}\n        getItem={this._getItem}\n        getItemCount={this._getItemCount}\n        keyExtractor={this._keyExtractor}\n        ref={this._captureRef}\n        viewabilityConfigCallbackPairs={this._virtualizedListPairs}\n        {...this._renderer()}\n      />\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  row: {flexDirection: 'row'},\n});\n\nmodule.exports = FlatList;\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Batchinator = require('../Interaction/Batchinator');\nconst FillRateHelper = require('./FillRateHelper');\nconst ReactNative = require('../Renderer/shims/ReactNative');\nconst RefreshControl = require('../Components/RefreshControl/RefreshControl');\nconst ScrollView = require('../Components/ScrollView/ScrollView');\nconst StyleSheet = require('../StyleSheet/StyleSheet');\nconst View = require('../Components/View/View');\nconst ViewabilityHelper = require('./ViewabilityHelper');\n\nconst flattenStyle = require('../StyleSheet/flattenStyle');\nconst infoLog = require('../Utilities/infoLog');\nconst invariant = require('invariant');\n\nconst {computeWindowedRenderLimits} = require('./VirtualizeUtils');\n\nimport * as React from 'react';\nimport type {ScrollResponderType} from '../Components/ScrollView/ScrollView';\nimport type {ViewStyleProp} from '../StyleSheet/StyleSheet';\nimport type {\n  ViewabilityConfig,\n  ViewToken,\n  ViewabilityConfigCallbackPair,\n} from './ViewabilityHelper';\nimport {\n  VirtualizedListCellContextProvider,\n  VirtualizedListContext,\n  VirtualizedListContextProvider,\n  type ChildListState,\n  type ListDebugInfo,\n} from './VirtualizedListContext.js';\n\ntype Item = any;\n\nexport type Separators = {\n  highlight: () => void,\n  unhighlight: () => void,\n  updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n  ...\n};\n\nexport type RenderItemProps<ItemT> = {\n  item: ItemT,\n  index: number,\n  separators: Separators,\n  ...\n};\n\nexport type RenderItemType<ItemT> = (\n  info: RenderItemProps<ItemT>,\n) => React.Node;\n\ntype ViewabilityHelperCallbackTuple = {\n  viewabilityHelper: ViewabilityHelper,\n  onViewableItemsChanged: (info: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => void,\n  ...\n};\n\ntype RequiredProps = {|\n  /**\n   * The default accessor functions assume this is an Array<{key: string} | {id: string}> but you can override\n   * getItem, getItemCount, and keyExtractor to handle any type of index-based data.\n   */\n  data?: any,\n  /**\n   * A generic accessor for extracting an item from any sort of data blob.\n   */\n  getItem: (data: any, index: number) => ?Item,\n  /**\n   * Determines how many items are in the data blob.\n   */\n  getItemCount: (data: any) => number,\n|};\ntype OptionalProps = {|\n  renderItem?: ?RenderItemType<Item>,\n  /**\n   * `debug` will turn on extra logging and visual overlays to aid with debugging both usage and\n   * implementation, but with a significant perf hit.\n   */\n  debug?: ?boolean,\n  /**\n   * DEPRECATED: Virtualization provides significant performance and memory optimizations, but fully\n   * unmounts react instances that are outside of the render window. You should only need to disable\n   * this for debugging purposes.\n   */\n  disableVirtualization?: ?boolean,\n  /**\n   * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n   * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n   * `data` prop, stick it here and treat it immutably.\n   */\n  extraData?: any,\n  // e.g. height, y\n  getItemLayout?: (\n    data: any,\n    index: number,\n  ) => {\n    length: number,\n    offset: number,\n    index: number,\n    ...\n  },\n  horizontal?: ?boolean,\n  /**\n   * How many items to render in the initial batch. This should be enough to fill the screen but not\n   * much more. Note these items will never be unmounted as part of the windowed rendering in order\n   * to improve perceived performance of scroll-to-top actions.\n   */\n  initialNumToRender: number,\n  /**\n   * Instead of starting at the top with the first item, start at `initialScrollIndex`. This\n   * disables the \"scroll to top\" optimization that keeps the first `initialNumToRender` items\n   * always rendered and immediately renders the items starting at this initial index. Requires\n   * `getItemLayout` to be implemented.\n   */\n  initialScrollIndex?: ?number,\n  /**\n   * Reverses the direction of scroll. Uses scale transforms of -1.\n   */\n  inverted?: ?boolean,\n  keyExtractor: (item: Item, index: number) => string,\n  /**\n   * Each cell is rendered using this element. Can be a React Component Class,\n   * or a render function. Defaults to using View.\n   */\n  CellRendererComponent?: ?React.ComponentType<any>,\n  /**\n   * Rendered in between each item, but not at the top or bottom. By default, `highlighted` and\n   * `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight`\n   * which will update the `highlighted` prop, but you can also add custom props with\n   * `separators.updateProps`.\n   */\n  ItemSeparatorComponent?: ?React.ComponentType<any>,\n  /**\n   * Takes an item from `data` and renders it into the list. Example usage:\n   *\n   *     <FlatList\n   *       ItemSeparatorComponent={Platform.OS !== 'android' && ({highlighted}) => (\n   *         <View style={[style.separator, highlighted && {marginLeft: 0}]} />\n   *       )}\n   *       data={[{title: 'Title Text', key: 'item1'}]}\n   *       ListItemComponent={({item, separators}) => (\n   *         <TouchableHighlight\n   *           onPress={() => this._onPress(item)}\n   *           onShowUnderlay={separators.highlight}\n   *           onHideUnderlay={separators.unhighlight}>\n   *           <View style={{backgroundColor: 'white'}}>\n   *             <Text>{item.title}</Text>\n   *           </View>\n   *         </TouchableHighlight>\n   *       )}\n   *     />\n   *\n   * Provides additional metadata like `index` if you need it, as well as a more generic\n   * `separators.updateProps` function which let's you set whatever props you want to change the\n   * rendering of either the leading separator or trailing separator in case the more common\n   * `highlight` and `unhighlight` (which set the `highlighted: boolean` prop) are insufficient for\n   * your use-case.\n   */\n  ListItemComponent?: ?(React.ComponentType<any> | React.Element<any>),\n  /**\n   * Rendered when the list is empty. Can be a React Component Class, a render function, or\n   * a rendered element.\n   */\n  ListEmptyComponent?: ?(React.ComponentType<any> | React.Element<any>),\n  /**\n   * Rendered at the bottom of all the items. Can be a React Component Class, a render function, or\n   * a rendered element.\n   */\n  ListFooterComponent?: ?(React.ComponentType<any> | React.Element<any>),\n  /**\n   * Styling for internal View for ListFooterComponent\n   */\n  ListFooterComponentStyle?: ViewStyleProp,\n  /**\n   * Rendered at the top of all the items. Can be a React Component Class, a render function, or\n   * a rendered element.\n   */\n  ListHeaderComponent?: ?(React.ComponentType<any> | React.Element<any>),\n  /**\n   * Styling for internal View for ListHeaderComponent\n   */\n  ListHeaderComponentStyle?: ViewStyleProp,\n  /**\n   * A unique identifier for this list. If there are multiple VirtualizedLists at the same level of\n   * nesting within another VirtualizedList, this key is necessary for virtualization to\n   * work properly.\n   */\n  listKey?: string,\n  /**\n   * The maximum number of items to render in each incremental render batch. The more rendered at\n   * once, the better the fill rate, but responsiveness may suffer because rendering content may\n   * interfere with responding to button taps or other interactions.\n   */\n  maxToRenderPerBatch: number,\n  /**\n   * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered\n   * content.\n   */\n  onEndReached?: ?(info: {distanceFromEnd: number, ...}) => void,\n  /**\n   * How far from the end (in units of visible length of the list) the bottom edge of the\n   * list must be from the end of the content to trigger the `onEndReached` callback.\n   * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is\n   * within half the visible length of the list.\n   */\n  onEndReachedThreshold?: ?number,\n  /**\n   * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n   * sure to also set the `refreshing` prop correctly.\n   */\n  onRefresh?: ?() => void,\n  /**\n   * Used to handle failures when scrolling to an index that has not been measured yet. Recommended\n   * action is to either compute your own offset and `scrollTo` it, or scroll as far as possible and\n   * then try again after more items have been rendered.\n   */\n  onScrollToIndexFailed?: ?(info: {\n    index: number,\n    highestMeasuredFrameIndex: number,\n    averageItemLength: number,\n    ...\n  }) => void,\n  /**\n   * Called when the viewability of rows changes, as defined by the\n   * `viewabilityConfig` prop.\n   */\n  onViewableItemsChanged?: ?(info: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => void,\n  persistentScrollbar?: ?boolean,\n  /**\n   * Set this when offset is needed for the loading indicator to show correctly.\n   * @platform android\n   */\n  progressViewOffset?: number,\n  /**\n   * A custom refresh control element. When set, it overrides the default\n   * <RefreshControl> component built internally. The onRefresh and refreshing\n   * props are also ignored. Only works for vertical VirtualizedList.\n   */\n  refreshControl?: ?React.Element<any>,\n  /**\n   * Set this true while waiting for new data from a refresh.\n   */\n  refreshing?: ?boolean,\n  /**\n   * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n   *\n   * This may improve scroll performance for large lists.\n   */\n  removeClippedSubviews?: boolean,\n  /**\n   * Render a custom scroll component, e.g. with a differently styled `RefreshControl`.\n   */\n  renderScrollComponent?: (props: Object) => React.Element<any>,\n  /**\n   * Amount of time between low-pri item render batches, e.g. for rendering items quite a ways off\n   * screen. Similar fill rate/responsiveness tradeoff as `maxToRenderPerBatch`.\n   */\n  updateCellsBatchingPeriod: number,\n  /**\n   * See `ViewabilityHelper` for flow type and further documentation.\n   */\n  viewabilityConfig?: ViewabilityConfig,\n  /**\n   * List of ViewabilityConfig/onViewableItemsChanged pairs. A specific onViewableItemsChanged\n   * will be called when its corresponding ViewabilityConfig's conditions are met.\n   */\n  viewabilityConfigCallbackPairs?: Array<ViewabilityConfigCallbackPair>,\n  /**\n   * Determines the maximum number of items rendered outside of the visible area, in units of\n   * visible lengths. So if your list fills the screen, then `windowSize={21}` (the default) will\n   * render the visible screen area plus up to 10 screens above and 10 below the viewport. Reducing\n   * this number will reduce memory consumption and may improve performance, but will increase the\n   * chance that fast scrolling may reveal momentary blank areas of unrendered content.\n   */\n  windowSize: number,\n  /**\n   * The legacy implementation is no longer supported.\n   */\n  legacyImplementation?: empty,\n|};\n\ntype Props = {|\n  ...React.ElementConfig<typeof ScrollView>,\n  ...RequiredProps,\n  ...OptionalProps,\n|};\n\ntype DefaultProps = {|\n  disableVirtualization: boolean,\n  horizontal: boolean,\n  initialNumToRender: number,\n  keyExtractor: (item: Item, index: number) => string,\n  maxToRenderPerBatch: number,\n  onEndReachedThreshold: number,\n  scrollEventThrottle: number,\n  updateCellsBatchingPeriod: number,\n  windowSize: number,\n|};\n\nlet _usedIndexForKey = false;\nlet _keylessItemComponentName: string = '';\n\ntype State = {\n  first: number,\n  last: number,\n};\n\n/**\n * Base implementation for the more convenient [`<FlatList>`](https://reactnative.dev/docs/flatlist.html)\n * and [`<SectionList>`](https://reactnative.dev/docs/sectionlist.html) components, which are also better\n * documented. In general, this should only really be used if you need more flexibility than\n * `FlatList` provides, e.g. for use with immutable data instead of plain arrays.\n *\n * Virtualization massively improves memory consumption and performance of large lists by\n * maintaining a finite render window of active items and replacing all items outside of the render\n * window with appropriately sized blank space. The window adapts to scrolling behavior, and items\n * are rendered incrementally with low-pri (after any running interactions) if they are far from the\n * visible area, or with hi-pri otherwise to minimize the potential of seeing blank space.\n *\n * Some caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n *   your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n *   equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n *   (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n *   changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n *   offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n *   blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n *   and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` or `id` prop on each item and uses that for the React key.\n *   Alternatively, you can provide a custom `keyExtractor` prop.\n *\n */\nclass VirtualizedList extends React.PureComponent<Props, State> {\n  static contextType: typeof VirtualizedListContext = VirtualizedListContext;\n\n  // scrollToEnd may be janky without getItemLayout prop\n  scrollToEnd(params?: ?{animated?: ?boolean, ...}) {\n    const animated = params ? params.animated : true;\n    const veryLast = this.props.getItemCount(this.props.data) - 1;\n    const frame = this._getFrameMetricsApprox(veryLast);\n    const offset = Math.max(\n      0,\n      frame.offset +\n        frame.length +\n        this._footerLength -\n        this._scrollMetrics.visibleLength,\n    );\n\n    if (this._scrollRef == null) {\n      return;\n    }\n\n    if (this._scrollRef.scrollTo == null) {\n      console.warn(\n        'No scrollTo method provided. This may be because you have two nested ' +\n          'VirtualizedLists with the same orientation, or because you are ' +\n          'using a custom component that does not implement scrollTo.',\n      );\n      return;\n    }\n\n    this._scrollRef.scrollTo(\n      this.props.horizontal ? {x: offset, animated} : {y: offset, animated},\n    );\n  }\n\n  // scrollToIndex may be janky without getItemLayout prop\n  scrollToIndex(params: {\n    animated?: ?boolean,\n    index: number,\n    viewOffset?: number,\n    viewPosition?: number,\n    ...\n  }) {\n    const {\n      data,\n      horizontal,\n      getItemCount,\n      getItemLayout,\n      onScrollToIndexFailed,\n    } = this.props;\n    const {animated, index, viewOffset, viewPosition} = params;\n    invariant(\n      index >= 0,\n      `scrollToIndex out of range: requested index ${index} but minimum is 0`,\n    );\n    invariant(\n      getItemCount(data) >= 1,\n      `scrollToIndex out of range: item length ${getItemCount(\n        data,\n      )} but minimum is 1`,\n    );\n    invariant(\n      index < getItemCount(data),\n      `scrollToIndex out of range: requested index ${index} is out of 0 to ${getItemCount(\n        data,\n      ) - 1}`,\n    );\n    if (!getItemLayout && index > this._highestMeasuredFrameIndex) {\n      invariant(\n        !!onScrollToIndexFailed,\n        'scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, ' +\n          'otherwise there is no way to know the location of offscreen indices or handle failures.',\n      );\n      onScrollToIndexFailed({\n        averageItemLength: this._averageCellLength,\n        highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,\n        index,\n      });\n      return;\n    }\n    const frame = this._getFrameMetricsApprox(index);\n    const offset =\n      Math.max(\n        0,\n        frame.offset -\n          (viewPosition || 0) *\n            (this._scrollMetrics.visibleLength - frame.length),\n      ) - (viewOffset || 0);\n\n    if (this._scrollRef == null) {\n      return;\n    }\n\n    if (this._scrollRef.scrollTo == null) {\n      console.warn(\n        'No scrollTo method provided. This may be because you have two nested ' +\n          'VirtualizedLists with the same orientation, or because you are ' +\n          'using a custom component that does not implement scrollTo.',\n      );\n      return;\n    }\n\n    this._scrollRef.scrollTo(\n      horizontal ? {x: offset, animated} : {y: offset, animated},\n    );\n  }\n\n  // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -\n  // use scrollToIndex instead if possible.\n  scrollToItem(params: {\n    animated?: ?boolean,\n    item: Item,\n    viewPosition?: number,\n    ...\n  }) {\n    const {item} = params;\n    const {data, getItem, getItemCount} = this.props;\n    const itemCount = getItemCount(data);\n    for (let index = 0; index < itemCount; index++) {\n      if (getItem(data, index) === item) {\n        this.scrollToIndex({...params, index});\n        break;\n      }\n    }\n  }\n\n  /**\n   * Scroll to a specific content pixel offset in the list.\n   *\n   * Param `offset` expects the offset to scroll to.\n   * In case of `horizontal` is true, the offset is the x-value,\n   * in any other case the offset is the y-value.\n   *\n   * Param `animated` (`true` by default) defines whether the list\n   * should do an animation while scrolling.\n   */\n  scrollToOffset(params: {animated?: ?boolean, offset: number, ...}) {\n    const {animated, offset} = params;\n\n    if (this._scrollRef == null) {\n      return;\n    }\n\n    if (this._scrollRef.scrollTo == null) {\n      console.warn(\n        'No scrollTo method provided. This may be because you have two nested ' +\n          'VirtualizedLists with the same orientation, or because you are ' +\n          'using a custom component that does not implement scrollTo.',\n      );\n      return;\n    }\n\n    this._scrollRef.scrollTo(\n      this.props.horizontal ? {x: offset, animated} : {y: offset, animated},\n    );\n  }\n\n  recordInteraction() {\n    this._nestedChildLists.forEach(childList => {\n      childList.ref && childList.ref.recordInteraction();\n    });\n    this._viewabilityTuples.forEach(t => {\n      t.viewabilityHelper.recordInteraction();\n    });\n    this._updateViewableItems(this.props.data);\n  }\n\n  flashScrollIndicators() {\n    if (this._scrollRef == null) {\n      return;\n    }\n\n    this._scrollRef.flashScrollIndicators();\n  }\n\n  /**\n   * Provides a handle to the underlying scroll responder.\n   * Note that `this._scrollRef` might not be a `ScrollView`, so we\n   * need to check that it responds to `getScrollResponder` before calling it.\n   */\n  getScrollResponder(): ?ScrollResponderType {\n    if (this._scrollRef && this._scrollRef.getScrollResponder) {\n      return this._scrollRef.getScrollResponder();\n    }\n  }\n\n  getScrollableNode(): ?number {\n    if (this._scrollRef && this._scrollRef.getScrollableNode) {\n      return this._scrollRef.getScrollableNode();\n    } else {\n      return ReactNative.findNodeHandle(this._scrollRef);\n    }\n  }\n\n  getScrollRef():\n    | ?React.ElementRef<typeof ScrollView>\n    | ?React.ElementRef<typeof View> {\n    if (this._scrollRef && this._scrollRef.getScrollRef) {\n      return this._scrollRef.getScrollRef();\n    } else {\n      return this._scrollRef;\n    }\n  }\n\n  setNativeProps(props: Object) {\n    if (this._scrollRef) {\n      this._scrollRef.setNativeProps(props);\n    }\n  }\n\n  static defaultProps: DefaultProps = {\n    disableVirtualization: false,\n    horizontal: false,\n    initialNumToRender: 10,\n    keyExtractor: (item: Item, index: number) => {\n      if (item.key != null) {\n        return item.key;\n      }\n      if (item.id != null) {\n        return item.id;\n      }\n      _usedIndexForKey = true;\n      if (item.type && item.type.displayName) {\n        _keylessItemComponentName = item.type.displayName;\n      }\n      return String(index);\n    },\n    maxToRenderPerBatch: 10,\n    onEndReachedThreshold: 2, // multiples of length\n    scrollEventThrottle: 50,\n    updateCellsBatchingPeriod: 50,\n    windowSize: 21, // multiples of length\n  };\n\n  _getCellKey(): string {\n    return this.context?.cellKey || 'rootList';\n  }\n\n  _getListKey(): string {\n    return this.props.listKey || this._getCellKey();\n  }\n\n  _getDebugInfo(): ListDebugInfo {\n    return {\n      listKey: this._getListKey(),\n      cellKey: this._getCellKey(),\n      horizontal: !!this.props.horizontal,\n      parent: this.context?.debugInfo,\n    };\n  }\n\n  _getScrollMetrics = () => {\n    return this._scrollMetrics;\n  };\n\n  hasMore(): boolean {\n    return this._hasMore;\n  }\n\n  _getOutermostParentListRef = () => {\n    if (this._isNestedWithSameOrientation()) {\n      return this.context.getOutermostParentListRef();\n    } else {\n      return this;\n    }\n  };\n\n  _getNestedChildState = (key: string): ?ChildListState => {\n    const existingChildData = this._nestedChildLists.get(key);\n    return existingChildData && existingChildData.state;\n  };\n\n  _registerAsNestedChild = (childList: {\n    cellKey: string,\n    key: string,\n    ref: VirtualizedList,\n    parentDebugInfo: ListDebugInfo,\n    ...\n  }): ?ChildListState => {\n    // Register the mapping between this child key and the cellKey for its cell\n    const childListsInCell =\n      this._cellKeysToChildListKeys.get(childList.cellKey) || new Set();\n    childListsInCell.add(childList.key);\n    this._cellKeysToChildListKeys.set(childList.cellKey, childListsInCell);\n    const existingChildData = this._nestedChildLists.get(childList.key);\n    if (existingChildData && existingChildData.ref !== null) {\n      console.error(\n        'A VirtualizedList contains a cell which itself contains ' +\n          'more than one VirtualizedList of the same orientation as the parent ' +\n          'list. You must pass a unique listKey prop to each sibling list.\\n\\n' +\n          describeNestedLists({\n            ...childList,\n            // We're called from the child's componentDidMount, so it's safe to\n            // read the child's props here (albeit weird).\n            horizontal: !!childList.ref.props.horizontal,\n          }),\n      );\n    }\n    this._nestedChildLists.set(childList.key, {\n      ref: childList.ref,\n      state: null,\n    });\n\n    if (this._hasInteracted) {\n      childList.ref.recordInteraction();\n    }\n  };\n\n  _unregisterAsNestedChild = (childList: {\n    key: string,\n    state: ChildListState,\n    ...\n  }): void => {\n    this._nestedChildLists.set(childList.key, {\n      ref: null,\n      state: childList.state,\n    });\n  };\n\n  state: State;\n\n  constructor(props: Props) {\n    super(props);\n    invariant(\n      // $FlowFixMe\n      !props.onScroll || !props.onScroll.__isNative,\n      'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' +\n        'to support native onScroll events with useNativeDriver',\n    );\n\n    invariant(\n      props.windowSize > 0,\n      'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.',\n    );\n\n    this._fillRateHelper = new FillRateHelper(this._getFrameMetrics);\n    this._updateCellsToRenderBatcher = new Batchinator(\n      this._updateCellsToRender,\n      this.props.updateCellsBatchingPeriod,\n    );\n\n    if (this.props.viewabilityConfigCallbackPairs) {\n      this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(\n        pair => ({\n          viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),\n          onViewableItemsChanged: pair.onViewableItemsChanged,\n        }),\n      );\n    } else if (this.props.onViewableItemsChanged) {\n      this._viewabilityTuples.push({\n        viewabilityHelper: new ViewabilityHelper(this.props.viewabilityConfig),\n        onViewableItemsChanged: this.props.onViewableItemsChanged,\n      });\n    }\n\n    let initialState = {\n      first: this.props.initialScrollIndex || 0,\n      last:\n        Math.min(\n          this.props.getItemCount(this.props.data),\n          (this.props.initialScrollIndex || 0) + this.props.initialNumToRender,\n        ) - 1,\n    };\n\n    if (this._isNestedWithSameOrientation()) {\n      const storedState = this.context.getNestedChildState(this._getListKey());\n      if (storedState) {\n        initialState = storedState;\n        this.state = storedState;\n        this._frames = storedState.frames;\n      }\n    }\n\n    this.state = initialState;\n  }\n\n  componentDidMount() {\n    if (this._isNestedWithSameOrientation()) {\n      this.context.registerAsNestedChild({\n        cellKey: this._getCellKey(),\n        key: this._getListKey(),\n        ref: this,\n        // NOTE: When the child mounts (here) it's not necessarily safe to read\n        // the parent's props. This is why we explicitly propagate debugInfo\n        // \"down\" via context and \"up\" again via this method call on the\n        // parent.\n        parentDebugInfo: this.context.debugInfo,\n      });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._isNestedWithSameOrientation()) {\n      this.context.unregisterAsNestedChild({\n        key: this._getListKey(),\n        state: {\n          first: this.state.first,\n          last: this.state.last,\n          frames: this._frames,\n        },\n      });\n    }\n    this._updateViewableItems(null);\n    this._updateCellsToRenderBatcher.dispose({abort: true});\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.dispose();\n    });\n    this._fillRateHelper.deactivateAndFlush();\n  }\n\n  static getDerivedStateFromProps(newProps: Props, prevState: State): State {\n    const {data, getItemCount, maxToRenderPerBatch} = newProps;\n    // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make\n    // sure we're rendering a reasonable range here.\n    return {\n      first: Math.max(\n        0,\n        Math.min(prevState.first, getItemCount(data) - 1 - maxToRenderPerBatch),\n      ),\n      last: Math.max(0, Math.min(prevState.last, getItemCount(data) - 1)),\n    };\n  }\n\n  _pushCells(\n    cells: Array<Object>,\n    stickyHeaderIndices: Array<number>,\n    stickyIndicesFromProps: Set<number>,\n    first: number,\n    last: number,\n    inversionStyle: ViewStyleProp,\n  ) {\n    const {\n      CellRendererComponent,\n      ItemSeparatorComponent,\n      data,\n      getItem,\n      getItemCount,\n      horizontal,\n      keyExtractor,\n    } = this.props;\n    const stickyOffset = this.props.ListHeaderComponent ? 1 : 0;\n    const end = getItemCount(data) - 1;\n    let prevCellKey;\n    last = Math.min(end, last);\n    for (let ii = first; ii <= last; ii++) {\n      const item = getItem(data, ii);\n      const key = keyExtractor(item, ii);\n      this._indicesToKeys.set(ii, key);\n      if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n        stickyHeaderIndices.push(cells.length);\n      }\n      cells.push(\n        <CellRenderer\n          CellRendererComponent={CellRendererComponent}\n          ItemSeparatorComponent={ii < end ? ItemSeparatorComponent : undefined}\n          cellKey={key}\n          fillRateHelper={this._fillRateHelper}\n          horizontal={horizontal}\n          index={ii}\n          inversionStyle={inversionStyle}\n          item={item}\n          key={key}\n          prevCellKey={prevCellKey}\n          onUpdateSeparators={this._onUpdateSeparators}\n          onLayout={e => this._onCellLayout(e, key, ii)}\n          onUnmount={this._onCellUnmount}\n          parentProps={this.props}\n          ref={ref => {\n            this._cellRefs[key] = ref;\n          }}\n        />,\n      );\n      prevCellKey = key;\n    }\n  }\n\n  _onUpdateSeparators = (keys: Array<?string>, newProps: Object) => {\n    keys.forEach(key => {\n      const ref = key != null && this._cellRefs[key];\n      ref && ref.updateSeparatorProps(newProps);\n    });\n  };\n\n  _isVirtualizationDisabled(): boolean {\n    return this.props.disableVirtualization || false;\n  }\n\n  _isNestedWithSameOrientation(): boolean {\n    const nestedContext = this.context;\n    return !!(\n      nestedContext && !!nestedContext.horizontal === !!this.props.horizontal\n    );\n  }\n\n  render(): React.Node {\n    if (__DEV__) {\n      const flatStyles = flattenStyle(this.props.contentContainerStyle);\n      if (flatStyles != null && flatStyles.flexWrap === 'wrap') {\n        console.warn(\n          '`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' +\n            'Consider using `numColumns` with `FlatList` instead.',\n        );\n      }\n    }\n    const {\n      ListEmptyComponent,\n      ListFooterComponent,\n      ListHeaderComponent,\n    } = this.props;\n    const {data, horizontal} = this.props;\n    const isVirtualizationDisabled = this._isVirtualizationDisabled();\n    const inversionStyle = this.props.inverted\n      ? this.props.horizontal\n        ? styles.horizontallyInverted\n        : styles.verticallyInverted\n      : null;\n    const cells = [];\n    const stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);\n    const stickyHeaderIndices = [];\n    if (ListHeaderComponent) {\n      if (stickyIndicesFromProps.has(0)) {\n        stickyHeaderIndices.push(0);\n      }\n      const element = React.isValidElement(ListHeaderComponent) ? (\n        ListHeaderComponent\n      ) : (\n        // $FlowFixMe\n        <ListHeaderComponent />\n      );\n      cells.push(\n        <VirtualizedListCellContextProvider\n          cellKey={this._getCellKey() + '-header'}\n          key=\"$header\">\n          <View\n            onLayout={this._onLayoutHeader}\n            style={StyleSheet.compose(\n              inversionStyle,\n              this.props.ListHeaderComponentStyle,\n            )}>\n            {\n              // $FlowFixMe - Typing ReactNativeComponent revealed errors\n              element\n            }\n          </View>\n        </VirtualizedListCellContextProvider>,\n      );\n    }\n    const itemCount = this.props.getItemCount(data);\n    if (itemCount > 0) {\n      _usedIndexForKey = false;\n      _keylessItemComponentName = '';\n      const spacerKey = !horizontal ? 'height' : 'width';\n      const lastInitialIndex = this.props.initialScrollIndex\n        ? -1\n        : this.props.initialNumToRender - 1;\n      const {first, last} = this.state;\n      this._pushCells(\n        cells,\n        stickyHeaderIndices,\n        stickyIndicesFromProps,\n        0,\n        lastInitialIndex,\n        inversionStyle,\n      );\n      const firstAfterInitial = Math.max(lastInitialIndex + 1, first);\n      if (!isVirtualizationDisabled && first > lastInitialIndex + 1) {\n        let insertedStickySpacer = false;\n        if (stickyIndicesFromProps.size > 0) {\n          const stickyOffset = ListHeaderComponent ? 1 : 0;\n          // See if there are any sticky headers in the virtualized space that we need to render.\n          for (let ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) {\n            if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n              const initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n              const stickyBlock = this._getFrameMetricsApprox(ii);\n              const leadSpace =\n                stickyBlock.offset -\n                initBlock.offset -\n                (this.props.initialScrollIndex ? 0 : initBlock.length);\n              cells.push(\n                /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment\n                 * suppresses an error found when Flow v0.111 was deployed. To\n                 * see the error, delete this comment and run Flow. */\n                <View key=\"$sticky_lead\" style={{[spacerKey]: leadSpace}} />,\n              );\n              this._pushCells(\n                cells,\n                stickyHeaderIndices,\n                stickyIndicesFromProps,\n                ii,\n                ii,\n                inversionStyle,\n              );\n              const trailSpace =\n                this._getFrameMetricsApprox(first).offset -\n                (stickyBlock.offset + stickyBlock.length);\n              cells.push(\n                /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment\n                 * suppresses an error found when Flow v0.111 was deployed. To\n                 * see the error, delete this comment and run Flow. */\n                <View key=\"$sticky_trail\" style={{[spacerKey]: trailSpace}} />,\n              );\n              insertedStickySpacer = true;\n              break;\n            }\n          }\n        }\n        if (!insertedStickySpacer) {\n          const initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n          const firstSpace =\n            this._getFrameMetricsApprox(first).offset -\n            (initBlock.offset + initBlock.length);\n          cells.push(\n            /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment\n             * suppresses an error found when Flow v0.111 was deployed. To see\n             * the error, delete this comment and run Flow. */\n            <View key=\"$lead_spacer\" style={{[spacerKey]: firstSpace}} />,\n          );\n        }\n      }\n      this._pushCells(\n        cells,\n        stickyHeaderIndices,\n        stickyIndicesFromProps,\n        firstAfterInitial,\n        last,\n        inversionStyle,\n      );\n      if (!this._hasWarned.keys && _usedIndexForKey) {\n        console.warn(\n          'VirtualizedList: missing keys for items, make sure to specify a key or id property on each ' +\n            'item or provide a custom keyExtractor.',\n          _keylessItemComponentName,\n        );\n        this._hasWarned.keys = true;\n      }\n      if (!isVirtualizationDisabled && last < itemCount - 1) {\n        const lastFrame = this._getFrameMetricsApprox(last);\n        // Without getItemLayout, we limit our tail spacer to the _highestMeasuredFrameIndex to\n        // prevent the user for hyperscrolling into un-measured area because otherwise content will\n        // likely jump around as it renders in above the viewport.\n        const end = this.props.getItemLayout\n          ? itemCount - 1\n          : Math.min(itemCount - 1, this._highestMeasuredFrameIndex);\n        const endFrame = this._getFrameMetricsApprox(end);\n        const tailSpacerLength =\n          endFrame.offset +\n          endFrame.length -\n          (lastFrame.offset + lastFrame.length);\n        cells.push(\n          /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses\n           * an error found when Flow v0.111 was deployed. To see the error,\n           * delete this comment and run Flow. */\n          <View key=\"$tail_spacer\" style={{[spacerKey]: tailSpacerLength}} />,\n        );\n      }\n    } else if (ListEmptyComponent) {\n      const element: React.Element<any> = ((React.isValidElement(\n        ListEmptyComponent,\n      ) ? (\n        ListEmptyComponent\n      ) : (\n        // $FlowFixMe\n        <ListEmptyComponent />\n      )): any);\n      cells.push(\n        React.cloneElement(element, {\n          key: '$empty',\n          onLayout: event => {\n            this._onLayoutEmpty(event);\n            if (element.props.onLayout) {\n              element.props.onLayout(event);\n            }\n          },\n          style: StyleSheet.compose(inversionStyle, element.props.style),\n        }),\n      );\n    }\n    if (ListFooterComponent) {\n      const element = React.isValidElement(ListFooterComponent) ? (\n        ListFooterComponent\n      ) : (\n        // $FlowFixMe\n        <ListFooterComponent />\n      );\n      cells.push(\n        <VirtualizedListCellContextProvider\n          cellKey={this._getFooterCellKey()}\n          key=\"$footer\">\n          <View\n            onLayout={this._onLayoutFooter}\n            style={StyleSheet.compose(\n              inversionStyle,\n              this.props.ListFooterComponentStyle,\n            )}>\n            {\n              // $FlowFixMe - Typing ReactNativeComponent revealed errors\n              element\n            }\n          </View>\n        </VirtualizedListCellContextProvider>,\n      );\n    }\n    const scrollProps = {\n      ...this.props,\n      onContentSizeChange: this._onContentSizeChange,\n      onLayout: this._onLayout,\n      onScroll: this._onScroll,\n      onScrollBeginDrag: this._onScrollBeginDrag,\n      onScrollEndDrag: this._onScrollEndDrag,\n      onMomentumScrollEnd: this._onMomentumScrollEnd,\n      scrollEventThrottle: this.props.scrollEventThrottle, // TODO: Android support\n      invertStickyHeaders:\n        this.props.invertStickyHeaders !== undefined\n          ? this.props.invertStickyHeaders\n          : this.props.inverted,\n      stickyHeaderIndices,\n      style: inversionStyle\n        ? [inversionStyle, this.props.style]\n        : this.props.style,\n    };\n\n    this._hasMore =\n      this.state.last < this.props.getItemCount(this.props.data) - 1;\n\n    const innerRet = (\n      <VirtualizedListContextProvider\n        value={{\n          cellKey: null,\n          getScrollMetrics: this._getScrollMetrics,\n          horizontal: this.props.horizontal,\n          getOutermostParentListRef: this._getOutermostParentListRef,\n          getNestedChildState: this._getNestedChildState,\n          registerAsNestedChild: this._registerAsNestedChild,\n          unregisterAsNestedChild: this._unregisterAsNestedChild,\n          debugInfo: this._getDebugInfo(),\n        }}>\n        {React.cloneElement(\n          (\n            this.props.renderScrollComponent ||\n            this._defaultRenderScrollComponent\n          )(scrollProps),\n          {\n            ref: this._captureScrollRef,\n          },\n          cells,\n        )}\n      </VirtualizedListContextProvider>\n    );\n    let ret = innerRet;\n    if (__DEV__) {\n      ret = (\n        <ScrollView.Context.Consumer>\n          {scrollContext => {\n            if (\n              scrollContext != null &&\n              !scrollContext.horizontal === !this.props.horizontal &&\n              !this._hasWarned.nesting &&\n              this.context == null\n            ) {\n              // TODO (T46547044): use React.warn once 16.9 is sync'd: https://github.com/facebook/react/pull/15170\n              console.error(\n                'VirtualizedLists should never be nested inside plain ScrollViews with the same ' +\n                  'orientation because it can break windowing and other functionality - use another ' +\n                  'VirtualizedList-backed container instead.',\n              );\n              this._hasWarned.nesting = true;\n            }\n            return innerRet;\n          }}\n        </ScrollView.Context.Consumer>\n      );\n    }\n    if (this.props.debug) {\n      return (\n        <View style={styles.debug}>\n          {ret}\n          {this._renderDebugOverlay()}\n        </View>\n      );\n    } else {\n      return ret;\n    }\n  }\n\n  componentDidUpdate(prevProps: Props) {\n    const {data, extraData} = this.props;\n    if (data !== prevProps.data || extraData !== prevProps.extraData) {\n      // clear the viewableIndices cache to also trigger\n      // the onViewableItemsChanged callback with the new data\n      this._viewabilityTuples.forEach(tuple => {\n        tuple.viewabilityHelper.resetViewableIndices();\n      });\n    }\n    // The `this._hiPriInProgress` is guaranteeing a hiPri cell update will only happen\n    // once per fiber update. The `_scheduleCellsToRenderUpdate` will set it to true\n    // if a hiPri update needs to perform. If `componentDidUpdate` is triggered with\n    // `this._hiPriInProgress=true`, means it's triggered by the hiPri update. The\n    // `_scheduleCellsToRenderUpdate` will check this condition and not perform\n    // another hiPri update.\n    const hiPriInProgress = this._hiPriInProgress;\n    this._scheduleCellsToRenderUpdate();\n    // Make sure setting `this._hiPriInProgress` back to false after `componentDidUpdate`\n    // is triggered with `this._hiPriInProgress = true`\n    if (hiPriInProgress) {\n      this._hiPriInProgress = false;\n    }\n  }\n\n  _averageCellLength = 0;\n  // Maps a cell key to the set of keys for all outermost child lists within that cell\n  _cellKeysToChildListKeys: Map<string, Set<string>> = new Map();\n  _cellRefs = {};\n  _fillRateHelper: FillRateHelper;\n  _frames = {};\n  _footerLength = 0;\n  _hasDoneInitialScroll = false;\n  _hasInteracted = false;\n  _hasMore = false;\n  _hasWarned = {};\n  _headerLength = 0;\n  _hiPriInProgress: boolean = false; // flag to prevent infinite hiPri cell limit update\n  _highestMeasuredFrameIndex = 0;\n  _indicesToKeys: Map<number, string> = new Map();\n  _nestedChildLists: Map<\n    string,\n    {\n      ref: ?VirtualizedList,\n      state: ?ChildListState,\n      ...\n    },\n  > = new Map();\n  _offsetFromParentVirtualizedList: number = 0;\n  _prevParentOffset: number = 0;\n  _scrollMetrics = {\n    contentLength: 0,\n    dOffset: 0,\n    dt: 10,\n    offset: 0,\n    timestamp: 0,\n    velocity: 0,\n    visibleLength: 0,\n  };\n  _scrollRef: ?React.ElementRef<any> = null;\n  _sentEndForContentLength = 0;\n  _totalCellLength = 0;\n  _totalCellsMeasured = 0;\n  _updateCellsToRenderBatcher: Batchinator;\n  _viewabilityTuples: Array<ViewabilityHelperCallbackTuple> = [];\n\n  _captureScrollRef = ref => {\n    this._scrollRef = ref;\n  };\n\n  _computeBlankness() {\n    this._fillRateHelper.computeBlankness(\n      this.props,\n      this.state,\n      this._scrollMetrics,\n    );\n  }\n\n  _defaultRenderScrollComponent = props => {\n    const onRefresh = props.onRefresh;\n    if (this._isNestedWithSameOrientation()) {\n      // $FlowFixMe - Typing ReactNativeComponent revealed errors\n      return <View {...props} />;\n    } else if (onRefresh) {\n      invariant(\n        typeof props.refreshing === 'boolean',\n        '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' +\n          /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses\n           * an error found when Flow v0.111 was deployed. To see the error,\n           * delete this comment and run Flow. */\n          JSON.stringify(props.refreshing) +\n          '`',\n      );\n      return (\n        // $FlowFixMe Invalid prop usage\n        <ScrollView\n          {...props}\n          refreshControl={\n            props.refreshControl == null ? (\n              <RefreshControl\n                refreshing={props.refreshing}\n                onRefresh={onRefresh}\n                progressViewOffset={props.progressViewOffset}\n              />\n            ) : (\n              props.refreshControl\n            )\n          }\n        />\n      );\n    } else {\n      // $FlowFixMe Invalid prop usage\n      return <ScrollView {...props} />;\n    }\n  };\n\n  _onCellLayout(e, cellKey, index) {\n    const layout = e.nativeEvent.layout;\n    const next = {\n      offset: this._selectOffset(layout),\n      length: this._selectLength(layout),\n      index,\n      inLayout: true,\n    };\n    const curr = this._frames[cellKey];\n    if (\n      !curr ||\n      next.offset !== curr.offset ||\n      next.length !== curr.length ||\n      index !== curr.index\n    ) {\n      this._totalCellLength += next.length - (curr ? curr.length : 0);\n      this._totalCellsMeasured += curr ? 0 : 1;\n      this._averageCellLength =\n        this._totalCellLength / this._totalCellsMeasured;\n      this._frames[cellKey] = next;\n      this._highestMeasuredFrameIndex = Math.max(\n        this._highestMeasuredFrameIndex,\n        index,\n      );\n      this._scheduleCellsToRenderUpdate();\n    } else {\n      this._frames[cellKey].inLayout = true;\n    }\n\n    this._triggerRemeasureForChildListsInCell(cellKey);\n\n    this._computeBlankness();\n    this._updateViewableItems(this.props.data);\n  }\n\n  _onCellUnmount = (cellKey: string) => {\n    const curr = this._frames[cellKey];\n    if (curr) {\n      this._frames[cellKey] = {...curr, inLayout: false};\n    }\n  };\n\n  _triggerRemeasureForChildListsInCell(cellKey: string): void {\n    const childListKeys = this._cellKeysToChildListKeys.get(cellKey);\n    if (childListKeys) {\n      for (let childKey of childListKeys) {\n        const childList = this._nestedChildLists.get(childKey);\n        childList &&\n          childList.ref &&\n          childList.ref.measureLayoutRelativeToContainingList();\n      }\n    }\n  }\n\n  measureLayoutRelativeToContainingList(): void {\n    // TODO (T35574538): findNodeHandle sometimes crashes with \"Unable to find\n    // node on an unmounted component\" during scrolling\n    try {\n      if (!this._scrollRef) {\n        return;\n      }\n      // We are assuming that getOutermostParentListRef().getScrollRef()\n      // is a non-null reference to a ScrollView\n      this._scrollRef.measureLayout(\n        this.context.getOutermostParentListRef().getScrollRef(),\n        (x, y, width, height) => {\n          this._offsetFromParentVirtualizedList = this._selectOffset({x, y});\n          this._scrollMetrics.contentLength = this._selectLength({\n            width,\n            height,\n          });\n          const scrollMetrics = this._convertParentScrollMetrics(\n            this.context.getScrollMetrics(),\n          );\n          this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n          this._scrollMetrics.offset = scrollMetrics.offset;\n        },\n        error => {\n          console.warn(\n            \"VirtualizedList: Encountered an error while measuring a list's\" +\n              ' offset from its containing VirtualizedList.',\n          );\n        },\n      );\n    } catch (error) {\n      console.warn(\n        'measureLayoutRelativeToContainingList threw an error',\n        error.stack,\n      );\n    }\n  }\n\n  _onLayout = (e: Object) => {\n    if (this._isNestedWithSameOrientation()) {\n      // Need to adjust our scroll metrics to be relative to our containing\n      // VirtualizedList before we can make claims about list item viewability\n      this.measureLayoutRelativeToContainingList();\n    } else {\n      this._scrollMetrics.visibleLength = this._selectLength(\n        e.nativeEvent.layout,\n      );\n    }\n    this.props.onLayout && this.props.onLayout(e);\n    this._scheduleCellsToRenderUpdate();\n    this._maybeCallOnEndReached();\n  };\n\n  _onLayoutEmpty = e => {\n    this.props.onLayout && this.props.onLayout(e);\n  };\n\n  _getFooterCellKey(): string {\n    return this._getCellKey() + '-footer';\n  }\n\n  _onLayoutFooter = e => {\n    this._triggerRemeasureForChildListsInCell(this._getFooterCellKey());\n    this._footerLength = this._selectLength(e.nativeEvent.layout);\n  };\n\n  _onLayoutHeader = e => {\n    this._headerLength = this._selectLength(e.nativeEvent.layout);\n  };\n\n  _renderDebugOverlay() {\n    const normalize =\n      this._scrollMetrics.visibleLength /\n      (this._scrollMetrics.contentLength || 1);\n    const framesInLayout = [];\n    const itemCount = this.props.getItemCount(this.props.data);\n    for (let ii = 0; ii < itemCount; ii++) {\n      const frame = this._getFrameMetricsApprox(ii);\n      /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.68 was deployed. To see the error delete this\n       * comment and run Flow. */\n      if (frame.inLayout) {\n        framesInLayout.push(frame);\n      }\n    }\n    const windowTop = this._getFrameMetricsApprox(this.state.first).offset;\n    const frameLast = this._getFrameMetricsApprox(this.state.last);\n    const windowLen = frameLast.offset + frameLast.length - windowTop;\n    const visTop = this._scrollMetrics.offset;\n    const visLen = this._scrollMetrics.visibleLength;\n\n    return (\n      <View style={[styles.debugOverlayBase, styles.debugOverlay]}>\n        {framesInLayout.map((f, ii) => (\n          <View\n            key={'f' + ii}\n            style={[\n              styles.debugOverlayBase,\n              styles.debugOverlayFrame,\n              {\n                top: f.offset * normalize,\n                height: f.length * normalize,\n              },\n            ]}\n          />\n        ))}\n        <View\n          style={[\n            styles.debugOverlayBase,\n            styles.debugOverlayFrameLast,\n            {\n              top: windowTop * normalize,\n              height: windowLen * normalize,\n            },\n          ]}\n        />\n        <View\n          style={[\n            styles.debugOverlayBase,\n            styles.debugOverlayFrameVis,\n            {\n              top: visTop * normalize,\n              height: visLen * normalize,\n            },\n          ]}\n        />\n      </View>\n    );\n  }\n\n  _selectLength(\n    metrics: $ReadOnly<{\n      height: number,\n      width: number,\n      ...\n    }>,\n  ): number {\n    return !this.props.horizontal ? metrics.height : metrics.width;\n  }\n\n  _selectOffset(\n    metrics: $ReadOnly<{\n      x: number,\n      y: number,\n      ...\n    }>,\n  ): number {\n    return !this.props.horizontal ? metrics.y : metrics.x;\n  }\n\n  _maybeCallOnEndReached() {\n    const {\n      data,\n      getItemCount,\n      onEndReached,\n      onEndReachedThreshold,\n    } = this.props;\n    const {contentLength, visibleLength, offset} = this._scrollMetrics;\n    const distanceFromEnd = contentLength - visibleLength - offset;\n    const threshold = onEndReachedThreshold\n      ? onEndReachedThreshold * visibleLength\n      : 2;\n    if (\n      onEndReached &&\n      this.state.last === getItemCount(data) - 1 &&\n      distanceFromEnd < threshold &&\n      this._scrollMetrics.contentLength !== this._sentEndForContentLength\n    ) {\n      // Only call onEndReached once for a given content length\n      this._sentEndForContentLength = this._scrollMetrics.contentLength;\n      onEndReached({distanceFromEnd});\n    } else if (distanceFromEnd > threshold) {\n      // If the user scrolls away from the end and back again cause\n      // an onEndReached to be triggered again\n      this._sentEndForContentLength = 0;\n    }\n  }\n\n  _onContentSizeChange = (width: number, height: number) => {\n    if (\n      width > 0 &&\n      height > 0 &&\n      this.props.initialScrollIndex != null &&\n      this.props.initialScrollIndex > 0 &&\n      !this._hasDoneInitialScroll\n    ) {\n      if (this.props.contentOffset == null) {\n        this.scrollToIndex({\n          animated: false,\n          index: this.props.initialScrollIndex,\n        });\n      }\n      this._hasDoneInitialScroll = true;\n    }\n    if (this.props.onContentSizeChange) {\n      this.props.onContentSizeChange(width, height);\n    }\n    this._scrollMetrics.contentLength = this._selectLength({height, width});\n    this._scheduleCellsToRenderUpdate();\n    this._maybeCallOnEndReached();\n  };\n\n  /* Translates metrics from a scroll event in a parent VirtualizedList into\n   * coordinates relative to the child list.\n   */\n  _convertParentScrollMetrics = (metrics: {\n    visibleLength: number,\n    offset: number,\n    ...\n  }) => {\n    // Offset of the top of the nested list relative to the top of its parent's viewport\n    const offset = metrics.offset - this._offsetFromParentVirtualizedList;\n    // Child's visible length is the same as its parent's\n    const visibleLength = metrics.visibleLength;\n    const dOffset = offset - this._scrollMetrics.offset;\n    const contentLength = this._scrollMetrics.contentLength;\n\n    return {\n      visibleLength,\n      contentLength,\n      offset,\n      dOffset,\n    };\n  };\n\n  _onScroll = (e: Object) => {\n    this._nestedChildLists.forEach(childList => {\n      childList.ref && childList.ref._onScroll(e);\n    });\n    if (this.props.onScroll) {\n      this.props.onScroll(e);\n    }\n    const timestamp = e.timeStamp;\n    let visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);\n    let contentLength = this._selectLength(e.nativeEvent.contentSize);\n    let offset = this._selectOffset(e.nativeEvent.contentOffset);\n    let dOffset = offset - this._scrollMetrics.offset;\n\n    if (this._isNestedWithSameOrientation()) {\n      if (this._scrollMetrics.contentLength === 0) {\n        // Ignore scroll events until onLayout has been called and we\n        // know our offset from our offset from our parent\n        return;\n      }\n      ({\n        visibleLength,\n        contentLength,\n        offset,\n        dOffset,\n      } = this._convertParentScrollMetrics({\n        visibleLength,\n        offset,\n      }));\n    }\n\n    const dt = this._scrollMetrics.timestamp\n      ? Math.max(1, timestamp - this._scrollMetrics.timestamp)\n      : 1;\n    const velocity = dOffset / dt;\n\n    if (\n      dt > 500 &&\n      this._scrollMetrics.dt > 500 &&\n      contentLength > 5 * visibleLength &&\n      !this._hasWarned.perf\n    ) {\n      infoLog(\n        'VirtualizedList: You have a large list that is slow to update - make sure your ' +\n          'renderItem function renders components that follow React performance best practices ' +\n          'like PureComponent, shouldComponentUpdate, etc.',\n        {dt, prevDt: this._scrollMetrics.dt, contentLength},\n      );\n      this._hasWarned.perf = true;\n    }\n    this._scrollMetrics = {\n      contentLength,\n      dt,\n      dOffset,\n      offset,\n      timestamp,\n      velocity,\n      visibleLength,\n    };\n    this._updateViewableItems(this.props.data);\n    if (!this.props) {\n      return;\n    }\n    this._maybeCallOnEndReached();\n    if (velocity !== 0) {\n      this._fillRateHelper.activate();\n    }\n    this._computeBlankness();\n    this._scheduleCellsToRenderUpdate();\n  };\n\n  _scheduleCellsToRenderUpdate() {\n    const {first, last} = this.state;\n    const {offset, visibleLength, velocity} = this._scrollMetrics;\n    const itemCount = this.props.getItemCount(this.props.data);\n    let hiPri = false;\n    const scrollingThreshold =\n      /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.63 was deployed. To see the error delete\n       * this comment and run Flow. */\n      (this.props.onEndReachedThreshold * visibleLength) / 2;\n    // Mark as high priority if we're close to the start of the first item\n    // But only if there are items before the first rendered item\n    if (first > 0) {\n      const distTop = offset - this._getFrameMetricsApprox(first).offset;\n      hiPri =\n        hiPri || distTop < 0 || (velocity < -2 && distTop < scrollingThreshold);\n    }\n    // Mark as high priority if we're close to the end of the last item\n    // But only if there are items after the last rendered item\n    if (last < itemCount - 1) {\n      const distBottom =\n        this._getFrameMetricsApprox(last).offset - (offset + visibleLength);\n      hiPri =\n        hiPri ||\n        distBottom < 0 ||\n        (velocity > 2 && distBottom < scrollingThreshold);\n    }\n    // Only trigger high-priority updates if we've actually rendered cells,\n    // and with that size estimate, accurately compute how many cells we should render.\n    // Otherwise, it would just render as many cells as it can (of zero dimension),\n    // each time through attempting to render more (limited by maxToRenderPerBatch),\n    // starving the renderer from actually laying out the objects and computing _averageCellLength.\n    // If this is triggered in an `componentDidUpdate` followed by a hiPri cellToRenderUpdate\n    // We shouldn't do another hipri cellToRenderUpdate\n    if (\n      hiPri &&\n      (this._averageCellLength || this.props.getItemLayout) &&\n      !this._hiPriInProgress\n    ) {\n      this._hiPriInProgress = true;\n      // Don't worry about interactions when scrolling quickly; focus on filling content as fast\n      // as possible.\n      this._updateCellsToRenderBatcher.dispose({abort: true});\n      this._updateCellsToRender();\n      return;\n    } else {\n      this._updateCellsToRenderBatcher.schedule();\n    }\n  }\n\n  _onScrollBeginDrag = (e): void => {\n    this._nestedChildLists.forEach(childList => {\n      childList.ref && childList.ref._onScrollBeginDrag(e);\n    });\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.recordInteraction();\n    });\n    this._hasInteracted = true;\n    this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n  };\n\n  _onScrollEndDrag = (e): void => {\n    const {velocity} = e.nativeEvent;\n    if (velocity) {\n      this._scrollMetrics.velocity = this._selectOffset(velocity);\n    }\n    this._computeBlankness();\n    this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n  };\n\n  _onMomentumScrollEnd = (e): void => {\n    this._scrollMetrics.velocity = 0;\n    this._computeBlankness();\n    this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n  };\n\n  _updateCellsToRender = () => {\n    const {data, getItemCount, onEndReachedThreshold} = this.props;\n    const isVirtualizationDisabled = this._isVirtualizationDisabled();\n    this._updateViewableItems(data);\n    if (!data) {\n      return;\n    }\n    this.setState(state => {\n      let newState;\n      const {contentLength, offset, visibleLength} = this._scrollMetrics;\n      if (!isVirtualizationDisabled) {\n        // If we run this with bogus data, we'll force-render window {first: 0, last: 0},\n        // and wipe out the initialNumToRender rendered elements.\n        // So let's wait until the scroll view metrics have been set up. And until then,\n        // we will trust the initialNumToRender suggestion\n        if (visibleLength > 0 && contentLength > 0) {\n          // If we have a non-zero initialScrollIndex and run this before we've scrolled,\n          // we'll wipe out the initialNumToRender rendered elements starting at initialScrollIndex.\n          // So let's wait until we've scrolled the view to the right place. And until then,\n          // we will trust the initialScrollIndex suggestion.\n          if (!this.props.initialScrollIndex || this._scrollMetrics.offset) {\n            newState = computeWindowedRenderLimits(\n              this.props,\n              state,\n              this._getFrameMetricsApprox,\n              this._scrollMetrics,\n            );\n          }\n        }\n      } else {\n        const distanceFromEnd = contentLength - visibleLength - offset;\n        const renderAhead =\n          /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses\n           * an error found when Flow v0.63 was deployed. To see the error\n           * delete this comment and run Flow. */\n          distanceFromEnd < onEndReachedThreshold * visibleLength\n            ? this.props.maxToRenderPerBatch\n            : 0;\n        newState = {\n          first: 0,\n          last: Math.min(state.last + renderAhead, getItemCount(data) - 1),\n        };\n      }\n      if (newState && this._nestedChildLists.size > 0) {\n        const newFirst = newState.first;\n        const newLast = newState.last;\n        // If some cell in the new state has a child list in it, we should only render\n        // up through that item, so that we give that list a chance to render.\n        // Otherwise there's churn from multiple child lists mounting and un-mounting\n        // their items.\n        for (let ii = newFirst; ii <= newLast; ii++) {\n          const cellKeyForIndex = this._indicesToKeys.get(ii);\n          const childListKeys =\n            cellKeyForIndex &&\n            this._cellKeysToChildListKeys.get(cellKeyForIndex);\n          if (!childListKeys) {\n            continue;\n          }\n          let someChildHasMore = false;\n          // For each cell, need to check whether any child list in it has more elements to render\n          for (let childKey of childListKeys) {\n            const childList = this._nestedChildLists.get(childKey);\n            if (childList && childList.ref && childList.ref.hasMore()) {\n              someChildHasMore = true;\n              break;\n            }\n          }\n          if (someChildHasMore) {\n            newState.last = ii;\n            break;\n          }\n        }\n      }\n      if (\n        newState != null &&\n        newState.first === state.first &&\n        newState.last === state.last\n      ) {\n        newState = null;\n      }\n      return newState;\n    });\n  };\n\n  _createViewToken = (index: number, isViewable: boolean) => {\n    const {data, getItem, keyExtractor} = this.props;\n    const item = getItem(data, index);\n    return {index, item, key: keyExtractor(item, index), isViewable};\n  };\n\n  _getFrameMetricsApprox = (\n    index: number,\n  ): {\n    length: number,\n    offset: number,\n    ...\n  } => {\n    const frame = this._getFrameMetrics(index);\n    if (frame && frame.index === index) {\n      // check for invalid frames due to row re-ordering\n      return frame;\n    } else {\n      const {getItemLayout} = this.props;\n      invariant(\n        !getItemLayout,\n        'Should not have to estimate frames when a measurement metrics function is provided',\n      );\n      return {\n        length: this._averageCellLength,\n        offset: this._averageCellLength * index,\n      };\n    }\n  };\n\n  _getFrameMetrics = (\n    index: number,\n  ): ?{\n    length: number,\n    offset: number,\n    index: number,\n    inLayout?: boolean,\n    ...\n  } => {\n    const {\n      data,\n      getItem,\n      getItemCount,\n      getItemLayout,\n      keyExtractor,\n    } = this.props;\n    invariant(\n      getItemCount(data) > index,\n      'Tried to get frame for out of range index ' + index,\n    );\n    const item = getItem(data, index);\n    let frame = item && this._frames[keyExtractor(item, index)];\n    if (!frame || frame.index !== index) {\n      if (getItemLayout) {\n        frame = getItemLayout(data, index);\n      }\n    }\n    /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.63 was deployed. To see the error delete this\n     * comment and run Flow. */\n    return frame;\n  };\n\n  _updateViewableItems(data: any) {\n    const {getItemCount} = this.props;\n\n    this._viewabilityTuples.forEach(tuple => {\n      tuple.viewabilityHelper.onUpdate(\n        getItemCount(data),\n        this._scrollMetrics.offset,\n        this._scrollMetrics.visibleLength,\n        this._getFrameMetrics,\n        this._createViewToken,\n        tuple.onViewableItemsChanged,\n        this.state,\n      );\n    });\n  }\n}\n\ntype CellRendererProps = {\n  CellRendererComponent?: ?React.ComponentType<any>,\n  ItemSeparatorComponent: ?React.ComponentType<*>,\n  cellKey: string,\n  fillRateHelper: FillRateHelper,\n  horizontal: ?boolean,\n  index: number,\n  inversionStyle: ViewStyleProp,\n  item: Item,\n  // This is extracted by ScrollViewStickyHeader\n  onLayout: (event: Object) => void,\n  onUnmount: (cellKey: string) => void,\n  onUpdateSeparators: (cellKeys: Array<?string>, props: Object) => void,\n  parentProps: {\n    // e.g. height, y,\n    getItemLayout?: (\n      data: any,\n      index: number,\n    ) => {\n      length: number,\n      offset: number,\n      index: number,\n      ...\n    },\n    renderItem?: ?RenderItemType<Item>,\n    ListItemComponent?: ?(React.ComponentType<any> | React.Element<any>),\n    ...\n  },\n  prevCellKey: ?string,\n  ...\n};\n\ntype CellRendererState = {\n  separatorProps: $ReadOnly<{|\n    highlighted: boolean,\n    leadingItem: ?Item,\n  |}>,\n  ...\n};\n\nclass CellRenderer extends React.Component<\n  CellRendererProps,\n  CellRendererState,\n> {\n  state = {\n    separatorProps: {\n      highlighted: false,\n      leadingItem: this.props.item,\n    },\n  };\n\n  static getDerivedStateFromProps(\n    props: CellRendererProps,\n    prevState: CellRendererState,\n  ): ?CellRendererState {\n    return {\n      separatorProps: {\n        ...prevState.separatorProps,\n        leadingItem: props.item,\n      },\n    };\n  }\n\n  // TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not\n  // reused by SectionList and we can keep VirtualizedList simpler.\n  _separators = {\n    highlight: () => {\n      const {cellKey, prevCellKey} = this.props;\n      this.props.onUpdateSeparators([cellKey, prevCellKey], {\n        highlighted: true,\n      });\n    },\n    unhighlight: () => {\n      const {cellKey, prevCellKey} = this.props;\n      this.props.onUpdateSeparators([cellKey, prevCellKey], {\n        highlighted: false,\n      });\n    },\n    updateProps: (select: 'leading' | 'trailing', newProps: Object) => {\n      const {cellKey, prevCellKey} = this.props;\n      this.props.onUpdateSeparators(\n        [select === 'leading' ? prevCellKey : cellKey],\n        newProps,\n      );\n    },\n  };\n\n  updateSeparatorProps(newProps: Object) {\n    this.setState(state => ({\n      separatorProps: {...state.separatorProps, ...newProps},\n    }));\n  }\n\n  componentWillUnmount() {\n    this.props.onUnmount(this.props.cellKey);\n  }\n\n  _renderElement(renderItem, ListItemComponent, item, index) {\n    if (renderItem && ListItemComponent) {\n      console.warn(\n        'VirtualizedList: Both ListItemComponent and renderItem props are present. ListItemComponent will take' +\n          ' precedence over renderItem.',\n      );\n    }\n\n    if (ListItemComponent) {\n      /* $FlowFixMe(>=0.108.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.108 was deployed. To see the error, delete\n       * this comment and run Flow. */\n      return React.createElement(ListItemComponent, {\n        item,\n        index,\n        separators: this._separators,\n      });\n    }\n\n    if (renderItem) {\n      return renderItem({\n        item,\n        index,\n        separators: this._separators,\n      });\n    }\n\n    invariant(\n      false,\n      'VirtualizedList: Either ListItemComponent or renderItem props are required but none were found.',\n    );\n  }\n\n  render() {\n    const {\n      CellRendererComponent,\n      ItemSeparatorComponent,\n      fillRateHelper,\n      horizontal,\n      item,\n      index,\n      inversionStyle,\n      parentProps,\n    } = this.props;\n    const {renderItem, getItemLayout, ListItemComponent} = parentProps;\n    const element = this._renderElement(\n      renderItem,\n      ListItemComponent,\n      item,\n      index,\n    );\n\n    const onLayout =\n      /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.68 was deployed. To see the error delete this\n       * comment and run Flow. */\n      getItemLayout && !parentProps.debug && !fillRateHelper.enabled()\n        ? undefined\n        : this.props.onLayout;\n    // NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and\n    // called explicitly by `ScrollViewStickyHeader`.\n    const itemSeparator = ItemSeparatorComponent && (\n      <ItemSeparatorComponent {...this.state.separatorProps} />\n    );\n    const cellStyle = inversionStyle\n      ? horizontal\n        ? [styles.rowReverse, inversionStyle]\n        : [styles.columnReverse, inversionStyle]\n      : horizontal\n      ? [styles.row, inversionStyle]\n      : inversionStyle;\n    const result = !CellRendererComponent ? (\n      /* $FlowFixMe(>=0.89.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.89 was deployed. To see the error, delete\n       * this comment and run Flow. */\n      <View style={cellStyle} onLayout={onLayout}>\n        {element}\n        {itemSeparator}\n      </View>\n    ) : (\n      <CellRendererComponent\n        {...this.props}\n        style={cellStyle}\n        onLayout={onLayout}>\n        {element}\n        {itemSeparator}\n      </CellRendererComponent>\n    );\n\n    return (\n      <VirtualizedListCellContextProvider cellKey={this.props.cellKey}>\n        {result}\n      </VirtualizedListCellContextProvider>\n    );\n  }\n}\n\nfunction describeNestedLists(childList: {\n  +cellKey: string,\n  +key: string,\n  +ref: VirtualizedList,\n  +parentDebugInfo: ListDebugInfo,\n  +horizontal: boolean,\n  ...\n}) {\n  let trace =\n    'VirtualizedList trace:\\n' +\n    `  Child (${childList.horizontal ? 'horizontal' : 'vertical'}):\\n` +\n    `    listKey: ${childList.key}\\n` +\n    `    cellKey: ${childList.cellKey}`;\n\n  let debugInfo = childList.parentDebugInfo;\n  while (debugInfo) {\n    trace +=\n      `\\n  Parent (${debugInfo.horizontal ? 'horizontal' : 'vertical'}):\\n` +\n      `    listKey: ${debugInfo.listKey}\\n` +\n      `    cellKey: ${debugInfo.cellKey}`;\n    debugInfo = debugInfo.parent;\n  }\n  return trace;\n}\n\nconst styles = StyleSheet.create({\n  verticallyInverted: {\n    transform: [{scaleY: -1}],\n  },\n  horizontallyInverted: {\n    transform: [{scaleX: -1}],\n  },\n  row: {\n    flexDirection: 'row',\n  },\n  rowReverse: {\n    flexDirection: 'row-reverse',\n  },\n  columnReverse: {\n    flexDirection: 'column-reverse',\n  },\n  debug: {\n    flex: 1,\n  },\n  debugOverlayBase: {\n    position: 'absolute',\n    top: 0,\n    right: 0,\n  },\n  debugOverlay: {\n    bottom: 0,\n    width: 20,\n    borderColor: 'blue',\n    borderWidth: 1,\n  },\n  debugOverlayFrame: {\n    left: 0,\n    backgroundColor: 'orange',\n  },\n  debugOverlayFrameLast: {\n    left: 0,\n    borderColor: 'green',\n    borderWidth: 2,\n  },\n  debugOverlayFrameVis: {\n    left: 0,\n    borderColor: 'red',\n    borderWidth: 2,\n  },\n});\n\nmodule.exports = VirtualizedList;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type VirtualizedList from './VirtualizedList.js';\nimport * as React from 'react';\nimport {useMemo, useContext} from 'react';\n\ntype Frame = $ReadOnly<{\n  offset: number,\n  length: number,\n  index: number,\n  inLayout: boolean,\n}>;\n\nexport type ChildListState = $ReadOnly<{\n  first: number,\n  last: number,\n  frames: {[key: number]: Frame},\n}>;\n\n// Data propagated through nested lists (regardless of orientation) that is\n// useful for producing diagnostics for usage errors involving nesting (e.g\n// missing/duplicate keys).\nexport type ListDebugInfo = $ReadOnly<{\n  cellKey: string,\n  listKey: string,\n  parent: ?ListDebugInfo,\n  // We include all ancestors regardless of orientation, so this is not always\n  // identical to the child's orientation.\n  horizontal: boolean,\n}>;\n\ntype Context = $ReadOnly<{\n  cellKey: ?string,\n  getScrollMetrics: () => {\n    contentLength: number,\n    dOffset: number,\n    dt: number,\n    offset: number,\n    timestamp: number,\n    velocity: number,\n    visibleLength: number,\n  },\n  horizontal: ?boolean,\n  getOutermostParentListRef: () => VirtualizedList,\n  getNestedChildState: string => ?ChildListState,\n  registerAsNestedChild: ({\n    cellKey: string,\n    key: string,\n    ref: VirtualizedList,\n    parentDebugInfo: ListDebugInfo,\n  }) => ?ChildListState,\n  unregisterAsNestedChild: ({\n    key: string,\n    state: ChildListState,\n  }) => void,\n  debugInfo: ListDebugInfo,\n}>;\n\nexport const VirtualizedListContext: React.Context<?Context> = React.createContext(\n  null,\n);\n\n/**\n * Resets the context. Intended for use by portal-like components (e.g. Modal).\n */\nexport function VirtualizedListContextResetter({\n  children,\n}: {\n  children: React.Node,\n}): React.Node {\n  return (\n    <VirtualizedListContext.Provider value={null}>\n      {children}\n    </VirtualizedListContext.Provider>\n  );\n}\n\n/**\n * Sets the context with memoization. Intended to be used by `VirtualizedList`.\n */\nexport function VirtualizedListContextProvider({\n  children,\n  value,\n}: {\n  children: React.Node,\n  value: Context,\n}): React.Node {\n  // Avoid setting a newly created context object if the values are identical.\n  const context = useMemo(\n    () => ({\n      cellKey: null,\n      getScrollMetrics: value.getScrollMetrics,\n      horizontal: value.horizontal,\n      getOutermostParentListRef: value.getOutermostParentListRef,\n      getNestedChildState: value.getNestedChildState,\n      registerAsNestedChild: value.registerAsNestedChild,\n      unregisterAsNestedChild: value.unregisterAsNestedChild,\n      debugInfo: {\n        cellKey: value.debugInfo.cellKey,\n        horizontal: value.debugInfo.horizontal,\n        listKey: value.debugInfo.listKey,\n        parent: value.debugInfo.parent,\n      },\n    }),\n    [\n      value.getScrollMetrics,\n      value.horizontal,\n      value.getOutermostParentListRef,\n      value.getNestedChildState,\n      value.registerAsNestedChild,\n      value.unregisterAsNestedChild,\n      value.debugInfo.cellKey,\n      value.debugInfo.horizontal,\n      value.debugInfo.listKey,\n      value.debugInfo.parent,\n    ],\n  );\n  return (\n    <VirtualizedListContext.Provider value={context}>\n      {children}\n    </VirtualizedListContext.Provider>\n  );\n}\n\n/**\n * Sets the `cellKey`. Intended to be used by `VirtualizedList` for each cell.\n */\nexport function VirtualizedListCellContextProvider({\n  cellKey,\n  children,\n}: {\n  cellKey: string,\n  children: React.Node,\n}): React.Node {\n  const context = useContext(VirtualizedListContext);\n  return (\n    <VirtualizedListContext.Provider\n      value={context == null ? null : {...context, cellKey}}>\n      {children}\n    </VirtualizedListContext.Provider>\n  );\n}\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst InteractionManager = require('./InteractionManager');\n\n/**\n * A simple class for batching up invocations of a low-pri callback. A timeout is set to run the\n * callback once after a delay, no matter how many times it's scheduled. Once the delay is reached,\n * InteractionManager.runAfterInteractions is used to invoke the callback after any hi-pri\n * interactions are done running.\n *\n * Make sure to cleanup with dispose().  Example:\n *\n *   class Widget extends React.Component {\n *     _batchedSave: new Batchinator(() => this._saveState, 1000);\n *     _saveSate() {\n *       // save this.state to disk\n *     }\n *     componentDidUpdate() {\n *       this._batchedSave.schedule();\n *     }\n *     componentWillUnmount() {\n *       this._batchedSave.dispose();\n *     }\n *     ...\n *   }\n */\nclass Batchinator {\n  _callback: () => void;\n  _delay: number;\n  _taskHandle: ?{cancel: () => void, ...};\n  constructor(callback: () => void, delayMS: number) {\n    this._delay = delayMS;\n    this._callback = callback;\n  }\n  /*\n   * Cleanup any pending tasks.\n   *\n   * By default, if there is a pending task the callback is run immediately. Set the option abort to\n   * true to not call the callback if it was pending.\n   */\n  dispose(options: {abort: boolean, ...} = {abort: false}) {\n    if (this._taskHandle) {\n      this._taskHandle.cancel();\n      if (!options.abort) {\n        this._callback();\n      }\n      this._taskHandle = null;\n    }\n  }\n  schedule() {\n    if (this._taskHandle) {\n      return;\n    }\n    const timeoutHandle = setTimeout(() => {\n      this._taskHandle = InteractionManager.runAfterInteractions(() => {\n        // Note that we clear the handle before invoking the callback so that if the callback calls\n        // schedule again, it will actually schedule another task.\n        this._taskHandle = null;\n        this._callback();\n      });\n    }, this._delay);\n    this._taskHandle = {cancel: () => clearTimeout(timeoutHandle)};\n  }\n}\n\nmodule.exports = Batchinator;\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 * @flow\n * @format\n */\n\n'use strict';\n\nexport type FillRateInfo = Info;\n\nclass Info {\n  any_blank_count: number = 0;\n  any_blank_ms: number = 0;\n  any_blank_speed_sum: number = 0;\n  mostly_blank_count: number = 0;\n  mostly_blank_ms: number = 0;\n  pixels_blank: number = 0;\n  pixels_sampled: number = 0;\n  pixels_scrolled: number = 0;\n  total_time_spent: number = 0;\n  sample_count: number = 0;\n}\n\ntype FrameMetrics = {\n  inLayout?: boolean,\n  length: number,\n  offset: number,\n  ...\n};\n\nconst DEBUG = false;\n\nlet _listeners: Array<(Info) => void> = [];\nlet _minSampleCount = 10;\nlet _sampleRate = DEBUG ? 1 : null;\n\n/**\n * A helper class for detecting when the maximem fill rate of `VirtualizedList` is exceeded.\n * By default the sampling rate is set to zero and this will do nothing. If you want to collect\n * samples (e.g. to log them), make sure to call `FillRateHelper.setSampleRate(0.0-1.0)`.\n *\n * Listeners and sample rate are global for all `VirtualizedList`s - typical usage will combine with\n * `SceneTracker.getActiveScene` to determine the context of the events.\n */\nclass FillRateHelper {\n  _anyBlankStartTime = (null: ?number);\n  _enabled = false;\n  _getFrameMetrics: (index: number) => ?FrameMetrics;\n  _info = new Info();\n  _mostlyBlankStartTime = (null: ?number);\n  _samplesStartTime = (null: ?number);\n\n  static addListener(\n    callback: FillRateInfo => void,\n  ): {remove: () => void, ...} {\n    if (_sampleRate === null) {\n      console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.');\n    }\n    _listeners.push(callback);\n    return {\n      remove: () => {\n        _listeners = _listeners.filter(listener => callback !== listener);\n      },\n    };\n  }\n\n  static setSampleRate(sampleRate: number) {\n    _sampleRate = sampleRate;\n  }\n\n  static setMinSampleCount(minSampleCount: number) {\n    _minSampleCount = minSampleCount;\n  }\n\n  constructor(getFrameMetrics: (index: number) => ?FrameMetrics) {\n    this._getFrameMetrics = getFrameMetrics;\n    this._enabled = (_sampleRate || 0) > Math.random();\n    this._resetData();\n  }\n\n  activate() {\n    if (this._enabled && this._samplesStartTime == null) {\n      DEBUG && console.debug('FillRateHelper: activate');\n      this._samplesStartTime = global.performance.now();\n    }\n  }\n\n  deactivateAndFlush() {\n    if (!this._enabled) {\n      return;\n    }\n    const start = this._samplesStartTime; // const for flow\n    if (start == null) {\n      DEBUG &&\n        console.debug('FillRateHelper: bail on deactivate with no start time');\n      return;\n    }\n    if (this._info.sample_count < _minSampleCount) {\n      // Don't bother with under-sampled events.\n      this._resetData();\n      return;\n    }\n    const total_time_spent = global.performance.now() - start;\n    const info: any = {\n      ...this._info,\n      total_time_spent,\n    };\n    if (DEBUG) {\n      const derived = {\n        avg_blankness: this._info.pixels_blank / this._info.pixels_sampled,\n        avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000),\n        avg_speed_when_any_blank:\n          this._info.any_blank_speed_sum / this._info.any_blank_count,\n        any_blank_per_min:\n          this._info.any_blank_count / (total_time_spent / 1000 / 60),\n        any_blank_time_frac: this._info.any_blank_ms / total_time_spent,\n        mostly_blank_per_min:\n          this._info.mostly_blank_count / (total_time_spent / 1000 / 60),\n        mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent,\n      };\n      for (const key in derived) {\n        derived[key] = Math.round(1000 * derived[key]) / 1000;\n      }\n      console.debug('FillRateHelper deactivateAndFlush: ', {derived, info});\n    }\n    _listeners.forEach(listener => listener(info));\n    this._resetData();\n  }\n\n  computeBlankness(\n    props: {\n      data: any,\n      getItemCount: (data: any) => number,\n      initialNumToRender: number,\n      ...\n    },\n    state: {\n      first: number,\n      last: number,\n      ...\n    },\n    scrollMetrics: {\n      dOffset: number,\n      offset: number,\n      velocity: number,\n      visibleLength: number,\n      ...\n    },\n  ): number {\n    if (\n      !this._enabled ||\n      props.getItemCount(props.data) === 0 ||\n      this._samplesStartTime == null\n    ) {\n      return 0;\n    }\n    const {dOffset, offset, velocity, visibleLength} = scrollMetrics;\n\n    // Denominator metrics that we track for all events - most of the time there is no blankness and\n    // we want to capture that.\n    this._info.sample_count++;\n    this._info.pixels_sampled += Math.round(visibleLength);\n    this._info.pixels_scrolled += Math.round(Math.abs(dOffset));\n    const scrollSpeed = Math.round(Math.abs(velocity) * 1000); // px / sec\n\n    // Whether blank now or not, record the elapsed time blank if we were blank last time.\n    const now = global.performance.now();\n    if (this._anyBlankStartTime != null) {\n      this._info.any_blank_ms += now - this._anyBlankStartTime;\n    }\n    this._anyBlankStartTime = null;\n    if (this._mostlyBlankStartTime != null) {\n      this._info.mostly_blank_ms += now - this._mostlyBlankStartTime;\n    }\n    this._mostlyBlankStartTime = null;\n\n    let blankTop = 0;\n    let first = state.first;\n    let firstFrame = this._getFrameMetrics(first);\n    while (first <= state.last && (!firstFrame || !firstFrame.inLayout)) {\n      firstFrame = this._getFrameMetrics(first);\n      first++;\n    }\n    // Only count blankTop if we aren't rendering the first item, otherwise we will count the header\n    // as blank.\n    if (firstFrame && first > 0) {\n      blankTop = Math.min(\n        visibleLength,\n        Math.max(0, firstFrame.offset - offset),\n      );\n    }\n    let blankBottom = 0;\n    let last = state.last;\n    let lastFrame = this._getFrameMetrics(last);\n    while (last >= state.first && (!lastFrame || !lastFrame.inLayout)) {\n      lastFrame = this._getFrameMetrics(last);\n      last--;\n    }\n    // Only count blankBottom if we aren't rendering the last item, otherwise we will count the\n    // footer as blank.\n    if (lastFrame && last < props.getItemCount(props.data) - 1) {\n      const bottomEdge = lastFrame.offset + lastFrame.length;\n      blankBottom = Math.min(\n        visibleLength,\n        Math.max(0, offset + visibleLength - bottomEdge),\n      );\n    }\n    const pixels_blank = Math.round(blankTop + blankBottom);\n    const blankness = pixels_blank / visibleLength;\n    if (blankness > 0) {\n      this._anyBlankStartTime = now;\n      this._info.any_blank_speed_sum += scrollSpeed;\n      this._info.any_blank_count++;\n      this._info.pixels_blank += pixels_blank;\n      if (blankness > 0.5) {\n        this._mostlyBlankStartTime = now;\n        this._info.mostly_blank_count++;\n      }\n    } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) {\n      this.deactivateAndFlush();\n    }\n    return blankness;\n  }\n\n  enabled(): boolean {\n    return this._enabled;\n  }\n\n  _resetData() {\n    this._anyBlankStartTime = null;\n    this._info = new Info();\n    this._mostlyBlankStartTime = null;\n    this._samplesStartTime = null;\n  }\n}\n\nmodule.exports = FillRateHelper;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport AndroidSwipeRefreshLayoutNativeComponent, {\n  Commands as AndroidSwipeRefreshLayoutCommands,\n} from './AndroidSwipeRefreshLayoutNativeComponent';\nimport PullToRefreshViewNativeComponent, {\n  Commands as PullToRefreshCommands,\n} from './PullToRefreshViewNativeComponent';\n\nlet RefreshLayoutConsts: any;\nif (Platform.OS === 'android') {\n  const AndroidSwipeRefreshLayout = require('../../ReactNative/UIManager').getViewManagerConfig(\n    'AndroidSwipeRefreshLayout',\n  );\n  RefreshLayoutConsts = AndroidSwipeRefreshLayout\n    ? AndroidSwipeRefreshLayout.Constants\n    : {SIZE: {}};\n} else {\n  RefreshLayoutConsts = {SIZE: {}};\n}\n\ntype IOSProps = $ReadOnly<{|\n  /**\n   * The color of the refresh indicator.\n   */\n  tintColor?: ?ColorValue,\n  /**\n   * Title color.\n   */\n  titleColor?: ?ColorValue,\n  /**\n   * The title displayed under the refresh indicator.\n   */\n  title?: ?string,\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n  /**\n   * Whether the pull to refresh functionality is enabled.\n   */\n  enabled?: ?boolean,\n  /**\n   * The colors (at least one) that will be used to draw the refresh indicator.\n   */\n  colors?: ?$ReadOnlyArray<ColorValue>,\n  /**\n   * The background color of the refresh indicator.\n   */\n  progressBackgroundColor?: ?ColorValue,\n  /**\n   * Size of the refresh indicator, see RefreshControl.SIZE.\n   */\n  size?: ?(\n    | typeof RefreshLayoutConsts.SIZE.DEFAULT\n    | typeof RefreshLayoutConsts.SIZE.LARGE\n  ),\n  /**\n   * Progress view top offset\n   */\n  progressViewOffset?: ?number,\n|}>;\n\nexport type RefreshControlProps = $ReadOnly<{|\n  ...ViewProps,\n  ...IOSProps,\n  ...AndroidProps,\n\n  /**\n   * Called when the view starts refreshing.\n   */\n  onRefresh?: ?() => void | Promise<void>,\n\n  /**\n   * Whether the view should be indicating an active refresh.\n   */\n  refreshing: boolean,\n|}>;\n\n/**\n * This component is used inside a ScrollView or ListView to add pull to refresh\n * functionality. When the ScrollView is at `scrollY: 0`, swiping down\n * triggers an `onRefresh` event.\n *\n * ### Usage example\n *\n * ``` js\n * class RefreshableList extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {\n *       refreshing: false,\n *     };\n *   }\n *\n *   _onRefresh() {\n *     this.setState({refreshing: true});\n *     fetchData().then(() => {\n *       this.setState({refreshing: false});\n *     });\n *   }\n *\n *   render() {\n *     return (\n *       <ListView\n *         refreshControl={\n *           <RefreshControl\n *             refreshing={this.state.refreshing}\n *             onRefresh={this._onRefresh.bind(this)}\n *           />\n *         }\n *         ...\n *       >\n *       ...\n *       </ListView>\n *     );\n *   }\n *   ...\n * }\n * ```\n *\n * __Note:__ `refreshing` is a controlled prop, this is why it needs to be set to true\n * in the `onRefresh` function otherwise the refresh indicator will stop immediately.\n */\nclass RefreshControl extends React.Component<RefreshControlProps> {\n  static SIZE: any = RefreshLayoutConsts.SIZE;\n\n  _nativeRef: ?React.ElementRef<\n    | typeof PullToRefreshViewNativeComponent\n    | typeof AndroidSwipeRefreshLayoutNativeComponent,\n  >;\n  _lastNativeRefreshing = false;\n\n  componentDidMount() {\n    this._lastNativeRefreshing = this.props.refreshing;\n  }\n\n  componentDidUpdate(prevProps: RefreshControlProps) {\n    // RefreshControl is a controlled component so if the native refreshing\n    // value doesn't match the current js refreshing prop update it to\n    // the js value.\n    if (this.props.refreshing !== prevProps.refreshing) {\n      this._lastNativeRefreshing = this.props.refreshing;\n    } else if (\n      this.props.refreshing !== this._lastNativeRefreshing &&\n      this._nativeRef\n    ) {\n      if (Platform.OS === 'android') {\n        AndroidSwipeRefreshLayoutCommands.setNativeRefreshing(\n          this._nativeRef,\n          this.props.refreshing,\n        );\n      } else {\n        PullToRefreshCommands.setNativeRefreshing(\n          this._nativeRef,\n          this.props.refreshing,\n        );\n      }\n      this._lastNativeRefreshing = this.props.refreshing;\n    }\n  }\n\n  render(): React.Node {\n    if (Platform.OS === 'ios') {\n      const {\n        enabled,\n        colors,\n        progressBackgroundColor,\n        size,\n        progressViewOffset,\n        ...props\n      } = this.props;\n      return (\n        <PullToRefreshViewNativeComponent\n          {...props}\n          ref={this._setNativeRef}\n          onRefresh={this._onRefresh}\n        />\n      );\n    } else {\n      const {tintColor, titleColor, title, ...props} = this.props;\n      return (\n        <AndroidSwipeRefreshLayoutNativeComponent\n          {...props}\n          ref={this._setNativeRef}\n          onRefresh={this._onRefresh}\n        />\n      );\n    }\n  }\n\n  _onRefresh = () => {\n    this._lastNativeRefreshing = true;\n\n    this.props.onRefresh && this.props.onRefresh();\n\n    // The native component will start refreshing so force an update to\n    // make sure it stays in sync with the js component.\n    this.forceUpdate();\n  };\n\n  _setNativeRef = (\n    ref: ?React.ElementRef<\n      | typeof PullToRefreshViewNativeComponent\n      | typeof AndroidSwipeRefreshLayoutNativeComponent,\n    >,\n  ) => {\n    this._nativeRef = ref;\n  };\n}\n\nmodule.exports = RefreshControl;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\nimport type {\n  DirectEventHandler,\n  Float,\n  Int32,\n  WithDefault,\n} from '../../Types/CodegenTypes';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * Whether the pull to refresh functionality is enabled.\n   */\n  enabled?: WithDefault<boolean, true>,\n  /**\n   * The colors (at least one) that will be used to draw the refresh indicator.\n   */\n  colors?: ?$ReadOnlyArray<ColorValue>,\n  /**\n   * The background color of the refresh indicator.\n   */\n  progressBackgroundColor?: ?ColorValue,\n  /**\n   * Size of the refresh indicator, see RefreshControl.SIZE.\n   *\n   * This type isn't currently accurate. It really is specific numbers\n   * hard coded in the Android platform.\n   *\n   * Also, 1 isn't actually a safe default. We are able to set this here\n   * because native code isn't currently consuming the generated artifact.\n   * This will end up being\n   * size?: WithDefault<'default' | 'large', 'default'>,\n   */\n  size?: WithDefault<Int32, 1>,\n  /**\n   * Progress view top offset\n   */\n  progressViewOffset?: WithDefault<Float, 0>,\n\n  /**\n   * Called when the view starts refreshing.\n   */\n  onRefresh?: ?DirectEventHandler<null>,\n\n  /**\n   * Whether the view should be indicating an active refresh.\n   */\n  refreshing: boolean,\n|}>;\n\ntype NativeType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  +setNativeRefreshing: (\n    viewRef: React.ElementRef<NativeType>,\n    value: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeRefreshing'],\n});\n\nexport default (codegenNativeComponent<NativeProps>(\n  'AndroidSwipeRefreshLayout',\n): NativeType);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {DirectEventHandler, WithDefault} from '../../Types/CodegenTypes';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport * as React from 'react';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * The color of the refresh indicator.\n   */\n  tintColor?: ?ColorValue,\n  /**\n   * Title color.\n   */\n  titleColor?: ?ColorValue,\n  /**\n   * The title displayed under the refresh indicator.\n   */\n  title?: WithDefault<string, null>,\n\n  /**\n   * Called when the view starts refreshing.\n   */\n  onRefresh?: ?DirectEventHandler<null>,\n\n  /**\n   * Whether the view should be indicating an active refresh.\n   */\n  refreshing: boolean,\n|}>;\n\ntype ComponentType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  +setNativeRefreshing: (\n    viewRef: React.ElementRef<ComponentType>,\n    refreshing: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeRefreshing'],\n});\n\nexport default (codegenNativeComponent<NativeProps>('PullToRefreshView', {\n  paperComponentName: 'RCTRefreshControl',\n  excludedPlatforms: ['android'],\n}): HostComponent<NativeProps>);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport AnimatedImplementation from '../../Animated/AnimatedImplementation';\nimport Platform from '../../Utilities/Platform';\nimport * as React from 'react';\nimport ReactNative from '../../Renderer/shims/ReactNative';\nrequire('../../Renderer/shims/ReactNative'); // Force side effects to prevent T55744311\nimport ScrollResponder from '../ScrollResponder';\nimport ScrollViewStickyHeader from './ScrollViewStickyHeader';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport View from '../View/View';\n\nimport dismissKeyboard from '../../Utilities/dismissKeyboard';\nimport flattenStyle from '../../StyleSheet/flattenStyle';\nimport invariant from 'invariant';\nimport processDecelerationRate from './processDecelerationRate';\nimport resolveAssetSource from '../../Image/resolveAssetSource';\nimport splitLayoutProps from '../../StyleSheet/splitLayoutProps';\nimport setAndForwardRef from '../../Utilities/setAndForwardRef';\n\nimport type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';\nimport type {PointProp} from '../../StyleSheet/PointPropType';\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {\n  PressEvent,\n  ScrollEvent,\n  LayoutEvent,\n} from '../../Types/CoreEventTypes';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {State as ScrollResponderState} from '../ScrollResponder';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {Props as ScrollViewStickyHeaderProps} from './ScrollViewStickyHeader';\n\nimport ScrollViewContext, {HORIZONTAL, VERTICAL} from './ScrollViewContext';\nimport ScrollViewNativeComponent from './ScrollViewNativeComponent';\nimport ScrollContentViewNativeComponent from './ScrollContentViewNativeComponent';\nimport AndroidHorizontalScrollViewNativeComponent from './AndroidHorizontalScrollViewNativeComponent';\nimport AndroidHorizontalScrollContentViewNativeComponent from './AndroidHorizontalScrollContentViewNativeComponent';\n\nlet AndroidScrollView;\nlet AndroidHorizontalScrollContentView;\nlet AndroidHorizontalScrollView;\nlet RCTScrollView;\nlet RCTScrollContentView;\n\nif (Platform.OS === 'android') {\n  AndroidScrollView = ScrollViewNativeComponent;\n  AndroidHorizontalScrollView = AndroidHorizontalScrollViewNativeComponent;\n  AndroidHorizontalScrollContentView = AndroidHorizontalScrollContentViewNativeComponent;\n} else {\n  RCTScrollView = ScrollViewNativeComponent;\n  RCTScrollContentView = ScrollContentViewNativeComponent;\n}\n\n// Public methods for ScrollView\nexport type ScrollViewImperativeMethods = $ReadOnly<{|\n  getScrollResponder: $PropertyType<ScrollView, 'getScrollResponder'>,\n  getScrollableNode: $PropertyType<ScrollView, 'getScrollableNode'>,\n  getInnerViewNode: $PropertyType<ScrollView, 'getInnerViewNode'>,\n  getInnerViewRef: $PropertyType<ScrollView, 'getInnerViewRef'>,\n  getNativeScrollRef: $PropertyType<ScrollView, 'getNativeScrollRef'>,\n  scrollTo: $PropertyType<ScrollView, 'scrollTo'>,\n  scrollToEnd: $PropertyType<ScrollView, 'scrollToEnd'>,\n  flashScrollIndicators: $PropertyType<ScrollView, 'flashScrollIndicators'>,\n\n  // ScrollResponder.Mixin public methods\n  scrollResponderZoomTo: $PropertyType<\n    typeof ScrollResponder.Mixin,\n    'scrollResponderZoomTo',\n  >,\n  scrollResponderScrollNativeHandleToKeyboard: $PropertyType<\n    typeof ScrollResponder.Mixin,\n    'scrollResponderScrollNativeHandleToKeyboard',\n  >,\n|}>;\n\nexport type ScrollResponderType = ScrollViewImperativeMethods;\n\ntype IOSProps = $ReadOnly<{|\n  /**\n   * Controls whether iOS should automatically adjust the content inset\n   * for scroll views that are placed behind a navigation bar or\n   * tab bar/ toolbar. The default value is true.\n   * @platform ios\n   */\n  automaticallyAdjustContentInsets?: ?boolean,\n  /**\n   * The amount by which the scroll view content is inset from the edges\n   * of the scroll view. Defaults to `{top: 0, left: 0, bottom: 0, right: 0}`.\n   * @platform ios\n   */\n  contentInset?: ?EdgeInsetsProp,\n  /**\n   * Used to manually set the starting scroll offset.\n   * The default value is `{x: 0, y: 0}`.\n   * @platform ios\n   */\n  contentOffset?: ?PointProp,\n  /**\n   * When true, the scroll view bounces when it reaches the end of the\n   * content if the content is larger then the scroll view along the axis of\n   * the scroll direction. When false, it disables all bouncing even if\n   * the `alwaysBounce*` props are true. The default value is true.\n   * @platform ios\n   */\n  bounces?: ?boolean,\n  /**\n   * By default, ScrollView has an active pan responder that hijacks panresponders\n   * deeper in the render tree in order to prevent accidental touches while scrolling.\n   * However, in certain occasions (such as when using snapToInterval) in a vertical scrollview\n   * You may want to disable this behavior in order to prevent the ScrollView from blocking touches\n   */\n  disableScrollViewPanResponder?: ?boolean,\n  /**\n   * When true, gestures can drive zoom past min/max and the zoom will animate\n   * to the min/max value at gesture end, otherwise the zoom will not exceed\n   * the limits.\n   * @platform ios\n   */\n  bouncesZoom?: ?boolean,\n  /**\n   * When true, the scroll view bounces horizontally when it reaches the end\n   * even if the content is smaller than the scroll view itself. The default\n   * value is true when `horizontal={true}` and false otherwise.\n   * @platform ios\n   */\n  alwaysBounceHorizontal?: ?boolean,\n  /**\n   * When true, the scroll view bounces vertically when it reaches the end\n   * even if the content is smaller than the scroll view itself. The default\n   * value is false when `horizontal={true}` and true otherwise.\n   * @platform ios\n   */\n  alwaysBounceVertical?: ?boolean,\n  /**\n   * When true, the scroll view automatically centers the content when the\n   * content is smaller than the scroll view bounds; when the content is\n   * larger than the scroll view, this property has no effect. The default\n   * value is false.\n   * @platform ios\n   */\n  centerContent?: ?boolean,\n  /**\n   * The style of the scroll indicators.\n   *\n   *   - `'default'` (the default), same as `black`.\n   *   - `'black'`, scroll indicator is black. This style is good against a light background.\n   *   - `'white'`, scroll indicator is white. This style is good against a dark background.\n   *\n   * @platform ios\n   */\n  indicatorStyle?: ?('default' | 'black' | 'white'),\n  /**\n   * When true, the ScrollView will try to lock to only vertical or horizontal\n   * scrolling while dragging.  The default value is false.\n   * @platform ios\n   */\n  directionalLockEnabled?: ?boolean,\n  /**\n   * When false, once tracking starts, won't try to drag if the touch moves.\n   * The default value is true.\n   * @platform ios\n   */\n  canCancelContentTouches?: ?boolean,\n  /**\n   * When set, the scroll view will adjust the scroll position so that the first child that is\n   * currently visible and at or beyond `minIndexForVisible` will not change position. This is\n   * useful for lists that are loading content in both directions, e.g. a chat thread, where new\n   * messages coming in might otherwise cause the scroll position to jump. A value of 0 is common,\n   * but other values such as 1 can be used to skip loading spinners or other content that should\n   * not maintain position.\n   *\n   * The optional `autoscrollToTopThreshold` can be used to make the content automatically scroll\n   * to the top after making the adjustment if the user was within the threshold of the top before\n   * the adjustment was made. This is also useful for chat-like applications where you want to see\n   * new messages scroll into place, but not if the user has scrolled up a ways and it would be\n   * disruptive to scroll a bunch.\n   *\n   * Caveat 1: Reordering elements in the scrollview with this enabled will probably cause\n   * jumpiness and jank. It can be fixed, but there are currently no plans to do so. For now,\n   * don't re-order the content of any ScrollViews or Lists that use this feature.\n   *\n   * Caveat 2: This simply uses `contentOffset` and `frame.origin` in native code to compute\n   * visibility. Occlusion, transforms, and other complexity won't be taken into account as to\n   * whether content is \"visible\" or not.\n   *\n   * @platform ios\n   */\n  maintainVisibleContentPosition?: ?$ReadOnly<{|\n    minIndexForVisible: number,\n    autoscrollToTopThreshold?: ?number,\n  |}>,\n  /**\n   * The maximum allowed zoom scale. The default value is 1.0.\n   * @platform ios\n   */\n  maximumZoomScale?: ?number,\n  /**\n   * The minimum allowed zoom scale. The default value is 1.0.\n   * @platform ios\n   */\n  minimumZoomScale?: ?number,\n  /**\n   * When true, ScrollView allows use of pinch gestures to zoom in and out.\n   * The default value is true.\n   * @platform ios\n   */\n  pinchGestureEnabled?: ?boolean,\n  /**\n   * This controls how often the scroll event will be fired while scrolling\n   * (as a time interval in ms). A lower number yields better accuracy for code\n   * that is tracking the scroll position, but can lead to scroll performance\n   * problems due to the volume of information being send over the bridge.\n   *\n   * Values between 0 and 17ms indicate 60fps updates are needed and throttling\n   * will be disabled.\n   *\n   * If you do not need precise scroll position tracking, set this value higher\n   * to limit the information being sent across the bridge.\n   *\n   * The default value is zero, which results in the scroll event being sent only\n   * once each time the view is scrolled.\n   *\n   * @platform ios\n   */\n  scrollEventThrottle?: ?number,\n  /**\n   * The amount by which the scroll view indicators are inset from the edges\n   * of the scroll view. This should normally be set to the same value as\n   * the `contentInset`. Defaults to `{0, 0, 0, 0}`.\n   * @platform ios\n   */\n  scrollIndicatorInsets?: ?EdgeInsetsProp,\n  /**\n   * When true, the scroll view can be programmatically scrolled beyond its\n   * content size. The default value is false.\n   * @platform ios\n   */\n  scrollToOverflowEnabled?: ?boolean,\n  /**\n   * When true, the scroll view scrolls to top when the status bar is tapped.\n   * The default value is true.\n   * @platform ios\n   */\n  scrollsToTop?: ?boolean,\n  /**\n   * Fires when the scroll view scrolls to top after the status bar has been tapped\n   * @platform ios\n   */\n  onScrollToTop?: (event: ScrollEvent) => void,\n  /**\n   * When true, shows a horizontal scroll indicator.\n   * The default value is true.\n   */\n  showsHorizontalScrollIndicator?: ?boolean,\n  /**\n   * When `snapToInterval` is set, `snapToAlignment` will define the relationship\n   * of the snapping to the scroll view.\n   *\n   *   - `'start'` (the default) will align the snap at the left (horizontal) or top (vertical)\n   *   - `'center'` will align the snap in the center\n   *   - `'end'` will align the snap at the right (horizontal) or bottom (vertical)\n   *\n   * @platform ios\n   */\n  snapToAlignment?: ?('start' | 'center' | 'end'),\n  /**\n   * The current scale of the scroll view content. The default value is 1.0.\n   * @platform ios\n   */\n  zoomScale?: ?number,\n  /**\n   * This property specifies how the safe area insets are used to modify the\n   * content area of the scroll view. The default value of this property is\n   * \"never\". Available on iOS 11 and later.\n   * @platform ios\n   */\n  contentInsetAdjustmentBehavior?: ?(\n    | 'automatic'\n    | 'scrollableAxes'\n    | 'never'\n    | 'always'\n  ),\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n  /**\n   * Enables nested scrolling for Android API level 21+.\n   * Nested scrolling is supported by default on iOS\n   * @platform android\n   */\n  nestedScrollEnabled?: ?boolean,\n  /**\n   * Sometimes a scrollview takes up more space than its content fills. When this is\n   * the case, this prop will fill the rest of the scrollview with a color to avoid setting\n   * a background and creating unnecessary overdraw. This is an advanced optimization\n   * that is not needed in the general case.\n   * @platform android\n   */\n  endFillColor?: ?ColorValue,\n  /**\n   * Tag used to log scroll performance on this scroll view. Will force\n   * momentum events to be turned on (see sendMomentumEvents). This doesn't do\n   * anything out of the box and you need to implement a custom native\n   * FpsListener for it to be useful.\n   * @platform android\n   */\n  scrollPerfTag?: ?string,\n  /**\n   * Used to override default value of overScroll mode.\n   *\n   * Possible values:\n   *\n   *  - `'auto'` - Default value, allow a user to over-scroll\n   *    this view only if the content is large enough to meaningfully scroll.\n   *  - `'always'` - Always allow a user to over-scroll this view.\n   *  - `'never'` - Never allow a user to over-scroll this view.\n   *\n   * @platform android\n   */\n  overScrollMode?: ?('auto' | 'always' | 'never'),\n  /**\n   * Causes the scrollbars not to turn transparent when they are not in use.\n   * The default value is false.\n   *\n   * @platform android\n   */\n  persistentScrollbar?: ?boolean,\n  /**\n   * Fades out the edges of the the scroll content.\n   *\n   * If the value is greater than 0, the fading edges will be set accordingly\n   * to the current scroll direction and position,\n   * indicating if there is more content to show.\n   *\n   * The default value is 0.\n   *\n   * @platform android\n   */\n  fadingEdgeLength?: ?number,\n|}>;\n\ntype VRProps = $ReadOnly<{|\n  /**\n   * Optionally an image can be used for the scroll bar thumb. This will\n   * override the color. While the image is loading or the image fails to\n   * load the color will be used instead. Use an alpha of 0 in the color\n   * to avoid seeing it while the image is loading.\n   *\n   * - `uri` - a string representing the resource identifier for the image, which\n   * should be either a local file path or the name of a static image resource\n   * - `number` - Opaque type returned by something like\n   * `import IMAGE from './image.jpg'`.\n   * @platform vr\n   */\n  scrollBarThumbImage?: ?($ReadOnly<{||}> | number), // Opaque type returned by import IMAGE from './image.jpg'\n|}>;\n\ntype StickyHeaderComponentType = React.AbstractComponent<\n  ScrollViewStickyHeaderProps,\n  $ReadOnly<{setNextHeaderY: number => void, ...}>,\n>;\n\nexport type Props = $ReadOnly<{|\n  ...ViewProps,\n  ...IOSProps,\n  ...AndroidProps,\n  ...VRProps,\n\n  /**\n   * These styles will be applied to the scroll view content container which\n   * wraps all of the child views. Example:\n   *\n   * ```\n   * return (\n   *   <ScrollView contentContainerStyle={styles.contentContainer}>\n   *   </ScrollView>\n   * );\n   * ...\n   * const styles = StyleSheet.create({\n   *   contentContainer: {\n   *     paddingVertical: 20\n   *   }\n   * });\n   * ```\n   */\n  contentContainerStyle?: ?ViewStyleProp,\n  /**\n   * When true, the scroll view stops on the next index (in relation to scroll\n   * position at release) regardless of how fast the gesture is. This can be\n   * used for pagination when the page is less than the width of the\n   * horizontal ScrollView or the height of the vertical ScrollView. The default value is false.\n   */\n  disableIntervalMomentum?: ?boolean,\n  /**\n   * A floating-point number that determines how quickly the scroll view\n   * decelerates after the user lifts their finger. You may also use string\n   * shortcuts `\"normal\"` and `\"fast\"` which match the underlying iOS settings\n   * for `UIScrollViewDecelerationRateNormal` and\n   * `UIScrollViewDecelerationRateFast` respectively.\n   *\n   *   - `'normal'`: 0.998 on iOS, 0.985 on Android (the default)\n   *   - `'fast'`: 0.99 on iOS, 0.9 on Android\n   */\n  decelerationRate?: ?('fast' | 'normal' | number),\n  /**\n   * When true, the scroll view's children are arranged horizontally in a row\n   * instead of vertically in a column. The default value is false.\n   */\n  horizontal?: ?boolean,\n  /**\n   * If sticky headers should stick at the bottom instead of the top of the\n   * ScrollView. This is usually used with inverted ScrollViews.\n   */\n  invertStickyHeaders?: ?boolean,\n  /**\n   * Determines whether the keyboard gets dismissed in response to a drag.\n   *\n   * *Cross platform*\n   *\n   *   - `'none'` (the default), drags do not dismiss the keyboard.\n   *   - `'on-drag'`, the keyboard is dismissed when a drag begins.\n   *\n   * *iOS Only*\n   *\n   *   - `'interactive'`, the keyboard is dismissed interactively with the drag and moves in\n   *     synchrony with the touch; dragging upwards cancels the dismissal.\n   *     On android this is not supported and it will have the same behavior as 'none'.\n   */\n  keyboardDismissMode?: ?// default\n  (| 'none' // cross-platform\n    | 'on-drag'\n    | 'interactive'\n  ), // ios only\n  /**\n   * Determines when the keyboard should stay visible after a tap.\n   *\n   *   - `'never'` (the default), tapping outside of the focused text input when the keyboard\n   *     is up dismisses the keyboard. When this happens, children won't receive the tap.\n   *   - `'always'`, the keyboard will not dismiss automatically, and the scroll view will not\n   *     catch taps, but children of the scroll view can catch taps.\n   *   - `'handled'`, the keyboard will not dismiss automatically when the tap was handled by\n   *     a children, (or captured by an ancestor).\n   *   - `false`, deprecated, use 'never' instead\n   *   - `true`, deprecated, use 'always' instead\n   */\n  keyboardShouldPersistTaps?: ?('always' | 'never' | 'handled' | true | false),\n  /**\n   * Called when the momentum scroll starts (scroll which occurs as the ScrollView glides to a stop).\n   */\n  onMomentumScrollBegin?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when the momentum scroll ends (scroll which occurs as the ScrollView glides to a stop).\n   */\n  onMomentumScrollEnd?: ?(event: ScrollEvent) => void,\n\n  /**\n   * Fires at most once per frame during scrolling. The frequency of the\n   * events can be controlled using the `scrollEventThrottle` prop.\n   */\n  onScroll?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when the user begins to drag the scroll view.\n   */\n  onScrollBeginDrag?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when the user stops dragging the scroll view and it either stops\n   * or begins to glide.\n   */\n  onScrollEndDrag?: ?(event: ScrollEvent) => void,\n  /**\n   * Called when scrollable content view of the ScrollView changes.\n   *\n   * Handler function is passed the content width and content height as parameters:\n   * `(contentWidth, contentHeight)`\n   *\n   * It's implemented using onLayout handler attached to the content container\n   * which this ScrollView renders.\n   */\n  onContentSizeChange?: (contentWidth: number, contentHeight: number) => void,\n  onKeyboardDidShow?: (event: PressEvent) => void,\n  /**\n   * When true, the scroll view stops on multiples of the scroll view's size\n   * when scrolling. This can be used for horizontal pagination. The default\n   * value is false.\n   *\n   * Note: Vertical pagination is not supported on Android.\n   */\n  pagingEnabled?: ?boolean,\n\n  /**\n   * When false, the view cannot be scrolled via touch interaction.\n   * The default value is true.\n   *\n   * Note that the view can always be scrolled by calling `scrollTo`.\n   */\n  scrollEnabled?: ?boolean,\n  /**\n   * When true, shows a vertical scroll indicator.\n   * The default value is true.\n   */\n  showsVerticalScrollIndicator?: ?boolean,\n  /**\n   * An array of child indices determining which children get docked to the\n   * top of the screen when scrolling. For example, passing\n   * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n   * top of the scroll view. This property is not supported in conjunction\n   * with `horizontal={true}`.\n   */\n  stickyHeaderIndices?: ?$ReadOnlyArray<number>,\n  /**\n   * A React Component that will be used to render sticky headers.\n   * To be used together with `stickyHeaderIndices` or with `SectionList`, defaults to `ScrollViewStickyHeader`.\n   * You may need to set this if your sticky header uses custom transforms (eg. translation),\n   * for example when you want your list to have an animated hidable header.\n   */\n  StickyHeaderComponent?: StickyHeaderComponentType,\n  /**\n   * When set, causes the scroll view to stop at multiples of the value of\n   * `snapToInterval`. This can be used for paginating through children\n   * that have lengths smaller than the scroll view. Typically used in\n   * combination with `snapToAlignment` and `decelerationRate=\"fast\"`.\n   *\n   * Overrides less configurable `pagingEnabled` prop.\n   */\n  snapToInterval?: ?number,\n  /**\n   * When set, causes the scroll view to stop at the defined offsets.\n   * This can be used for paginating through variously sized children\n   * that have lengths smaller than the scroll view. Typically used in\n   * combination with `decelerationRate=\"fast\"`.\n   *\n   * Overrides less configurable `pagingEnabled` and `snapToInterval` props.\n   */\n  snapToOffsets?: ?$ReadOnlyArray<number>,\n  /**\n   * Use in conjunction with `snapToOffsets`. By default, the beginning\n   * of the list counts as a snap offset. Set `snapToStart` to false to disable\n   * this behavior and allow the list to scroll freely between its start and\n   * the first `snapToOffsets` offset.\n   * The default value is true.\n   */\n  snapToStart?: ?boolean,\n  /**\n   * Use in conjunction with `snapToOffsets`. By default, the end\n   * of the list counts as a snap offset. Set `snapToEnd` to false to disable\n   * this behavior and allow the list to scroll freely between its end and\n   * the last `snapToOffsets` offset.\n   * The default value is true.\n   */\n  snapToEnd?: ?boolean,\n  /**\n   * Experimental: When true, offscreen child views (whose `overflow` value is\n   * `hidden`) are removed from their native backing superview when offscreen.\n   * This can improve scrolling performance on long lists. The default value is\n   * true.\n   */\n  removeClippedSubviews?: ?boolean,\n  /**\n   * A RefreshControl component, used to provide pull-to-refresh\n   * functionality for the ScrollView. Only works for vertical ScrollViews\n   * (`horizontal` prop must be `false`).\n   *\n   * See [RefreshControl](docs/refreshcontrol.html).\n   */\n  // $FlowFixMe - how to handle generic type without existential operator?\n  refreshControl?: ?React.Element<any>,\n  children?: React.Node,\n  /**\n   * A ref to the inner View element of the ScrollView. This should be used\n   * instead of calling `getInnerViewRef`.\n   */\n  innerViewRef?: React.Ref<typeof View>,\n  /**\n   * A ref to the Native ScrollView component. This ref can be used to call\n   * all of ScrollView's public methods, in addition to native methods like\n   * measure, measureLayout, etc.\n   */\n  scrollViewRef?: React.Ref<\n    typeof ScrollViewNativeComponent & ScrollViewImperativeMethods,\n  >,\n|}>;\n\ntype State = {|\n  layoutHeight: ?number,\n  ...ScrollResponderState,\n|};\n\nfunction createScrollResponder(\n  node: React.ElementRef<typeof ScrollView>,\n): typeof ScrollResponder.Mixin {\n  const scrollResponder = {...ScrollResponder.Mixin};\n\n  for (const key in scrollResponder) {\n    if (typeof scrollResponder[key] === 'function') {\n      scrollResponder[key] = scrollResponder[key].bind(node);\n    }\n  }\n\n  return scrollResponder;\n}\n\ntype ScrollViewComponentStatics = $ReadOnly<{|\n  Context: typeof ScrollViewContext,\n|}>;\n\n/**\n * Component that wraps platform ScrollView while providing\n * integration with touch locking \"responder\" system.\n *\n * Keep in mind that ScrollViews must have a bounded height in order to work,\n * since they contain unbounded-height children into a bounded container (via\n * a scroll interaction). In order to bound the height of a ScrollView, either\n * set the height of the view directly (discouraged) or make sure all parent\n * views have bounded height. Forgetting to transfer `{flex: 1}` down the\n * view stack can lead to errors here, which the element inspector makes\n * easy to debug.\n *\n * Doesn't yet support other contained responders from blocking this scroll\n * view from becoming the responder.\n *\n *\n * `<ScrollView>` vs [`<FlatList>`](https://reactnative.dev/docs/flatlist.html) - which one to use?\n *\n * `ScrollView` simply renders all its react child components at once. That\n * makes it very easy to understand and use.\n *\n * On the other hand, this has a performance downside. Imagine you have a very\n * long list of items you want to display, maybe several screens worth of\n * content. Creating JS components and native views for everything all at once,\n * much of which may not even be shown, will contribute to slow rendering and\n * increased memory usage.\n *\n * This is where `FlatList` comes into play. `FlatList` renders items lazily,\n * just when they are about to appear, and removes items that scroll way off\n * screen to save memory and processing time.\n *\n * `FlatList` is also handy if you want to render separators between your items,\n * multiple columns, infinite scroll loading, or any number of other features it\n * supports out of the box.\n */\nclass ScrollView extends React.Component<Props, State> {\n  static Context: typeof ScrollViewContext = ScrollViewContext;\n  /**\n   * Part 1: Removing ScrollResponder.Mixin:\n   *\n   * 1. Mixin methods should be flow typed. That's why we create a\n   *    copy of ScrollResponder.Mixin and attach it to this._scrollResponder.\n   *    Otherwise, we'd have to manually declare each method on the component\n   *    class and assign it a flow type.\n   * 2. Mixin methods can call component methods, and access the component's\n   *    props and state. So, we need to bind all mixin methods to the\n   *    component instance.\n   * 3. Continued...\n   */\n  _scrollResponder: typeof ScrollResponder.Mixin = createScrollResponder(this);\n\n  constructor(props: Props) {\n    super(props);\n\n    /**\n     * Part 2: Removing ScrollResponder.Mixin\n     *\n     * 3. Mixin methods access other mixin methods via dynamic dispatch using\n     *    this. Since mixin methods are bound to the component instance, we need\n     *    to copy all mixin methods to the component instance. This is also\n     *    necessary because getScrollResponder() is a public method that returns\n     *    an object that can be used to execute all scrollResponder methods.\n     *    Since the object returned from that method is the ScrollView instance,\n     *    we need to bind all mixin methods to the ScrollView instance.\n     */\n    for (const key in ScrollResponder.Mixin) {\n      if (\n        typeof ScrollResponder.Mixin[key] === 'function' &&\n        key.startsWith('scrollResponder')\n      ) {\n        // $FlowFixMe - dynamically adding properties to a class\n        (this: any)[key] = ScrollResponder.Mixin[key].bind(this);\n      }\n    }\n\n    /**\n     * Part 3: Removing ScrollResponder.Mixin\n     *\n     * 4. Mixins can initialize properties and use properties on the component\n     *    instance.\n     */\n    Object.keys(ScrollResponder.Mixin)\n      .filter(key => typeof ScrollResponder.Mixin[key] !== 'function')\n      .forEach(key => {\n        // $FlowFixMe - dynamically adding properties to a class\n        (this: any)[key] = ScrollResponder.Mixin[key];\n      });\n  }\n\n  _scrollAnimatedValue: AnimatedImplementation.Value = new AnimatedImplementation.Value(\n    0,\n  );\n  _scrollAnimatedValueAttachment: ?{detach: () => void, ...} = null;\n  _stickyHeaderRefs: Map<\n    string,\n    React.ElementRef<StickyHeaderComponentType>,\n  > = new Map();\n  _headerLayoutYs: Map<string, number> = new Map();\n\n  state: State = {\n    layoutHeight: null,\n    ...ScrollResponder.Mixin.scrollResponderMixinGetInitialState(),\n  };\n\n  UNSAFE_componentWillMount() {\n    this._scrollResponder.UNSAFE_componentWillMount();\n    this._scrollAnimatedValue = new AnimatedImplementation.Value(\n      this.props.contentOffset?.y ?? 0,\n    );\n    this._scrollAnimatedValue.setOffset(this.props.contentInset?.top ?? 0);\n    this._stickyHeaderRefs = new Map();\n    this._headerLayoutYs = new Map();\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps: Props) {\n    const currentContentInsetTop = this.props.contentInset\n      ? this.props.contentInset.top\n      : 0;\n    const nextContentInsetTop = nextProps.contentInset\n      ? nextProps.contentInset.top\n      : 0;\n    if (currentContentInsetTop !== nextContentInsetTop) {\n      this._scrollAnimatedValue.setOffset(nextContentInsetTop || 0);\n    }\n  }\n\n  componentDidMount() {\n    this._updateAnimatedNodeAttachment();\n  }\n\n  componentDidUpdate() {\n    this._updateAnimatedNodeAttachment();\n  }\n\n  componentWillUnmount() {\n    this._scrollResponder.componentWillUnmount();\n    if (this._scrollAnimatedValueAttachment) {\n      this._scrollAnimatedValueAttachment.detach();\n    }\n  }\n\n  _setNativeRef = setAndForwardRef({\n    getForwardedRef: () => this.props.scrollViewRef,\n    setLocalRef: ref => {\n      this._scrollViewRef = ref;\n\n      /*\n        This is a hack. Ideally we would forwardRef to the underlying\n        host component. However, since ScrollView has it's own methods that can be\n        called as well, if we used the standard forwardRef then these\n        methods wouldn't be accessible and thus be a breaking change.\n\n        Therefore we edit ref to include ScrollView's public methods so that\n        they are callable from the ref.\n      */\n      if (ref) {\n        ref.getScrollResponder = this.getScrollResponder;\n        ref.getScrollableNode = this.getScrollableNode;\n        ref.getInnerViewNode = this.getInnerViewNode;\n        ref.getInnerViewRef = this.getInnerViewRef;\n        ref.getNativeScrollRef = this.getNativeScrollRef;\n        ref.scrollTo = this.scrollTo;\n        ref.scrollToEnd = this.scrollToEnd;\n        ref.flashScrollIndicators = this.flashScrollIndicators;\n\n        // $FlowFixMe - This method was manually bound from ScrollResponder.mixin\n        ref.scrollResponderZoomTo = this.scrollResponderZoomTo;\n        // $FlowFixMe - This method was manually bound from ScrollResponder.mixin\n        ref.scrollResponderScrollNativeHandleToKeyboard = this.scrollResponderScrollNativeHandleToKeyboard;\n      }\n    },\n  });\n\n  /**\n   * Returns a reference to the underlying scroll responder, which supports\n   * operations like `scrollTo`. All ScrollView-like components should\n   * implement this method so that they can be composed while providing access\n   * to the underlying scroll responder's methods.\n   */\n  getScrollResponder: () => ScrollResponderType = () => {\n    // $FlowFixMe - overriding type to include ScrollResponder.Mixin\n    return ((this: any): ScrollResponderType);\n  };\n\n  getScrollableNode: () => ?number = () => {\n    return ReactNative.findNodeHandle(this._scrollViewRef);\n  };\n\n  getInnerViewNode(): ?number {\n    return ReactNative.findNodeHandle(this._innerViewRef);\n  }\n\n  getInnerViewRef(): ?React.ElementRef<typeof View> {\n    return this._innerViewRef;\n  }\n\n  getNativeScrollRef: () => ?React.ElementRef<HostComponent<mixed>> = () => {\n    return this._scrollViewRef;\n  };\n\n  /**\n   * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n   *\n   * Example:\n   *\n   * `scrollTo({x: 0, y: 0, animated: true})`\n   *\n   * Note: The weird function signature is due to the fact that, for historical reasons,\n   * the function also accepts separate arguments as an alternative to the options object.\n   * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n   */\n  scrollTo: (\n    options?:\n      | {\n          x?: number,\n          y?: number,\n          animated?: boolean,\n          ...\n        }\n      | number,\n    deprecatedX?: number,\n    deprecatedAnimated?: boolean,\n  ) => void = (\n    options?:\n      | {\n          x?: number,\n          y?: number,\n          animated?: boolean,\n          ...\n        }\n      | number,\n    deprecatedX?: number,\n    deprecatedAnimated?: boolean,\n  ) => {\n    let x, y, animated;\n    if (typeof options === 'number') {\n      console.warn(\n        '`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, ' +\n          'animated: true})` instead.',\n      );\n      y = options;\n      x = deprecatedX;\n      animated = deprecatedAnimated;\n    } else if (options) {\n      y = options.y;\n      x = options.x;\n      animated = options.animated;\n    }\n    this._scrollResponder.scrollResponderScrollTo({\n      x: x || 0,\n      y: y || 0,\n      animated: animated !== false,\n    });\n  };\n\n  /**\n   * If this is a vertical ScrollView scrolls to the bottom.\n   * If this is a horizontal ScrollView scrolls to the right.\n   *\n   * Use `scrollToEnd({animated: true})` for smooth animated scrolling,\n   * `scrollToEnd({animated: false})` for immediate scrolling.\n   * If no options are passed, `animated` defaults to true.\n   */\n  scrollToEnd: (options?: ?{animated?: boolean, ...}) => void = (\n    options?: ?{animated?: boolean, ...},\n  ) => {\n    // Default to true\n    const animated = (options && options.animated) !== false;\n    this._scrollResponder.scrollResponderScrollToEnd({\n      animated: animated,\n    });\n  };\n\n  /**\n   * Displays the scroll indicators momentarily.\n   *\n   * @platform ios\n   */\n  flashScrollIndicators: () => void = () => {\n    this._scrollResponder.scrollResponderFlashScrollIndicators();\n  };\n\n  _getKeyForIndex(index, childArray) {\n    const child = childArray[index];\n    return child && child.key;\n  }\n\n  _updateAnimatedNodeAttachment() {\n    if (this._scrollAnimatedValueAttachment) {\n      this._scrollAnimatedValueAttachment.detach();\n    }\n    if (\n      this.props.stickyHeaderIndices &&\n      this.props.stickyHeaderIndices.length > 0\n    ) {\n      this._scrollAnimatedValueAttachment = AnimatedImplementation.attachNativeEvent(\n        this._scrollViewRef,\n        'onScroll',\n        [{nativeEvent: {contentOffset: {y: this._scrollAnimatedValue}}}],\n      );\n    }\n  }\n\n  _setStickyHeaderRef(\n    key: string,\n    ref: ?React.ElementRef<StickyHeaderComponentType>,\n  ) {\n    if (ref) {\n      this._stickyHeaderRefs.set(key, ref);\n    } else {\n      this._stickyHeaderRefs.delete(key);\n    }\n  }\n\n  _onStickyHeaderLayout(index, event, key) {\n    const {stickyHeaderIndices} = this.props;\n    if (!stickyHeaderIndices) {\n      return;\n    }\n    const childArray = React.Children.toArray(this.props.children);\n    if (key !== this._getKeyForIndex(index, childArray)) {\n      // ignore stale layout update\n      return;\n    }\n\n    const layoutY = event.nativeEvent.layout.y;\n    this._headerLayoutYs.set(key, layoutY);\n\n    const indexOfIndex = stickyHeaderIndices.indexOf(index);\n    const previousHeaderIndex = stickyHeaderIndices[indexOfIndex - 1];\n    if (previousHeaderIndex != null) {\n      const previousHeader = this._stickyHeaderRefs.get(\n        this._getKeyForIndex(previousHeaderIndex, childArray),\n      );\n      previousHeader &&\n        previousHeader.setNextHeaderY &&\n        previousHeader.setNextHeaderY(layoutY);\n    }\n  }\n\n  _handleScroll = (e: ScrollEvent) => {\n    if (__DEV__) {\n      if (\n        this.props.onScroll &&\n        this.props.scrollEventThrottle == null &&\n        Platform.OS === 'ios'\n      ) {\n        console.log(\n          'You specified `onScroll` on a <ScrollView> but not ' +\n            '`scrollEventThrottle`. You will only receive one event. ' +\n            'Using `16` you get all the events but be aware that it may ' +\n            \"cause frame drops, use a bigger number if you don't need as \" +\n            'much precision.',\n        );\n      }\n    }\n    if (Platform.OS === 'android') {\n      if (\n        this.props.keyboardDismissMode === 'on-drag' &&\n        this.state.isTouching\n      ) {\n        dismissKeyboard();\n      }\n    }\n    this._scrollResponder.scrollResponderHandleScroll(e);\n  };\n\n  _handleLayout = (e: LayoutEvent) => {\n    if (this.props.invertStickyHeaders === true) {\n      this.setState({layoutHeight: e.nativeEvent.layout.height});\n    }\n    if (this.props.onLayout) {\n      this.props.onLayout(e);\n    }\n  };\n\n  _handleContentOnLayout = (e: LayoutEvent) => {\n    const {width, height} = e.nativeEvent.layout;\n    this.props.onContentSizeChange &&\n      this.props.onContentSizeChange(width, height);\n  };\n\n  _scrollViewRef: ?React.ElementRef<HostComponent<mixed>> = null;\n\n  _innerViewRef: ?React.ElementRef<typeof View> = null;\n  _setInnerViewRef = setAndForwardRef({\n    getForwardedRef: () => this.props.innerViewRef,\n    setLocalRef: ref => {\n      this._innerViewRef = ref;\n    },\n  });\n\n  render(): React.Node | React.Element<string> {\n    let ScrollViewClass;\n    let ScrollContentContainerViewClass;\n    if (Platform.OS === 'android') {\n      if (this.props.horizontal === true) {\n        ScrollViewClass = AndroidHorizontalScrollView;\n        ScrollContentContainerViewClass = AndroidHorizontalScrollContentView;\n      } else {\n        ScrollViewClass = AndroidScrollView;\n        ScrollContentContainerViewClass = View;\n      }\n    } else {\n      ScrollViewClass = RCTScrollView;\n      ScrollContentContainerViewClass = RCTScrollContentView;\n    }\n\n    invariant(\n      ScrollViewClass !== undefined,\n      'ScrollViewClass must not be undefined',\n    );\n\n    invariant(\n      ScrollContentContainerViewClass !== undefined,\n      'ScrollContentContainerViewClass must not be undefined',\n    );\n\n    const contentContainerStyle = [\n      this.props.horizontal === true && styles.contentContainerHorizontal,\n      this.props.contentContainerStyle,\n    ];\n    if (__DEV__ && this.props.style !== undefined) {\n      const style = flattenStyle(this.props.style);\n      const childLayoutProps = ['alignItems', 'justifyContent'].filter(\n        prop => style && style[prop] !== undefined,\n      );\n      invariant(\n        childLayoutProps.length === 0,\n        'ScrollView child layout (' +\n          JSON.stringify(childLayoutProps) +\n          ') must be applied through the contentContainerStyle prop.',\n      );\n    }\n\n    let contentSizeChangeProps = {};\n    if (this.props.onContentSizeChange) {\n      contentSizeChangeProps = {\n        onLayout: this._handleContentOnLayout,\n      };\n    }\n\n    const {stickyHeaderIndices} = this.props;\n    let children = this.props.children;\n\n    if (stickyHeaderIndices != null && stickyHeaderIndices.length > 0) {\n      const childArray = React.Children.toArray(this.props.children);\n\n      children = childArray.map((child, index) => {\n        const indexOfIndex = child ? stickyHeaderIndices.indexOf(index) : -1;\n        if (indexOfIndex > -1) {\n          const key = child.key;\n          const nextIndex = stickyHeaderIndices[indexOfIndex + 1];\n          const StickyHeaderComponent =\n            this.props.StickyHeaderComponent || ScrollViewStickyHeader;\n          return (\n            <StickyHeaderComponent\n              key={key}\n              nativeID={'StickyHeader-' + key} /* TODO: T68258846. */\n              ref={ref => this._setStickyHeaderRef(key, ref)}\n              nextHeaderLayoutY={this._headerLayoutYs.get(\n                this._getKeyForIndex(nextIndex, childArray),\n              )}\n              onLayout={event => this._onStickyHeaderLayout(index, event, key)}\n              scrollAnimatedValue={this._scrollAnimatedValue}\n              inverted={this.props.invertStickyHeaders}\n              scrollViewHeight={this.state.layoutHeight}>\n              {child}\n            </StickyHeaderComponent>\n          );\n        } else {\n          return child;\n        }\n      });\n    }\n    children = (\n      <ScrollViewContext.Provider\n        value={this.props.horizontal === true ? HORIZONTAL : VERTICAL}>\n        {children}\n      </ScrollViewContext.Provider>\n    );\n\n    const hasStickyHeaders =\n      Array.isArray(stickyHeaderIndices) && stickyHeaderIndices.length > 0;\n\n    const contentContainer = (\n      /* $FlowFixMe(>=0.112.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.112 was deployed. To see the error, delete\n       * this comment and run Flow. */\n      <ScrollContentContainerViewClass\n        {...contentSizeChangeProps}\n        ref={this._setInnerViewRef}\n        style={contentContainerStyle}\n        removeClippedSubviews={\n          // Subview clipping causes issues with sticky headers on Android and\n          // would be hard to fix properly in a performant way.\n          Platform.OS === 'android' && hasStickyHeaders\n            ? false\n            : this.props.removeClippedSubviews\n        }\n        collapsable={false}>\n        {children}\n      </ScrollContentContainerViewClass>\n    );\n\n    const alwaysBounceHorizontal =\n      this.props.alwaysBounceHorizontal !== undefined\n        ? this.props.alwaysBounceHorizontal\n        : this.props.horizontal;\n\n    const alwaysBounceVertical =\n      this.props.alwaysBounceVertical !== undefined\n        ? this.props.alwaysBounceVertical\n        : !this.props.horizontal;\n\n    const baseStyle =\n      this.props.horizontal === true\n        ? styles.baseHorizontal\n        : styles.baseVertical;\n    const props = {\n      ...this.props,\n      alwaysBounceHorizontal,\n      alwaysBounceVertical,\n      style: [baseStyle, this.props.style],\n      // Override the onContentSizeChange from props, since this event can\n      // bubble up from TextInputs\n      onContentSizeChange: null,\n      onLayout: this._handleLayout,\n      onMomentumScrollBegin: this._scrollResponder\n        .scrollResponderHandleMomentumScrollBegin,\n      onMomentumScrollEnd: this._scrollResponder\n        .scrollResponderHandleMomentumScrollEnd,\n      onResponderGrant: this._scrollResponder\n        .scrollResponderHandleResponderGrant,\n      onResponderReject: this._scrollResponder\n        .scrollResponderHandleResponderReject,\n      onResponderRelease: this._scrollResponder\n        .scrollResponderHandleResponderRelease,\n      onResponderTerminationRequest: this._scrollResponder\n        .scrollResponderHandleTerminationRequest,\n      onScrollBeginDrag: this._scrollResponder\n        .scrollResponderHandleScrollBeginDrag,\n      onScrollEndDrag: this._scrollResponder.scrollResponderHandleScrollEndDrag,\n      onScrollShouldSetResponder: this._scrollResponder\n        .scrollResponderHandleScrollShouldSetResponder,\n      onStartShouldSetResponder: this._scrollResponder\n        .scrollResponderHandleStartShouldSetResponder,\n      onStartShouldSetResponderCapture: this._scrollResponder\n        .scrollResponderHandleStartShouldSetResponderCapture,\n      onTouchEnd: this._scrollResponder.scrollResponderHandleTouchEnd,\n      onTouchMove: this._scrollResponder.scrollResponderHandleTouchMove,\n      onTouchStart: this._scrollResponder.scrollResponderHandleTouchStart,\n      onTouchCancel: this._scrollResponder.scrollResponderHandleTouchCancel,\n      onScroll: this._handleScroll,\n      scrollBarThumbImage: resolveAssetSource(this.props.scrollBarThumbImage),\n      scrollEventThrottle: hasStickyHeaders\n        ? 1\n        : this.props.scrollEventThrottle,\n      sendMomentumEvents:\n        this.props.onMomentumScrollBegin || this.props.onMomentumScrollEnd\n          ? true\n          : false,\n      // default to true\n      snapToStart: this.props.snapToStart !== false,\n      // default to true\n      snapToEnd: this.props.snapToEnd !== false,\n      // pagingEnabled is overridden by snapToInterval / snapToOffsets\n      pagingEnabled: Platform.select({\n        // on iOS, pagingEnabled must be set to false to have snapToInterval / snapToOffsets work\n        ios:\n          this.props.pagingEnabled === true &&\n          this.props.snapToInterval == null &&\n          this.props.snapToOffsets == null,\n        // on Android, pagingEnabled must be set to true to have snapToInterval / snapToOffsets work\n        android:\n          this.props.pagingEnabled === true ||\n          this.props.snapToInterval != null ||\n          this.props.snapToOffsets != null,\n      }),\n    };\n\n    const {decelerationRate} = this.props;\n    if (decelerationRate != null) {\n      props.decelerationRate = processDecelerationRate(decelerationRate);\n    }\n\n    const refreshControl = this.props.refreshControl;\n\n    if (refreshControl) {\n      if (Platform.OS === 'ios') {\n        // On iOS the RefreshControl is a child of the ScrollView.\n        return (\n          /* $FlowFixMe(>=0.117.0 site=react_native_fb) This comment suppresses\n           * an error found when Flow v0.117 was deployed. To see the error,\n           * delete this comment and run Flow. */\n          <ScrollViewClass {...props} ref={this._setNativeRef}>\n            {refreshControl}\n            {contentContainer}\n          </ScrollViewClass>\n        );\n      } else if (Platform.OS === 'android') {\n        // On Android wrap the ScrollView with a AndroidSwipeRefreshLayout.\n        // Since the ScrollView is wrapped add the style props to the\n        // AndroidSwipeRefreshLayout and use flex: 1 for the ScrollView.\n        // Note: we should split props.style on the inner and outer props\n        // however, the ScrollView still needs the baseStyle to be scrollable\n        const {outer, inner} = splitLayoutProps(flattenStyle(props.style));\n        return React.cloneElement(\n          refreshControl,\n          {style: [baseStyle, outer]},\n          <ScrollViewClass\n            {...props}\n            style={[baseStyle, inner]}\n            ref={this._setNativeRef}>\n            {contentContainer}\n          </ScrollViewClass>,\n        );\n      }\n    }\n    return (\n      <ScrollViewClass {...props} ref={this._setNativeRef}>\n        {contentContainer}\n      </ScrollViewClass>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  baseVertical: {\n    flexGrow: 1,\n    flexShrink: 1,\n    flexDirection: 'column',\n    overflow: 'scroll',\n  },\n  baseHorizontal: {\n    flexGrow: 1,\n    flexShrink: 1,\n    flexDirection: 'row',\n    overflow: 'scroll',\n  },\n  contentContainerHorizontal: {\n    flexDirection: 'row',\n  },\n});\n\nfunction Wrapper(props, ref) {\n  return <ScrollView {...props} scrollViewRef={ref} />;\n}\nWrapper.displayName = 'ScrollView';\nconst ForwardedScrollView = React.forwardRef(Wrapper);\n\n// $FlowFixMe Add static context to ForwardedScrollView\nForwardedScrollView.Context = ScrollViewContext;\n\nForwardedScrollView.displayName = 'ScrollView';\n\nmodule.exports = ((ForwardedScrollView: $FlowFixMe): React.AbstractComponent<\n  React.ElementConfig<typeof ScrollView>,\n  $ReadOnly<{|\n    ...$Exact<React.ElementRef<HostComponent<mixed>>>,\n    ...ScrollViewImperativeMethods,\n  |}>,\n> &\n  ScrollViewComponentStatics);\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Dimensions = require('../Utilities/Dimensions');\nconst FrameRateLogger = require('../Interaction/FrameRateLogger');\nconst Keyboard = require('./Keyboard/Keyboard');\nconst Platform = require('../Utilities/Platform');\nconst React = require('react');\nconst ReactNative = require('../Renderer/shims/ReactNative');\nconst TextInputState = require('./TextInput/TextInputState');\nconst UIManager = require('../ReactNative/UIManager');\n\nconst invariant = require('invariant');\n\nimport type {HostComponent} from '../Renderer/shims/ReactNativeTypes';\nimport type {PressEvent, ScrollEvent} from '../Types/CoreEventTypes';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport type {KeyboardEvent} from './Keyboard/Keyboard';\nimport typeof ScrollView from './ScrollView/ScrollView';\nimport type {Props as ScrollViewProps} from './ScrollView/ScrollView';\nimport Commands from './ScrollView/ScrollViewCommands';\n\n/**\n * Mixin that can be integrated in order to handle scrolling that plays well\n * with `ResponderEventPlugin`. Integrate with your platform specific scroll\n * views, or even your custom built (every-frame animating) scroll views so that\n * all of these systems play well with the `ResponderEventPlugin`.\n *\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n *    ... physical touch starts ...\n * 2. `onTouchStartCapture`   (when you press down to stop the scroll)\n * 3. `onTouchStart`          (same, but bubble phase)\n * 4. `onResponderRelease`    (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n *    ... bounce begins ...\n *    ... some time elapses ...\n *    ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd`   (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture`   (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart`          (same, but bubble phase)\n * 5. `onTouchEnd`            (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollResponder` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. The `ScrollResponder` is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n *   this.props.onKeyboardWillShow\n *   this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n *   this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n *   this.props.onKeyboardWillHide\n *   this.props.onKeyboardDidHide\n */\n\nconst IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\n\nexport type State = {|\n  isTouching: boolean,\n  lastMomentumScrollBeginTime: number,\n  lastMomentumScrollEndTime: number,\n  observedScrollSinceBecomingResponder: boolean,\n  becameResponderWhileAnimating: boolean,\n|};\n\nconst ScrollResponderMixin = {\n  _subscriptionKeyboardWillShow: (null: ?EventSubscription),\n  _subscriptionKeyboardWillHide: (null: ?EventSubscription),\n  _subscriptionKeyboardDidShow: (null: ?EventSubscription),\n  _subscriptionKeyboardDidHide: (null: ?EventSubscription),\n  scrollResponderMixinGetInitialState: function(): State {\n    return {\n      isTouching: false,\n      lastMomentumScrollBeginTime: 0,\n      lastMomentumScrollEndTime: 0,\n\n      // Reset to false every time becomes responder. This is used to:\n      // - Determine if the scroll view has been scrolled and therefore should\n      // refuse to give up its responder lock.\n      // - Determine if releasing should dismiss the keyboard when we are in\n      // tap-to-dismiss mode (this.props.keyboardShouldPersistTaps !== 'always').\n      observedScrollSinceBecomingResponder: false,\n      becameResponderWhileAnimating: false,\n    };\n  },\n\n  /**\n   * Invoke this from an `onScroll` event.\n   */\n  scrollResponderHandleScrollShouldSetResponder: function(): boolean {\n    // Allow any event touch pass through if the default pan responder is disabled\n    if (this.props.disableScrollViewPanResponder === true) {\n      return false;\n    }\n    return this.state.isTouching;\n  },\n\n  /**\n   * Merely touch starting is not sufficient for a scroll view to become the\n   * responder. Being the \"responder\" means that the very next touch move/end\n   * event will result in an action/movement.\n   *\n   * Invoke this from an `onStartShouldSetResponder` event.\n   *\n   * `onStartShouldSetResponder` is used when the next move/end will trigger\n   * some UI movement/action, but when you want to yield priority to views\n   * nested inside of the view.\n   *\n   * There may be some cases where scroll views actually should return `true`\n   * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n   * that gives priority to nested views.\n   *\n   * - If a single tap on the scroll view triggers an action such as\n   *   recentering a map style view yet wants to give priority to interaction\n   *   views inside (such as dropped pins or labels), then we would return true\n   *   from this method when there is a single touch.\n   *\n   * - Similar to the previous case, if a two finger \"tap\" should trigger a\n   *   zoom, we would check the `touches` count, and if `>= 2`, we would return\n   *   true.\n   *\n   */\n  scrollResponderHandleStartShouldSetResponder: function(\n    e: PressEvent,\n  ): boolean {\n    // Allow any event touch pass through if the default pan responder is disabled\n    if (this.props.disableScrollViewPanResponder === true) {\n      return false;\n    }\n\n    const currentlyFocusedInput = TextInputState.currentlyFocusedInput();\n\n    if (\n      this.props.keyboardShouldPersistTaps === 'handled' &&\n      this.scrollResponderKeyboardIsDismissible() &&\n      e.target !== currentlyFocusedInput\n    ) {\n      return true;\n    }\n    return false;\n  },\n\n  /**\n   * There are times when the scroll view wants to become the responder\n   * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n   * that *doesn't* give priority to nested views (hence the capture phase):\n   *\n   * - Currently animating.\n   * - Tapping anywhere that is not a text input, while the keyboard is\n   *   up (which should dismiss the keyboard).\n   *\n   * Invoke this from an `onStartShouldSetResponderCapture` event.\n   */\n  scrollResponderHandleStartShouldSetResponderCapture: function(\n    e: PressEvent,\n  ): boolean {\n    // The scroll view should receive taps instead of its descendants if:\n    // * it is already animating/decelerating\n    if (this.scrollResponderIsAnimating()) {\n      return true;\n    }\n\n    // Allow any event touch pass through if the default pan responder is disabled\n    if (this.props.disableScrollViewPanResponder === true) {\n      return false;\n    }\n\n    // * the keyboard is up, keyboardShouldPersistTaps is 'never' (the default),\n    // and a new touch starts with a non-textinput target (in which case the\n    // first tap should be sent to the scroll view and dismiss the keyboard,\n    // then the second tap goes to the actual interior view)\n    const {keyboardShouldPersistTaps} = this.props;\n    const keyboardNeverPersistTaps =\n      !keyboardShouldPersistTaps || keyboardShouldPersistTaps === 'never';\n\n    if (typeof e.target === 'number') {\n      if (__DEV__) {\n        console.error(\n          'Did not expect event target to be a number. Should have been a native component',\n        );\n      }\n\n      return false;\n    }\n\n    if (\n      keyboardNeverPersistTaps &&\n      this.scrollResponderKeyboardIsDismissible() &&\n      e.target != null &&\n      !TextInputState.isTextInput(e.target)\n    ) {\n      return true;\n    }\n\n    return false;\n  },\n\n  /**\n   * Do we consider there to be a dismissible soft-keyboard open?\n   */\n  scrollResponderKeyboardIsDismissible: function(): boolean {\n    const currentlyFocusedInput = TextInputState.currentlyFocusedInput();\n\n    // We cannot dismiss the keyboard without an input to blur, even if a soft\n    // keyboard is open (e.g. when keyboard is open due to a native component\n    // not participating in TextInputState). It's also possible that the\n    // currently focused input isn't a TextInput (such as by calling ref.focus\n    // on a non-TextInput).\n    const hasFocusedTextInput =\n      currentlyFocusedInput != null &&\n      TextInputState.isTextInput(currentlyFocusedInput);\n\n    // Even if an input is focused, we may not have a keyboard to dismiss. E.g\n    // when using a physical keyboard. Ensure we have an event for an opened\n    // keyboard, except on Android where setting windowSoftInputMode to\n    // adjustNone leads to missing keyboard events.\n    const softKeyboardMayBeOpen =\n      this.keyboardWillOpenTo != null || Platform.OS === 'android';\n\n    return hasFocusedTextInput && softKeyboardMayBeOpen;\n  },\n\n  /**\n   * Invoke this from an `onResponderReject` event.\n   *\n   * Some other element is not yielding its role as responder. Normally, we'd\n   * just disable the `UIScrollView`, but a touch has already began on it, the\n   * `UIScrollView` will not accept being disabled after that. The easiest\n   * solution for now is to accept the limitation of disallowing this\n   * altogether. To improve this, find a way to disable the `UIScrollView` after\n   * a touch has already started.\n   */\n  scrollResponderHandleResponderReject: function() {},\n\n  /**\n   * We will allow the scroll view to give up its lock iff it acquired the lock\n   * during an animation. This is a very useful default that happens to satisfy\n   * many common user experiences.\n   *\n   * - Stop a scroll on the left edge, then turn that into an outer view's\n   *   backswipe.\n   * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n   *   view dismiss.\n   * - However, without catching the scroll view mid-bounce (while it is\n   *   motionless), if you drag far enough for the scroll view to become\n   *   responder (and therefore drag the scroll view a bit), any backswipe\n   *   navigation of a swipe gesture higher in the view hierarchy, should be\n   *   rejected.\n   */\n  scrollResponderHandleTerminationRequest: function(): boolean {\n    return !this.state.observedScrollSinceBecomingResponder;\n  },\n\n  /**\n   * Invoke this from an `onTouchEnd` event.\n   *\n   * @param {PressEvent} e Event.\n   */\n  scrollResponderHandleTouchEnd: function(e: PressEvent) {\n    const nativeEvent = e.nativeEvent;\n    this.state.isTouching = nativeEvent.touches.length !== 0;\n    this.props.onTouchEnd && this.props.onTouchEnd(e);\n  },\n\n  /**\n   * Invoke this from an `onTouchCancel` event.\n   *\n   * @param {PressEvent} e Event.\n   */\n  scrollResponderHandleTouchCancel: function(e: PressEvent) {\n    this.state.isTouching = false;\n    this.props.onTouchCancel && this.props.onTouchCancel(e);\n  },\n\n  /**\n   * Invoke this from an `onResponderRelease` event.\n   */\n  scrollResponderHandleResponderRelease: function(e: PressEvent) {\n    this.props.onResponderRelease && this.props.onResponderRelease(e);\n\n    if (typeof e.target === 'number') {\n      if (__DEV__) {\n        console.error(\n          'Did not expect event target to be a number. Should have been a native component',\n        );\n      }\n\n      return;\n    }\n\n    // By default scroll views will unfocus a textField\n    // if another touch occurs outside of it\n    const currentlyFocusedTextInput = TextInputState.currentlyFocusedInput();\n    if (\n      this.props.keyboardShouldPersistTaps !== true &&\n      this.props.keyboardShouldPersistTaps !== 'always' &&\n      this.scrollResponderKeyboardIsDismissible() &&\n      e.target !== currentlyFocusedTextInput &&\n      !this.state.observedScrollSinceBecomingResponder &&\n      !this.state.becameResponderWhileAnimating\n    ) {\n      this.props.onScrollResponderKeyboardDismissed &&\n        this.props.onScrollResponderKeyboardDismissed(e);\n      TextInputState.blurTextInput(currentlyFocusedTextInput);\n    }\n  },\n\n  scrollResponderHandleScroll: function(e: ScrollEvent) {\n    (this: any).state.observedScrollSinceBecomingResponder = true;\n    (this: any).props.onScroll && (this: any).props.onScroll(e);\n  },\n\n  /**\n   * Invoke this from an `onResponderGrant` event.\n   */\n  scrollResponderHandleResponderGrant: function(e: ScrollEvent) {\n    this.state.observedScrollSinceBecomingResponder = false;\n    this.props.onResponderGrant && this.props.onResponderGrant(e);\n    this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();\n  },\n\n  /**\n   * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n   * animation, and there's not an easy way to distinguish a drag vs. stopping\n   * momentum.\n   *\n   * Invoke this from an `onScrollBeginDrag` event.\n   */\n  scrollResponderHandleScrollBeginDrag: function(e: ScrollEvent) {\n    FrameRateLogger.beginScroll(); // TODO: track all scrolls after implementing onScrollEndAnimation\n    this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n  },\n\n  /**\n   * Invoke this from an `onScrollEndDrag` event.\n   */\n  scrollResponderHandleScrollEndDrag: function(e: ScrollEvent) {\n    const {velocity} = e.nativeEvent;\n    // - If we are animating, then this is a \"drag\" that is stopping the scrollview and momentum end\n    //   will fire.\n    // - If velocity is non-zero, then the interaction will stop when momentum scroll ends or\n    //   another drag starts and ends.\n    // - If we don't get velocity, better to stop the interaction twice than not stop it.\n    if (\n      !this.scrollResponderIsAnimating() &&\n      (!velocity || (velocity.x === 0 && velocity.y === 0))\n    ) {\n      FrameRateLogger.endScroll();\n    }\n    this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n  },\n\n  /**\n   * Invoke this from an `onMomentumScrollBegin` event.\n   */\n  scrollResponderHandleMomentumScrollBegin: function(e: ScrollEvent) {\n    this.state.lastMomentumScrollBeginTime = global.performance.now();\n    this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n  },\n\n  /**\n   * Invoke this from an `onMomentumScrollEnd` event.\n   */\n  scrollResponderHandleMomentumScrollEnd: function(e: ScrollEvent) {\n    FrameRateLogger.endScroll();\n    this.state.lastMomentumScrollEndTime = global.performance.now();\n    this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n  },\n\n  /**\n   * Invoke this from an `onTouchStart` event.\n   *\n   * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n   * order, after `ResponderEventPlugin`, we can detect that we were *not*\n   * permitted to be the responder (presumably because a contained view became\n   * responder). The `onResponderReject` won't fire in that case - it only\n   * fires when a *current* responder rejects our request.\n   *\n   * @param {PressEvent} e Touch Start event.\n   */\n  scrollResponderHandleTouchStart: function(e: PressEvent) {\n    this.state.isTouching = true;\n    this.props.onTouchStart && this.props.onTouchStart(e);\n  },\n\n  /**\n   * Invoke this from an `onTouchMove` event.\n   *\n   * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n   * order, after `ResponderEventPlugin`, we can detect that we were *not*\n   * permitted to be the responder (presumably because a contained view became\n   * responder). The `onResponderReject` won't fire in that case - it only\n   * fires when a *current* responder rejects our request.\n   *\n   * @param {PressEvent} e Touch Start event.\n   */\n  scrollResponderHandleTouchMove: function(e: PressEvent) {\n    this.props.onTouchMove && this.props.onTouchMove(e);\n  },\n\n  /**\n   * A helper function for this class that lets us quickly determine if the\n   * view is currently animating. This is particularly useful to know when\n   * a touch has just started or ended.\n   */\n  scrollResponderIsAnimating: function(): boolean {\n    const now = global.performance.now();\n    const timeSinceLastMomentumScrollEnd =\n      now - this.state.lastMomentumScrollEndTime;\n    const isAnimating =\n      timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS ||\n      this.state.lastMomentumScrollEndTime <\n        this.state.lastMomentumScrollBeginTime;\n    return isAnimating;\n  },\n\n  /**\n   * Returns the node that represents native view that can be scrolled.\n   * Components can pass what node to use by defining a `getScrollableNode`\n   * function otherwise `this` is used.\n   */\n  scrollResponderGetScrollableNode: function(): ?number {\n    return this.getScrollableNode\n      ? this.getScrollableNode()\n      : ReactNative.findNodeHandle(this);\n  },\n\n  /**\n   * A helper function to scroll to a specific point in the ScrollView.\n   * This is currently used to help focus child TextViews, but can also\n   * be used to quickly scroll to any element we want to focus. Syntax:\n   *\n   * `scrollResponderScrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})`\n   *\n   * Note: The weird argument signature is due to the fact that, for historical reasons,\n   * the function also accepts separate arguments as as alternative to the options object.\n   * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n   */\n  scrollResponderScrollTo: function(\n    x?:\n      | number\n      | {\n          x?: number,\n          y?: number,\n          animated?: boolean,\n          ...\n        },\n    y?: number,\n    animated?: boolean,\n  ) {\n    if (typeof x === 'number') {\n      console.warn(\n        '`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.',\n      );\n    } else {\n      ({x, y, animated} = x || {});\n    }\n\n    const that: React.ElementRef<ScrollView> = (this: any);\n    invariant(\n      that.getNativeScrollRef != null,\n      'Expected scrollTo to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native',\n    );\n    const nativeScrollRef = that.getNativeScrollRef();\n    if (nativeScrollRef == null) {\n      return;\n    }\n    Commands.scrollTo(nativeScrollRef, x || 0, y || 0, animated !== false);\n  },\n\n  /**\n   * Scrolls to the end of the ScrollView, either immediately or with a smooth\n   * animation.\n   *\n   * Example:\n   *\n   * `scrollResponderScrollToEnd({animated: true})`\n   */\n  scrollResponderScrollToEnd: function(options?: {animated?: boolean, ...}) {\n    // Default to true\n    const animated = (options && options.animated) !== false;\n\n    const that: React.ElementRef<ScrollView> = (this: any);\n    invariant(\n      that.getNativeScrollRef != null,\n      'Expected scrollToEnd to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native',\n    );\n    const nativeScrollRef = that.getNativeScrollRef();\n    if (nativeScrollRef == null) {\n      return;\n    }\n\n    Commands.scrollToEnd(nativeScrollRef, animated);\n  },\n\n  /**\n   * A helper function to zoom to a specific rect in the scrollview. The argument has the shape\n   * {x: number; y: number; width: number; height: number; animated: boolean = true}\n   *\n   * @platform ios\n   */\n  scrollResponderZoomTo: function(\n    rect: {|\n      x: number,\n      y: number,\n      width: number,\n      height: number,\n      animated?: boolean,\n    |},\n    animated?: boolean, // deprecated, put this inside the rect argument instead\n  ) {\n    invariant(Platform.OS === 'ios', 'zoomToRect is not implemented');\n    if ('animated' in rect) {\n      animated = rect.animated;\n      delete rect.animated;\n    } else if (typeof animated !== 'undefined') {\n      console.warn(\n        '`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead',\n      );\n    }\n\n    const that: React.ElementRef<ScrollView> = this;\n    invariant(\n      that.getNativeScrollRef != null,\n      'Expected zoomToRect to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native',\n    );\n    const nativeScrollRef = that.getNativeScrollRef();\n    if (nativeScrollRef == null) {\n      return;\n    }\n    Commands.zoomToRect(nativeScrollRef, rect, animated !== false);\n  },\n\n  /**\n   * Displays the scroll indicators momentarily.\n   */\n  scrollResponderFlashScrollIndicators: function() {\n    const that: React.ElementRef<ScrollView> = (this: any);\n    invariant(\n      that.getNativeScrollRef != null,\n      'Expected flashScrollIndicators to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native',\n    );\n    const nativeScrollRef = that.getNativeScrollRef();\n    if (nativeScrollRef == null) {\n      return;\n    }\n    Commands.flashScrollIndicators(nativeScrollRef);\n  },\n\n  /**\n   * This method should be used as the callback to onFocus in a TextInputs'\n   * parent view. Note that any module using this mixin needs to return\n   * the parent view's ref in getScrollViewRef() in order to use this method.\n   * @param {number} nodeHandle The TextInput node handle\n   * @param {number} additionalOffset The scroll view's bottom \"contentInset\".\n   *        Default is 0.\n   * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n   *        down to make it meet the keyboard's top. Default is false.\n   */\n  scrollResponderScrollNativeHandleToKeyboard: function<T>(\n    nodeHandle: number | React.ElementRef<HostComponent<T>>,\n    additionalOffset?: number,\n    preventNegativeScrollOffset?: boolean,\n  ) {\n    this.additionalScrollOffset = additionalOffset || 0;\n    this.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n\n    if (typeof nodeHandle === 'number') {\n      UIManager.measureLayout(\n        nodeHandle,\n        ReactNative.findNodeHandle(this.getInnerViewNode()),\n        this.scrollResponderTextInputFocusError,\n        this.scrollResponderInputMeasureAndScrollToKeyboard,\n      );\n    } else {\n      const innerRef = this.getInnerViewRef();\n\n      if (innerRef == null) {\n        return;\n      }\n\n      nodeHandle.measureLayout(\n        innerRef,\n        this.scrollResponderInputMeasureAndScrollToKeyboard,\n        this.scrollResponderTextInputFocusError,\n      );\n    }\n  },\n\n  /**\n   * The calculations performed here assume the scroll view takes up the entire\n   * screen - even if has some content inset. We then measure the offsets of the\n   * keyboard, and compensate both for the scroll view's \"contentInset\".\n   *\n   * @param {number} left Position of input w.r.t. table view.\n   * @param {number} top Position of input w.r.t. table view.\n   * @param {number} width Width of the text input.\n   * @param {number} height Height of the text input.\n   */\n  scrollResponderInputMeasureAndScrollToKeyboard: function(\n    left: number,\n    top: number,\n    width: number,\n    height: number,\n  ) {\n    let keyboardScreenY = Dimensions.get('window').height;\n    if (this.keyboardWillOpenTo) {\n      keyboardScreenY = this.keyboardWillOpenTo.endCoordinates.screenY;\n    }\n    let scrollOffsetY =\n      top - keyboardScreenY + height + this.additionalScrollOffset;\n\n    // By default, this can scroll with negative offset, pulling the content\n    // down so that the target component's bottom meets the keyboard's top.\n    // If requested otherwise, cap the offset at 0 minimum to avoid content\n    // shifting down.\n    if (this.preventNegativeScrollOffset) {\n      scrollOffsetY = Math.max(0, scrollOffsetY);\n    }\n    this.scrollResponderScrollTo({x: 0, y: scrollOffsetY, animated: true});\n\n    this.additionalOffset = 0;\n    this.preventNegativeScrollOffset = false;\n  },\n\n  scrollResponderTextInputFocusError: function(msg: string) {\n    console.error('Error measuring text field: ', msg);\n  },\n\n  /**\n   * `componentWillMount` is the closest thing to a  standard \"constructor\" for\n   * React components.\n   *\n   * The `keyboardWillShow` is called before input focus.\n   */\n  UNSAFE_componentWillMount: function() {\n    const {keyboardShouldPersistTaps} = ((this: any).props: ScrollViewProps);\n    if (typeof keyboardShouldPersistTaps === 'boolean') {\n      console.warn(\n        `'keyboardShouldPersistTaps={${\n          keyboardShouldPersistTaps === true ? 'true' : 'false'\n        }}' is deprecated. ` +\n          `Use 'keyboardShouldPersistTaps=\"${\n            keyboardShouldPersistTaps ? 'always' : 'never'\n          }\"' instead`,\n      );\n    }\n\n    (this: any).keyboardWillOpenTo = null;\n    (this: any).additionalScrollOffset = 0;\n    this._subscriptionKeyboardWillShow = Keyboard.addListener(\n      'keyboardWillShow',\n      this.scrollResponderKeyboardWillShow,\n    );\n\n    this._subscriptionKeyboardWillHide = Keyboard.addListener(\n      'keyboardWillHide',\n      this.scrollResponderKeyboardWillHide,\n    );\n    this._subscriptionKeyboardDidShow = Keyboard.addListener(\n      'keyboardDidShow',\n      this.scrollResponderKeyboardDidShow,\n    );\n    this._subscriptionKeyboardDidHide = Keyboard.addListener(\n      'keyboardDidHide',\n      this.scrollResponderKeyboardDidHide,\n    );\n  },\n\n  componentWillUnmount: function() {\n    if (this._subscriptionKeyboardWillShow != null) {\n      this._subscriptionKeyboardWillShow.remove();\n    }\n    if (this._subscriptionKeyboardWillHide != null) {\n      this._subscriptionKeyboardWillHide.remove();\n    }\n    if (this._subscriptionKeyboardDidShow != null) {\n      this._subscriptionKeyboardDidShow.remove();\n    }\n    if (this._subscriptionKeyboardDidHide != null) {\n      this._subscriptionKeyboardDidHide.remove();\n    }\n  },\n\n  /**\n   * Warning, this may be called several times for a single keyboard opening.\n   * It's best to store the information in this method and then take any action\n   * at a later point (either in `keyboardDidShow` or other).\n   *\n   * Here's the order that events occur in:\n   * - focus\n   * - willShow {startCoordinates, endCoordinates} several times\n   * - didShow several times\n   * - blur\n   * - willHide {startCoordinates, endCoordinates} several times\n   * - didHide several times\n   *\n   * The `ScrollResponder` module callbacks for each of these events.\n   * Even though any user could have easily listened to keyboard events\n   * themselves, using these `props` callbacks ensures that ordering of events\n   * is consistent - and not dependent on the order that the keyboard events are\n   * subscribed to. This matters when telling the scroll view to scroll to where\n   * the keyboard is headed - the scroll responder better have been notified of\n   * the keyboard destination before being instructed to scroll to where the\n   * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n   * will work.\n   *\n   * WARNING: These callbacks will fire even if a keyboard is displayed in a\n   * different navigation pane. Filter out the events to determine if they are\n   * relevant to you. (For example, only if you receive these callbacks after\n   * you had explicitly focused a node etc).\n   */\n  scrollResponderKeyboardWillShow: function(e: KeyboardEvent) {\n    this.keyboardWillOpenTo = e;\n    this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n  },\n\n  scrollResponderKeyboardWillHide: function(e: KeyboardEvent) {\n    this.keyboardWillOpenTo = null;\n    this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n  },\n\n  scrollResponderKeyboardDidShow: function(e: KeyboardEvent) {\n    // TODO(7693961): The event for DidShow is not available on iOS yet.\n    // Use the one from WillShow and do not assign.\n    if (e) {\n      this.keyboardWillOpenTo = e;\n    }\n    this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e);\n  },\n\n  scrollResponderKeyboardDidHide: function(e: KeyboardEvent) {\n    this.keyboardWillOpenTo = null;\n    this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e);\n  },\n};\n\nconst ScrollResponder = {\n  Mixin: ScrollResponderMixin,\n};\n\nmodule.exports = ScrollResponder;\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 * @format\n * @flow strict-local\n */\n\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport * as React from 'react';\nimport type {Double} from 'react-native/Libraries/Types/CodegenTypes';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype ScrollViewNativeComponentType = HostComponent<mixed>;\ninterface NativeCommands {\n  +flashScrollIndicators: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n  ) => void;\n  +scrollTo: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n    x: Double,\n    y: Double,\n    animated: boolean,\n  ) => void;\n  +scrollToEnd: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n    animated: boolean,\n  ) => void;\n  +zoomToRect: (\n    viewRef: React.ElementRef<ScrollViewNativeComponentType>,\n    rect: {|\n      x: Double,\n      y: Double,\n      width: Double,\n      height: Double,\n      animated?: boolean,\n    |},\n    animated?: boolean,\n  ) => void;\n}\n\nexport default (codegenNativeCommands<NativeCommands>({\n  supportedCommands: [\n    'flashScrollIndicators',\n    'scrollTo',\n    'scrollToEnd',\n    'zoomToRect',\n  ],\n}): NativeCommands);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeFrameRateLogger from './NativeFrameRateLogger';\n\nconst invariant = require('invariant');\n\n/**\n * Flow API for native FrameRateLogger module. If the native module is not installed, function calls\n * are just no-ops.\n *\n * Typical behavior is that `setContext` is called when a new screen is loaded (e.g. via a\n * navigation integration), and then `beginScroll` is called by `ScrollResponder` at which point the\n * native module then begins tracking frame drops. When `ScrollResponder` calls `endScroll`, the\n * native module gathers up all it's frame drop data and reports it via an analytics pipeline for\n * analysis.\n *\n * Note that `beginScroll` may be called multiple times by `ScrollResponder` - unclear if that's a\n * bug, but the native module should be robust to that.\n *\n * In the future we may add support for tracking frame drops in other types of interactions beyond\n * scrolling.\n */\nconst FrameRateLogger = {\n  /**\n   * Enable `debug` to see local logs of what's going on. `reportStackTraces` will grab stack traces\n   * during UI thread stalls and upload them if the native module supports it.\n   */\n  setGlobalOptions: function(options: {\n    debug?: boolean,\n    reportStackTraces?: boolean,\n    ...\n  }) {\n    if (options.debug !== undefined) {\n      invariant(\n        NativeFrameRateLogger,\n        'Trying to debug FrameRateLogger without the native module!',\n      );\n    }\n    if (NativeFrameRateLogger) {\n      // Needs to clone the object first to avoid modifying the argument.\n      const optionsClone = {\n        debug: !!options.debug,\n        reportStackTraces: !!options.reportStackTraces,\n      };\n      NativeFrameRateLogger.setGlobalOptions(optionsClone);\n    }\n  },\n\n  /**\n   * Must call `setContext` before any events can be properly tracked, which is done automatically\n   * in `AppRegistry`, but navigation is also a common place to hook in.\n   */\n  setContext: function(context: string) {\n    NativeFrameRateLogger && NativeFrameRateLogger.setContext(context);\n  },\n\n  /**\n   * Called in `ScrollResponder` so any component that uses that module will handle this\n   * automatically.\n   */\n  beginScroll() {\n    NativeFrameRateLogger && NativeFrameRateLogger.beginScroll();\n  },\n\n  /**\n   * Called in `ScrollResponder` so any component that uses that module will handle this\n   * automatically.\n   */\n  endScroll() {\n    NativeFrameRateLogger && NativeFrameRateLogger.endScroll();\n  },\n};\n\nmodule.exports = FrameRateLogger;\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 * @format\n * @flow strict\n */\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +setGlobalOptions: (options: {|\n    +debug?: ?boolean,\n    +reportStackTraces?: ?boolean,\n  |}) => void;\n  +setContext: (context: string) => void;\n  +beginScroll: () => void;\n  +endScroll: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('FrameRateLogger'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeEventEmitter from '../../EventEmitter/NativeEventEmitter';\nimport LayoutAnimation from '../../LayoutAnimation/LayoutAnimation';\nimport dismissKeyboard from '../../Utilities/dismissKeyboard';\nimport NativeKeyboardObserver from './NativeKeyboardObserver';\nimport invariant from 'invariant';\nconst KeyboardEventEmitter: NativeEventEmitter = new NativeEventEmitter(\n  NativeKeyboardObserver,\n);\n\nexport type KeyboardEventName =\n  | 'keyboardWillShow'\n  | 'keyboardDidShow'\n  | 'keyboardWillHide'\n  | 'keyboardDidHide'\n  | 'keyboardWillChangeFrame'\n  | 'keyboardDidChangeFrame';\n\nexport type KeyboardEventEasing =\n  | 'easeIn'\n  | 'easeInEaseOut'\n  | 'easeOut'\n  | 'linear'\n  | 'keyboard';\n\nexport type KeyboardEventCoordinates = $ReadOnly<{|\n  screenX: number,\n  screenY: number,\n  width: number,\n  height: number,\n|}>;\n\nexport type KeyboardEvent = AndroidKeyboardEvent | IOSKeyboardEvent;\n\ntype BaseKeyboardEvent = {|\n  duration: number,\n  easing: KeyboardEventEasing,\n  endCoordinates: KeyboardEventCoordinates,\n|};\n\nexport type AndroidKeyboardEvent = $ReadOnly<{|\n  ...BaseKeyboardEvent,\n  duration: 0,\n  easing: 'keyboard',\n|}>;\n\nexport type IOSKeyboardEvent = $ReadOnly<{|\n  ...BaseKeyboardEvent,\n  startCoordinates: KeyboardEventCoordinates,\n  isEventFromThisApp: boolean,\n|}>;\n\ntype KeyboardEventListener = (e: KeyboardEvent) => void;\n\n// The following object exists for documentation purposes\n// Actual work happens in\n// https://github.com/facebook/react-native/blob/master/Libraries/EventEmitter/NativeEventEmitter.js\n\n/**\n * `Keyboard` module to control keyboard events.\n *\n * ### Usage\n *\n * The Keyboard module allows you to listen for native events and react to them, as\n * well as make changes to the keyboard, like dismissing it.\n *\n *```\n * import React, { Component } from 'react';\n * import { Keyboard, TextInput } from 'react-native';\n *\n * class Example extends Component {\n *   componentWillMount () {\n *     this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);\n *     this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);\n *   }\n *\n *   componentWillUnmount () {\n *     this.keyboardDidShowListener.remove();\n *     this.keyboardDidHideListener.remove();\n *   }\n *\n *   _keyboardDidShow () {\n *     alert('Keyboard Shown');\n *   }\n *\n *   _keyboardDidHide () {\n *     alert('Keyboard Hidden');\n *   }\n *\n *   render() {\n *     return (\n *       <TextInput\n *         onSubmitEditing={Keyboard.dismiss}\n *       />\n *     );\n *   }\n * }\n *```\n */\n\nconst Keyboard = {\n  /**\n   * The `addListener` function connects a JavaScript function to an identified native\n   * keyboard notification event.\n   *\n   * This function then returns the reference to the listener.\n   *\n   * @param {string} eventName The `nativeEvent` is the string that identifies the event you're listening for.  This\n   *can be any of the following:\n   *\n   * - `keyboardWillShow`\n   * - `keyboardDidShow`\n   * - `keyboardWillHide`\n   * - `keyboardDidHide`\n   * - `keyboardWillChangeFrame`\n   * - `keyboardDidChangeFrame`\n   *\n   * Note that if you set `android:windowSoftInputMode` to `adjustResize`  or `adjustNothing`,\n   * only `keyboardDidShow` and `keyboardDidHide` events will be available on Android.\n   * `keyboardWillShow` as well as `keyboardWillHide` are generally not available on Android\n   * since there is no native corresponding event.\n   *\n   * @param {function} callback function to be called when the event fires.\n   */\n  addListener(eventName: KeyboardEventName, callback: KeyboardEventListener) {\n    invariant(false, 'Dummy method used for documentation');\n  },\n\n  /**\n   * Removes a specific listener.\n   *\n   * @param {string} eventName The `nativeEvent` is the string that identifies the event you're listening for.\n   * @param {function} callback function to be called when the event fires.\n   */\n  removeListener(\n    eventName: KeyboardEventName,\n    callback: KeyboardEventListener,\n  ) {\n    invariant(false, 'Dummy method used for documentation');\n  },\n\n  /**\n   * Removes all listeners for a specific event type.\n   *\n   * @param {string} eventType The native event string listeners are watching which will be removed.\n   */\n  removeAllListeners(eventName: KeyboardEventName) {\n    invariant(false, 'Dummy method used for documentation');\n  },\n\n  /**\n   * Dismisses the active keyboard and removes focus.\n   */\n  dismiss() {\n    invariant(false, 'Dummy method used for documentation');\n  },\n\n  /**\n   * Useful for syncing TextInput (or other keyboard accessory view) size of\n   * position changes with keyboard movements.\n   */\n  scheduleLayoutAnimation(event: KeyboardEvent) {\n    invariant(false, 'Dummy method used for documentation');\n  },\n};\n\n// Throw away the dummy object and reassign it to original module\nKeyboardEventEmitter.dismiss = dismissKeyboard;\nKeyboardEventEmitter.scheduleLayoutAnimation = function(event: KeyboardEvent) {\n  const {duration, easing} = event;\n  if (duration != null && duration !== 0) {\n    LayoutAnimation.configureNext({\n      duration: duration,\n      update: {\n        duration: duration,\n        type: (easing != null && LayoutAnimation.Types[easing]) || 'keyboard',\n      },\n    });\n  }\n};\n\nmodule.exports = KeyboardEventEmitter;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst UIManager = require('../ReactNative/UIManager');\nimport type {Spec as FabricUIManagerSpec} from '../ReactNative/FabricUIManager';\nimport type {\n  LayoutAnimationConfig as LayoutAnimationConfig_,\n  LayoutAnimationType,\n  LayoutAnimationProperty,\n} from '../Renderer/shims/ReactNativeTypes';\n\nimport Platform from '../Utilities/Platform';\n\n// Reexport type\nexport type LayoutAnimationConfig = LayoutAnimationConfig_;\n\ntype OnAnimationDidEndCallback = () => void;\ntype OnAnimationDidFailCallback = () => void;\n\nfunction configureNext(\n  config: LayoutAnimationConfig,\n  onAnimationDidEnd?: OnAnimationDidEndCallback,\n  onAnimationDidFail?: OnAnimationDidFailCallback,\n) {\n  if (!Platform.isTesting) {\n    if (UIManager?.configureNextLayoutAnimation) {\n      UIManager.configureNextLayoutAnimation(\n        config,\n        onAnimationDidEnd ?? function() {},\n        onAnimationDidFail ??\n          function() {} /* this should never be called in Non-Fabric */,\n      );\n    }\n    const FabricUIManager: FabricUIManagerSpec = global?.nativeFabricUIManager;\n    if (FabricUIManager?.configureNextLayoutAnimation) {\n      global?.nativeFabricUIManager?.configureNextLayoutAnimation(\n        config,\n        onAnimationDidEnd ?? function() {},\n        onAnimationDidFail ??\n          function() {} /* this will only be called if configuration fails */,\n      );\n    }\n  }\n}\n\nfunction create(\n  duration: number,\n  type: LayoutAnimationType,\n  property: LayoutAnimationProperty,\n): LayoutAnimationConfig {\n  return {\n    duration,\n    create: {type, property},\n    update: {type},\n    delete: {type, property},\n  };\n}\n\nconst Presets = {\n  easeInEaseOut: (create(\n    300,\n    'easeInEaseOut',\n    'opacity',\n  ): LayoutAnimationConfig),\n  linear: (create(500, 'linear', 'opacity'): LayoutAnimationConfig),\n  spring: {\n    duration: 700,\n    create: {\n      type: 'linear',\n      property: 'opacity',\n    },\n    update: {\n      type: 'spring',\n      springDamping: 0.4,\n    },\n    delete: {\n      type: 'linear',\n      property: 'opacity',\n    },\n  },\n};\n\n/**\n * Automatically animates views to their new positions when the\n * next layout happens.\n *\n * A common way to use this API is to call it before calling `setState`.\n *\n * Note that in order to get this to work on **Android** you need to set the following flags via `UIManager`:\n *\n *     UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true);\n */\nconst LayoutAnimation = {\n  /**\n   * Schedules an animation to happen on the next layout.\n   *\n   * @param config Specifies animation properties:\n   *\n   *   - `duration` in milliseconds\n   *   - `create`, `AnimationConfig` for animating in new views\n   *   - `update`, `AnimationConfig` for animating views that have been updated\n   *\n   * @param onAnimationDidEnd Called when the animation finished.\n   * Only supported on iOS.\n   * @param onError Called on error. Only supported on iOS.\n   */\n  configureNext,\n  /**\n   * Helper for creating a config for `configureNext`.\n   */\n  create,\n  Types: Object.freeze({\n    spring: 'spring',\n    linear: 'linear',\n    easeInEaseOut: 'easeInEaseOut',\n    easeIn: 'easeIn',\n    easeOut: 'easeOut',\n    keyboard: 'keyboard',\n  }),\n  Properties: Object.freeze({\n    opacity: 'opacity',\n    scaleX: 'scaleX',\n    scaleY: 'scaleY',\n    scaleXY: 'scaleXY',\n  }),\n  checkConfig(...args: Array<mixed>) {\n    console.error('LayoutAnimation.checkConfig(...) has been disabled.');\n  },\n  Presets,\n  easeInEaseOut: (configureNext.bind(null, Presets.easeInEaseOut): (\n    onAnimationDidEnd?: OnAnimationDidEndCallback,\n  ) => void),\n  linear: (configureNext.bind(null, Presets.linear): (\n    onAnimationDidEnd?: OnAnimationDidEndCallback,\n  ) => void),\n  spring: (configureNext.bind(null, Presets.spring): (\n    onAnimationDidEnd?: OnAnimationDidEndCallback,\n  ) => void),\n};\n\nmodule.exports = LayoutAnimation;\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 * @flow strict-local\n * @format\n */\n\n// This function dismisses the currently-open keyboard, if any.\n\n'use strict';\n\nconst TextInputState = require('../Components/TextInput/TextInputState');\n\nfunction dismissKeyboard() {\n  TextInputState.blurTextInput(TextInputState.currentlyFocusedInput());\n}\n\nmodule.exports = dismissKeyboard;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('KeyboardObserver'): ?Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport AnimatedImplementation from '../../Animated/AnimatedImplementation';\nimport * as React from 'react';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport View from '../View/View';\nimport Platform from '../../Utilities/Platform';\n\nimport type {LayoutEvent} from '../../Types/CoreEventTypes';\n\nconst AnimatedView = AnimatedImplementation.createAnimatedComponent(View);\n\nexport type Props = {\n  children?: React.Element<any>,\n  nextHeaderLayoutY: ?number,\n  onLayout: (event: LayoutEvent) => void,\n  scrollAnimatedValue: AnimatedImplementation.Value,\n  // Will cause sticky headers to stick at the bottom of the ScrollView instead\n  // of the top.\n  inverted: ?boolean,\n  // The height of the parent ScrollView. Currently only set when inverted.\n  scrollViewHeight: ?number,\n  nativeID?: ?string,\n  ...\n};\n\ntype State = {\n  measured: boolean,\n  layoutY: number,\n  layoutHeight: number,\n  nextHeaderLayoutY: ?number,\n  translateY: ?number,\n  ...\n};\n\nclass ScrollViewStickyHeader extends React.Component<Props, State> {\n  state: State = {\n    measured: false,\n    layoutY: 0,\n    layoutHeight: 0,\n    nextHeaderLayoutY: this.props.nextHeaderLayoutY,\n    translateY: null,\n  };\n\n  _translateY: ?AnimatedImplementation.Interpolation = null;\n  _shouldRecreateTranslateY: boolean = true;\n  _haveReceivedInitialZeroTranslateY: boolean = true;\n  _ref: any; // TODO T53738161: flow type this, and the whole file\n\n  // Fabric-only:\n  _timer: ?TimeoutID;\n  _animatedValueListenerId: string;\n  _animatedValueListener: (valueObject: $ReadOnly<{|value: number|}>) => void;\n  _debounceTimeout: number = Platform.OS === 'android' ? 15 : 64;\n\n  setNextHeaderY(y: number) {\n    this._shouldRecreateTranslateY = true;\n    this.setState({nextHeaderLayoutY: y});\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps: Props) {\n    if (\n      nextProps.scrollViewHeight !== this.props.scrollViewHeight ||\n      nextProps.scrollAnimatedValue !== this.props.scrollAnimatedValue ||\n      nextProps.inverted !== this.props.inverted\n    ) {\n      this._shouldRecreateTranslateY = true;\n    }\n  }\n\n  updateTranslateListener(\n    translateY: AnimatedImplementation.Interpolation,\n    isFabric: boolean,\n  ) {\n    if (this._translateY != null && this._animatedValueListenerId != null) {\n      this._translateY.removeListener(this._animatedValueListenerId);\n    }\n\n    this._translateY = translateY;\n    this._shouldRecreateTranslateY = false;\n\n    if (!isFabric) {\n      return;\n    }\n\n    if (!this._animatedValueListener) {\n      // This is called whenever the (Interpolated) Animated Value\n      // updates, which is several times per frame during scrolling.\n      // To ensure that the Fabric ShadowTree has the most recent\n      // translate style of this node, we debounce the value and then\n      // pass it through to the underlying node during render.\n      // This is:\n      // 1. Only an issue in Fabric.\n      // 2. Worse in Android than iOS. In Android, but not iOS, you\n      //    can touch and move your finger slightly and still trigger\n      //    a \"tap\" event. In iOS, moving will cancel the tap in\n      //    both Fabric and non-Fabric. On Android when you move\n      //    your finger, the hit-detection moves from the Android\n      //    platform to JS, so we need the ShadowTree to have knowledge\n      //    of the current position.\n      this._animatedValueListener = ({value}) => {\n        // When the AnimatedInterpolation is recreated, it always initializes\n        // to a value of zero and emits a value change of 0 to its listeners.\n        if (value === 0 && !this._haveReceivedInitialZeroTranslateY) {\n          this._haveReceivedInitialZeroTranslateY = true;\n          return;\n        }\n        if (this._timer) {\n          clearTimeout(this._timer);\n        }\n        this._timer = setTimeout(() => {\n          if (value !== this.state.translateY) {\n            this.setState({\n              translateY: value,\n            });\n          }\n        }, this._debounceTimeout);\n      };\n    }\n    if (this.state.translateY !== 0 && this.state.translateY != null) {\n      this._haveReceivedInitialZeroTranslateY = false;\n    }\n    this._animatedValueListenerId = translateY.addListener(\n      this._animatedValueListener,\n    );\n  }\n\n  _onLayout = event => {\n    const layoutY = event.nativeEvent.layout.y;\n    const layoutHeight = event.nativeEvent.layout.height;\n    const measured = true;\n\n    if (\n      layoutY !== this.state.layoutY ||\n      layoutHeight !== this.state.layoutHeight ||\n      measured !== this.state.measured\n    ) {\n      this._shouldRecreateTranslateY = true;\n    }\n\n    this.setState({\n      measured,\n      layoutY,\n      layoutHeight,\n    });\n\n    this.props.onLayout(event);\n    const child = React.Children.only(this.props.children);\n    if (child.props.onLayout) {\n      child.props.onLayout(event);\n    }\n  };\n\n  _setComponentRef = ref => {\n    this._ref = ref;\n  };\n\n  render(): React.Node {\n    // Fabric Detection\n    // eslint-disable-next-line dot-notation\n    const isFabric = !!(\n      this._ref && this._ref['_internalInstanceHandle']?.stateNode?.canonical\n    );\n\n    // Initially and in the case of updated props or layout, we\n    // recreate this interpolated value. Otherwise, we do not recreate\n    // when there are state changes.\n    if (this._shouldRecreateTranslateY) {\n      const {inverted, scrollViewHeight} = this.props;\n      const {measured, layoutHeight, layoutY, nextHeaderLayoutY} = this.state;\n      const inputRange: Array<number> = [-1, 0];\n      const outputRange: Array<number> = [0, 0];\n\n      if (measured) {\n        if (inverted) {\n          // The interpolation looks like:\n          // - Negative scroll: no translation\n          // - `stickStartPoint` is the point at which the header will start sticking.\n          //   It is calculated using the ScrollView viewport height so it is a the bottom.\n          // - Headers that are in the initial viewport will never stick, `stickStartPoint`\n          //   will be negative.\n          // - From 0 to `stickStartPoint` no translation. This will cause the header\n          //   to scroll normally until it reaches the top of the scroll view.\n          // - From `stickStartPoint` to when the next header y hits the bottom edge of the header: translate\n          //   equally to scroll. This will cause the header to stay at the top of the scroll view.\n          // - Past the collision with the next header y: no more translation. This will cause the\n          //   header to continue scrolling up and make room for the next sticky header.\n          //   In the case that there is no next header just translate equally to\n          //   scroll indefinitely.\n          if (scrollViewHeight != null) {\n            const stickStartPoint = layoutY + layoutHeight - scrollViewHeight;\n            if (stickStartPoint > 0) {\n              inputRange.push(stickStartPoint);\n              outputRange.push(0);\n              inputRange.push(stickStartPoint + 1);\n              outputRange.push(1);\n              // If the next sticky header has not loaded yet (probably windowing) or is the last\n              // we can just keep it sticked forever.\n              const collisionPoint =\n                (nextHeaderLayoutY || 0) - layoutHeight - scrollViewHeight;\n              if (collisionPoint > stickStartPoint) {\n                inputRange.push(collisionPoint, collisionPoint + 1);\n                outputRange.push(\n                  collisionPoint - stickStartPoint,\n                  collisionPoint - stickStartPoint,\n                );\n              }\n            }\n          }\n        } else {\n          // The interpolation looks like:\n          // - Negative scroll: no translation\n          // - From 0 to the y of the header: no translation. This will cause the header\n          //   to scroll normally until it reaches the top of the scroll view.\n          // - From header y to when the next header y hits the bottom edge of the header: translate\n          //   equally to scroll. This will cause the header to stay at the top of the scroll view.\n          // - Past the collision with the next header y: no more translation. This will cause the\n          //   header to continue scrolling up and make room for the next sticky header.\n          //   In the case that there is no next header just translate equally to\n          //   scroll indefinitely.\n          inputRange.push(layoutY);\n          outputRange.push(0);\n          // If the next sticky header has not loaded yet (probably windowing) or is the last\n          // we can just keep it sticked forever.\n          const collisionPoint = (nextHeaderLayoutY || 0) - layoutHeight;\n          if (collisionPoint >= layoutY) {\n            inputRange.push(collisionPoint, collisionPoint + 1);\n            outputRange.push(\n              collisionPoint - layoutY,\n              collisionPoint - layoutY,\n            );\n          } else {\n            inputRange.push(layoutY + 1);\n            outputRange.push(1);\n          }\n        }\n      }\n\n      this.updateTranslateListener(\n        this.props.scrollAnimatedValue.interpolate({\n          inputRange,\n          outputRange,\n        }),\n        isFabric,\n      );\n    }\n\n    const child = React.Children.only(this.props.children);\n\n    // TODO T68319535: remove this if NativeAnimated is rewritten for Fabric\n    const passthroughAnimatedPropExplicitValues =\n      isFabric && this.state.translateY != null\n        ? {\n            style: {transform: [{translateY: this.state.translateY}]},\n          }\n        : null;\n\n    return (\n      <AnimatedView\n        collapsable={false}\n        nativeID={this.props.nativeID}\n        onLayout={this._onLayout}\n        ref={this._setComponentRef}\n        style={[\n          child.props.style,\n          styles.header,\n          {transform: [{translateY: this._translateY}]},\n        ]}\n        passthroughAnimatedPropExplicitValues={\n          passthroughAnimatedPropExplicitValues\n        }>\n        {React.cloneElement(child, {\n          style: styles.fill, // We transfer the child style to the wrapper.\n          onLayout: undefined, // we call this manually through our this._onLayout\n        })}\n      </AnimatedView>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  header: {\n    zIndex: 10,\n    position: 'relative',\n  },\n  fill: {\n    flex: 1,\n  },\n});\n\nmodule.exports = ScrollViewStickyHeader;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport Platform from '../../Utilities/Platform';\n\nfunction processDecelerationRate(\n  decelerationRate: number | 'normal' | 'fast',\n): number {\n  if (decelerationRate === 'normal') {\n    return Platform.select({\n      ios: 0.998,\n      android: 0.985,\n    });\n  } else if (decelerationRate === 'fast') {\n    return Platform.select({\n      ios: 0.99,\n      android: 0.9,\n    });\n  }\n  return decelerationRate;\n}\n\nmodule.exports = processDecelerationRate;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {DangerouslyImpreciseStyle} from './StyleSheet';\n\nconst OUTER_PROPS = Object.assign(Object.create(null), {\n  margin: true,\n  marginHorizontal: true,\n  marginVertical: true,\n  marginBottom: true,\n  marginTop: true,\n  marginLeft: true,\n  marginRight: true,\n  flex: true,\n  flexGrow: true,\n  flexShrink: true,\n  flexBasis: true,\n  alignSelf: true,\n  height: true,\n  minHeight: true,\n  maxHeight: true,\n  width: true,\n  minWidth: true,\n  maxWidth: true,\n  position: true,\n  left: true,\n  right: true,\n  bottom: true,\n  top: true,\n  transform: true,\n});\n\nfunction splitLayoutProps(\n  props: ?DangerouslyImpreciseStyle,\n): {\n  outer: DangerouslyImpreciseStyle,\n  inner: DangerouslyImpreciseStyle,\n  ...\n} {\n  const inner = {};\n  const outer = {};\n  if (props) {\n    Object.keys(props).forEach((k: string) => {\n      const value = props[k];\n      if (OUTER_PROPS[k]) {\n        outer[k] = value;\n      } else {\n        inner[k] = value;\n      }\n    });\n  }\n  return {outer, inner};\n}\n\nmodule.exports = splitLayoutProps;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\ntype Value = {horizontal: boolean} | null;\n\nconst ScrollViewContext: React.Context<Value> = React.createContext(null);\n\nexport default ScrollViewContext;\n\nexport const HORIZONTAL: Value = Object.freeze({horizontal: true});\nexport const VERTICAL: Value = Object.freeze({horizontal: false});\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport registerGeneratedViewConfig from '../../Utilities/registerGeneratedViewConfig';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\nimport ScrollViewViewConfig from './ScrollViewViewConfig';\n\nimport type {\n  ScrollViewNativeProps,\n  ScrollViewNativeComponentType,\n} from './ScrollViewNativeComponentType';\n\nlet ScrollViewNativeComponent;\nif (global.RN$Bridgeless) {\n  registerGeneratedViewConfig('RCTScrollView', ScrollViewViewConfig);\n  ScrollViewNativeComponent = 'RCTScrollView';\n} else {\n  ScrollViewNativeComponent = requireNativeComponent<ScrollViewNativeProps>(\n    'RCTScrollView',\n  );\n}\n\nexport default ((ScrollViewNativeComponent: any): ScrollViewNativeComponentType);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {GeneratedViewConfig} from '../../Utilities/registerGeneratedViewConfig';\n\nconst ScrollViewViewConfig = {\n  uiViewClassName: 'RCTScrollView',\n  bubblingEventTypes: {},\n  directEventTypes: {\n    topScrollToTop: {\n      registrationName: 'onScrollToTop',\n    },\n  },\n  validAttributes: {\n    alwaysBounceHorizontal: true,\n    alwaysBounceVertical: true,\n    automaticallyAdjustContentInsets: true,\n    bounces: true,\n    bouncesZoom: true,\n    canCancelContentTouches: true,\n    centerContent: true,\n    contentInset: {diff: require('../../Utilities/differ/pointsDiffer')},\n    contentOffset: {diff: require('../../Utilities/differ/pointsDiffer')},\n    contentInsetAdjustmentBehavior: true,\n    decelerationRate: true,\n    directionalLockEnabled: true,\n    disableIntervalMomentum: true,\n    endFillColor: {process: require('../../StyleSheet/processColor')},\n    fadingEdgeLength: true,\n    indicatorStyle: true,\n    keyboardDismissMode: true,\n    maintainVisibleContentPosition: true,\n    maximumZoomScale: true,\n    minimumZoomScale: true,\n    nestedScrollEnabled: true,\n    onMomentumScrollBegin: true,\n    onMomentumScrollEnd: true,\n    onScroll: true,\n    onScrollBeginDrag: true,\n    onScrollEndDrag: true,\n    onScrollToTop: true,\n    overScrollMode: true,\n    pagingEnabled: true,\n    persistentScrollbar: true,\n    pinchGestureEnabled: true,\n    scrollEnabled: true,\n    scrollEventThrottle: true,\n    scrollIndicatorInsets: {\n      diff: require('../../Utilities/differ/pointsDiffer'),\n    },\n    scrollPerfTag: true,\n    scrollToOverflowEnabled: true,\n    scrollsToTop: true,\n    sendMomentumEvents: true,\n    showsHorizontalScrollIndicator: true,\n    showsVerticalScrollIndicator: true,\n    snapToAlignment: true,\n    snapToEnd: true,\n    snapToInterval: true,\n    snapToOffsets: true,\n    snapToStart: true,\n    zoomScale: true,\n  },\n};\n\nmodule.exports = (ScrollViewViewConfig: GeneratedViewConfig);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport registerGeneratedViewConfig from '../../Utilities/registerGeneratedViewConfig';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nconst ScrollContentViewViewConfig = {\n  uiViewClassName: 'RCTScrollContentView',\n  bubblingEventTypes: {},\n  directEventTypes: {},\n  validAttributes: {},\n};\n\nlet ScrollContentViewNativeComponent;\nif (global.RN$Bridgeless) {\n  registerGeneratedViewConfig(\n    'RCTScrollContentView',\n    ScrollContentViewViewConfig,\n  );\n  ScrollContentViewNativeComponent = 'RCTScrollContentView';\n} else {\n  ScrollContentViewNativeComponent = requireNativeComponent<ViewProps>(\n    'RCTScrollContentView',\n  );\n}\n\nexport default ((ScrollContentViewNativeComponent: any): HostComponent<ViewProps>);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport registerGeneratedViewConfig from '../../Utilities/registerGeneratedViewConfig';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ScrollViewNativeProps} from './ScrollViewNativeComponentType';\n\nconst AndroidHorizontalScrollViewViewConfig = {\n  uiViewClassName: 'AndroidHorizontalScrollView',\n  bubblingEventTypes: {},\n  directEventTypes: {},\n  validAttributes: {\n    decelerationRate: true,\n    disableIntervalMomentum: true,\n    endFillColor: {process: require('../../StyleSheet/processColor')},\n    fadingEdgeLength: true,\n    nestedScrollEnabled: true,\n    overScrollMode: true,\n    pagingEnabled: true,\n    persistentScrollbar: true,\n    scrollEnabled: true,\n    scrollPerfTag: true,\n    sendMomentumEvents: true,\n    showsHorizontalScrollIndicator: true,\n    snapToEnd: true,\n    snapToInterval: true,\n    snapToStart: true,\n    snapToOffsets: true,\n    contentOffset: true,\n  },\n};\n\nlet AndroidHorizontalScrollViewNativeComponent;\nif (global.RN$Bridgeless) {\n  registerGeneratedViewConfig(\n    'AndroidHorizontalScrollView',\n    AndroidHorizontalScrollViewViewConfig,\n  );\n  AndroidHorizontalScrollViewNativeComponent = 'AndroidHorizontalScrollView';\n} else {\n  AndroidHorizontalScrollViewNativeComponent = requireNativeComponent<ScrollViewNativeProps>(\n    'AndroidHorizontalScrollView',\n  );\n}\n\nexport default ((AndroidHorizontalScrollViewNativeComponent: any): HostComponent<ScrollViewNativeProps>);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport registerGeneratedViewConfig from '../../Utilities/registerGeneratedViewConfig';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nconst AndroidHorizontalScrollContentViewViewConfig = {\n  uiViewClassName: 'AndroidHorizontalScrollContentView',\n  bubblingEventTypes: {},\n  directEventTypes: {},\n  validAttributes: {},\n};\n\nlet AndroidHorizontalScrollContentViewNativeComponent;\nif (global.RN$Bridgeless) {\n  registerGeneratedViewConfig(\n    'AndroidHorizontalScrollContentView',\n    AndroidHorizontalScrollContentViewViewConfig,\n  );\n  AndroidHorizontalScrollContentViewNativeComponent =\n    'AndroidHorizontalScrollContentView';\n} else {\n  AndroidHorizontalScrollContentViewNativeComponent = requireNativeComponent<ViewProps>(\n    'AndroidHorizontalScrollContentView',\n  );\n}\n\nexport default ((AndroidHorizontalScrollContentViewNativeComponent: any): HostComponent<ViewProps>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\nexport type ViewToken = {\n  item: any,\n  key: string,\n  index: ?number,\n  isViewable: boolean,\n  section?: any,\n  ...\n};\n\nexport type ViewabilityConfigCallbackPair = {\n  viewabilityConfig: ViewabilityConfig,\n  onViewableItemsChanged: (info: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => void,\n  ...\n};\n\nexport type ViewabilityConfig = {|\n  /**\n   * Minimum amount of time (in milliseconds) that an item must be physically viewable before the\n   * viewability callback will be fired. A high number means that scrolling through content without\n   * stopping will not mark the content as viewable.\n   */\n  minimumViewTime?: number,\n\n  /**\n   * Percent of viewport that must be covered for a partially occluded item to count as\n   * \"viewable\", 0-100. Fully visible items are always considered viewable. A value of 0 means\n   * that a single pixel in the viewport makes the item viewable, and a value of 100 means that\n   * an item must be either entirely visible or cover the entire viewport to count as viewable.\n   */\n  viewAreaCoveragePercentThreshold?: number,\n\n  /**\n   * Similar to `viewAreaPercentThreshold`, but considers the percent of the item that is visible,\n   * rather than the fraction of the viewable area it covers.\n   */\n  itemVisiblePercentThreshold?: number,\n\n  /**\n   * Nothing is considered viewable until the user scrolls or `recordInteraction` is called after\n   * render.\n   */\n  waitForInteraction?: boolean,\n|};\n\n/**\n * A Utility class for calculating viewable items based on current metrics like scroll position and\n * layout.\n *\n * An item is said to be in a \"viewable\" state when any of the following\n * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`\n * is true):\n *\n * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item\n *   visible in the view area >= `itemVisiblePercentThreshold`.\n * - Entirely visible on screen\n */\nclass ViewabilityHelper {\n  _config: ViewabilityConfig;\n  _hasInteracted: boolean = false;\n  _timers: Set<number> = new Set();\n  _viewableIndices: Array<number> = [];\n  _viewableItems: Map<string, ViewToken> = new Map();\n\n  constructor(\n    config: ViewabilityConfig = {viewAreaCoveragePercentThreshold: 0},\n  ) {\n    this._config = config;\n  }\n\n  /**\n   * Cleanup, e.g. on unmount. Clears any pending timers.\n   */\n  dispose() {\n    /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.63 was deployed. To see the error delete this\n     * comment and run Flow. */\n    this._timers.forEach(clearTimeout);\n  }\n\n  /**\n   * Determines which items are viewable based on the current metrics and config.\n   */\n  computeViewableItems(\n    itemCount: number,\n    scrollOffset: number,\n    viewportHeight: number,\n    getFrameMetrics: (\n      index: number,\n    ) => ?{\n      length: number,\n      offset: number,\n      ...\n    },\n    // Optional optimization to reduce the scan size\n    renderRange?: {\n      first: number,\n      last: number,\n      ...\n    },\n  ): Array<number> {\n    const {\n      itemVisiblePercentThreshold,\n      viewAreaCoveragePercentThreshold,\n    } = this._config;\n    const viewAreaMode = viewAreaCoveragePercentThreshold != null;\n    const viewablePercentThreshold = viewAreaMode\n      ? viewAreaCoveragePercentThreshold\n      : itemVisiblePercentThreshold;\n    invariant(\n      viewablePercentThreshold != null &&\n        (itemVisiblePercentThreshold != null) !==\n          (viewAreaCoveragePercentThreshold != null),\n      'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold',\n    );\n    const viewableIndices = [];\n    if (itemCount === 0) {\n      return viewableIndices;\n    }\n    let firstVisible = -1;\n    const {first, last} = renderRange || {first: 0, last: itemCount - 1};\n    if (last >= itemCount) {\n      console.warn(\n        'Invalid render range computing viewability ' +\n          JSON.stringify({renderRange, itemCount}),\n      );\n      return [];\n    }\n    for (let idx = first; idx <= last; idx++) {\n      const metrics = getFrameMetrics(idx);\n      if (!metrics) {\n        continue;\n      }\n      const top = metrics.offset - scrollOffset;\n      const bottom = top + metrics.length;\n      if (top < viewportHeight && bottom > 0) {\n        firstVisible = idx;\n        if (\n          _isViewable(\n            viewAreaMode,\n            viewablePercentThreshold,\n            top,\n            bottom,\n            viewportHeight,\n            metrics.length,\n          )\n        ) {\n          viewableIndices.push(idx);\n        }\n      } else if (firstVisible >= 0) {\n        break;\n      }\n    }\n    return viewableIndices;\n  }\n\n  /**\n   * Figures out which items are viewable and how that has changed from before and calls\n   * `onViewableItemsChanged` as appropriate.\n   */\n  onUpdate(\n    itemCount: number,\n    scrollOffset: number,\n    viewportHeight: number,\n    getFrameMetrics: (\n      index: number,\n    ) => ?{\n      length: number,\n      offset: number,\n      ...\n    },\n    createViewToken: (index: number, isViewable: boolean) => ViewToken,\n    onViewableItemsChanged: ({\n      viewableItems: Array<ViewToken>,\n      changed: Array<ViewToken>,\n      ...\n    }) => void,\n    // Optional optimization to reduce the scan size\n    renderRange?: {\n      first: number,\n      last: number,\n      ...\n    },\n  ): void {\n    if (\n      (this._config.waitForInteraction && !this._hasInteracted) ||\n      itemCount === 0 ||\n      !getFrameMetrics(0)\n    ) {\n      return;\n    }\n    let viewableIndices = [];\n    if (itemCount) {\n      viewableIndices = this.computeViewableItems(\n        itemCount,\n        scrollOffset,\n        viewportHeight,\n        getFrameMetrics,\n        renderRange,\n      );\n    }\n    if (\n      this._viewableIndices.length === viewableIndices.length &&\n      this._viewableIndices.every((v, ii) => v === viewableIndices[ii])\n    ) {\n      // We might get a lot of scroll events where visibility doesn't change and we don't want to do\n      // extra work in those cases.\n      return;\n    }\n    this._viewableIndices = viewableIndices;\n    if (this._config.minimumViewTime) {\n      const handle = setTimeout(() => {\n        /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n         * error found when Flow v0.63 was deployed. To see the error delete\n         * this comment and run Flow. */\n        this._timers.delete(handle);\n        this._onUpdateSync(\n          viewableIndices,\n          onViewableItemsChanged,\n          createViewToken,\n        );\n      }, this._config.minimumViewTime);\n      /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.63 was deployed. To see the error delete this\n       * comment and run Flow. */\n      this._timers.add(handle);\n    } else {\n      this._onUpdateSync(\n        viewableIndices,\n        onViewableItemsChanged,\n        createViewToken,\n      );\n    }\n  }\n\n  /**\n   * clean-up cached _viewableIndices to evaluate changed items on next update\n   */\n  resetViewableIndices() {\n    this._viewableIndices = [];\n  }\n\n  /**\n   * Records that an interaction has happened even if there has been no scroll.\n   */\n  recordInteraction() {\n    this._hasInteracted = true;\n  }\n\n  _onUpdateSync(\n    viewableIndicesToCheck,\n    onViewableItemsChanged,\n    createViewToken,\n  ) {\n    // Filter out indices that have gone out of view since this call was scheduled.\n    viewableIndicesToCheck = viewableIndicesToCheck.filter(ii =>\n      this._viewableIndices.includes(ii),\n    );\n    const prevItems = this._viewableItems;\n    const nextItems = new Map(\n      viewableIndicesToCheck.map(ii => {\n        const viewable = createViewToken(ii, true);\n        return [viewable.key, viewable];\n      }),\n    );\n\n    const changed = [];\n    for (const [key, viewable] of nextItems) {\n      if (!prevItems.has(key)) {\n        changed.push(viewable);\n      }\n    }\n    for (const [key, viewable] of prevItems) {\n      if (!nextItems.has(key)) {\n        changed.push({...viewable, isViewable: false});\n      }\n    }\n    if (changed.length > 0) {\n      this._viewableItems = nextItems;\n      onViewableItemsChanged({\n        viewableItems: Array.from(nextItems.values()),\n        changed,\n        viewabilityConfig: this._config,\n      });\n    }\n  }\n}\n\nfunction _isViewable(\n  viewAreaMode: boolean,\n  viewablePercentThreshold: number,\n  top: number,\n  bottom: number,\n  viewportHeight: number,\n  itemLength: number,\n): boolean {\n  if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n    return true;\n  } else {\n    const pixels = _getPixelsVisible(top, bottom, viewportHeight);\n    const percent =\n      100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n    return percent >= viewablePercentThreshold;\n  }\n}\n\nfunction _getPixelsVisible(\n  top: number,\n  bottom: number,\n  viewportHeight: number,\n): number {\n  const visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n  return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(\n  top: number,\n  bottom: number,\n  viewportHeight: number,\n): boolean {\n  return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nmodule.exports = ViewabilityHelper;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst invariant = require('invariant');\n\n/**\n * Used to find the indices of the frames that overlap the given offsets. Useful for finding the\n * items that bound different windows of content, such as the visible area or the buffered overscan\n * area.\n */\nfunction elementsThatOverlapOffsets(\n  offsets: Array<number>,\n  itemCount: number,\n  getFrameMetrics: (\n    index: number,\n  ) => {\n    length: number,\n    offset: number,\n    ...\n  },\n): Array<number> {\n  const out = [];\n  let outLength = 0;\n  for (let ii = 0; ii < itemCount; ii++) {\n    const frame = getFrameMetrics(ii);\n    const trailingOffset = frame.offset + frame.length;\n    for (let kk = 0; kk < offsets.length; kk++) {\n      if (out[kk] == null && trailingOffset >= offsets[kk]) {\n        out[kk] = ii;\n        outLength++;\n        if (kk === offsets.length - 1) {\n          invariant(\n            outLength === offsets.length,\n            'bad offsets input, should be in increasing order: %s',\n            JSON.stringify(offsets),\n          );\n          return out;\n        }\n      }\n    }\n  }\n  return out;\n}\n\n/**\n * Computes the number of elements in the `next` range that are new compared to the `prev` range.\n * Handy for calculating how many new items will be rendered when the render window changes so we\n * can restrict the number of new items render at once so that content can appear on the screen\n * faster.\n */\nfunction newRangeCount(\n  prev: {\n    first: number,\n    last: number,\n    ...\n  },\n  next: {\n    first: number,\n    last: number,\n    ...\n  },\n): number {\n  return (\n    next.last -\n    next.first +\n    1 -\n    Math.max(\n      0,\n      1 + Math.min(next.last, prev.last) - Math.max(next.first, prev.first),\n    )\n  );\n}\n\n/**\n * Custom logic for determining which items should be rendered given the current frame and scroll\n * metrics, as well as the previous render state. The algorithm may evolve over time, but generally\n * prioritizes the visible area first, then expands that with overscan regions ahead and behind,\n * biased in the direction of scroll.\n */\nfunction computeWindowedRenderLimits(\n  props: {\n    data: any,\n    getItemCount: (data: any) => number,\n    maxToRenderPerBatch: number,\n    windowSize: number,\n    ...\n  },\n  prev: {\n    first: number,\n    last: number,\n    ...\n  },\n  getFrameMetricsApprox: (\n    index: number,\n  ) => {\n    length: number,\n    offset: number,\n    ...\n  },\n  scrollMetrics: {\n    dt: number,\n    offset: number,\n    velocity: number,\n    visibleLength: number,\n    ...\n  },\n): {\n  first: number,\n  last: number,\n  ...\n} {\n  const {data, getItemCount, maxToRenderPerBatch, windowSize} = props;\n  const itemCount = getItemCount(data);\n  if (itemCount === 0) {\n    return prev;\n  }\n  const {offset, velocity, visibleLength} = scrollMetrics;\n\n  // Start with visible area, then compute maximum overscan region by expanding from there, biased\n  // in the direction of scroll. Total overscan area is capped, which should cap memory consumption\n  // too.\n  const visibleBegin = Math.max(0, offset);\n  const visibleEnd = visibleBegin + visibleLength;\n  const overscanLength = (windowSize - 1) * visibleLength;\n\n  // Considering velocity seems to introduce more churn than it's worth.\n  const leadFactor = 0.5; // Math.max(0, Math.min(1, velocity / 25 + 0.5));\n\n  const fillPreference =\n    velocity > 1 ? 'after' : velocity < -1 ? 'before' : 'none';\n\n  const overscanBegin = Math.max(\n    0,\n    visibleBegin - (1 - leadFactor) * overscanLength,\n  );\n  const overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength);\n\n  const lastItemOffset = getFrameMetricsApprox(itemCount - 1).offset;\n  if (lastItemOffset < overscanBegin) {\n    // Entire list is before our overscan window\n    return {\n      first: Math.max(0, itemCount - 1 - maxToRenderPerBatch),\n      last: itemCount - 1,\n    };\n  }\n\n  // Find the indices that correspond to the items at the render boundaries we're targeting.\n  let [overscanFirst, first, last, overscanLast] = elementsThatOverlapOffsets(\n    [overscanBegin, visibleBegin, visibleEnd, overscanEnd],\n    props.getItemCount(props.data),\n    getFrameMetricsApprox,\n  );\n  overscanFirst = overscanFirst == null ? 0 : overscanFirst;\n  first = first == null ? Math.max(0, overscanFirst) : first;\n  overscanLast = overscanLast == null ? itemCount - 1 : overscanLast;\n  last =\n    last == null\n      ? Math.min(overscanLast, first + maxToRenderPerBatch - 1)\n      : last;\n  const visible = {first, last};\n\n  // We want to limit the number of new cells we're rendering per batch so that we can fill the\n  // content on the screen quickly. If we rendered the entire overscan window at once, the user\n  // could be staring at white space for a long time waiting for a bunch of offscreen content to\n  // render.\n  let newCellCount = newRangeCount(prev, visible);\n\n  while (true) {\n    if (first <= overscanFirst && last >= overscanLast) {\n      // If we fill the entire overscan range, we're done.\n      break;\n    }\n    const maxNewCells = newCellCount >= maxToRenderPerBatch;\n    const firstWillAddMore = first <= prev.first || first > prev.last;\n    const firstShouldIncrement =\n      first > overscanFirst && (!maxNewCells || !firstWillAddMore);\n    const lastWillAddMore = last >= prev.last || last < prev.first;\n    const lastShouldIncrement =\n      last < overscanLast && (!maxNewCells || !lastWillAddMore);\n    if (maxNewCells && !firstShouldIncrement && !lastShouldIncrement) {\n      // We only want to stop if we've hit maxNewCells AND we cannot increment first or last\n      // without rendering new items. This let's us preserve as many already rendered items as\n      // possible, reducing render churn and keeping the rendered overscan range as large as\n      // possible.\n      break;\n    }\n    if (\n      firstShouldIncrement &&\n      !(fillPreference === 'after' && lastShouldIncrement && lastWillAddMore)\n    ) {\n      if (firstWillAddMore) {\n        newCellCount++;\n      }\n      first--;\n    }\n    if (\n      lastShouldIncrement &&\n      !(fillPreference === 'before' && firstShouldIncrement && firstWillAddMore)\n    ) {\n      if (lastWillAddMore) {\n        newCellCount++;\n      }\n      last++;\n    }\n  }\n  if (\n    !(\n      last >= first &&\n      first >= 0 &&\n      last < itemCount &&\n      first >= overscanFirst &&\n      last <= overscanLast &&\n      first <= visible.first &&\n      last >= visible.last\n    )\n  ) {\n    throw new Error(\n      'Bad window calculation ' +\n        JSON.stringify({\n          first,\n          last,\n          itemCount,\n          overscanFirst,\n          overscanLast,\n          visible,\n        }),\n    );\n  }\n  return {first, last};\n}\n\nconst VirtualizeUtils = {\n  computeWindowedRenderLimits,\n  elementsThatOverlapOffsets,\n  newRangeCount,\n};\n\nmodule.exports = VirtualizeUtils;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nconst Image = require('../../Image/Image');\nconst createAnimatedComponent = require('../createAnimatedComponent');\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\nmodule.exports = (createAnimatedComponent(\n  (Image: $FlowFixMe),\n): AnimatedComponentType<\n  React.ElementConfig<typeof Image>,\n  React.ElementRef<typeof Image>,\n>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedImagePropType = require('../DeprecatedPropTypes/DeprecatedImagePropType');\nconst React = require('react');\nconst ReactNative = require('../Renderer/shims/ReactNative'); // eslint-disable-line no-unused-vars\nconst StyleSheet = require('../StyleSheet/StyleSheet');\n\nconst ImageAnalyticsTagContext = require('./ImageAnalyticsTagContext').default;\nconst flattenStyle = require('../StyleSheet/flattenStyle');\nconst resolveAssetSource = require('./resolveAssetSource');\n\nimport type {ImageProps as ImagePropsType} from './ImageProps';\n\nimport type {ImageStyleProp} from '../StyleSheet/StyleSheet';\nimport NativeImageLoaderIOS from './NativeImageLoaderIOS';\n\nimport ImageViewNativeComponent from './ImageViewNativeComponent';\n\nfunction getSize(\n  uri: string,\n  success: (width: number, height: number) => void,\n  failure?: (error: any) => void,\n) {\n  NativeImageLoaderIOS.getSize(uri)\n    .then(([width, height]) => success(width, height))\n    .catch(\n      failure ||\n        function() {\n          console.warn('Failed to get size for image ' + uri);\n        },\n    );\n}\n\nfunction getSizeWithHeaders(\n  uri: string,\n  headers: {[string]: string, ...},\n  success: (width: number, height: number) => void,\n  failure?: (error: any) => void,\n): any {\n  return NativeImageLoaderIOS.getSizeWithHeaders(uri, headers)\n    .then(function(sizes) {\n      success(sizes.width, sizes.height);\n    })\n    .catch(\n      failure ||\n        function() {\n          console.warn('Failed to get size for image: ' + uri);\n        },\n    );\n}\n\nfunction prefetch(url: string): any {\n  return NativeImageLoaderIOS.prefetchImage(url);\n}\n\nasync function queryCache(\n  urls: Array<string>,\n): Promise<{[string]: 'memory' | 'disk' | 'disk/memory', ...}> {\n  return await NativeImageLoaderIOS.queryCache(urls);\n}\n\ntype ImageComponentStatics = $ReadOnly<{|\n  getSize: typeof getSize,\n  getSizeWithHeaders: typeof getSizeWithHeaders,\n  prefetch: typeof prefetch,\n  queryCache: typeof queryCache,\n  resolveAssetSource: typeof resolveAssetSource,\n  propTypes: typeof DeprecatedImagePropType,\n|}>;\n\n/**\n * A React component for displaying different types of images,\n * including network images, static resources, temporary local images, and\n * images from local disk, such as the camera roll.\n *\n * See https://reactnative.dev/docs/image.html\n */\nlet Image = (props: ImagePropsType, forwardedRef) => {\n  const source = resolveAssetSource(props.source) || {\n    uri: undefined,\n    width: undefined,\n    height: undefined,\n  };\n\n  let sources;\n  let style: ImageStyleProp;\n  if (Array.isArray(source)) {\n    // $FlowFixMe flattenStyle is not strong enough\n    style = flattenStyle([styles.base, props.style]) || {};\n    sources = source;\n  } else {\n    const {width, height, uri} = source;\n    // $FlowFixMe flattenStyle is not strong enough\n    style = flattenStyle([{width, height}, styles.base, props.style]) || {};\n    sources = [source];\n\n    if (uri === '') {\n      console.warn('source.uri should not be an empty string');\n    }\n  }\n\n  const resizeMode = props.resizeMode || style.resizeMode || 'cover';\n  const tintColor = style.tintColor;\n\n  if (props.src != null) {\n    console.warn(\n      'The <Image> component requires a `source` property rather than `src`.',\n    );\n  }\n\n  if (props.children != null) {\n    throw new Error(\n      'The <Image> component cannot contain children. If you want to render content on top of the image, consider using the <ImageBackground> component or absolute positioning.',\n    );\n  }\n\n  return (\n    <ImageAnalyticsTagContext.Consumer>\n      {analyticTag => {\n        return (\n          <ImageViewNativeComponent\n            {...props}\n            ref={forwardedRef}\n            style={style}\n            resizeMode={resizeMode}\n            tintColor={tintColor}\n            source={sources}\n            internal_analyticTag={analyticTag}\n          />\n        );\n      }}\n    </ImageAnalyticsTagContext.Consumer>\n  );\n};\n\nImage = React.forwardRef<\n  ImagePropsType,\n  React.ElementRef<typeof ImageViewNativeComponent>,\n>(Image);\nImage.displayName = 'Image';\n\n/**\n * Retrieve the width and height (in pixels) of an image prior to displaying it.\n *\n * See https://reactnative.dev/docs/image.html#getsize\n */\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nImage.getSize = getSize;\n\n/**\n * Retrieve the width and height (in pixels) of an image prior to displaying it\n * with the ability to provide the headers for the request.\n *\n * See https://reactnative.dev/docs/image.html#getsizewithheaders\n */\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nImage.getSizeWithHeaders = getSizeWithHeaders;\n\n/**\n * Prefetches a remote image for later use by downloading it to the disk\n * cache.\n *\n * See https://reactnative.dev/docs/image.html#prefetch\n */\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nImage.prefetch = prefetch;\n\n/**\n * Performs cache interrogation.\n *\n *  See https://reactnative.dev/docs/image.html#querycache\n */\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nImage.queryCache = queryCache;\n\n/**\n * Resolves an asset reference into an object.\n *\n * See https://reactnative.dev/docs/image.html#resolveassetsource\n */\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nImage.resolveAssetSource = resolveAssetSource;\n\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nImage.propTypes = DeprecatedImagePropType;\n\nconst styles = StyleSheet.create({\n  base: {\n    overflow: 'hidden',\n  },\n});\n\nmodule.exports = ((Image: any): React.AbstractComponent<\n  ImagePropsType,\n  React.ElementRef<typeof ImageViewNativeComponent>,\n> &\n  ImageComponentStatics);\n","module.exports = require(\"regenerator-runtime\");\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  // Return [width, height] of image uri\n  +getSize: (uri: string) => Promise<$ReadOnlyArray<number>>;\n  +getSizeWithHeaders: (\n    uri: string,\n    headers: Object,\n  ) => Promise<{\n    width: number,\n    height: number,\n    ...\n  }>;\n  +prefetchImage: (uri: string) => Promise<boolean>;\n  +queryCache: (uris: Array<string>) => Promise<Object>;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('ImageLoader'): Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst requireNativeComponent = require('../ReactNative/requireNativeComponent');\n\nimport type {DangerouslyImpreciseStyle} from '../StyleSheet/StyleSheet';\nimport type {ResolvedAssetSource} from './AssetSourceResolver';\nimport type {HostComponent} from '../Renderer/shims/ReactNativeTypes';\nimport type {ImageProps} from './ImageProps';\nimport type {ViewProps} from '../Components/View/ViewPropTypes';\nimport type {ImageStyleProp} from '../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\n\nimport ImageViewViewConfig from './ImageViewViewConfig';\nconst ReactNativeViewConfigRegistry = require('../Renderer/shims/ReactNativeViewConfigRegistry');\n\ntype NativeProps = $ReadOnly<{|\n  ...ImageProps,\n  ...ViewProps,\n\n  style?: ImageStyleProp | DangerouslyImpreciseStyle,\n\n  // iOS native props\n  tintColor?: ColorValue,\n\n  // Android native props\n  shouldNotifyLoadEvents?: boolean,\n  src?: ?ResolvedAssetSource | $ReadOnlyArray<{uri: string, ...}>,\n  headers?: ?string,\n  defaultSrc?: ?string,\n  loadingIndicatorSrc?: ?string,\n|}>;\n\nlet ImageViewNativeComponent;\nif (global.RN$Bridgeless) {\n  ReactNativeViewConfigRegistry.register('RCTImageView', () => {\n    return ImageViewViewConfig;\n  });\n  ImageViewNativeComponent = 'RCTImageView';\n} else {\n  ImageViewNativeComponent = requireNativeComponent<NativeProps>(\n    'RCTImageView',\n  );\n}\n\n// flowlint-next-line unclear-type:off\nexport default ((ImageViewNativeComponent: any): HostComponent<NativeProps>);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport ReactNativeViewViewConfig from '../Components/View/ReactNativeViewViewConfig';\nimport type {ReactNativeBaseComponentViewConfig} from '../Renderer/shims/ReactNativeTypes';\n\nconst ImageViewViewConfig = {\n  uiViewClassName: 'RCTImageView',\n  bubblingEventTypes: {},\n  directEventTypes: {\n    topLoadStart: {\n      registrationName: 'onLoadStart',\n    },\n    topProgress: {\n      registrationName: 'onProgress',\n    },\n    topError: {\n      registrationName: 'onError',\n    },\n    topPartialLoad: {\n      registrationName: 'onPartialLoad',\n    },\n    topLoad: {\n      registrationName: 'onLoad',\n    },\n    topLoadEnd: {\n      registrationName: 'onLoadEnd',\n    },\n  },\n  validAttributes: {\n    ...ReactNativeViewViewConfig.validAttributes,\n    blurRadius: true,\n    // flowlint-next-line unclear-type:off\n    capInsets: {diff: (require('../Utilities/differ/insetsDiffer'): any)},\n    defaultSource: {\n      process: require('./resolveAssetSource'),\n    },\n    defaultSrc: true,\n    fadeDuration: true,\n    headers: true,\n    loadingIndicatorSrc: true,\n    onError: true,\n    onLoad: true,\n    onLoadEnd: true,\n    onLoadStart: true,\n    onPartialLoad: true,\n    onProgress: true,\n    overlayColor: {process: require('../StyleSheet/processColor')},\n    progressiveRenderingEnabled: true,\n    resizeMethod: true,\n    resizeMode: true,\n    shouldNotifyLoadEvents: true,\n    source: true,\n    src: true,\n    tintColor: {process: require('../StyleSheet/processColor')},\n  },\n};\n\nmodule.exports = (ImageViewViewConfig: ReactNativeBaseComponentViewConfig<>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');\nconst DeprecatedImageSourcePropType = require('./DeprecatedImageSourcePropType');\nconst DeprecatedImageStylePropTypes = require('./DeprecatedImageStylePropTypes');\nconst DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');\nconst PropTypes = require('prop-types');\n\nmodule.exports = {\n  style: (DeprecatedStyleSheetPropType(\n    DeprecatedImageStylePropTypes,\n  ): ReactPropsCheckType),\n  source: DeprecatedImageSourcePropType,\n  defaultSource: (PropTypes.oneOfType([\n    PropTypes.shape({\n      uri: PropTypes.string,\n      width: PropTypes.number,\n      height: PropTypes.number,\n      scale: PropTypes.number,\n    }),\n    PropTypes.number,\n  ]): React$PropType$Primitive<\n    | {\n        height?: number,\n        scale?: number,\n        uri?: string,\n        width?: number,\n        ...\n      }\n    | number,\n  >),\n\n  accessible: PropTypes.bool,\n\n  accessibilityLabel: PropTypes.node,\n\n  blurRadius: PropTypes.number,\n\n  capInsets: DeprecatedEdgeInsetsPropType,\n\n  resizeMethod: (PropTypes.oneOf([\n    'auto',\n    'resize',\n    'scale',\n  ]): React$PropType$Primitive<'auto' | 'resize' | 'scale'>),\n\n  resizeMode: (PropTypes.oneOf([\n    'cover',\n    'contain',\n    'stretch',\n    'repeat',\n    'center',\n  ]): React$PropType$Primitive<\n    'cover' | 'contain' | 'stretch' | 'repeat' | 'center',\n  >),\n\n  testID: PropTypes.string,\n\n  onLayout: PropTypes.func,\n\n  onLoadStart: PropTypes.func,\n\n  onProgress: PropTypes.func,\n\n  onError: PropTypes.func,\n\n  onPartialLoad: PropTypes.func,\n\n  onLoad: PropTypes.func,\n\n  onLoadEnd: PropTypes.func,\n};\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 * @no-flow\n * @format\n */\n\n'use strict';\n\nconst PropTypes = require('prop-types');\n\nconst ImageURISourcePropType = PropTypes.shape({\n  uri: PropTypes.string,\n  bundle: PropTypes.string,\n  method: PropTypes.string,\n  headers: PropTypes.objectOf(PropTypes.string),\n  body: PropTypes.string,\n  cache: PropTypes.oneOf([\n    'default',\n    'reload',\n    'force-cache',\n    'only-if-cached',\n  ]),\n  width: PropTypes.number,\n  height: PropTypes.number,\n  scale: PropTypes.number,\n});\n\nconst ImageSourcePropType = PropTypes.oneOfType([\n  ImageURISourcePropType,\n  // Opaque type returned by require('./image.jpg')\n  PropTypes.number,\n  // Multiple sources\n  PropTypes.arrayOf(ImageURISourcePropType),\n]);\n\nmodule.exports = ImageSourcePropType;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\ntype ContextType = ?string;\n\nconst Context: React.Context<ContextType> = React.createContext<ContextType>(\n  null,\n);\n\nexport default Context;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nconst ScrollView = require('../../Components/ScrollView/ScrollView');\nconst createAnimatedComponent = require('../createAnimatedComponent');\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nconst ScrollViewWithEventThrottle = React.forwardRef((props, ref) => (\n  <ScrollView scrollEventThrottle={0.0001} {...props} ref={ref} />\n));\n\nmodule.exports = (createAnimatedComponent(\n  ScrollViewWithEventThrottle,\n): AnimatedComponentType<\n  React.ElementConfig<typeof ScrollView>,\n  React.ElementRef<typeof ScrollView>,\n>);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nconst SectionList = require('../../Lists/SectionList');\nconst createAnimatedComponent = require('../createAnimatedComponent');\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\n/**\n * @see https://github.com/facebook/react-native/commit/b8c8562\n */\nconst SectionListWithEventThrottle = React.forwardRef((props, ref) => (\n  <SectionList scrollEventThrottle={0.0001} {...props} ref={ref} />\n));\n\nmodule.exports = (createAnimatedComponent(\n  SectionListWithEventThrottle,\n): AnimatedComponentType<\n  React.ElementConfig<typeof SectionList>,\n  React.ElementRef<typeof SectionList>,\n>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Platform = require('../Utilities/Platform');\nconst React = require('react');\nconst VirtualizedSectionList = require('./VirtualizedSectionList');\n\nimport type {ScrollResponderType} from '../Components/ScrollView/ScrollView';\nimport type {\n  SectionBase as _SectionBase,\n  Props as VirtualizedSectionListProps,\n  ScrollToLocationParamsType,\n} from './VirtualizedSectionList';\n\ntype Item = any;\n\nexport type SectionBase<SectionItemT> = _SectionBase<SectionItemT>;\n\ntype RequiredProps<SectionT: SectionBase<any>> = {|\n  /**\n   * The actual data to render, akin to the `data` prop in [`<FlatList>`](https://reactnative.dev/docs/flatlist.html).\n   *\n   * General shape:\n   *\n   *     sections: $ReadOnlyArray<{\n   *       data: $ReadOnlyArray<SectionItem>,\n   *       renderItem?: ({item: SectionItem, ...}) => ?React.Element<*>,\n   *       ItemSeparatorComponent?: ?ReactClass<{highlighted: boolean, ...}>,\n   *     }>\n   */\n  sections: $ReadOnlyArray<SectionT>,\n|};\n\ntype OptionalProps<SectionT: SectionBase<any>> = {|\n  /**\n   * Default renderer for every item in every section. Can be over-ridden on a per-section basis.\n   */\n  renderItem?: (info: {\n    item: Item,\n    index: number,\n    section: SectionT,\n    separators: {\n      highlight: () => void,\n      unhighlight: () => void,\n      updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n      ...\n    },\n    ...\n  }) => null | React.Element<any>,\n  /**\n   * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n   * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n   * `data` prop, stick it here and treat it immutably.\n   */\n  extraData?: any,\n  /**\n   * How many items to render in the initial batch. This should be enough to fill the screen but not\n   * much more. Note these items will never be unmounted as part of the windowed rendering in order\n   * to improve perceived performance of scroll-to-top actions.\n   */\n  initialNumToRender: number,\n  /**\n   * Reverses the direction of scroll. Uses scale transforms of -1.\n   */\n  inverted?: ?boolean,\n  /**\n   * Used to extract a unique key for a given item at the specified index. Key is used for caching\n   * and as the react key to track item re-ordering. The default extractor checks item.key, then\n   * falls back to using the index, like react does. Note that this sets keys for each item, but\n   * each overall section still needs its own key.\n   */\n  keyExtractor: (item: Item, index: number) => string,\n  /**\n   * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered\n   * content.\n   */\n  onEndReached?: ?(info: {distanceFromEnd: number, ...}) => void,\n  /**\n   * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n   *\n   * This may improve scroll performance for large lists.\n   */\n  removeClippedSubviews?: boolean,\n|};\n\nexport type Props<SectionT> = {|\n  ...$Diff<\n    VirtualizedSectionListProps<SectionT>,\n    {\n      getItem: $PropertyType<VirtualizedSectionListProps<SectionT>, 'getItem'>,\n      getItemCount: $PropertyType<\n        VirtualizedSectionListProps<SectionT>,\n        'getItemCount',\n      >,\n      renderItem: $PropertyType<\n        VirtualizedSectionListProps<SectionT>,\n        'renderItem',\n      >,\n      ...\n    },\n  >,\n  ...RequiredProps<SectionT>,\n  ...OptionalProps<SectionT>,\n|};\n\nconst defaultProps = {\n  ...VirtualizedSectionList.defaultProps,\n  stickySectionHeadersEnabled: Platform.OS === 'ios',\n};\n\ntype DefaultProps = typeof defaultProps;\n\n/**\n * A performant interface for rendering sectioned lists, supporting the most handy features:\n *\n *  - Fully cross-platform.\n *  - Configurable viewability callbacks.\n *  - List header support.\n *  - List footer support.\n *  - Item separator support.\n *  - Section header support.\n *  - Section separator support.\n *  - Heterogeneous data and item rendering support.\n *  - Pull to Refresh.\n *  - Scroll loading.\n *\n * If you don't need section support and want a simpler interface, use\n * [`<FlatList>`](https://reactnative.dev/docs/flatlist.html).\n *\n * Simple Examples:\n *\n *     <SectionList\n *       renderItem={({item}) => <ListItem title={item} />}\n *       renderSectionHeader={({section}) => <Header title={section.title} />}\n *       sections={[ // homogeneous rendering between sections\n *         {data: [...], title: ...},\n *         {data: [...], title: ...},\n *         {data: [...], title: ...},\n *       ]}\n *     />\n *\n *     <SectionList\n *       sections={[ // heterogeneous rendering between sections\n *         {data: [...], renderItem: ...},\n *         {data: [...], renderItem: ...},\n *         {data: [...], renderItem: ...},\n *       ]}\n *     />\n *\n * This is a convenience wrapper around [`<VirtualizedList>`](docs/virtualizedlist.html),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n *   your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n *   equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n *   (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n *   changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n *   offscreen. This means it's possible to scroll faster than the fill rate and momentarily see\n *   blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n *   and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n *   Alternatively, you can provide a custom `keyExtractor` prop.\n *\n */\nclass SectionList<SectionT: SectionBase<any>> extends React.PureComponent<\n  Props<SectionT>,\n  void,\n> {\n  props: Props<SectionT>;\n  static defaultProps: DefaultProps = defaultProps;\n\n  /**\n   * Scrolls to the item at the specified `sectionIndex` and `itemIndex` (within the section)\n   * positioned in the viewable area such that `viewPosition` 0 places it at the top (and may be\n   * covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle. `viewOffset` is a\n   * fixed number of pixels to offset the final target position, e.g. to compensate for sticky\n   * headers.\n   *\n   * Note: cannot scroll to locations outside the render window without specifying the\n   * `getItemLayout` prop.\n   */\n  scrollToLocation(params: ScrollToLocationParamsType) {\n    if (this._wrapperListRef != null) {\n      this._wrapperListRef.scrollToLocation(params);\n    }\n  }\n\n  /**\n   * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n   * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n   * taps on items or by navigation actions.\n   */\n  recordInteraction() {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    listRef && listRef.recordInteraction();\n  }\n\n  /**\n   * Displays the scroll indicators momentarily.\n   *\n   * @platform ios\n   */\n  flashScrollIndicators() {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    listRef && listRef.flashScrollIndicators();\n  }\n\n  /**\n   * Provides a handle to the underlying scroll responder.\n   */\n  getScrollResponder(): ?ScrollResponderType {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    if (listRef) {\n      return listRef.getScrollResponder();\n    }\n  }\n\n  getScrollableNode(): any {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    if (listRef) {\n      return listRef.getScrollableNode();\n    }\n  }\n\n  setNativeProps(props: Object) {\n    const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n    if (listRef) {\n      listRef.setNativeProps(props);\n    }\n  }\n\n  render(): React.Node {\n    return (\n      <VirtualizedSectionList\n        {...this.props}\n        ref={this._captureRef}\n        getItemCount={items => items.length}\n        getItem={(items, index) => items[index]}\n      />\n    );\n  }\n\n  _wrapperListRef: ?React.ElementRef<typeof VirtualizedSectionList>;\n  _captureRef = ref => {\n    /* $FlowFixMe(>=0.99.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.99 was deployed. To see the error, delete this\n     * comment and run Flow. */\n    this._wrapperListRef = ref;\n  };\n}\n\nmodule.exports = SectionList;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst React = require('react');\nconst View = require('../Components/View/View');\nconst VirtualizedList = require('./VirtualizedList');\n\nconst invariant = require('invariant');\n\nimport type {ViewToken} from './ViewabilityHelper';\n\ntype Item = any;\n\nexport type SectionBase<SectionItemT> = {\n  /**\n   * The data for rendering items in this section.\n   */\n  data: $ReadOnlyArray<SectionItemT>,\n  /**\n   * Optional key to keep track of section re-ordering. If you don't plan on re-ordering sections,\n   * the array index will be used by default.\n   */\n  key?: string,\n  // Optional props will override list-wide props just for this section.\n  renderItem?: ?(info: {\n    item: SectionItemT,\n    index: number,\n    section: SectionBase<SectionItemT>,\n    separators: {\n      highlight: () => void,\n      unhighlight: () => void,\n      updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n      ...\n    },\n    ...\n  }) => null | React.Element<any>,\n  ItemSeparatorComponent?: ?React.ComponentType<any>,\n  keyExtractor?: (item: SectionItemT, index?: ?number) => string,\n  ...\n};\n\ntype RequiredProps<SectionT: SectionBase<any>> = {|\n  sections: $ReadOnlyArray<SectionT>,\n|};\n\ntype OptionalProps<SectionT: SectionBase<any>> = {|\n  /**\n   * Default renderer for every item in every section.\n   */\n  renderItem?: (info: {\n    item: Item,\n    index: number,\n    section: SectionT,\n    separators: {\n      highlight: () => void,\n      unhighlight: () => void,\n      updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n      ...\n    },\n    ...\n  }) => null | React.Element<any>,\n  /**\n   * Rendered at the top of each section. These stick to the top of the `ScrollView` by default on\n   * iOS. See `stickySectionHeadersEnabled`.\n   */\n  renderSectionHeader?: ?(info: {\n    section: SectionT,\n    ...\n  }) => null | React.Element<any>,\n  /**\n   * Rendered at the bottom of each section.\n   */\n  renderSectionFooter?: ?(info: {\n    section: SectionT,\n    ...\n  }) => null | React.Element<any>,\n  /**\n   * Rendered at the top and bottom of each section (note this is different from\n   * `ItemSeparatorComponent` which is only rendered between items). These are intended to separate\n   * sections from the headers above and below and typically have the same highlight response as\n   * `ItemSeparatorComponent`. Also receives `highlighted`, `[leading/trailing][Item/Separator]`,\n   * and any custom props from `separators.updateProps`.\n   */\n  SectionSeparatorComponent?: ?React.ComponentType<any>,\n  /**\n   * Makes section headers stick to the top of the screen until the next one pushes it off. Only\n   * enabled by default on iOS because that is the platform standard there.\n   */\n  stickySectionHeadersEnabled?: boolean,\n  onEndReached?: ?({distanceFromEnd: number, ...}) => void,\n|};\n\ntype VirtualizedListProps = React.ElementProps<typeof VirtualizedList>;\n\nexport type Props<SectionT> = {|\n  ...RequiredProps<SectionT>,\n  ...OptionalProps<SectionT>,\n  ...$Diff<\n    VirtualizedListProps,\n    {renderItem: $PropertyType<VirtualizedListProps, 'renderItem'>, ...},\n  >,\n|};\nexport type ScrollToLocationParamsType = {|\n  animated?: ?boolean,\n  itemIndex: number,\n  sectionIndex: number,\n  viewOffset?: number,\n  viewPosition?: number,\n|};\n\ntype DefaultProps = {|\n  ...typeof VirtualizedList.defaultProps,\n  data: $ReadOnlyArray<Item>,\n|};\n\ntype State = {childProps: VirtualizedListProps, ...};\n\n/**\n * Right now this just flattens everything into one list and uses VirtualizedList under the\n * hood. The only operation that might not scale well is concatting the data arrays of all the\n * sections when new props are received, which should be plenty fast for up to ~10,000 items.\n */\nclass VirtualizedSectionList<\n  SectionT: SectionBase<any>,\n> extends React.PureComponent<Props<SectionT>, State> {\n  static defaultProps: DefaultProps = {\n    ...VirtualizedList.defaultProps,\n    data: [],\n  };\n\n  scrollToLocation(params: ScrollToLocationParamsType) {\n    let index = params.itemIndex;\n    for (let i = 0; i < params.sectionIndex; i++) {\n      index += this.props.getItemCount(this.props.sections[i].data) + 2;\n    }\n    let viewOffset = params.viewOffset || 0;\n    if (params.itemIndex > 0 && this.props.stickySectionHeadersEnabled) {\n      // $FlowFixMe Cannot access private property\n      const frame = this._listRef._getFrameMetricsApprox(\n        index - params.itemIndex,\n      );\n      viewOffset += frame.length;\n    }\n    const toIndexParams = {\n      ...params,\n      viewOffset,\n      index,\n    };\n    this._listRef.scrollToIndex(toIndexParams);\n  }\n\n  getListRef(): VirtualizedList {\n    return this._listRef;\n  }\n\n  constructor(props: Props<SectionT>, context: Object) {\n    super(props, context);\n    this.state = this._computeState(props);\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps: Props<SectionT>) {\n    this.setState(this._computeState(nextProps));\n  }\n\n  _computeState(props: Props<SectionT>): State {\n    const offset = props.ListHeaderComponent ? 1 : 0;\n    const stickyHeaderIndices = [];\n    const itemCount = props.sections\n      ? props.sections.reduce((v, section) => {\n          stickyHeaderIndices.push(v + offset);\n          return v + props.getItemCount(section.data) + 2; // Add two for the section header and footer.\n        }, 0)\n      : 0;\n\n    const {\n      SectionSeparatorComponent,\n      renderItem,\n      renderSectionFooter,\n      renderSectionHeader,\n      sections: _sections,\n      stickySectionHeadersEnabled,\n      ...restProps\n    } = props;\n\n    return {\n      childProps: {\n        ...restProps,\n        renderItem: this._renderItem,\n        ItemSeparatorComponent: undefined, // Rendered with renderItem\n        data: props.sections,\n        getItemCount: () => itemCount,\n        // $FlowFixMe\n        getItem: (sections, index) => this._getItem(props, sections, index),\n        keyExtractor: this._keyExtractor,\n        onViewableItemsChanged: props.onViewableItemsChanged\n          ? this._onViewableItemsChanged\n          : undefined,\n        stickyHeaderIndices: props.stickySectionHeadersEnabled\n          ? stickyHeaderIndices\n          : undefined,\n      },\n    };\n  }\n\n  render(): React.Node {\n    return (\n      <VirtualizedList {...this.state.childProps} ref={this._captureRef} />\n    );\n  }\n\n  _getItem = (\n    props: Props<SectionT>,\n    sections: ?$ReadOnlyArray<Item>,\n    index: number,\n  ): ?Item => {\n    if (!sections) {\n      return null;\n    }\n    let itemIdx = index - 1;\n    for (let i = 0; i < sections.length; i++) {\n      const section = sections[i];\n      const sectionData = section.data;\n      const itemCount = props.getItemCount(sectionData);\n      if (itemIdx === -1 || itemIdx === itemCount) {\n        // We intend for there to be overflow by one on both ends of the list.\n        // This will be for headers and footers. When returning a header or footer\n        // item the section itself is the item.\n        return section;\n      } else if (itemIdx < itemCount) {\n        // If we are in the bounds of the list's data then return the item.\n        return props.getItem(sectionData, itemIdx);\n      } else {\n        itemIdx -= itemCount + 2; // Add two for the header and footer\n      }\n    }\n    return null;\n  };\n\n  _keyExtractor = (item: Item, index: number) => {\n    const info = this._subExtractor(index);\n    return (info && info.key) || String(index);\n  };\n\n  _subExtractor(\n    index: number,\n  ): ?{\n    section: SectionT,\n    // Key of the section or combined key for section + item\n    key: string,\n    // Relative index within the section\n    index: ?number,\n    // True if this is the section header\n    header?: ?boolean,\n    leadingItem?: ?Item,\n    leadingSection?: ?SectionT,\n    trailingItem?: ?Item,\n    trailingSection?: ?SectionT,\n    ...\n  } {\n    let itemIndex = index;\n    const {getItem, getItemCount, keyExtractor, sections} = this.props;\n    for (let i = 0; i < sections.length; i++) {\n      const section = sections[i];\n      const sectionData = section.data;\n      const key = section.key || String(i);\n      itemIndex -= 1; // The section adds an item for the header\n      if (itemIndex >= getItemCount(sectionData) + 1) {\n        itemIndex -= getItemCount(sectionData) + 1; // The section adds an item for the footer.\n      } else if (itemIndex === -1) {\n        return {\n          section,\n          key: key + ':header',\n          index: null,\n          header: true,\n          trailingSection: sections[i + 1],\n        };\n      } else if (itemIndex === getItemCount(sectionData)) {\n        return {\n          section,\n          key: key + ':footer',\n          index: null,\n          header: false,\n          trailingSection: sections[i + 1],\n        };\n      } else {\n        const extractor = section.keyExtractor || keyExtractor;\n        return {\n          section,\n          key:\n            key + ':' + extractor(getItem(sectionData, itemIndex), itemIndex),\n          index: itemIndex,\n          leadingItem: getItem(sectionData, itemIndex - 1),\n          leadingSection: sections[i - 1],\n          trailingItem: getItem(sectionData, itemIndex + 1),\n          trailingSection: sections[i + 1],\n        };\n      }\n    }\n  }\n\n  _convertViewable = (viewable: ViewToken): ?ViewToken => {\n    invariant(viewable.index != null, 'Received a broken ViewToken');\n    const info = this._subExtractor(viewable.index);\n    if (!info) {\n      return null;\n    }\n    const keyExtractor = info.section.keyExtractor || this.props.keyExtractor;\n    return {\n      ...viewable,\n      index: info.index,\n      /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.63 was deployed. To see the error delete this\n       * comment and run Flow. */\n      key: keyExtractor(viewable.item, info.index),\n      section: info.section,\n    };\n  };\n\n  _onViewableItemsChanged = ({\n    viewableItems,\n    changed,\n  }: {\n    viewableItems: Array<ViewToken>,\n    changed: Array<ViewToken>,\n    ...\n  }) => {\n    const onViewableItemsChanged = this.props.onViewableItemsChanged;\n    if (onViewableItemsChanged != null) {\n      onViewableItemsChanged({\n        viewableItems: viewableItems\n          .map(this._convertViewable, this)\n          .filter(Boolean),\n        changed: changed.map(this._convertViewable, this).filter(Boolean),\n      });\n    }\n  };\n\n  _renderItem = ({item, index}: {item: Item, index: number, ...}) => {\n    const info = this._subExtractor(index);\n    if (!info) {\n      return null;\n    }\n    const infoIndex = info.index;\n    if (infoIndex == null) {\n      const {section} = info;\n      if (info.header === true) {\n        const {renderSectionHeader} = this.props;\n        return renderSectionHeader ? renderSectionHeader({section}) : null;\n      } else {\n        const {renderSectionFooter} = this.props;\n        return renderSectionFooter ? renderSectionFooter({section}) : null;\n      }\n    } else {\n      const renderItem = info.section.renderItem || this.props.renderItem;\n      const SeparatorComponent = this._getSeparatorComponent(index, info);\n      invariant(renderItem, 'no renderItem!');\n      return (\n        <ItemWithSeparator\n          SeparatorComponent={SeparatorComponent}\n          LeadingSeparatorComponent={\n            infoIndex === 0 ? this.props.SectionSeparatorComponent : undefined\n          }\n          cellKey={info.key}\n          index={infoIndex}\n          item={item}\n          leadingItem={info.leadingItem}\n          leadingSection={info.leadingSection}\n          onUpdateSeparator={this._onUpdateSeparator}\n          prevCellKey={(this._subExtractor(index - 1) || {}).key}\n          ref={ref => {\n            this._cellRefs[info.key] = ref;\n          }}\n          renderItem={renderItem}\n          section={info.section}\n          trailingItem={info.trailingItem}\n          trailingSection={info.trailingSection}\n          inverted={!!this.props.inverted}\n        />\n      );\n    }\n  };\n\n  _onUpdateSeparator = (key: string, newProps: Object) => {\n    const ref = this._cellRefs[key];\n    ref && ref.updateSeparatorProps(newProps);\n  };\n\n  _getSeparatorComponent(\n    index: number,\n    info?: ?Object,\n  ): ?React.ComponentType<any> {\n    info = info || this._subExtractor(index);\n    if (!info) {\n      return null;\n    }\n    const ItemSeparatorComponent =\n      info.section.ItemSeparatorComponent || this.props.ItemSeparatorComponent;\n    const {SectionSeparatorComponent} = this.props;\n    const isLastItemInList = index === this.state.childProps.getItemCount() - 1;\n    const isLastItemInSection =\n      info.index === this.props.getItemCount(info.section.data) - 1;\n    if (SectionSeparatorComponent && isLastItemInSection) {\n      return SectionSeparatorComponent;\n    }\n    if (ItemSeparatorComponent && !isLastItemInSection && !isLastItemInList) {\n      return ItemSeparatorComponent;\n    }\n    return null;\n  }\n\n  _cellRefs = {};\n  _listRef: VirtualizedList;\n  _captureRef = ref => {\n    /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n     * suppresses an error when upgrading Flow's support for React. To see the\n     * error delete this comment and run Flow. */\n    this._listRef = ref;\n  };\n}\n\ntype ItemWithSeparatorCommonProps = $ReadOnly<{|\n  leadingItem: ?Item,\n  leadingSection: ?Object,\n  section: Object,\n  trailingItem: ?Item,\n  trailingSection: ?Object,\n|}>;\n\ntype ItemWithSeparatorProps = $ReadOnly<{|\n  ...ItemWithSeparatorCommonProps,\n  LeadingSeparatorComponent: ?React.ComponentType<any>,\n  SeparatorComponent: ?React.ComponentType<any>,\n  cellKey: string,\n  index: number,\n  item: Item,\n  onUpdateSeparator: (cellKey: string, newProps: Object) => void,\n  prevCellKey?: ?string,\n  renderItem: Function,\n  inverted: boolean,\n|}>;\n\ntype ItemWithSeparatorState = {\n  separatorProps: $ReadOnly<{|\n    highlighted: false,\n    ...ItemWithSeparatorCommonProps,\n  |}>,\n  leadingSeparatorProps: $ReadOnly<{|\n    highlighted: false,\n    ...ItemWithSeparatorCommonProps,\n  |}>,\n  ...\n};\n\nclass ItemWithSeparator extends React.Component<\n  ItemWithSeparatorProps,\n  ItemWithSeparatorState,\n> {\n  state = {\n    separatorProps: {\n      highlighted: false,\n      leadingItem: this.props.item,\n      leadingSection: this.props.leadingSection,\n      section: this.props.section,\n      trailingItem: this.props.trailingItem,\n      trailingSection: this.props.trailingSection,\n    },\n    leadingSeparatorProps: {\n      highlighted: false,\n      leadingItem: this.props.leadingItem,\n      leadingSection: this.props.leadingSection,\n      section: this.props.section,\n      trailingItem: this.props.item,\n      trailingSection: this.props.trailingSection,\n    },\n  };\n\n  _separators = {\n    highlight: () => {\n      ['leading', 'trailing'].forEach(s =>\n        this._separators.updateProps(s, {highlighted: true}),\n      );\n    },\n    unhighlight: () => {\n      ['leading', 'trailing'].forEach(s =>\n        this._separators.updateProps(s, {highlighted: false}),\n      );\n    },\n    updateProps: (select: 'leading' | 'trailing', newProps: Object) => {\n      const {LeadingSeparatorComponent, cellKey, prevCellKey} = this.props;\n      if (select === 'leading' && LeadingSeparatorComponent != null) {\n        this.setState(state => ({\n          leadingSeparatorProps: {...state.leadingSeparatorProps, ...newProps},\n        }));\n      } else {\n        this.props.onUpdateSeparator(\n          (select === 'leading' && prevCellKey) || cellKey,\n          newProps,\n        );\n      }\n    },\n  };\n\n  static getDerivedStateFromProps(\n    props: ItemWithSeparatorProps,\n    prevState: ItemWithSeparatorState,\n  ): ?ItemWithSeparatorState {\n    return {\n      separatorProps: {\n        ...prevState.separatorProps,\n        leadingItem: props.item,\n        leadingSection: props.leadingSection,\n        section: props.section,\n        trailingItem: props.trailingItem,\n        trailingSection: props.trailingSection,\n      },\n      leadingSeparatorProps: {\n        ...prevState.leadingSeparatorProps,\n        leadingItem: props.leadingItem,\n        leadingSection: props.leadingSection,\n        section: props.section,\n        trailingItem: props.item,\n        trailingSection: props.trailingSection,\n      },\n    };\n  }\n\n  updateSeparatorProps(newProps: Object) {\n    this.setState(state => ({\n      separatorProps: {...state.separatorProps, ...newProps},\n    }));\n  }\n\n  render() {\n    const {\n      LeadingSeparatorComponent,\n      SeparatorComponent,\n      item,\n      index,\n      section,\n      inverted,\n    } = this.props;\n    const element = this.props.renderItem({\n      item,\n      index,\n      section,\n      separators: this._separators,\n    });\n    const leadingSeparator = LeadingSeparatorComponent && (\n      <LeadingSeparatorComponent {...this.state.leadingSeparatorProps} />\n    );\n    const separator = SeparatorComponent && (\n      <SeparatorComponent {...this.state.separatorProps} />\n    );\n    return leadingSeparator || separator ? (\n      /* $FlowFixMe(>=0.89.0 site=react_native_fb) This comment suppresses an\n       * error found when Flow v0.89 was deployed. To see the error, delete\n       * this comment and run Flow. */\n      <View>\n        {!inverted ? leadingSeparator : separator}\n        {element}\n        {!inverted ? separator : leadingSeparator}\n      </View>\n    ) : (\n      element\n    );\n  }\n}\n\nmodule.exports = VirtualizedSectionList;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nconst Text = require('../../Text/Text');\nconst createAnimatedComponent = require('../createAnimatedComponent');\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\nmodule.exports = (createAnimatedComponent(\n  (Text: $FlowFixMe),\n): AnimatedComponentType<\n  React.ElementConfig<typeof Text>,\n  React.ElementRef<typeof Text>,\n>);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nconst View = require('../../Components/View/View');\nconst createAnimatedComponent = require('../createAnimatedComponent');\n\nimport type {AnimatedComponentType} from '../createAnimatedComponent';\n\nmodule.exports = (createAnimatedComponent(View): AnimatedComponentType<\n  React.ElementConfig<typeof View>,\n  React.ElementRef<typeof View>,\n>);\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 * @format\n * @flow strict-local\n */\n\n// This is a controlled component version of RCTDatePickerIOS.\n\n'use strict';\n\nimport RCTDatePickerNativeComponent, {\n  Commands as DatePickerCommands,\n} from './RCTDatePickerNativeComponent';\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst View = require('../View/View');\n\nconst invariant = require('invariant');\n\nimport type {SyntheticEvent} from '../../Types/CoreEventTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype Event = SyntheticEvent<\n  $ReadOnly<{|\n    timestamp: number,\n  |}>,\n>;\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * The currently selected date.\n   */\n  date?: ?Date,\n\n  /**\n   * Provides an initial value that will change when the user starts selecting\n   * a date. It is useful for simple use-cases where you do not want to deal\n   * with listening to events and updating the date prop to keep the\n   * controlled state in sync. The controlled state has known bugs which\n   * causes it to go out of sync with native. The initialDate prop is intended\n   * to allow you to have native be source of truth.\n   */\n  initialDate?: ?Date,\n\n  /**\n   * The date picker locale.\n   */\n  locale?: ?string,\n\n  /**\n   * Maximum date.\n   *\n   * Restricts the range of possible date/time values.\n   */\n  maximumDate?: ?Date,\n\n  /**\n   * Minimum date.\n   *\n   * Restricts the range of possible date/time values.\n   */\n  minimumDate?: ?Date,\n\n  /**\n   * The interval at which minutes can be selected.\n   */\n  minuteInterval?: ?(1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 15 | 20 | 30),\n\n  /**\n   * The date picker mode.\n   */\n  mode?: ?('date' | 'time' | 'datetime'),\n\n  /**\n   * Date change handler.\n   *\n   * This is called when the user changes the date or time in the UI.\n   * The first and only argument is an Event. For getting the date the picker\n   * was changed to, use onDateChange instead.\n   */\n  onChange?: ?(event: Event) => void,\n\n  /**\n   * Date change handler.\n   *\n   * This is called when the user changes the date or time in the UI.\n   * The first and only argument is a Date object representing the new\n   * date and time.\n   */\n  onDateChange: (date: Date) => void,\n\n  /**\n   * Timezone offset in minutes.\n   *\n   * By default, the date picker will use the device's timezone. With this\n   * parameter, it is possible to force a certain timezone offset. For\n   * instance, to show times in Pacific Standard Time, pass -7 * 60.\n   */\n  timeZoneOffsetInMinutes?: ?number,\n|}>;\n\n/**\n * Use `DatePickerIOS` to render a date/time picker (selector) on iOS.  This is\n * a controlled component, so you must hook in to the `onDateChange` callback\n * and update the `date` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.date` as the\n * source of truth.\n */\nclass DatePickerIOS extends React.Component<Props> {\n  static DefaultProps: {|mode: $TEMPORARY$string<'datetime'>|} = {\n    mode: 'datetime',\n  };\n\n  _picker: ?React.ElementRef<typeof RCTDatePickerNativeComponent> = null;\n\n  componentDidUpdate() {\n    if (this.props.date) {\n      const propsTimeStamp = this.props.date.getTime();\n      if (this._picker) {\n        DatePickerCommands.setNativeDate(this._picker, propsTimeStamp);\n      }\n    }\n  }\n\n  _onChange = (event: Event) => {\n    const nativeTimeStamp = event.nativeEvent.timestamp;\n    this.props.onDateChange &&\n      this.props.onDateChange(new Date(nativeTimeStamp));\n    this.props.onChange && this.props.onChange(event);\n    this.forceUpdate();\n  };\n\n  render(): React.Node {\n    const props = this.props;\n    invariant(\n      props.date || props.initialDate,\n      'A selected date or initial date should be specified.',\n    );\n    return (\n      <View style={props.style}>\n        <RCTDatePickerNativeComponent\n          testID={props.testID}\n          ref={picker => {\n            this._picker = picker;\n          }}\n          style={styles.datePickerIOS}\n          date={\n            props.date\n              ? props.date.getTime()\n              : props.initialDate\n              ? props.initialDate.getTime()\n              : undefined\n          }\n          locale={\n            props.locale != null && props.locale !== ''\n              ? props.locale\n              : undefined\n          }\n          maximumDate={\n            props.maximumDate ? props.maximumDate.getTime() : undefined\n          }\n          minimumDate={\n            props.minimumDate ? props.minimumDate.getTime() : undefined\n          }\n          mode={props.mode}\n          minuteInterval={props.minuteInterval}\n          timeZoneOffsetInMinutes={props.timeZoneOffsetInMinutes}\n          onChange={this._onChange}\n          onStartShouldSetResponder={() => true}\n          onResponderTerminationRequest={() => false}\n        />\n      </View>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  datePickerIOS: {\n    height: 216,\n  },\n});\n\nmodule.exports = DatePickerIOS;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport * as React from 'react';\nimport type {\n  Float,\n  WithDefault,\n  BubblingEventHandler,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\ntype Event = $ReadOnly<{|\n  timestamp: Float,\n|}>;\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n  date?: ?Float,\n  initialDate?: ?Float,\n  locale?: ?string,\n  maximumDate?: ?Float,\n  minimumDate?: ?Float,\n  minuteInterval?: WithDefault<\n    1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 15 | 20 | 30,\n    1,\n  >,\n  mode?: WithDefault<'date' | 'time' | 'datetime', 'date'>,\n  onChange?: ?BubblingEventHandler<Event>,\n  timeZoneOffsetInMinutes?: ?Float,\n|}>;\n\ntype ComponentType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  +setNativeDate: (\n    viewRef: React.ElementRef<ComponentType>,\n    date: Float,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeDate'],\n});\n\nexport default (codegenNativeComponent<NativeProps>('DatePicker', {\n  paperComponentName: 'RCTDatePicker',\n  excludedPlatforms: ['android'],\n}): HostComponent<NativeProps>);\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 * @format\n */\n\n'use strict';\n\nmodule.exports = require('../UnimplementedViews/UnimplementedView');\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\n\n/**\n * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner\n * View component and renders its children.\n */\nclass UnimplementedView extends React.Component<$FlowFixMeProps> {\n  render(): React.Node {\n    // Workaround require cycle from requireNativeComponent\n    const View = require('../View/View');\n    return (\n      <View style={[styles.unimplementedView, this.props.style]}>\n        {this.props.children}\n      </View>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  unimplementedView: __DEV__\n    ? {\n        alignSelf: 'flex-start',\n        borderColor: 'red',\n        borderWidth: 1,\n      }\n    : {},\n});\n\nmodule.exports = UnimplementedView;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Image = require('./Image');\nconst React = require('react');\nconst StyleSheet = require('../StyleSheet/StyleSheet');\nconst View = require('../Components/View/View');\n\n/**\n * Very simple drop-in replacement for <Image> which supports nesting views.\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, ImageBackground, Text } from 'react-native';\n *\n * class DisplayAnImageBackground extends Component {\n *   render() {\n *     return (\n *       <ImageBackground\n *         style={{width: 50, height: 50}}\n *         source={{uri: 'https://reactnative.dev/img/opengraph.png'}}\n *       >\n *         <Text>React</Text>\n *       </ImageBackground>\n *     );\n *   }\n * }\n *\n * // App registration and rendering\n * AppRegistry.registerComponent('DisplayAnImageBackground', () => DisplayAnImageBackground);\n * ```\n */\nclass ImageBackground extends React.Component<$FlowFixMeProps> {\n  setNativeProps(props: Object) {\n    // Work-around flow\n    const viewRef = this._viewRef;\n    if (viewRef) {\n      viewRef.setNativeProps(props);\n    }\n  }\n\n  _viewRef: ?React.ElementRef<typeof View> = null;\n\n  _captureRef = ref => {\n    this._viewRef = ref;\n  };\n\n  render(): React.Node {\n    const {children, style, imageStyle, imageRef, ...props} = this.props;\n\n    return (\n      <View\n        accessibilityIgnoresInvertColors={true}\n        style={style}\n        ref={this._captureRef}>\n        <Image\n          {...props}\n          style={[\n            StyleSheet.absoluteFill,\n            {\n              // Temporary Workaround:\n              // Current (imperfect yet) implementation of <Image> overwrites width and height styles\n              // (which is not quite correct), and these styles conflict with explicitly set styles\n              // of <ImageBackground> and with our internal layout model here.\n              // So, we have to proxy/reapply these styles explicitly for actual <Image> component.\n              // This workaround should be removed after implementing proper support of\n              // intrinsic content size of the <Image>.\n              width: style.width,\n              height: style.height,\n            },\n            imageStyle,\n          ]}\n          ref={imageRef}\n        />\n        {children}\n      </View>\n    );\n  }\n}\n\nmodule.exports = ImageBackground;\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\n\nimport RCTInputAccessoryViewNativeComponent from './RCTInputAccessoryViewNativeComponent';\n\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\n\n/**\n * Note: iOS only\n *\n * A component which enables customization of the keyboard input accessory view.\n * The input accessory view is displayed above the keyboard whenever a TextInput\n * has focus. This component can be used to create custom toolbars.\n *\n * To use this component wrap your custom toolbar with the\n * InputAccessoryView component, and set a nativeID. Then, pass that nativeID\n * as the inputAccessoryViewID of whatever TextInput you desire. A simple\n * example:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, TextInput, InputAccessoryView, Button } from 'react-native';\n *\n * export default class UselessTextInput extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {text: 'Placeholder Text'};\n *   }\n *\n *   render() {\n *     const inputAccessoryViewID = \"uniqueID\";\n *     return (\n *       <View>\n *         <ScrollView keyboardDismissMode=\"interactive\">\n *           <TextInput\n *             style={{\n *               padding: 10,\n *               paddingTop: 50,\n *             }}\n *             inputAccessoryViewID=inputAccessoryViewID\n *             onChangeText={text => this.setState({text})}\n *             value={this.state.text}\n *           />\n *         </ScrollView>\n *         <InputAccessoryView nativeID=inputAccessoryViewID>\n *           <Button\n *             onPress={() => this.setState({text: 'Placeholder Text'})}\n *             title=\"Reset Text\"\n *           />\n *         </InputAccessoryView>\n *       </View>\n *     );\n *   }\n * }\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);\n * ```\n *\n * This component can also be used to create sticky text inputs (text inputs\n * which are anchored to the top of the keyboard). To do this, wrap a\n * TextInput with the InputAccessoryView component, and don't set a nativeID.\n * For an example, look at InputAccessoryViewExample.js in RNTester.\n */\n\ntype Props = $ReadOnly<{|\n  +children: React.Node,\n  /**\n   * An ID which is used to associate this `InputAccessoryView` to\n   * specified TextInput(s).\n   */\n  nativeID?: ?string,\n  style?: ?ViewStyleProp,\n  backgroundColor?: ?ColorValue,\n|}>;\n\nclass InputAccessoryView extends React.Component<Props> {\n  render(): React.Node {\n    if (Platform.OS !== 'ios') {\n      console.warn('<InputAccessoryView> is only supported on iOS.');\n    }\n\n    if (React.Children.count(this.props.children) === 0) {\n      return null;\n    }\n\n    return (\n      <RCTInputAccessoryViewNativeComponent\n        style={[this.props.style, styles.container]}\n        nativeID={this.props.nativeID}\n        backgroundColor={this.props.backgroundColor}>\n        {this.props.children}\n      </RCTInputAccessoryViewNativeComponent>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    position: 'absolute',\n  },\n});\n\nmodule.exports = InputAccessoryView;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n  backgroundColor?: ?ColorValue,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>('InputAccessory', {\n  interfaceOnly: true,\n  paperComponentName: 'RCTInputAccessoryView',\n  excludedPlatforms: ['android'],\n}): HostComponent<NativeProps>);\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Keyboard = require('./Keyboard');\nconst LayoutAnimation = require('../../LayoutAnimation/LayoutAnimation');\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst View = require('../View/View');\n\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport {type EventSubscription} from '../../vendor/emitter/EventEmitter';\nimport type {\n  ViewProps,\n  ViewLayout,\n  ViewLayoutEvent,\n} from '../View/ViewPropTypes';\nimport type {KeyboardEvent} from './Keyboard';\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * Specify how to react to the presence of the keyboard.\n   */\n  behavior?: ?('height' | 'position' | 'padding'),\n\n  /**\n   * Style of the content container when `behavior` is 'position'.\n   */\n  contentContainerStyle?: ?ViewStyleProp,\n\n  /**\n   * Controls whether this `KeyboardAvoidingView` instance should take effect.\n   * This is useful when more than one is on the screen. Defaults to true.\n   */\n  enabled: ?boolean,\n\n  /**\n   * Distance between the top of the user screen and the React Native view. This\n   * may be non-zero in some cases. Defaults to 0.\n   */\n  keyboardVerticalOffset: number,\n|}>;\n\ntype State = {|\n  bottom: number,\n|};\n\n/**\n * View that moves out of the way when the keyboard appears by automatically\n * adjusting its height, position, or bottom padding.\n */\nclass KeyboardAvoidingView extends React.Component<Props, State> {\n  static defaultProps: {|enabled: boolean, keyboardVerticalOffset: number|} = {\n    enabled: true,\n    keyboardVerticalOffset: 0,\n  };\n\n  _frame: ?ViewLayout = null;\n  _keyboardEvent: ?KeyboardEvent = null;\n  _subscriptions: Array<EventSubscription> = [];\n  viewRef: {current: React.ElementRef<any> | null, ...};\n  _initialFrameHeight: number = 0;\n\n  constructor(props: Props) {\n    super(props);\n    this.state = {bottom: 0};\n    this.viewRef = React.createRef();\n  }\n\n  _relativeKeyboardHeight(keyboardFrame): number {\n    const frame = this._frame;\n    if (!frame || !keyboardFrame) {\n      return 0;\n    }\n\n    const keyboardY = keyboardFrame.screenY - this.props.keyboardVerticalOffset;\n\n    // Calculate the displacement needed for the view such that it\n    // no longer overlaps with the keyboard\n    return Math.max(frame.y + frame.height - keyboardY, 0);\n  }\n\n  _onKeyboardChange = (event: ?KeyboardEvent) => {\n    this._keyboardEvent = event;\n    this._updateBottomIfNecesarry();\n  };\n\n  _onLayout = (event: ViewLayoutEvent) => {\n    const wasFrameNull = this._frame == null;\n    this._frame = event.nativeEvent.layout;\n    if (!this._initialFrameHeight) {\n      // save the initial frame height, before the keyboard is visible\n      this._initialFrameHeight = this._frame.height;\n    }\n\n    if (wasFrameNull) {\n      this._updateBottomIfNecesarry();\n    }\n  };\n\n  _updateBottomIfNecesarry = () => {\n    if (this._keyboardEvent == null) {\n      this.setState({bottom: 0});\n      return;\n    }\n\n    const {duration, easing, endCoordinates} = this._keyboardEvent;\n    const height = this._relativeKeyboardHeight(endCoordinates);\n\n    if (this.state.bottom === height) {\n      return;\n    }\n\n    if (duration && easing) {\n      LayoutAnimation.configureNext({\n        // We have to pass the duration equal to minimal accepted duration defined here: RCTLayoutAnimation.m\n        duration: duration > 10 ? duration : 10,\n        update: {\n          duration: duration > 10 ? duration : 10,\n          type: LayoutAnimation.Types[easing] || 'keyboard',\n        },\n      });\n    }\n    this.setState({bottom: height});\n  };\n\n  componentDidMount(): void {\n    if (Platform.OS === 'ios') {\n      this._subscriptions = [\n        Keyboard.addListener('keyboardWillChangeFrame', this._onKeyboardChange),\n      ];\n    } else {\n      this._subscriptions = [\n        Keyboard.addListener('keyboardDidHide', this._onKeyboardChange),\n        Keyboard.addListener('keyboardDidShow', this._onKeyboardChange),\n      ];\n    }\n  }\n\n  componentWillUnmount(): void {\n    this._subscriptions.forEach(subscription => {\n      subscription.remove();\n    });\n  }\n\n  render(): React.Node {\n    const {\n      behavior,\n      children,\n      contentContainerStyle,\n      enabled,\n      keyboardVerticalOffset,\n      style,\n      ...props\n    } = this.props;\n    const bottomHeight = enabled ? this.state.bottom : 0;\n    switch (behavior) {\n      case 'height':\n        let heightStyle;\n        if (this._frame != null && this.state.bottom > 0) {\n          // Note that we only apply a height change when there is keyboard present,\n          // i.e. this.state.bottom is greater than 0. If we remove that condition,\n          // this.frame.height will never go back to its original value.\n          // When height changes, we need to disable flex.\n          heightStyle = {\n            height: this._initialFrameHeight - bottomHeight,\n            flex: 0,\n          };\n        }\n        return (\n          <View\n            ref={this.viewRef}\n            style={StyleSheet.compose(style, heightStyle)}\n            onLayout={this._onLayout}\n            {...props}>\n            {children}\n          </View>\n        );\n\n      case 'position':\n        return (\n          <View\n            ref={this.viewRef}\n            style={style}\n            onLayout={this._onLayout}\n            {...props}>\n            <View\n              style={StyleSheet.compose(contentContainerStyle, {\n                bottom: bottomHeight,\n              })}>\n              {children}\n            </View>\n          </View>\n        );\n\n      case 'padding':\n        return (\n          <View\n            ref={this.viewRef}\n            style={StyleSheet.compose(style, {paddingBottom: bottomHeight})}\n            onLayout={this._onLayout}\n            {...props}>\n            {children}\n          </View>\n        );\n\n      default:\n        return (\n          <View\n            ref={this.viewRef}\n            onLayout={this._onLayout}\n            style={style}\n            {...props}>\n            {children}\n          </View>\n        );\n    }\n  }\n}\n\nmodule.exports = KeyboardAvoidingView;\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 * @format\n * @flow\n */\n\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst View = require('../View/View');\n\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport RCTMaskedViewNativeComponent from './RCTMaskedViewNativeComponent';\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n\n  children: React.Node,\n  /**\n   * Should be a React element to be rendered and applied as the\n   * mask for the child element.\n   */\n  maskElement: React.Element<any>,\n|}>;\n\n/**\n * Renders the child view with a mask specified in the `maskElement` prop.\n *\n * ```\n * import React from 'react';\n * import { MaskedViewIOS, Text, View } from 'react-native';\n *\n * class MyMaskedView extends React.Component {\n *   render() {\n *     return (\n *       <MaskedViewIOS\n *         style={{ flex: 1 }}\n *         maskElement={\n *           <View style={styles.maskContainerStyle}>\n *             <Text style={styles.maskTextStyle}>\n *               Basic Mask\n *             </Text>\n *           </View>\n *         }\n *       >\n *         <View style={{ flex: 1, backgroundColor: 'blue' }} />\n *       </MaskedViewIOS>\n *     );\n *   }\n * }\n * ```\n *\n * The above example will render a view with a blue background that fills its\n * parent, and then mask that view with text that says \"Basic Mask\".\n *\n * The alpha channel of the view rendered by the `maskElement` prop determines how\n * much of the view's content and background shows through. Fully or partially\n * opaque pixels allow the underlying content to show through but fully\n * transparent pixels block that content.\n *\n */\nclass MaskedViewIOS extends React.Component<Props> {\n  _hasWarnedInvalidRenderMask = false;\n\n  render(): React.Node {\n    const {maskElement, children, ...otherViewProps} = this.props;\n\n    if (!React.isValidElement(maskElement)) {\n      if (!this._hasWarnedInvalidRenderMask) {\n        console.warn(\n          'MaskedView: Invalid `maskElement` prop was passed to MaskedView. ' +\n            'Expected a React Element. No mask will render.',\n        );\n        this._hasWarnedInvalidRenderMask = true;\n      }\n      return <View {...otherViewProps}>{children}</View>;\n    }\n\n    return (\n      <RCTMaskedViewNativeComponent {...otherViewProps}>\n        <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n          {maskElement}\n        </View>\n        {children}\n      </RCTMaskedViewNativeComponent>\n    );\n  }\n}\n\nmodule.exports = MaskedViewIOS;\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 * @format\n * @flow strict-local\n */\n\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>(\n  'RCTMaskedView',\n): HostComponent<NativeProps>);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst AppContainer = require('../ReactNative/AppContainer');\nconst I18nManager = require('../ReactNative/I18nManager');\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport NativeModalManager from './NativeModalManager';\nconst Platform = require('../Utilities/Platform');\nconst React = require('react');\nconst ScrollView = require('../Components/ScrollView/ScrollView');\nconst StyleSheet = require('../StyleSheet/StyleSheet');\nconst View = require('../Components/View/View');\n\nconst {RootTagContext} = require('../ReactNative/RootTag');\n\nimport type {ViewProps} from '../Components/View/ViewPropTypes';\nimport {VirtualizedListContextResetter} from '../Lists/VirtualizedListContext.js';\nimport type {RootTag} from '../ReactNative/RootTag';\nimport type {DirectEventHandler} from '../Types/CodegenTypes';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport RCTModalHostView from './RCTModalHostViewNativeComponent';\n\nconst ModalEventEmitter =\n  Platform.OS === 'ios' && NativeModalManager != null\n    ? new NativeEventEmitter(NativeModalManager)\n    : null;\n\n/**\n * The Modal component is a simple way to present content above an enclosing view.\n *\n * See https://reactnative.dev/docs/modal.html\n */\n\n// In order to route onDismiss callbacks, we need to uniquely identifier each\n// <Modal> on screen. There can be different ones, either nested or as siblings.\n// We cannot pass the onDismiss callback to native as the view will be\n// destroyed before the callback is fired.\nlet uniqueModalIdentifier = 0;\n\ntype OrientationChangeEvent = $ReadOnly<{|\n  orientation: 'portrait' | 'landscape',\n|}>;\n\nexport type Props = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * The `animationType` prop controls how the modal animates.\n   *\n   * See https://reactnative.dev/docs/modal.html#animationtype\n   */\n  animationType?: ?('none' | 'slide' | 'fade'),\n\n  /**\n   * The `presentationStyle` prop controls how the modal appears.\n   *\n   * See https://reactnative.dev/docs/modal.html#presentationstyle\n   */\n  presentationStyle?: ?(\n    | 'fullScreen'\n    | 'pageSheet'\n    | 'formSheet'\n    | 'overFullScreen'\n  ),\n\n  /**\n   * The `transparent` prop determines whether your modal will fill the\n   * entire view.\n   *\n   * See https://reactnative.dev/docs/modal.html#transparent\n   */\n  transparent?: ?boolean,\n\n  /**\n   * The `statusBarTranslucent` prop determines whether your modal should go under\n   * the system statusbar.\n   *\n   * See https://reactnative.dev/docs/modal.html#transparent\n   */\n  statusBarTranslucent?: ?boolean,\n\n  /**\n   * The `hardwareAccelerated` prop controls whether to force hardware\n   * acceleration for the underlying window.\n   *\n   * This prop works only on Android.\n   *\n   * See https://reactnative.dev/docs/modal.html#hardwareaccelerated\n   */\n  hardwareAccelerated?: ?boolean,\n\n  /**\n   * The `visible` prop determines whether your modal is visible.\n   *\n   * See https://reactnative.dev/docs/modal.html#visible\n   */\n  visible?: ?boolean,\n\n  /**\n   * The `onRequestClose` callback is called when the user taps the hardware\n   * back button on Android or the menu button on Apple TV.\n   *\n   * This is required on Apple TV and Android.\n   *\n   * See https://reactnative.dev/docs/modal.html#onrequestclose\n   */\n  onRequestClose?: ?DirectEventHandler<null>,\n\n  /**\n   * The `onShow` prop allows passing a function that will be called once the\n   * modal has been shown.\n   *\n   * See https://reactnative.dev/docs/modal.html#onshow\n   */\n  onShow?: ?DirectEventHandler<null>,\n\n  /**\n   * The `onDismiss` prop allows passing a function that will be called once\n   * the modal has been dismissed.\n   *\n   * See https://reactnative.dev/docs/modal.html#ondismiss\n   */\n  onDismiss?: ?() => mixed,\n\n  /**\n   * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.\n   *\n   * See https://reactnative.dev/docs/modal.html#supportedorientations\n   */\n  supportedOrientations?: ?$ReadOnlyArray<\n    | 'portrait'\n    | 'portrait-upside-down'\n    | 'landscape'\n    | 'landscape-left'\n    | 'landscape-right',\n  >,\n\n  /**\n   * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.\n   *\n   * See https://reactnative.dev/docs/modal.html#onorientationchange\n   */\n  onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,\n|}>;\n\nclass Modal extends React.Component<Props> {\n  static defaultProps: {|hardwareAccelerated: boolean, visible: boolean|} = {\n    visible: true,\n    hardwareAccelerated: false,\n  };\n\n  static contextType: React.Context<RootTag> = RootTagContext;\n\n  _identifier: number;\n  _eventSubscription: ?EventSubscription;\n\n  constructor(props: Props) {\n    super(props);\n    Modal._confirmProps(props);\n    this._identifier = uniqueModalIdentifier++;\n  }\n\n  componentDidMount() {\n    if (ModalEventEmitter) {\n      this._eventSubscription = ModalEventEmitter.addListener(\n        'modalDismissed',\n        event => {\n          if (event.modalID === this._identifier && this.props.onDismiss) {\n            this.props.onDismiss();\n          }\n        },\n      );\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._eventSubscription) {\n      this._eventSubscription.remove();\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps: Props) {\n    Modal._confirmProps(nextProps);\n  }\n\n  static _confirmProps(props: Props) {\n    if (\n      props.presentationStyle &&\n      props.presentationStyle !== 'overFullScreen' &&\n      props.transparent === true\n    ) {\n      console.warn(\n        `Modal with '${props.presentationStyle}' presentation style and 'transparent' value is not supported.`,\n      );\n    }\n  }\n\n  render(): React.Node {\n    if (this.props.visible !== true) {\n      return null;\n    }\n\n    const containerStyles = {\n      backgroundColor:\n        this.props.transparent === true ? 'transparent' : 'white',\n    };\n\n    let animationType = this.props.animationType || 'none';\n\n    let presentationStyle = this.props.presentationStyle;\n    if (!presentationStyle) {\n      presentationStyle = 'fullScreen';\n      if (this.props.transparent === true) {\n        presentationStyle = 'overFullScreen';\n      }\n    }\n\n    const innerChildren = __DEV__ ? (\n      <AppContainer rootTag={this.context}>{this.props.children}</AppContainer>\n    ) : (\n      this.props.children\n    );\n\n    return (\n      <RCTModalHostView\n        animationType={animationType}\n        presentationStyle={presentationStyle}\n        transparent={this.props.transparent}\n        hardwareAccelerated={this.props.hardwareAccelerated}\n        onRequestClose={this.props.onRequestClose}\n        onShow={this.props.onShow}\n        statusBarTranslucent={this.props.statusBarTranslucent}\n        identifier={this._identifier}\n        style={styles.modal}\n        onStartShouldSetResponder={this._shouldSetResponder}\n        supportedOrientations={this.props.supportedOrientations}\n        onOrientationChange={this.props.onOrientationChange}>\n        <VirtualizedListContextResetter>\n          <ScrollView.Context.Provider value={null}>\n            <View\n              style={[styles.container, containerStyles]}\n              collapsable={false}>\n              {innerChildren}\n            </View>\n          </ScrollView.Context.Provider>\n        </VirtualizedListContextResetter>\n      </RCTModalHostView>\n    );\n  }\n\n  // We don't want any responder events bubbling out of the modal.\n  _shouldSetResponder(): boolean {\n    return true;\n  }\n}\n\nconst side = I18nManager.getConstants().isRTL ? 'right' : 'left';\nconst styles = StyleSheet.create({\n  modal: {\n    position: 'absolute',\n  },\n  container: {\n    /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment suppresses an\n     * error found when Flow v0.111 was deployed. To see the error, delete this\n     * comment and run Flow. */\n    [side]: 0,\n    top: 0,\n    flex: 1,\n  },\n});\n\nmodule.exports = Modal;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ModalManager'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport codegenNativeComponent from '../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../Renderer/shims/ReactNativeTypes';\nimport type {\n  WithDefault,\n  DirectEventHandler,\n  BubblingEventHandler,\n  Int32,\n} from '../Types/CodegenTypes';\n\nimport type {ViewProps} from '../Components/View/ViewPropTypes';\n\ntype OrientationChangeEvent = $ReadOnly<{|\n  orientation: 'portrait' | 'landscape',\n|}>;\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * The `animationType` prop controls how the modal animates.\n   *\n   * See https://reactnative.dev/docs/modal.html#animationtype\n   */\n  animationType?: WithDefault<'none' | 'slide' | 'fade', 'none'>,\n\n  /**\n   * The `presentationStyle` prop controls how the modal appears.\n   *\n   * See https://reactnative.dev/docs/modal.html#presentationstyle\n   */\n  presentationStyle?: WithDefault<\n    'fullScreen' | 'pageSheet' | 'formSheet' | 'overFullScreen',\n    'fullScreen',\n  >,\n\n  /**\n   * The `transparent` prop determines whether your modal will fill the\n   * entire view.\n   *\n   * See https://reactnative.dev/docs/modal.html#transparent\n   */\n  transparent?: WithDefault<boolean, false>,\n\n  /**\n   * The `statusBarTranslucent` prop determines whether your modal should go under\n   * the system statusbar.\n   *\n   * See https://reactnative.dev/docs/modal.html#statusBarTranslucent\n   */\n  statusBarTranslucent?: WithDefault<boolean, false>,\n\n  /**\n   * The `hardwareAccelerated` prop controls whether to force hardware\n   * acceleration for the underlying window.\n   *\n   * See https://reactnative.dev/docs/modal.html#hardwareaccelerated\n   */\n  hardwareAccelerated?: WithDefault<boolean, false>,\n\n  /**\n   * The `onRequestClose` callback is called when the user taps the hardware\n   * back button on Android or the menu button on Apple TV.\n   *\n   * This is required on Apple TV and Android.\n   *\n   * See https://reactnative.dev/docs/modal.html#onrequestclose\n   */\n  onRequestClose?: ?DirectEventHandler<null>,\n\n  /**\n   * The `onShow` prop allows passing a function that will be called once the\n   * modal has been shown.\n   *\n   * See https://reactnative.dev/docs/modal.html#onshow\n   */\n  onShow?: ?DirectEventHandler<null>,\n\n  /**\n   * The `onDismiss` prop allows passing a function that will be called once\n   * the modal has been dismissed.\n   *\n   * See https://reactnative.dev/docs/modal.html#ondismiss\n   */\n  onDismiss?: ?BubblingEventHandler<null>,\n\n  /**\n   * Deprecated. Use the `animationType` prop instead.\n   */\n  animated?: WithDefault<boolean, false>,\n\n  /**\n   * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.\n   *\n   * See https://reactnative.dev/docs/modal.html#supportedorientations\n   */\n  supportedOrientations?: WithDefault<\n    $ReadOnlyArray<\n      | 'portrait'\n      | 'portrait-upside-down'\n      | 'landscape'\n      | 'landscape-left'\n      | 'landscape-right',\n    >,\n    'portrait',\n  >,\n\n  /**\n   * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.\n   *\n   * See https://reactnative.dev/docs/modal.html#onorientationchange\n   */\n  onOrientationChange?: ?DirectEventHandler<OrientationChangeEvent>,\n\n  /**\n   * The `identifier` is the unique number for identifying Modal components.\n   */\n  identifier?: WithDefault<Int32, 0>,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>('ModalHostView', {\n  interfaceOnly: true,\n  paperComponentName: 'RCTModalHostView',\n}): HostComponent<NativeProps>);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport View from '../Components/View/View';\nimport RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';\nimport StyleSheet from '../StyleSheet/StyleSheet';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport {RootTagContext, createRootTag} from './RootTag';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\ntype Context = {rootTag: number, ...};\n\ntype Props = $ReadOnly<{|\n  children?: React.Node,\n  fabric?: boolean,\n  rootTag: number,\n  initialProps?: {...},\n  showArchitectureIndicator?: boolean,\n  WrapperComponent?: ?React.ComponentType<any>,\n  internal_excludeLogBox?: ?boolean,\n|}>;\n\ntype State = {|\n  inspector: ?React.Node,\n  mainKey: number,\n  hasError: boolean,\n|};\n\nclass AppContainer extends React.Component<Props, State> {\n  state: State = {\n    inspector: null,\n    mainKey: 1,\n    hasError: false,\n  };\n  _mainRef: ?React.ElementRef<typeof View>;\n  _subscription: ?EventSubscription = null;\n\n  static getDerivedStateFromError: any = undefined;\n\n  static childContextTypes:\n    | any\n    | {|rootTag: React$PropType$Primitive<number>|} = {\n    rootTag: PropTypes.number,\n  };\n\n  getChildContext(): Context {\n    return {\n      rootTag: this.props.rootTag,\n    };\n  }\n\n  componentDidMount(): void {\n    if (__DEV__) {\n      if (!global.__RCTProfileIsProfiling) {\n        this._subscription = RCTDeviceEventEmitter.addListener(\n          'toggleElementInspector',\n          () => {\n            const Inspector = require('../Inspector/Inspector');\n            const inspector = this.state.inspector ? null : (\n              <Inspector\n                inspectedView={this._mainRef}\n                onRequestRerenderApp={updateInspectedView => {\n                  this.setState(\n                    s => ({mainKey: s.mainKey + 1}),\n                    () => updateInspectedView(this._mainRef),\n                  );\n                }}\n              />\n            );\n            this.setState({inspector});\n          },\n        );\n      }\n    }\n  }\n\n  componentWillUnmount(): void {\n    if (this._subscription != null) {\n      this._subscription.remove();\n    }\n  }\n\n  render(): React.Node {\n    let logBox = null;\n    if (__DEV__) {\n      if (\n        !global.__RCTProfileIsProfiling &&\n        !this.props.internal_excludeLogBox\n      ) {\n        const LogBoxNotificationContainer = require('../LogBox/LogBoxNotificationContainer')\n          .default;\n        logBox = <LogBoxNotificationContainer />;\n      }\n    }\n\n    let innerView = (\n      <View\n        collapsable={!this.state.inspector}\n        key={this.state.mainKey}\n        pointerEvents=\"box-none\"\n        style={styles.appContainer}\n        ref={ref => {\n          this._mainRef = ref;\n        }}>\n        {this.props.children}\n      </View>\n    );\n\n    const Wrapper = this.props.WrapperComponent;\n    if (Wrapper != null) {\n      innerView = (\n        <Wrapper\n          initialProps={this.props.initialProps}\n          fabric={this.props.fabric === true}\n          showArchitectureIndicator={\n            this.props.showArchitectureIndicator === true\n          }>\n          {innerView}\n        </Wrapper>\n      );\n    }\n    return (\n      <RootTagContext.Provider value={createRootTag(this.props.rootTag)}>\n        <View style={styles.appContainer} pointerEvents=\"box-none\">\n          {!this.state.hasError && innerView}\n          {this.state.inspector}\n          {logBox}\n        </View>\n      </RootTagContext.Provider>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  appContainer: {\n    flex: 1,\n  },\n});\n\nif (__DEV__) {\n  if (!global.__RCTProfileIsProfiling) {\n    const LogBox = require('../LogBox/LogBox');\n    LogBox.install();\n  }\n}\n\nmodule.exports = AppContainer;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\n// TODO: Make this into an opaque type.\nexport type RootTag = number;\n\nexport const RootTagContext: React$Context<RootTag> = React.createContext<RootTag>(\n  0,\n);\n\n/**\n * Intended to only be used by `AppContainer`.\n */\nexport function createRootTag(rootTag: number): RootTag {\n  return rootTag;\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport NativeI18nManager from './NativeI18nManager';\n\nconst i18nConstants: {|\n  doLeftAndRightSwapInRTL: boolean,\n  isRTL: boolean,\n|} = NativeI18nManager\n  ? NativeI18nManager.getConstants()\n  : {\n      isRTL: false,\n      doLeftAndRightSwapInRTL: true,\n    };\n\nmodule.exports = {\n  getConstants: (): {|doLeftAndRightSwapInRTL: boolean, isRTL: boolean|} => {\n    return i18nConstants;\n  },\n\n  allowRTL: (shouldAllow: boolean) => {\n    if (!NativeI18nManager) {\n      return;\n    }\n\n    NativeI18nManager.allowRTL(shouldAllow);\n  },\n\n  forceRTL: (shouldForce: boolean) => {\n    if (!NativeI18nManager) {\n      return;\n    }\n\n    NativeI18nManager.forceRTL(shouldForce);\n  },\n\n  swapLeftAndRightInRTL: (flipStyles: boolean) => {\n    if (!NativeI18nManager) {\n      return;\n    }\n\n    NativeI18nManager.swapLeftAndRightInRTL(flipStyles);\n  },\n\n  isRTL: i18nConstants.isRTL,\n  doLeftAndRightSwapInRTL: i18nConstants.doLeftAndRightSwapInRTL,\n};\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    isRTL: boolean,\n    doLeftAndRightSwapInRTL: boolean,\n  |};\n  allowRTL: (allowRTL: boolean) => void;\n  forceRTL: (forceRTL: boolean) => void;\n  swapLeftAndRightInRTL: (flipStyles: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('I18nManager'): ?Spec);\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst PickerAndroid = require('./PickerAndroid');\nconst PickerIOS = require('./PickerIOS');\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\nconst UnimplementedView = require('../UnimplementedViews/UnimplementedView');\n\nimport type {TextStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\n\nconst MODE_DIALOG = 'dialog';\nconst MODE_DROPDOWN = 'dropdown';\n\ntype PickerItemProps = $ReadOnly<{|\n  /**\n   * Text to display for this item.\n   */\n  label: string,\n\n  /**\n   * The value to be passed to picker's `onValueChange` callback when\n   * this item is selected.\n   */\n  value?: ?string,\n\n  /**\n   * Color of this item's text.\n   * @platform android\n   */\n  color?: ColorValue,\n\n  /**\n   * Used to locate the item in end-to-end tests.\n   */\n  testID?: string,\n|}>;\n\n/**\n * Individual selectable item in a Picker.\n */\nexport type {PickerItem};\nclass PickerItem extends React.Component<PickerItemProps> {\n  render() {\n    // The items are not rendered directly\n    throw null;\n  }\n}\n\ntype PickerProps = $ReadOnly<{|\n  children?: React.Node,\n  style?: ?TextStyleProp,\n\n  /**\n   * Value matching value of one of the items.\n   */\n  selectedValue?: ?string,\n\n  /**\n   * Callback for when an item is selected. This is called with the following parameters:\n   *   - `itemValue`: the `value` prop of the item that was selected\n   *   - `itemIndex`: the index of the selected item in this picker\n   */\n  onValueChange?: ?(itemValue: string | number, itemIndex: number) => mixed,\n\n  /**\n   * If set to false, the picker will be disabled, i.e. the user will not be able to make a\n   * selection.\n   * @platform android\n   */\n  enabled?: ?boolean,\n\n  /**\n   * On Android, specifies how to display the selection items when the user taps on the picker:\n   *\n   *   - 'dialog': Show a modal dialog. This is the default.\n   *   - 'dropdown': Shows a dropdown anchored to the picker view\n   *\n   * @platform android\n   */\n  mode?: ?('dialog' | 'dropdown'),\n\n  /**\n   * Style to apply to each of the item labels.\n   * @platform ios\n   */\n  itemStyle?: ?TextStyleProp,\n\n  /**\n   * Color of the item background.\n   * @platform android\n   */\n  backgroundColor?: ColorValue,\n\n  /**\n   * Prompt string for this picker, used on Android in dialog mode as the title of the dialog.\n   * @platform android\n   */\n  prompt?: ?string,\n\n  /**\n   * Used to locate this view in end-to-end tests.\n   */\n  testID?: ?string,\n  /**\n   * The string used for the accessibility label. Will be read once focused on the picker but not on change.\n   */\n  accessibilityLabel?: ?string,\n|}>;\n\n/**\n * Renders the native picker component on iOS and Android. Example:\n *\n *     <Picker\n *       selectedValue={this.state.language}\n *       onValueChange={(itemValue, itemIndex) => this.setState({language: itemValue})}>\n *       <Picker.Item label=\"Java\" value=\"java\" />\n *       <Picker.Item label=\"JavaScript\" value=\"js\" />\n *     </Picker>\n */\nclass Picker extends React.Component<PickerProps> {\n  /**\n   * On Android, display the options in a dialog.\n   */\n  static MODE_DIALOG: $TEMPORARY$string<'dialog'> = MODE_DIALOG;\n\n  /**\n   * On Android, display the options in a dropdown (this is the default).\n   */\n  static MODE_DROPDOWN: $TEMPORARY$string<'dropdown'> = MODE_DROPDOWN;\n\n  static Item: typeof PickerItem = PickerItem;\n\n  static defaultProps: {|mode: $TEMPORARY$string<'dialog'>|} = {\n    mode: MODE_DIALOG,\n  };\n\n  render(): React.Node {\n    if (Platform.OS === 'ios') {\n      /* $FlowFixMe(>=0.81.0 site=react_native_ios_fb) This suppression was\n       * added when renaming suppression sites. */\n      return <PickerIOS {...this.props}>{this.props.children}</PickerIOS>;\n    } else if (Platform.OS === 'android') {\n      return (\n        /* $FlowFixMe(>=0.81.0 site=react_native_android_fb) This suppression\n         * was added when renaming suppression sites. */\n        <PickerAndroid {...this.props}>{this.props.children}</PickerAndroid>\n      );\n    } else {\n      return <UnimplementedView />;\n    }\n  }\n}\n\nmodule.exports = Picker;\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 * @format\n */\n\n'use strict';\n\nmodule.exports = require('../UnimplementedViews/UnimplementedView');\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 * @format\n * @flow strict-local\n */\n\n// This is a controlled component version of RCTPickerIOS.\n\n'use strict';\n\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst View = require('../View/View');\n\nconst invariant = require('invariant');\nconst processColor = require('../../StyleSheet/processColor');\n\nimport RCTPickerNativeComponent, {\n  Commands as PickerCommands,\n} from './RCTPickerNativeComponent';\nimport type {TextStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ProcessedColorValue} from '../../StyleSheet/processColor';\nimport type {SyntheticEvent} from '../../Types/CoreEventTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype PickerIOSChangeEvent = SyntheticEvent<\n  $ReadOnly<{|\n    newValue: number | string,\n    newIndex: number,\n  |}>,\n>;\n\ntype RCTPickerIOSItemType = $ReadOnly<{|\n  label: ?Label,\n  value: ?string,\n  textColor: ?ProcessedColorValue,\n|}>;\n\ntype Label = Stringish | number;\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n  children: React.ChildrenArray<React.Element<typeof PickerIOSItem>>,\n  itemStyle?: ?TextStyleProp,\n  onChange?: ?(event: PickerIOSChangeEvent) => mixed,\n  onValueChange?: ?(itemValue: string | number, itemIndex: number) => mixed,\n  selectedValue: ?string,\n  accessibilityLabel?: ?string,\n|}>;\n\ntype State = {|\n  selectedIndex: number,\n  items: $ReadOnlyArray<RCTPickerIOSItemType>,\n|};\n\ntype ItemProps = $ReadOnly<{|\n  label: ?Label,\n  value?: ?string,\n  color?: ?ColorValue,\n|}>;\n\nconst PickerIOSItem = (props: ItemProps): null => {\n  return null;\n};\n\nclass PickerIOS extends React.Component<Props, State> {\n  _picker: ?React.ElementRef<typeof RCTPickerNativeComponent> = null;\n  _lastNativeValue: ?number;\n\n  state: State = {\n    selectedIndex: 0,\n    items: [],\n  };\n\n  static Item: (props: ItemProps) => null = PickerIOSItem;\n\n  static getDerivedStateFromProps(props: Props): State {\n    let selectedIndex = 0;\n    const items = [];\n    React.Children.toArray(props.children)\n      .filter(child => child !== null)\n      .forEach(function(child, index) {\n        if (child.props.value === props.selectedValue) {\n          selectedIndex = index;\n        }\n        const processedTextColor = processColor(child.props.color);\n        invariant(\n          processedTextColor == null || typeof processedTextColor === 'number',\n          'Unexpected color given for PickerIOSItem color',\n        );\n        items.push({\n          value: child.props.value,\n          label: child.props.label,\n          textColor: processedTextColor,\n        });\n      });\n    return {selectedIndex, items};\n  }\n\n  render(): React.Node {\n    return (\n      <View style={this.props.style}>\n        <RCTPickerNativeComponent\n          ref={picker => {\n            this._picker = picker;\n          }}\n          testID={this.props.testID}\n          style={[styles.pickerIOS, this.props.itemStyle]}\n          items={this.state.items}\n          selectedIndex={this.state.selectedIndex}\n          onChange={this._onChange}\n          accessibilityLabel={this.props.accessibilityLabel}\n        />\n      </View>\n    );\n  }\n\n  componentDidUpdate() {\n    // This is necessary in case native updates the picker and JS decides\n    // that the update should be ignored and we should stick with the value\n    // that we have in JS.\n    if (\n      this._picker &&\n      this._lastNativeValue !== undefined &&\n      this._lastNativeValue !== this.state.selectedIndex\n    ) {\n      PickerCommands.setNativeSelectedIndex(\n        this._picker,\n        this.state.selectedIndex,\n      );\n    }\n  }\n\n  _onChange = event => {\n    if (this.props.onChange) {\n      this.props.onChange(event);\n    }\n    if (this.props.onValueChange) {\n      this.props.onValueChange(\n        event.nativeEvent.newValue,\n        event.nativeEvent.newIndex,\n      );\n    }\n\n    this._lastNativeValue = event.nativeEvent.newIndex;\n    this.forceUpdate();\n  };\n}\n\nconst styles = StyleSheet.create({\n  pickerIOS: {\n    // The picker will conform to whatever width is given, but we do\n    // have to set the component's height explicitly on the\n    // surrounding view to ensure it gets rendered.\n    height: 216,\n  },\n});\n\nmodule.exports = PickerIOS;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst requireNativeComponent = require('../../ReactNative/requireNativeComponent');\nconst ReactNativeViewConfigRegistry = require('../../Renderer/shims/ReactNativeViewConfigRegistry');\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {SyntheticEvent} from '../../Types/CoreEventTypes';\nimport type {TextStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ProcessedColorValue} from '../../StyleSheet/processColor';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport RCTPickerViewConfig from './RCTPickerViewConfig';\nimport * as React from 'react';\n\ntype PickerIOSChangeEvent = SyntheticEvent<\n  $ReadOnly<{|\n    newValue: number | string,\n    newIndex: number,\n  |}>,\n>;\n\ntype RCTPickerIOSItemType = $ReadOnly<{|\n  label: ?Label,\n  value: ?string,\n  textColor: ?ProcessedColorValue,\n|}>;\n\ntype Label = Stringish | number;\n\ntype NativeProps = $ReadOnly<{|\n  items: $ReadOnlyArray<RCTPickerIOSItemType>,\n  onChange: (event: PickerIOSChangeEvent) => void,\n  selectedIndex: number,\n  style?: ?TextStyleProp,\n  testID?: ?string,\n  accessibilityLabel?: ?string,\n|}>;\n\ntype ComponentType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  +setNativeSelectedIndex: (\n    viewRef: React.ElementRef<ComponentType>,\n    index: number,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeSelectedIndex'],\n});\n\nlet RCTPickerNativeComponent;\nif (global.RN$Bridgeless) {\n  ReactNativeViewConfigRegistry.register('RCTPicker', () => {\n    return RCTPickerViewConfig;\n  });\n  RCTPickerNativeComponent = 'RCTPicker';\n} else {\n  RCTPickerNativeComponent = requireNativeComponent<NativeProps>('RCTPicker');\n}\n\n// flowlint-next-line unclear-type:off\nexport default ((RCTPickerNativeComponent: any): HostComponent<NativeProps>);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig';\nimport type {ReactNativeBaseComponentViewConfig} from '../../Renderer/shims/ReactNativeTypes';\n\nconst RCTPickerViewConfig = {\n  uiViewClassName: 'RCTPicker',\n  bubblingEventTypes: {\n    topChange: {\n      phasedRegistrationNames: {\n        bubbled: 'onChange',\n        captured: 'onChangeCapture',\n      },\n    },\n  },\n  directEventTypes: {},\n  validAttributes: {\n    ...ReactNativeViewViewConfig.validAttributes,\n    color: {process: require('../../StyleSheet/processColor')},\n    fontFamily: true,\n    fontSize: true,\n    fontStyle: true,\n    fontWeight: true,\n    items: true,\n    onChange: true,\n    selectedIndex: true,\n    textAlign: true,\n  },\n};\n\nmodule.exports = (RCTPickerViewConfig: ReactNativeBaseComponentViewConfig<>);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\nimport {useMemo, useState, useRef, useImperativeHandle} from 'react';\nimport useAndroidRippleForView, {\n  type RippleConfig,\n} from './useAndroidRippleForView';\nimport type {\n  AccessibilityActionEvent,\n  AccessibilityActionInfo,\n  AccessibilityRole,\n  AccessibilityState,\n  AccessibilityValue,\n} from '../View/ViewAccessibility';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport usePressability from '../../Pressability/usePressability';\nimport {normalizeRect, type RectOrSize} from '../../StyleSheet/Rect';\nimport type {LayoutEvent, PressEvent} from '../../Types/CoreEventTypes';\nimport View from '../View/View';\n\ntype ViewStyleProp = $ElementType<React.ElementConfig<typeof View>, 'style'>;\n\nexport type StateCallbackType = $ReadOnly<{|\n  pressed: boolean,\n|}>;\n\ntype Props = $ReadOnly<{|\n  /**\n   * Accessibility.\n   */\n  accessibilityActions?: ?$ReadOnlyArray<AccessibilityActionInfo>,\n  accessibilityElementsHidden?: ?boolean,\n  accessibilityHint?: ?Stringish,\n  accessibilityIgnoresInvertColors?: ?boolean,\n  accessibilityLabel?: ?Stringish,\n  accessibilityLiveRegion?: ?('none' | 'polite' | 'assertive'),\n  accessibilityRole?: ?AccessibilityRole,\n  accessibilityState?: ?AccessibilityState,\n  accessibilityValue?: ?AccessibilityValue,\n  accessibilityViewIsModal?: ?boolean,\n  accessible?: ?boolean,\n  focusable?: ?boolean,\n  importantForAccessibility?: ?('auto' | 'yes' | 'no' | 'no-hide-descendants'),\n  onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,\n\n  /**\n   * Either children or a render prop that receives a boolean reflecting whether\n   * the component is currently pressed.\n   */\n  children: React.Node | ((state: StateCallbackType) => React.Node),\n\n  /**\n   * Duration (in milliseconds) from `onPressIn` before `onLongPress` is called.\n   */\n  delayLongPress?: ?number,\n\n  /**\n   * Whether the press behavior is disabled.\n   */\n  disabled?: ?boolean,\n\n  /**\n   * Additional distance outside of this view in which a press is detected.\n   */\n  hitSlop?: ?RectOrSize,\n\n  /**\n   * Additional distance outside of this view in which a touch is considered a\n   * press before `onPressOut` is triggered.\n   */\n  pressRetentionOffset?: ?RectOrSize,\n\n  /**\n   * Called when this view's layout changes.\n   */\n  onLayout?: ?(event: LayoutEvent) => void,\n\n  /**\n   * Called when a long-tap gesture is detected.\n   */\n  onLongPress?: ?(event: PressEvent) => void,\n\n  /**\n   * Called when a single tap gesture is detected.\n   */\n  onPress?: ?(event: PressEvent) => void,\n\n  /**\n   * Called when a touch is engaged before `onPress`.\n   */\n  onPressIn?: ?(event: PressEvent) => void,\n\n  /**\n   * Called when a touch is released before `onPress`.\n   */\n  onPressOut?: ?(event: PressEvent) => void,\n\n  /**\n   * Either view styles or a function that receives a boolean reflecting whether\n   * the component is currently pressed and returns view styles.\n   */\n  style?: ViewStyleProp | ((state: StateCallbackType) => ViewStyleProp),\n\n  /**\n   * Identifier used to find this view in tests.\n   */\n  testID?: ?string,\n\n  /**\n   * If true, doesn't play system sound on touch.\n   */\n  android_disableSound?: ?boolean,\n\n  /**\n   * Enables the Android ripple effect and configures its color.\n   */\n  android_ripple?: ?RippleConfig,\n\n  /**\n   * Used only for documentation or testing (e.g. snapshot testing).\n   */\n  testOnly_pressed?: ?boolean,\n\n  /**\n   * Duration to wait after press down before calling `onPressIn`.\n   */\n  unstable_pressDelay?: ?number,\n|}>;\n\n/**\n * Component used to build display components that should respond to whether the\n * component is currently pressed or not.\n */\nfunction Pressable(props: Props, forwardedRef): React.Node {\n  const {\n    accessible,\n    android_disableSound,\n    android_ripple,\n    children,\n    delayLongPress,\n    disabled,\n    focusable,\n    onLongPress,\n    onPress,\n    onPressIn,\n    onPressOut,\n    pressRetentionOffset,\n    style,\n    testOnly_pressed,\n    unstable_pressDelay,\n    ...restProps\n  } = props;\n\n  const viewRef = useRef<React.ElementRef<typeof View> | null>(null);\n  useImperativeHandle(forwardedRef, () => viewRef.current);\n\n  const android_rippleConfig = useAndroidRippleForView(android_ripple, viewRef);\n\n  const [pressed, setPressed] = usePressState(testOnly_pressed === true);\n\n  const hitSlop = normalizeRect(props.hitSlop);\n\n  const restPropsWithDefaults: React.ElementConfig<typeof View> = {\n    ...restProps,\n    ...android_rippleConfig?.viewProps,\n    accessible: accessible !== false,\n    focusable: focusable !== false,\n    hitSlop,\n  };\n\n  const config = useMemo(\n    () => ({\n      disabled,\n      hitSlop,\n      pressRectOffset: pressRetentionOffset,\n      android_disableSound,\n      delayLongPress,\n      delayPressIn: unstable_pressDelay,\n      onLongPress,\n      onPress,\n      onPressIn(event: PressEvent): void {\n        if (android_rippleConfig != null) {\n          android_rippleConfig.onPressIn(event);\n        }\n        setPressed(true);\n        if (onPressIn != null) {\n          onPressIn(event);\n        }\n      },\n      onPressMove: android_rippleConfig?.onPressMove,\n      onPressOut(event: PressEvent): void {\n        if (android_rippleConfig != null) {\n          android_rippleConfig.onPressOut(event);\n        }\n        setPressed(false);\n        if (onPressOut != null) {\n          onPressOut(event);\n        }\n      },\n    }),\n    [\n      android_disableSound,\n      android_rippleConfig,\n      delayLongPress,\n      disabled,\n      hitSlop,\n      onLongPress,\n      onPress,\n      onPressIn,\n      onPressOut,\n      pressRetentionOffset,\n      setPressed,\n      unstable_pressDelay,\n    ],\n  );\n  const eventHandlers = usePressability(config);\n\n  return (\n    <View\n      {...restPropsWithDefaults}\n      {...eventHandlers}\n      ref={viewRef}\n      style={typeof style === 'function' ? style({pressed}) : style}\n      collapsable={false}>\n      {typeof children === 'function' ? children({pressed}) : children}\n      {__DEV__ ? <PressabilityDebugView color=\"red\" hitSlop={hitSlop} /> : null}\n    </View>\n  );\n}\n\nfunction usePressState(forcePressed: boolean): [boolean, (boolean) => void] {\n  const [pressed, setPressed] = useState(false);\n  return [pressed || forcePressed, setPressed];\n}\n\nconst MemoedPressable = React.memo(React.forwardRef(Pressable));\nMemoedPressable.displayName = 'Pressable';\n\nexport default (MemoedPressable: React.AbstractComponent<\n  Props,\n  React.ElementRef<typeof View>,\n>);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport invariant from 'invariant';\nimport {Commands} from '../View/ViewNativeComponent';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {PressEvent} from '../../Types/CoreEventTypes';\nimport {Platform, View, processColor} from 'react-native';\nimport * as React from 'react';\nimport {useMemo} from 'react';\n\ntype NativeBackgroundProp = $ReadOnly<{|\n  type: 'RippleAndroid',\n  color: ?number,\n  borderless: boolean,\n  rippleRadius: ?number,\n|}>;\n\nexport type RippleConfig = {|\n  color?: ColorValue,\n  borderless?: boolean,\n  radius?: number,\n|};\n\n/**\n * Provides the event handlers and props for configuring the ripple effect on\n * supported versions of Android.\n */\nexport default function useAndroidRippleForView(\n  rippleConfig: ?RippleConfig,\n  viewRef: {|current: null | React.ElementRef<typeof View>|},\n): ?$ReadOnly<{|\n  onPressIn: (event: PressEvent) => void,\n  onPressMove: (event: PressEvent) => void,\n  onPressOut: (event: PressEvent) => void,\n  viewProps: $ReadOnly<{|\n    nativeBackgroundAndroid: NativeBackgroundProp,\n  |}>,\n|}> {\n  const {color, borderless, radius} = rippleConfig ?? {};\n\n  return useMemo(() => {\n    if (\n      Platform.OS === 'android' &&\n      Platform.Version >= 21 &&\n      (color != null || borderless != null || radius != null)\n    ) {\n      const processedColor = processColor(color);\n      invariant(\n        processedColor == null || typeof processedColor === 'number',\n        'Unexpected color given for Ripple color',\n      );\n\n      return {\n        viewProps: {\n          // Consider supporting `nativeForegroundAndroid`\n          nativeBackgroundAndroid: {\n            type: 'RippleAndroid',\n            color: processedColor,\n            borderless: borderless === true,\n            rippleRadius: radius,\n          },\n        },\n        onPressIn(event: PressEvent): void {\n          const view = viewRef.current;\n          if (view != null) {\n            Commands.setPressed(view, true);\n            Commands.hotspotUpdate(\n              view,\n              event.nativeEvent.locationX ?? 0,\n              event.nativeEvent.locationY ?? 0,\n            );\n          }\n        },\n        onPressMove(event: PressEvent): void {\n          const view = viewRef.current;\n          if (view != null) {\n            Commands.hotspotUpdate(\n              view,\n              event.nativeEvent.locationX ?? 0,\n              event.nativeEvent.locationY ?? 0,\n            );\n          }\n        },\n        onPressOut(event: PressEvent): void {\n          const view = viewRef.current;\n          if (view != null) {\n            Commands.setPressed(view, false);\n          }\n        },\n      };\n    }\n    return null;\n  }, [color, borderless, radius, viewRef]);\n}\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport Pressability, {\n  type EventHandlers,\n  type PressabilityConfig,\n} from './Pressability';\nimport {useEffect, useRef} from 'react';\n\n/**\n * Creates a persistent instance of `Pressability` that automatically configures\n * itself and resets. Accepts null `config` to support lazy initialization. Once\n * initialized, will not un-initialize until the component has been unmounted.\n */\nexport default function usePressability(\n  config: ?PressabilityConfig,\n): ?EventHandlers {\n  const pressabilityRef = useRef<?Pressability>(null);\n  if (config != null && pressabilityRef.current == null) {\n    pressabilityRef.current = new Pressability(config);\n  }\n  const pressability = pressabilityRef.current;\n\n  // On the initial mount, this is a no-op. On updates, `pressability` will be\n  // re-configured to use the new configuration.\n  useEffect(() => {\n    if (config != null && pressability != null) {\n      pressability.configure(config);\n    }\n  }, [config, pressability]);\n\n  // On unmount, reset pending state and timers inside `pressability`. This is\n  // a separate effect because we do not want to reset when `config` changes.\n  useEffect(() => {\n    if (pressability != null) {\n      return () => {\n        pressability.reset();\n      };\n    }\n  }, [pressability]);\n\n  return pressability == null ? null : pressability.getEventHandlers();\n}\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 * @format\n */\n\n'use strict';\n\nmodule.exports = require('../UnimplementedViews/UnimplementedView');\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\n\nimport RCTProgressViewNativeComponent from './RCTProgressViewNativeComponent';\nimport type {ImageSource} from '../../Image/ImageSource';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n   * The progress bar style.\n   */\n  progressViewStyle?: ?('default' | 'bar'),\n\n  /**\n   * The progress value (between 0 and 1).\n   */\n  progress?: ?number,\n\n  /**\n   * The tint color of the progress bar itself.\n   */\n  progressTintColor?: ?ColorValue,\n\n  /**\n   * The tint color of the progress bar track.\n   */\n  trackTintColor?: ?ColorValue,\n\n  /**\n   * A stretchable image to display as the progress bar.\n   */\n  progressImage?: ?ImageSource,\n\n  /**\n   * A stretchable image to display behind the progress bar.\n   */\n  trackImage?: ?ImageSource,\n|}>;\n\n/**\n * Use `ProgressViewIOS` to render a UIProgressView on iOS.\n */\nconst ProgressViewIOS = (\n  props: Props,\n  forwardedRef?: ?React.Ref<typeof RCTProgressViewNativeComponent>,\n) => (\n  <RCTProgressViewNativeComponent\n    {...props}\n    style={[styles.progressView, props.style]}\n    ref={forwardedRef}\n  />\n);\n\nconst styles = StyleSheet.create({\n  progressView: {\n    height: 2,\n  },\n});\n\nconst ProgressViewIOSWithRef = React.forwardRef(ProgressViewIOS);\n\nmodule.exports = (ProgressViewIOSWithRef: typeof RCTProgressViewNativeComponent);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {Float, WithDefault} from '../../Types/CodegenTypes';\nimport type {ImageSource} from '../../Image/ImageSource';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  // Props\n  progressViewStyle?: WithDefault<'default' | 'bar', 'default'>,\n  progress?: WithDefault<Float, 0>,\n  progressTintColor?: ?ColorValue,\n  trackTintColor?: ?ColorValue,\n  progressImage?: ?ImageSource,\n  trackImage?: ?ImageSource,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>(\n  'RCTProgressView',\n): HostComponent<NativeProps>);\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 * @flow strict-local\n * @format\n */\n\nimport Platform from '../../Utilities/Platform';\nimport * as React from 'react';\nimport View from '../View/View';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n  emulateUnlessSupported?: boolean,\n|}>;\n\nlet exported: React.AbstractComponent<\n  Props,\n  React.ElementRef<HostComponent<mixed>>,\n>;\n\n/**\n * Renders nested content and automatically applies paddings reflect the portion\n * of the view that is not covered by navigation bars, tab bars, toolbars, and\n * other ancestor views.\n *\n * Moreover, and most importantly, Safe Area's paddings reflect physical\n * limitation of the screen, such as rounded corners or camera notches (aka\n * sensor housing area on iPhone X).\n */\nif (Platform.OS === 'android') {\n  exported = React.forwardRef<Props, React.ElementRef<HostComponent<mixed>>>(\n    function SafeAreaView(props, forwardedRef) {\n      const {emulateUnlessSupported, ...localProps} = props;\n      return <View {...localProps} ref={forwardedRef} />;\n    },\n  );\n} else {\n  const RCTSafeAreaViewNativeComponent = require('./RCTSafeAreaViewNativeComponent')\n    .default;\n\n  exported = React.forwardRef<Props, React.ElementRef<HostComponent<mixed>>>(\n    function SafeAreaView(props, forwardedRef) {\n      return (\n        <RCTSafeAreaViewNativeComponent\n          emulateUnlessSupported={true}\n          {...props}\n          ref={forwardedRef}\n        />\n      );\n    },\n  );\n}\n\nmodule.exports = exported;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {WithDefault} from '../../Types/CodegenTypes';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  // Props\n  emulateUnlessSupported?: WithDefault<boolean, false>,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>('SafeAreaView', {\n  paperComponentName: 'RCTSafeAreaView',\n  interfaceOnly: true,\n}): HostComponent<NativeProps>);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport * as React from 'react';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\nimport type {OnChangeEvent} from './RCTSegmentedControlNativeComponent';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport RCTSegmentedControlNativeComponent from './RCTSegmentedControlNativeComponent';\nimport type {SyntheticEvent} from 'react-native/Libraries/Types/CoreEventTypes';\n\ntype SegmentedControlIOSProps = $ReadOnly<{|\n  ...ViewProps,\n  /**\n   * The labels for the control's segment buttons, in order.\n   */\n  values?: $ReadOnlyArray<string>,\n  /**\n   * The index in `props.values` of the segment to be (pre)selected.\n   */\n  selectedIndex?: ?number,\n  /**\n   * If false the user won't be able to interact with the control.\n   */\n  enabled?: boolean,\n  /**\n   * Accent color of the control.\n   */\n  tintColor?: ?string,\n  /**\n   * If true, then selecting a segment won't persist visually.\n   * The `onValueChange` callback will still work as expected.\n   */\n  momentary?: ?boolean,\n  /**\n   * Callback that is called when the user taps a segment\n   */\n  onChange?: ?(event: SyntheticEvent<OnChangeEvent>) => void,\n  /**\n   * Callback that is called when the user taps a segment;\n   * passes the segment's value as an argument\n   */\n  onValueChange?: ?(value: number) => mixed,\n|}>;\n\ntype Props = $ReadOnly<{|\n  ...SegmentedControlIOSProps,\n  forwardedRef: ?React.Ref<typeof RCTSegmentedControlNativeComponent>,\n|}>;\n\n/**\n * Use `SegmentedControlIOS` to render a UISegmentedControl iOS.\n *\n * #### Programmatically changing selected index\n *\n * The selected index can be changed on the fly by assigning the\n * selectedIndex prop to a state variable, then changing that variable.\n * Note that the state variable would need to be updated as the user\n * selects a value and changes the index, as shown in the example below.\n *\n * ````\n * <SegmentedControlIOS\n *   values={['One', 'Two']}\n *   selectedIndex={this.state.selectedIndex}\n *   onChange={(event) => {\n *     this.setState({selectedIndex: event.nativeEvent.selectedSegmentIndex});\n *   }}\n * />\n * ````\n */\n\nclass SegmentedControlIOS extends React.Component<Props> {\n  static defaultProps = {\n    values: [],\n    enabled: true,\n  };\n\n  _onChange = (event: SyntheticEvent<OnChangeEvent>) => {\n    this.props.onChange && this.props.onChange(event);\n    this.props.onValueChange &&\n      this.props.onValueChange(event.nativeEvent.value);\n  };\n\n  render() {\n    const {forwardedRef, onValueChange, style, ...props} = this.props;\n    return (\n      <RCTSegmentedControlNativeComponent\n        {...props}\n        ref={forwardedRef}\n        style={[styles.segmentedControl, style]}\n        onChange={this._onChange}\n      />\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  segmentedControl: {\n    height: 28,\n  },\n});\n\nconst SegmentedControlIOSWithRef = React.forwardRef(\n  (\n    props: SegmentedControlIOSProps,\n    forwardedRef: ?React.Ref<typeof RCTSegmentedControlNativeComponent>,\n  ) => {\n    return <SegmentedControlIOS {...props} forwardedRef={forwardedRef} />;\n  },\n);\n\n/* $FlowFixMe(>=0.89.0 site=react_native_ios_fb) This comment suppresses an\n * error found when Flow v0.89 was deployed. To see the error, delete this\n * comment and run Flow. */\nmodule.exports = (SegmentedControlIOSWithRef: NativeSegmentedControlIOS);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {\n  BubblingEventHandler,\n  WithDefault,\n  Int32,\n} from '../../Types/CodegenTypes';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\n\nexport type OnChangeEvent = $ReadOnly<{|\n  value: Int32,\n  selectedSegmentIndex: Int32,\n|}>;\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  // Props\n  values?: $ReadOnlyArray<string>,\n  selectedIndex?: WithDefault<Int32, 0>,\n  enabled?: WithDefault<boolean, true>,\n  tintColor?: ?ColorValue,\n  textColor?: ?ColorValue,\n  backgroundColor?: ?ColorValue,\n  momentary?: WithDefault<boolean, false>,\n\n  // Events\n  onChange?: ?BubblingEventHandler<OnChangeEvent>,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>(\n  'RCTSegmentedControl',\n): HostComponent<NativeProps>);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Platform = require('../../Utilities/Platform');\nimport SliderNativeComponent from './SliderNativeComponent';\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\n\nimport type {ImageSource} from '../../Image/ImageSource';\nimport type {ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {SyntheticEvent} from '../../Types/CoreEventTypes';\n\ntype Event = SyntheticEvent<\n  $ReadOnly<{|\n    value: number,\n    /**\n     * Android Only.\n     */\n    fromUser?: boolean,\n  |}>,\n>;\n\ntype IOSProps = $ReadOnly<{|\n  /**\n   * Assigns a single image for the track. Only static images are supported.\n   * The center pixel of the image will be stretched to fill the track.\n   */\n  trackImage?: ?ImageSource,\n\n  /**\n   * Assigns a minimum track image. Only static images are supported. The\n   * rightmost pixel of the image will be stretched to fill the track.\n   */\n  minimumTrackImage?: ?ImageSource,\n\n  /**\n   * Assigns a maximum track image. Only static images are supported. The\n   * leftmost pixel of the image will be stretched to fill the track.\n   */\n  maximumTrackImage?: ?ImageSource,\n\n  /**\n   * Sets an image for the thumb. Only static images are supported.\n   */\n  thumbImage?: ?ImageSource,\n|}>;\n\ntype Props = $ReadOnly<{|\n  ...ViewProps,\n  ...IOSProps,\n\n  /**\n   * Used to style and layout the `Slider`.  See `StyleSheet.js` and\n   * `DeprecatedViewStylePropTypes.js` for more info.\n   */\n  style?: ?ViewStyleProp,\n\n  /**\n   * Initial value of the slider. The value should be between minimumValue\n   * and maximumValue, which default to 0 and 1 respectively.\n   * Default value is 0.\n   *\n   * *This is not a controlled component*, you don't need to update the\n   * value during dragging.\n   */\n  value?: ?number,\n\n  /**\n   * Step value of the slider. The value should be\n   * between 0 and (maximumValue - minimumValue).\n   * Default value is 0.\n   */\n  step?: ?number,\n\n  /**\n   * Initial minimum value of the slider. Default value is 0.\n   */\n  minimumValue?: ?number,\n\n  /**\n   * Initial maximum value of the slider. Default value is 1.\n   */\n  maximumValue?: ?number,\n\n  /**\n   * The color used for the track to the left of the button.\n   * Overrides the default blue gradient image on iOS.\n   */\n  minimumTrackTintColor?: ?ColorValue,\n\n  /**\n   * The color used for the track to the right of the button.\n   * Overrides the default blue gradient image on iOS.\n   */\n  maximumTrackTintColor?: ?ColorValue,\n  /**\n   * The color used to tint the default thumb images on iOS, or the\n   * color of the foreground switch grip on Android.\n   */\n  thumbTintColor?: ?ColorValue,\n\n  /**\n   * If true the user won't be able to move the slider.\n   * Default value is false.\n   */\n  disabled?: ?boolean,\n\n  /**\n   * Callback continuously called while the user is dragging the slider.\n   */\n  onValueChange?: ?(value: number) => void,\n\n  /**\n   * Callback that is called when the user releases the slider,\n   * regardless if the value has changed. The current value is passed\n   * as an argument to the callback handler.\n   */\n  onSlidingComplete?: ?(value: number) => void,\n\n  /**\n   * Used to locate this view in UI automation tests.\n   */\n  testID?: ?string,\n|}>;\n\n/**\n * A component used to select a single value from a range of values.\n *\n * ### Usage\n *\n * The example below shows how to use `Slider` to change\n * a value used by `Text`. The value is stored using\n * the state of the root component (`App`). The same component\n * subscribes to the `onValueChange`  of `Slider` and changes\n * the value using `setState`.\n *\n *```\n * import React from 'react';\n * import { StyleSheet, Text, View, Slider } from 'react-native';\n *\n * export default class App extends React.Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {\n *       value: 50\n *     }\n *   }\n *\n *   change(value) {\n *     this.setState(() => {\n *       return {\n *         value: parseFloat(value)\n *       };\n *     });\n *   }\n *\n *   render() {\n *     const {value} = this.state;\n *     return (\n *       <View style={styles.container}>\n *         <Text style={styles.text}>{String(value)}</Text>\n *         <Slider\n *           step={1}\n *           maximumValue={100}\n *           onValueChange={this.change.bind(this)}\n *           value={value} />\n *       </View>\n *     );\n *   }\n * }\n *\n * const styles = StyleSheet.create({\n *   container: {\n *     flex: 1,\n *     flexDirection: 'column',\n *     justifyContent: 'center'\n *   },\n *   text: {\n *     fontSize: 50,\n *     textAlign: 'center'\n *   }\n * });\n *```\n *\n */\nconst Slider = (\n  props: Props,\n  forwardedRef?: ?React.Ref<typeof SliderNativeComponent>,\n) => {\n  const style = StyleSheet.compose(styles.slider, props.style);\n\n  const {\n    disabled = false,\n    value = 0.5,\n    minimumValue = 0,\n    maximumValue = 1,\n    step = 0,\n    onValueChange,\n    onSlidingComplete,\n    ...localProps\n  } = props;\n\n  const onValueChangeEvent = onValueChange\n    ? (event: Event) => {\n        let userEvent = true;\n        if (Platform.OS === 'android') {\n          // On Android there's a special flag telling us the user is\n          // dragging the slider.\n          userEvent =\n            event.nativeEvent.fromUser != null && event.nativeEvent.fromUser;\n        }\n        userEvent && onValueChange(event.nativeEvent.value);\n      }\n    : null;\n\n  const onChangeEvent = onValueChangeEvent;\n  const onSlidingCompleteEvent = onSlidingComplete\n    ? (event: Event) => {\n        onSlidingComplete(event.nativeEvent.value);\n      }\n    : null;\n\n  return (\n    <SliderNativeComponent\n      {...localProps}\n      // TODO: Reconcile these across the two platforms.\n      enabled={!disabled}\n      disabled={disabled}\n      maximumValue={maximumValue}\n      minimumValue={minimumValue}\n      onChange={onChangeEvent}\n      onResponderTerminationRequest={() => false}\n      onSlidingComplete={onSlidingCompleteEvent}\n      onStartShouldSetResponder={() => true}\n      onValueChange={onValueChangeEvent}\n      ref={forwardedRef}\n      step={step}\n      style={style}\n      value={value}\n    />\n  );\n};\n\nconst SliderWithRef: React.AbstractComponent<\n  Props,\n  React.ElementRef<typeof SliderNativeComponent>,\n> = React.forwardRef(Slider);\n\nlet styles;\nif (Platform.OS === 'ios') {\n  styles = StyleSheet.create({\n    slider: {\n      height: 40,\n    },\n  });\n} else {\n  styles = StyleSheet.create({\n    slider: {},\n  });\n}\n\nmodule.exports = SliderWithRef;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {\n  BubblingEventHandler,\n  DirectEventHandler,\n  Double,\n  WithDefault,\n} from '../../Types/CodegenTypes';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ImageSource} from '../../Image/ImageSource';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype Event = $ReadOnly<{|\n  value: Double,\n  fromUser?: boolean,\n|}>;\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  // Props\n  disabled?: WithDefault<boolean, false>,\n  enabled?: WithDefault<boolean, true>,\n  maximumTrackImage?: ?ImageSource,\n  maximumTrackTintColor?: ?ColorValue,\n  maximumValue?: WithDefault<Double, 1>,\n  minimumTrackImage?: ?ImageSource,\n  minimumTrackTintColor?: ?ColorValue,\n  minimumValue?: WithDefault<Double, 0>,\n  step?: WithDefault<Double, 0>,\n  testID?: WithDefault<string, ''>,\n  thumbImage?: ?ImageSource,\n  thumbTintColor?: ?ColorValue,\n  trackImage?: ?ImageSource,\n  value?: WithDefault<Double, 0>,\n\n  // Events\n  onChange?: ?BubblingEventHandler<Event>,\n  onValueChange?: ?BubblingEventHandler<Event, 'paperValueChange'>,\n  onSlidingComplete?: ?DirectEventHandler<Event, 'paperSlidingComplete'>,\n|}>;\n\nexport default (codegenNativeComponent<NativeProps>('Slider', {\n  interfaceOnly: true,\n  paperComponentName: 'RCTSlider',\n}): HostComponent<NativeProps>);\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\n\nconst invariant = require('invariant');\nconst processColor = require('../../StyleSheet/processColor');\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\n\nimport NativeStatusBarManagerAndroid from './NativeStatusBarManagerAndroid';\nimport NativeStatusBarManagerIOS from './NativeStatusBarManagerIOS';\n\n/**\n * Status bar style\n */\nexport type StatusBarStyle = $Keys<{\n  /**\n   * Default status bar style (dark for iOS, light for Android)\n   */\n  default: string,\n  /**\n   * Dark background, white texts and icons\n   */\n  'light-content': string,\n  /**\n   * Light background, dark texts and icons\n   */\n  'dark-content': string,\n  ...\n}>;\n\n/**\n * Status bar animation\n */\nexport type StatusBarAnimation = $Keys<{\n  /**\n   * No animation\n   */\n  none: string,\n  /**\n   * Fade animation\n   */\n  fade: string,\n  /**\n   * Slide animation\n   */\n  slide: string,\n  ...\n}>;\n\ntype AndroidProps = $ReadOnly<{|\n  /**\n   * The background color of the status bar.\n   * @platform android\n   */\n  backgroundColor?: ?ColorValue,\n  /**\n   * If the status bar is translucent.\n   * When translucent is set to true, the app will draw under the status bar.\n   * This is useful when using a semi transparent status bar color.\n   *\n   * @platform android\n   */\n  translucent?: ?boolean,\n|}>;\n\ntype IOSProps = $ReadOnly<{|\n  /**\n   * If the network activity indicator should be visible.\n   *\n   * @platform ios\n   */\n  networkActivityIndicatorVisible?: ?boolean,\n  /**\n   * The transition effect when showing and hiding the status bar using the `hidden`\n   * prop. Defaults to 'fade'.\n   *\n   * @platform ios\n   */\n  showHideTransition?: ?('fade' | 'slide' | 'none'),\n|}>;\n\ntype Props = $ReadOnly<{|\n  ...AndroidProps,\n  ...IOSProps,\n  /**\n   * If the status bar is hidden.\n   */\n  hidden?: ?boolean,\n  /**\n   * If the transition between status bar property changes should be animated.\n   * Supported for backgroundColor, barStyle and hidden.\n   */\n  animated?: ?boolean,\n  /**\n   * Sets the color of the status bar text.\n   */\n  barStyle?: ?('default' | 'light-content' | 'dark-content'),\n|}>;\n\n/**\n * Merges the prop stack with the default values.\n */\nfunction mergePropsStack(\n  propsStack: Array<Object>,\n  defaultValues: Object,\n): Object {\n  return propsStack.reduce((prev, cur) => {\n    for (const prop in cur) {\n      if (cur[prop] != null) {\n        prev[prop] = cur[prop];\n      }\n    }\n    return prev;\n  }, Object.assign({}, defaultValues));\n}\n\n/**\n * Returns an object to insert in the props stack from the props\n * and the transition/animation info.\n */\nfunction createStackEntry(props: any): any {\n  return {\n    backgroundColor:\n      props.backgroundColor != null\n        ? {\n            value: props.backgroundColor,\n            animated: props.animated,\n          }\n        : null,\n    barStyle:\n      props.barStyle != null\n        ? {\n            value: props.barStyle,\n            animated: props.animated,\n          }\n        : null,\n    translucent: props.translucent,\n    hidden:\n      props.hidden != null\n        ? {\n            value: props.hidden,\n            animated: props.animated,\n            transition: props.showHideTransition,\n          }\n        : null,\n    networkActivityIndicatorVisible: props.networkActivityIndicatorVisible,\n  };\n}\n\n/**\n * Component to control the app status bar.\n *\n * ### Usage with Navigator\n *\n * It is possible to have multiple `StatusBar` components mounted at the same\n * time. The props will be merged in the order the `StatusBar` components were\n * mounted. One use case is to specify status bar styles per route using `Navigator`.\n *\n * ```\n *  <View>\n *    <StatusBar\n *      backgroundColor=\"blue\"\n *      barStyle=\"light-content\"\n *    />\n *    <Navigator\n *      initialRoute={{statusBarHidden: true}}\n *      renderScene={(route, navigator) =>\n *        <View>\n *          <StatusBar hidden={route.statusBarHidden} />\n *          ...\n *        </View>\n *      }\n *    />\n *  </View>\n * ```\n *\n * ### Imperative API\n *\n * For cases where using a component is not ideal, there are static methods\n * to manipulate the `StatusBar` display stack. These methods have the same\n * behavior as mounting and unmounting a `StatusBar` component.\n *\n * For example, you can call `StatusBar.pushStackEntry` to update the status bar\n * before launching a third-party native UI component, and then call\n * `StatusBar.popStackEntry` when completed.\n *\n * ```\n * const openThirdPartyBugReporter = async () => {\n *   // The bug reporter has a dark background, so we push a new status bar style.\n *   const stackEntry = StatusBar.pushStackEntry({barStyle: 'light-content'});\n *\n *   // `open` returns a promise that resolves when the UI is dismissed.\n *   await BugReporter.open();\n *\n *   // Don't forget to call `popStackEntry` when you're done.\n *   StatusBar.popStackEntry(stackEntry);\n * };\n * ```\n *\n * There is a legacy imperative API that enables you to manually update the\n * status bar styles. However, the legacy API does not update the internal\n * `StatusBar` display stack, which means that any changes will be overridden\n * whenever a `StatusBar` component is mounted or unmounted.\n *\n * It is strongly advised that you use `pushStackEntry`, `popStackEntry`, or\n * `replaceStackEntry` instead of the static methods beginning with `set`.\n *\n * ### Constants\n *\n * `currentHeight` (Android only) The height of the status bar.\n */\nclass StatusBar extends React.Component<Props> {\n  static _propsStack = [];\n\n  static _defaultProps = createStackEntry({\n    animated: false,\n    showHideTransition: 'fade',\n    backgroundColor:\n      Platform.OS === 'android'\n        ? NativeStatusBarManagerAndroid.getConstants()\n            .DEFAULT_BACKGROUND_COLOR ?? 'black'\n        : 'black',\n    barStyle: 'default',\n    translucent: false,\n    hidden: false,\n    networkActivityIndicatorVisible: false,\n  });\n\n  // Timer for updating the native module values at the end of the frame.\n  static _updateImmediate = null;\n\n  // The current merged values from the props stack.\n  static _currentValues = null;\n\n  // TODO(janic): Provide a real API to deal with status bar height. See the\n  // discussion in #6195.\n  /**\n   * The current height of the status bar on the device.\n   *\n   * @platform android\n   */\n  static currentHeight: ?number =\n    Platform.OS === 'android'\n      ? NativeStatusBarManagerAndroid.getConstants().HEIGHT\n      : null;\n\n  // Provide an imperative API as static functions of the component.\n  // See the corresponding prop for more detail.\n\n  /**\n   * Show or hide the status bar\n   * @param hidden Hide the status bar.\n   * @param animation Optional animation when\n   *    changing the status bar hidden property.\n   */\n  static setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n    animation = animation || 'none';\n    StatusBar._defaultProps.hidden.value = hidden;\n    if (Platform.OS === 'ios') {\n      NativeStatusBarManagerIOS.setHidden(hidden, animation);\n    } else if (Platform.OS === 'android') {\n      NativeStatusBarManagerAndroid.setHidden(hidden);\n    }\n  }\n\n  /**\n   * Set the status bar style\n   * @param style Status bar style to set\n   * @param animated Animate the style change.\n   */\n  static setBarStyle(style: StatusBarStyle, animated?: boolean) {\n    animated = animated || false;\n    StatusBar._defaultProps.barStyle.value = style;\n    if (Platform.OS === 'ios') {\n      NativeStatusBarManagerIOS.setStyle(style, animated);\n    } else if (Platform.OS === 'android') {\n      NativeStatusBarManagerAndroid.setStyle(style);\n    }\n  }\n\n  /**\n   * Control the visibility of the network activity indicator\n   * @param visible Show the indicator.\n   */\n  static setNetworkActivityIndicatorVisible(visible: boolean) {\n    if (Platform.OS !== 'ios') {\n      console.warn(\n        '`setNetworkActivityIndicatorVisible` is only available on iOS',\n      );\n      return;\n    }\n    StatusBar._defaultProps.networkActivityIndicatorVisible = visible;\n    NativeStatusBarManagerIOS.setNetworkActivityIndicatorVisible(visible);\n  }\n\n  /**\n   * Set the background color for the status bar\n   * @param color Background color.\n   * @param animated Animate the style change.\n   */\n  static setBackgroundColor(color: string, animated?: boolean) {\n    if (Platform.OS !== 'android') {\n      console.warn('`setBackgroundColor` is only available on Android');\n      return;\n    }\n    animated = animated || false;\n    StatusBar._defaultProps.backgroundColor.value = color;\n\n    const processedColor = processColor(color);\n    if (processedColor == null) {\n      console.warn(\n        `\\`StatusBar.setBackgroundColor\\`: Color ${color} parsed to null or undefined`,\n      );\n      return;\n    }\n    invariant(\n      typeof processedColor === 'number',\n      'Unexpected color given for StatusBar.setBackgroundColor',\n    );\n\n    NativeStatusBarManagerAndroid.setColor(processedColor, animated);\n  }\n\n  /**\n   * Control the translucency of the status bar\n   * @param translucent Set as translucent.\n   */\n  static setTranslucent(translucent: boolean) {\n    if (Platform.OS !== 'android') {\n      console.warn('`setTranslucent` is only available on Android');\n      return;\n    }\n    StatusBar._defaultProps.translucent = translucent;\n    NativeStatusBarManagerAndroid.setTranslucent(translucent);\n  }\n\n  /**\n   * Push a StatusBar entry onto the stack.\n   * The return value should be passed to `popStackEntry` when complete.\n   *\n   * @param props Object containing the StatusBar props to use in the stack entry.\n   */\n  static pushStackEntry(props: any): any {\n    const entry = createStackEntry(props);\n    StatusBar._propsStack.push(entry);\n    StatusBar._updatePropsStack();\n    return entry;\n  }\n\n  /**\n   * Pop a StatusBar entry from the stack.\n   *\n   * @param entry Entry returned from `pushStackEntry`.\n   */\n  static popStackEntry(entry: any) {\n    const index = StatusBar._propsStack.indexOf(entry);\n    if (index !== -1) {\n      StatusBar._propsStack.splice(index, 1);\n    }\n    StatusBar._updatePropsStack();\n  }\n\n  /**\n   * Replace an existing StatusBar stack entry with new props.\n   *\n   * @param entry Entry returned from `pushStackEntry` to replace.\n   * @param props Object containing the StatusBar props to use in the replacement stack entry.\n   */\n  static replaceStackEntry(entry: any, props: any): any {\n    const newEntry = createStackEntry(props);\n    const index = StatusBar._propsStack.indexOf(entry);\n    if (index !== -1) {\n      StatusBar._propsStack[index] = newEntry;\n    }\n    StatusBar._updatePropsStack();\n    return newEntry;\n  }\n\n  static defaultProps: {|\n    animated: boolean,\n    showHideTransition: $TEMPORARY$string<'fade'>,\n  |} = {\n    animated: false,\n    showHideTransition: 'fade',\n  };\n\n  _stackEntry = null;\n\n  componentDidMount() {\n    // Every time a StatusBar component is mounted, we push it's prop to a stack\n    // and always update the native status bar with the props from the top of then\n    // stack. This allows having multiple StatusBar components and the one that is\n    // added last or is deeper in the view hierarchy will have priority.\n    this._stackEntry = StatusBar.pushStackEntry(this.props);\n  }\n\n  componentWillUnmount() {\n    // When a StatusBar is unmounted, remove itself from the stack and update\n    // the native bar with the next props.\n    StatusBar.popStackEntry(this._stackEntry);\n  }\n\n  componentDidUpdate() {\n    this._stackEntry = StatusBar.replaceStackEntry(\n      this._stackEntry,\n      this.props,\n    );\n  }\n\n  /**\n   * Updates the native status bar with the props from the stack.\n   */\n  static _updatePropsStack = () => {\n    // Send the update to the native module only once at the end of the frame.\n    clearImmediate(StatusBar._updateImmediate);\n    StatusBar._updateImmediate = setImmediate(() => {\n      const oldProps = StatusBar._currentValues;\n      const mergedProps = mergePropsStack(\n        StatusBar._propsStack,\n        StatusBar._defaultProps,\n      );\n\n      // Update the props that have changed using the merged values from the props stack.\n      if (Platform.OS === 'ios') {\n        if (\n          !oldProps ||\n          oldProps.barStyle.value !== mergedProps.barStyle.value\n        ) {\n          NativeStatusBarManagerIOS.setStyle(\n            mergedProps.barStyle.value,\n            mergedProps.barStyle.animated || false,\n          );\n        }\n        if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) {\n          NativeStatusBarManagerIOS.setHidden(\n            mergedProps.hidden.value,\n            mergedProps.hidden.animated\n              ? mergedProps.hidden.transition\n              : 'none',\n          );\n        }\n\n        if (\n          !oldProps ||\n          oldProps.networkActivityIndicatorVisible !==\n            mergedProps.networkActivityIndicatorVisible\n        ) {\n          NativeStatusBarManagerIOS.setNetworkActivityIndicatorVisible(\n            mergedProps.networkActivityIndicatorVisible,\n          );\n        }\n      } else if (Platform.OS === 'android') {\n        //todo(T60684787): Add back optimization to only update bar style and\n        //background color if the new value is different from the old value.\n        NativeStatusBarManagerAndroid.setStyle(mergedProps.barStyle.value);\n        const processedColor = processColor(mergedProps.backgroundColor.value);\n        if (processedColor == null) {\n          console.warn(\n            `\\`StatusBar._updatePropsStack\\`: Color ${mergedProps.backgroundColor.value} parsed to null or undefined`,\n          );\n        } else {\n          invariant(\n            typeof processedColor === 'number',\n            'Unexpected color given in StatusBar._updatePropsStack',\n          );\n          NativeStatusBarManagerAndroid.setColor(\n            processedColor,\n            mergedProps.backgroundColor.animated,\n          );\n        }\n        if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) {\n          NativeStatusBarManagerAndroid.setHidden(mergedProps.hidden.value);\n        }\n        if (!oldProps || oldProps.translucent !== mergedProps.translucent) {\n          NativeStatusBarManagerAndroid.setTranslucent(mergedProps.translucent);\n        }\n      }\n      // Update the current prop values.\n      StatusBar._currentValues = mergedProps;\n    });\n  };\n\n  render(): React.Node {\n    return null;\n  }\n}\n\nmodule.exports = StatusBar;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR: number,\n  |};\n  +setColor: (color: number, animated: boolean) => void;\n  +setTranslucent: (translucent: boolean) => void;\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   */\n  +setStyle: (statusBarStyle?: ?string) => void;\n  +setHidden: (hidden: boolean) => void;\n}\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>('StatusBarManager');\nlet constants = null;\n\nconst NativeStatusBarManager = {\n  getConstants(): {|\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR?: number,\n  |} {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n    return constants;\n  },\n\n  setColor(color: number, animated: boolean): void {\n    NativeModule.setColor(color, animated);\n  },\n\n  setTranslucent(translucent: boolean): void {\n    NativeModule.setTranslucent(translucent);\n  },\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   */\n  setStyle(statusBarStyle?: ?string): void {\n    NativeModule.setStyle(statusBarStyle);\n  },\n\n  setHidden(hidden: boolean): void {\n    NativeModule.setHidden(hidden);\n  },\n};\n\nexport default NativeStatusBarManager;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR?: number,\n  |};\n\n  // TODO(T47754272) Can we remove this method?\n  +getHeight: (callback: (result: {|height: number|}) => void) => void;\n  +setNetworkActivityIndicatorVisible: (visible: boolean) => void;\n  +addListener: (eventType: string) => void;\n  +removeListeners: (count: number) => void;\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   *    - 'light-content'\n   */\n  +setStyle: (statusBarStyle?: ?string, animated: boolean) => void;\n  /**\n   *  - withAnimation can be: 'none' | 'fade' | 'slide'\n   */\n  +setHidden: (hidden: boolean, withAnimation: string) => void;\n}\n\nconst NativeModule = TurboModuleRegistry.getEnforcing<Spec>('StatusBarManager');\nlet constants = null;\n\nconst NativeStatusBarManager = {\n  getConstants(): {|\n    +HEIGHT: number,\n    +DEFAULT_BACKGROUND_COLOR?: number,\n  |} {\n    if (constants == null) {\n      constants = NativeModule.getConstants();\n    }\n    return constants;\n  },\n\n  // TODO(T47754272) Can we remove this method?\n  getHeight(callback: (result: {|height: number|}) => void): void {\n    NativeModule.getHeight(callback);\n  },\n\n  setNetworkActivityIndicatorVisible(visible: boolean): void {\n    NativeModule.setNetworkActivityIndicatorVisible(visible);\n  },\n\n  addListener(eventType: string): void {\n    NativeModule.addListener(eventType);\n  },\n\n  removeListeners(count: number): void {\n    NativeModule.removeListeners(count);\n  },\n\n  /**\n   *  - statusBarStyles can be:\n   *    - 'default'\n   *    - 'dark-content'\n   *    - 'light-content'\n   */\n  setStyle(statusBarStyle?: ?string, animated: boolean): void {\n    NativeModule.setStyle(statusBarStyle, animated);\n  },\n\n  /**\n   *  - withAnimation can be: 'none' | 'fade' | 'slide'\n   */\n  setHidden(hidden: boolean, withAnimation: string): void {\n    NativeModule.setHidden(hidden, withAnimation);\n  },\n};\n\nexport default NativeStatusBarManager;\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 * @flow strict-local\n * @format\n * @generate-docs\n */\n\n'use strict';\n\nimport Platform from '../../Utilities/Platform';\nimport * as React from 'react';\nimport StyleSheet from '../../StyleSheet/StyleSheet';\n\nimport AndroidSwitchNativeComponent, {\n  Commands as AndroidSwitchCommands,\n} from './AndroidSwitchNativeComponent';\nimport SwitchNativeComponent, {\n  Commands as SwitchCommands,\n} from './SwitchNativeComponent';\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {SyntheticEvent} from '../../Types/CoreEventTypes';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype SwitchChangeEvent = SyntheticEvent<\n  $ReadOnly<{|\n    value: boolean,\n  |}>,\n>;\n\nexport type Props = $ReadOnly<{|\n  ...ViewProps,\n\n  /**\n    If true the user won't be able to toggle the switch.\n\n    @default false\n   */\n  disabled?: ?boolean,\n\n  /**\n    The value of the switch. If true the switch will be turned on.\n\n    @default false\n   */\n  value?: ?boolean,\n\n  /**\n    Color of the foreground switch grip. If this is set on iOS, the switch grip will lose its drop shadow.\n   */\n  thumbColor?: ?ColorValue,\n\n  /**\n    Custom colors for the switch track.\n\n    _iOS_: When the switch value is false, the track shrinks into the border. If you want to change the\n    color of the background exposed by the shrunken track, use\n     [`ios_backgroundColor`](https://reactnative.dev/docs/switch#ios_backgroundColor).\n   */\n  trackColor?: ?$ReadOnly<{|\n    false?: ?ColorValue,\n    true?: ?ColorValue,\n  |}>,\n\n  /**\n    On iOS, custom color for the background. This background color can be\n    seen either when the switch value is false or when the switch is\n    disabled (and the switch is translucent).\n   */\n  ios_backgroundColor?: ?ColorValue,\n\n  /**\n    Invoked when the user tries to change the value of the switch. Receives\n    the change event as an argument. If you want to only receive the new\n    value, use `onValueChange` instead.\n   */\n  onChange?: ?(event: SwitchChangeEvent) => Promise<void> | void,\n\n  /**\n    Invoked when the user tries to change the value of the switch. Receives\n    the new value as an argument. If you want to instead receive an event,\n    use `onChange`.\n   */\n  onValueChange?: ?(value: boolean) => Promise<void> | void,\n|}>;\n\n/**\n  Renders a boolean input.\n\n  This is a controlled component that requires an `onValueChange`\n  callback that updates the `value` prop in order for the component to\n  reflect user actions. If the `value` prop is not updated, the\n  component will continue to render the supplied `value` prop instead of\n  the expected result of any user actions.\n\n  ```SnackPlayer name=Switch\n  import React, { useState } from \"react\";\n  import { View, Switch, StyleSheet } from \"react-native\";\n\n  const App = () => {\n    const [isEnabled, setIsEnabled] = useState(false);\n    const toggleSwitch = () => setIsEnabled(previousState => !previousState);\n\n    return (\n      <View style={styles.container}>\n        <Switch\n          trackColor={{ false: \"#767577\", true: \"#81b0ff\" }}\n          thumbColor={isEnabled ? \"#f5dd4b\" : \"#f4f3f4\"}\n          ios_backgroundColor=\"#3e3e3e\"\n          onValueChange={toggleSwitch}\n          value={isEnabled}\n        />\n      </View>\n    );\n  }\n\n  const styles = StyleSheet.create({\n    container: {\n      flex: 1,\n      alignItems: \"center\",\n      justifyContent: \"center\"\n    }\n  });\n\n  export default App;\n  ```\n */\nclass Switch extends React.Component<Props> {\n  _nativeSwitchRef: ?React.ElementRef<\n    typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,\n  >;\n  _lastNativeValue: ?boolean;\n\n  render(): React.Node {\n    const {\n      disabled,\n      ios_backgroundColor,\n      onChange,\n      onValueChange,\n      style,\n      thumbColor,\n      trackColor,\n      value,\n      ...props\n    } = this.props;\n\n    const trackColorForFalse = trackColor?.false;\n    const trackColorForTrue = trackColor?.true;\n\n    if (Platform.OS === 'android') {\n      const platformProps = {\n        enabled: disabled !== true,\n        on: value === true,\n        style,\n        thumbTintColor: thumbColor,\n        trackColorForFalse: trackColorForFalse,\n        trackColorForTrue: trackColorForTrue,\n        trackTintColor: value === true ? trackColorForTrue : trackColorForFalse,\n      };\n\n      return (\n        <AndroidSwitchNativeComponent\n          {...props}\n          {...platformProps}\n          accessibilityRole={props.accessibilityRole ?? 'switch'}\n          onChange={this._handleChange}\n          onResponderTerminationRequest={returnsFalse}\n          onStartShouldSetResponder={returnsTrue}\n          ref={this._handleSwitchNativeComponentRef}\n        />\n      );\n    } else {\n      const platformProps = {\n        disabled,\n        onTintColor: trackColorForTrue,\n        style: StyleSheet.compose(\n          {height: 31, width: 51},\n          StyleSheet.compose(\n            style,\n            ios_backgroundColor == null\n              ? null\n              : {\n                  backgroundColor: ios_backgroundColor,\n                  borderRadius: 16,\n                },\n          ),\n        ),\n        thumbTintColor: thumbColor,\n        tintColor: trackColorForFalse,\n        value: value === true,\n      };\n\n      return (\n        <SwitchNativeComponent\n          {...props}\n          {...platformProps}\n          accessibilityRole={props.accessibilityRole ?? 'switch'}\n          onChange={this._handleChange}\n          onResponderTerminationRequest={returnsFalse}\n          onStartShouldSetResponder={returnsTrue}\n          ref={this._handleSwitchNativeComponentRef}\n        />\n      );\n    }\n  }\n\n  componentDidUpdate() {\n    // This is necessary in case native updates the switch and JS decides\n    // that the update should be ignored and we should stick with the value\n    // that we have in JS.\n    const nativeProps = {};\n    const value = this.props.value === true;\n\n    if (this._lastNativeValue !== value) {\n      nativeProps.value = value;\n    }\n\n    if (\n      Object.keys(nativeProps).length > 0 &&\n      this._nativeSwitchRef &&\n      this._nativeSwitchRef.setNativeProps\n    ) {\n      if (Platform.OS === 'android') {\n        AndroidSwitchCommands.setNativeValue(\n          this._nativeSwitchRef,\n          nativeProps.value,\n        );\n      } else {\n        SwitchCommands.setValue(this._nativeSwitchRef, nativeProps.value);\n      }\n    }\n  }\n\n  _handleChange = (event: SwitchChangeEvent) => {\n    if (this.props.onChange != null) {\n      this.props.onChange(event);\n    }\n\n    if (this.props.onValueChange != null) {\n      this.props.onValueChange(event.nativeEvent.value);\n    }\n\n    this._lastNativeValue = event.nativeEvent.value;\n    this.forceUpdate();\n  };\n\n  _handleSwitchNativeComponentRef = (\n    ref: ?React.ElementRef<\n      typeof SwitchNativeComponent | typeof AndroidSwitchNativeComponent,\n    >,\n  ) => {\n    this._nativeSwitchRef = ref;\n  };\n}\n\nconst returnsFalse = () => false;\nconst returnsTrue = () => true;\n\nmodule.exports = Switch;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\n\nimport type {\n  WithDefault,\n  BubblingEventHandler,\n} from 'react-native/Libraries/Types/CodegenTypes';\n\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type {HostComponent} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';\n\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\n\ntype SwitchChangeEvent = $ReadOnly<{|\n  value: boolean,\n|}>;\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  // Props\n  disabled?: WithDefault<boolean, false>,\n  enabled?: WithDefault<boolean, true>,\n  thumbColor?: ?ColorValue,\n  trackColorForFalse?: ?ColorValue,\n  trackColorForTrue?: ?ColorValue,\n  value?: WithDefault<boolean, false>,\n  on?: WithDefault<boolean, false>,\n  thumbTintColor?: ?ColorValue,\n  trackTintColor?: ?ColorValue,\n\n  // Events\n  onChange?: BubblingEventHandler<SwitchChangeEvent>,\n|}>;\n\ntype NativeType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  +setNativeValue: (\n    viewRef: React.ElementRef<NativeType>,\n    value: boolean,\n  ) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setNativeValue'],\n});\n\nexport default (codegenNativeComponent<NativeProps>('AndroidSwitch', {\n  interfaceOnly: true,\n}): NativeType);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {BubblingEventHandler, WithDefault} from '../../Types/CodegenTypes';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport * as React from 'react';\n\nimport codegenNativeComponent from '../../Utilities/codegenNativeComponent';\nimport codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\n\ntype SwitchChangeEvent = $ReadOnly<{|\n  value: boolean,\n|}>;\n\ntype NativeProps = $ReadOnly<{|\n  ...ViewProps,\n\n  // Props\n  disabled?: WithDefault<boolean, false>,\n  value?: WithDefault<boolean, false>,\n  tintColor?: ?ColorValue,\n  onTintColor?: ?ColorValue,\n  thumbTintColor?: ?ColorValue,\n\n  // Deprecated props\n  thumbColor?: ?ColorValue,\n  trackColorForFalse?: ?ColorValue,\n  trackColorForTrue?: ?ColorValue,\n\n  // Events\n  onChange?: ?BubblingEventHandler<SwitchChangeEvent>,\n|}>;\n\ntype ComponentType = HostComponent<NativeProps>;\n\ninterface NativeCommands {\n  +setValue: (viewRef: React.ElementRef<ComponentType>, value: boolean) => void;\n}\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['setValue'],\n});\n\nexport default (codegenNativeComponent<NativeProps>('Switch', {\n  paperComponentName: 'RCTSwitch',\n  excludedPlatforms: ['android'],\n}): ComponentType);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedTextInputPropTypes = require('../../DeprecatedPropTypes/DeprecatedTextInputPropTypes');\nconst Platform = require('../../Utilities/Platform');\nconst React = require('react');\nconst StyleSheet = require('../../StyleSheet/StyleSheet');\nconst Text = require('../../Text/Text');\nconst TextAncestor = require('../../Text/TextAncestor');\nconst TextInputState = require('./TextInputState');\nconst TouchableWithoutFeedback = require('../Touchable/TouchableWithoutFeedback');\n\nconst invariant = require('invariant');\nconst nullthrows = require('nullthrows');\nconst setAndForwardRef = require('../../Utilities/setAndForwardRef');\n\nimport type {TextStyleProp, ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport type {ViewProps} from '../View/ViewPropTypes';\nimport type {SyntheticEvent, ScrollEvent} from '../../Types/CoreEventTypes';\nimport type {PressEvent} from '../../Types/CoreEventTypes';\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport type {TextInputNativeCommands} from './TextInputNativeCommands';\n\nconst {useLayoutEffect, useRef, useState} = React;\n\ntype ReactRefSetter<T> = {current: null | T, ...} | ((ref: null | T) => mixed);\n\nlet AndroidTextInput;\nlet AndroidTextInputCommands;\nlet RCTSinglelineTextInputView;\nlet RCTSinglelineTextInputNativeCommands;\nlet RCTMultilineTextInputView;\nlet RCTMultilineTextInputNativeCommands;\n\nif (Platform.OS === 'android') {\n  AndroidTextInput = require('./AndroidTextInputNativeComponent').default;\n  AndroidTextInputCommands = require('./AndroidTextInputNativeComponent')\n    .Commands;\n} else if (Platform.OS === 'ios') {\n  RCTSinglelineTextInputView = require('./RCTSingelineTextInputNativeComponent')\n    .default;\n  RCTSinglelineTextInputNativeCommands = require('./RCTSingelineTextInputNativeComponent')\n    .Commands;\n  RCTMultilineTextInputView = require('./RCTMultilineTextInputNativeComponent')\n    .default;\n  RCTMultilineTextInputNativeCommands = require('./RCTMultilineTextInputNativeComponent')\n    .Commands;\n}\n\nexport type ChangeEvent = SyntheticEvent<\n  $ReadOnly<{|\n    eventCount: number,\n    target: number,\n    text: string,\n  |}>,\n>;\n\nexport type TextInputEvent = SyntheticEvent<\n  $ReadOnly<{|\n    eventCount: number,\n    previousText: string,\n    range: $ReadOnly<{|\n      start: number,\n      end: number,\n    |}>,\n    target: number,\n    text: string,\n  |}>,\n>;\n\nexport type ContentSizeChangeEvent = SyntheticEvent<\n  $ReadOnly<{|\n    target: number,\n    contentSize: $ReadOnly<{|\n      width: number,\n      height: number,\n    |}>,\n  |}>,\n>;\n\ntype TargetEvent = SyntheticEvent<\n  $ReadOnly<{|\n    target: number,\n  |}>,\n>;\n\nexport type BlurEvent = TargetEvent;\nexport type FocusEvent = TargetEvent;\n\ntype Selection = $ReadOnly<{|\n  start: number,\n  end: number,\n|}>;\n\nexport type SelectionChangeEvent = SyntheticEvent<\n  $ReadOnly<{|\n    selection: Selection,\n    target: number,\n  |}>,\n>;\n\nexport type KeyPressEvent = SyntheticEvent<\n  $ReadOnly<{|\n    key: string,\n    target?: ?number,\n    eventCount?: ?number,\n  |}>,\n>;\n\nexport type EditingEvent = SyntheticEvent<\n  $ReadOnly<{|\n    eventCount: number,\n    text: string,\n    target: number,\n  |}>,\n>;\n\ntype DataDetectorTypesType =\n  | 'phoneNumber'\n  | 'link'\n  | 'address'\n  | 'calendarEvent'\n  | 'none'\n  | 'all';\n\nexport type KeyboardType =\n  // Cross Platform\n  | 'default'\n  | 'email-address'\n  | 'numeric'\n  | 'phone-pad'\n  | 'number-pad'\n  | 'decimal-pad'\n  // iOS-only\n  | 'ascii-capable'\n  | 'numbers-and-punctuation'\n  | 'url'\n  | 'name-phone-pad'\n  | 'twitter'\n  | 'web-search'\n  // iOS 10+ only\n  | 'ascii-capable-number-pad'\n  // Android-only\n  | 'visible-password';\n\nexport type ReturnKeyType =\n  // Cross Platform\n  | 'done'\n  | 'go'\n  | 'next'\n  | 'search'\n  | 'send'\n  // Android-only\n  | 'none'\n  | 'previous'\n  // iOS-only\n  | 'default'\n  | 'emergency-call'\n  | 'google'\n  | 'join'\n  | 'route'\n  | 'yahoo';\n\nexport type AutoCapitalize = 'none' | 'sentences' | 'words' | 'characters';\n\nexport type TextContentType =\n  | 'none'\n  | 'URL'\n  | 'addressCity'\n  | 'addressCityAndState'\n  | 'addressState'\n  | 'countryName'\n  | 'creditCardNumber'\n  | 'emailAddress'\n  | 'familyName'\n  | 'fullStreetAddress'\n  | 'givenName'\n  | 'jobTitle'\n  | 'location'\n  | 'middleName'\n  | 'name'\n  | 'namePrefix'\n  | 'nameSuffix'\n  | 'nickname'\n  | 'organizationName'\n  | 'postalCode'\n  | 'streetAddressLine1'\n  | 'streetAddressLine2'\n  | 'sublocality'\n  | 'telephoneNumber'\n  | 'username'\n  | 'password'\n  | 'newPassword'\n  | 'oneTimeCode';\n\ntype PasswordRules = string;\n\ntype IOSProps = $ReadOnly<{|\n  /**\n   * If `false`, disables spell-check style (i.e. red underlines).\n   * The default value is inherited from `autoCorrect`.\n   * @platform ios\n   */\n  spellCheck?: ?boolean,\n\n  /**\n   * Determines the color of the keyboard.\n   * @platform ios\n   */\n  keyboardAppearance?: ?('default' | 'light' | 'dark'),\n\n  /**\n   * If `true`, the keyboard disables the return key when there is no text and\n   * automatically enables it when there is text. The default value is `false`.\n   * @platform ios\n   */\n  enablesReturnKeyAutomatically?: ?boolean,\n\n  /**\n   * When the clear button should appear on the right side of the text view.\n   * This property is supported only for single-line TextInput component.\n   * @platform ios\n   */\n  clearButtonMode?: ?('never' | 'while-editing' | 'unless-editing' | 'always'),\n\n  /**\n   * If `true`, clears the text field automatically when editing begins.\n   * @platform ios\n   */\n  clearTextOnFocus?: ?boolean,\n\n  /**\n   * Determines the types of data converted to clickable URLs in the text input.\n   * Only valid if `multiline={true}` and `editable={false}`.\n   * By default no data types are detected.\n   *\n   * You can provide one type or an array of many types.\n   *\n   * Possible values for `dataDetectorTypes` are:\n   *\n   * - `'phoneNumber'`\n   * - `'link'`\n   * - `'address'`\n   * - `'calendarEvent'`\n   * - `'none'`\n   * - `'all'`\n   *\n   * @platform ios\n   */\n  dataDetectorTypes?:\n    | ?DataDetectorTypesType\n    | $ReadOnlyArray<DataDetectorTypesType>,\n\n  /**\n   * An optional identifier which links a custom InputAccessoryView to\n   * this text input. The InputAccessoryView is rendered above the\n   * keyboard when this text input is focused.\n   * @platform ios\n   */\n  inputAccessoryViewID?: ?string,\n\n  /**\n   * Give the keyboard and the system information about the\n   * expected semantic meaning for the content that users enter.\n   * @platform ios\n   */\n  textContentType?: ?TextContentType,\n\n  /**\n   * Provide rules for your password.\n   * For example, say you want to require a password with at least eight characters consisting of a mix of uppercase and lowercase letters, at least one number, and at most two consecutive characters.\n   * \"required: upper; required: lower; required: digit; max-consecutive: 2; minlength: 8;\"\n   * @platform ios\n   */\n  passwordRules?: ?PasswordRules,\n\n  /*\n   * If `true`, allows TextInput to pass touch events to the parent component.\n   * This allows components to be swipeable from the TextInput on iOS,\n   * as is the case on Android by default.\n   * If `false`, TextInput always asks to handle the input (except when disabled).\n   * @platform ios\n   */\n  rejectResponderTermination?: ?boolean,\n\n  /**\n   * If `false`, scrolling of the text view will be disabled.\n   * The default value is `true`. Does only work with 'multiline={true}'.\n   * @platform ios\n   */\n  scrollEnabled?: ?boolean,\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n  /**\n   * Determines which content to suggest on auto complete, e.g.`username`.\n   * To disable auto complete, use `off`.\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `username`\n   * - `password`\n   * - `email`\n   * - `name`\n   * - `tel`\n   * - `street-address`\n   * - `postal-code`\n   * - `cc-number`\n   * - `cc-csc`\n   * - `cc-exp`\n   * - `cc-exp-month`\n   * - `cc-exp-year`\n   * - `off`\n   *\n   * @platform android\n   */\n  autoCompleteType?: ?(\n    | 'cc-csc'\n    | 'cc-exp'\n    | 'cc-exp-month'\n    | 'cc-exp-year'\n    | 'cc-number'\n    | 'email'\n    | 'name'\n    | 'password'\n    | 'postal-code'\n    | 'street-address'\n    | 'tel'\n    | 'username'\n    | 'off'\n  ),\n\n  /**\n   * Sets the return key to the label. Use it instead of `returnKeyType`.\n   * @platform android\n   */\n  returnKeyLabel?: ?string,\n\n  /**\n   * Sets the number of lines for a `TextInput`. Use it with multiline set to\n   * `true` to be able to fill the lines.\n   * @platform android\n   */\n  numberOfLines?: ?number,\n\n  /**\n   * When `false`, if there is a small amount of space available around a text input\n   * (e.g. landscape orientation on a phone), the OS may choose to have the user edit\n   * the text inside of a full screen text input mode. When `true`, this feature is\n   * disabled and users will always edit the text directly inside of the text input.\n   * Defaults to `false`.\n   * @platform android\n   */\n  disableFullscreenUI?: ?boolean,\n\n  /**\n   * Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`\n   * The default value is `simple`.\n   * @platform android\n   */\n  textBreakStrategy?: ?('simple' | 'highQuality' | 'balanced'),\n\n  /**\n   * The color of the `TextInput` underline.\n   * @platform android\n   */\n  underlineColorAndroid?: ?ColorValue,\n\n  /**\n   * If defined, the provided image resource will be rendered on the left.\n   * The image resource must be inside `/android/app/src/main/res/drawable` and referenced\n   * like\n   * ```\n   * <TextInput\n   *  inlineImageLeft='search_icon'\n   * />\n   * ```\n   * @platform android\n   */\n  inlineImageLeft?: ?string,\n\n  /**\n   * Padding between the inline image, if any, and the text input itself.\n   * @platform android\n   */\n  inlineImagePadding?: ?number,\n\n  importantForAutofill?: ?(\n    | 'auto'\n    | 'no'\n    | 'noExcludeDescendants'\n    | 'yes'\n    | 'yesExcludeDescendants'\n  ),\n\n  /**\n   * When `false`, it will prevent the soft keyboard from showing when the field is focused.\n   * Defaults to `true`.\n   */\n  showSoftInputOnFocus?: ?boolean,\n|}>;\n\nexport type Props = $ReadOnly<{|\n  ...$Diff<ViewProps, $ReadOnly<{|style: ?ViewStyleProp|}>>,\n  ...IOSProps,\n  ...AndroidProps,\n\n  /**\n   * Can tell `TextInput` to automatically capitalize certain characters.\n   *\n   * - `characters`: all characters.\n   * - `words`: first letter of each word.\n   * - `sentences`: first letter of each sentence (*default*).\n   * - `none`: don't auto capitalize anything.\n   */\n  autoCapitalize?: ?AutoCapitalize,\n\n  /**\n   * If `false`, disables auto-correct. The default value is `true`.\n   */\n  autoCorrect?: ?boolean,\n\n  /**\n   * If `true`, focuses the input on `componentDidMount`.\n   * The default value is `false`.\n   */\n  autoFocus?: ?boolean,\n\n  /**\n   * Specifies whether fonts should scale to respect Text Size accessibility settings. The\n   * default is `true`.\n   */\n  allowFontScaling?: ?boolean,\n\n  /**\n   * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.\n   * Possible values:\n   * `null/undefined` (default): inherit from the parent node or the global default (0)\n   * `0`: no max, ignore parent/global default\n   * `>= 1`: sets the maxFontSizeMultiplier of this node to this value\n   */\n  maxFontSizeMultiplier?: ?number,\n\n  /**\n   * If `false`, text is not editable. The default value is `true`.\n   */\n  editable?: ?boolean,\n\n  /**\n   * Determines which keyboard to open, e.g.`numeric`.\n   *\n   * The following values work across platforms:\n   *\n   * - `default`\n   * - `numeric`\n   * - `number-pad`\n   * - `decimal-pad`\n   * - `email-address`\n   * - `phone-pad`\n   *\n   * *iOS Only*\n   *\n   * The following values work on iOS only:\n   *\n   * - `ascii-capable`\n   * - `numbers-and-punctuation`\n   * - `url`\n   * - `name-phone-pad`\n   * - `twitter`\n   * - `web-search`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `visible-password`\n   *\n   */\n  keyboardType?: ?KeyboardType,\n\n  /**\n   * Determines how the return key should look. On Android you can also use\n   * `returnKeyLabel`.\n   *\n   * *Cross platform*\n   *\n   * The following values work across platforms:\n   *\n   * - `done`\n   * - `go`\n   * - `next`\n   * - `search`\n   * - `send`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `none`\n   * - `previous`\n   *\n   * *iOS Only*\n   *\n   * The following values work on iOS only:\n   *\n   * - `default`\n   * - `emergency-call`\n   * - `google`\n   * - `join`\n   * - `route`\n   * - `yahoo`\n   */\n  returnKeyType?: ?ReturnKeyType,\n\n  /**\n   * Limits the maximum number of characters that can be entered. Use this\n   * instead of implementing the logic in JS to avoid flicker.\n   */\n  maxLength?: ?number,\n\n  /**\n   * If `true`, the text input can be multiple lines.\n   * The default value is `false`.\n   */\n  multiline?: ?boolean,\n\n  /**\n   * Callback that is called when the text input is blurred.\n   */\n  onBlur?: ?(e: BlurEvent) => mixed,\n\n  /**\n   * Callback that is called when the text input is focused.\n   */\n  onFocus?: ?(e: FocusEvent) => mixed,\n\n  /**\n   * Callback that is called when the text input's text changes.\n   */\n  onChange?: ?(e: ChangeEvent) => mixed,\n\n  /**\n   * Callback that is called when the text input's text changes.\n   * Changed text is passed as an argument to the callback handler.\n   */\n  onChangeText?: ?(text: string) => mixed,\n\n  /**\n   * Callback that is called when the text input's content size changes.\n   * This will be called with\n   * `{ nativeEvent: { contentSize: { width, height } } }`.\n   *\n   * Only called for multiline text inputs.\n   */\n  onContentSizeChange?: ?(e: ContentSizeChangeEvent) => mixed,\n\n  /**\n   * Callback that is called when text input ends.\n   */\n  onEndEditing?: ?(e: EditingEvent) => mixed,\n\n  /**\n   * Called when a touch is engaged.\n   */\n  onPressIn?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Called when a touch is released.\n   */\n  onPressOut?: ?(event: PressEvent) => mixed,\n\n  /**\n   * Callback that is called when the text input selection is changed.\n   * This will be called with\n   * `{ nativeEvent: { selection: { start, end } } }`.\n   */\n  onSelectionChange?: ?(e: SelectionChangeEvent) => mixed,\n\n  /**\n   * Callback that is called when the text input's submit button is pressed.\n   * Invalid if `multiline={true}` is specified.\n   */\n  onSubmitEditing?: ?(e: EditingEvent) => mixed,\n\n  /**\n   * Callback that is called when a key is pressed.\n   * This will be called with `{ nativeEvent: { key: keyValue } }`\n   * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and\n   * the typed-in character otherwise including `' '` for space.\n   * Fires before `onChange` callbacks.\n   */\n  onKeyPress?: ?(e: KeyPressEvent) => mixed,\n\n  /**\n   * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.\n   * May also contain other properties from ScrollEvent but on Android contentSize\n   * is not provided for performance reasons.\n   */\n  onScroll?: ?(e: ScrollEvent) => mixed,\n\n  /**\n   * The string that will be rendered before text input has been entered.\n   */\n  placeholder?: ?Stringish,\n\n  /**\n   * The text color of the placeholder string.\n   */\n  placeholderTextColor?: ?ColorValue,\n\n  /**\n   * If `true`, the text input obscures the text entered so that sensitive text\n   * like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.\n   */\n  secureTextEntry?: ?boolean,\n\n  /**\n   * The highlight and cursor color of the text input.\n   */\n  selectionColor?: ?ColorValue,\n\n  /**\n   * The start and end of the text input's selection. Set start and end to\n   * the same value to position the cursor.\n   */\n  selection?: ?$ReadOnly<{|\n    start: number,\n    end?: ?number,\n  |}>,\n\n  /**\n   * The value to show for the text input. `TextInput` is a controlled\n   * component, which means the native value will be forced to match this\n   * value prop if provided. For most uses, this works great, but in some\n   * cases this may cause flickering - one common cause is preventing edits\n   * by keeping value the same. In addition to simply setting the same value,\n   * either set `editable={false}`, or set/update `maxLength` to prevent\n   * unwanted edits without flicker.\n   */\n  value?: ?Stringish,\n\n  /**\n   * Provides an initial value that will change when the user starts typing.\n   * Useful for simple use-cases where you do not want to deal with listening\n   * to events and updating the value prop to keep the controlled state in sync.\n   */\n  defaultValue?: ?Stringish,\n\n  /**\n   * If `true`, all text will automatically be selected on focus.\n   */\n  selectTextOnFocus?: ?boolean,\n\n  /**\n   * If `true`, the text field will blur when submitted.\n   * The default value is true for single-line fields and false for\n   * multiline fields. Note that for multiline fields, setting `blurOnSubmit`\n   * to `true` means that pressing return will blur the field and trigger the\n   * `onSubmitEditing` event instead of inserting a newline into the field.\n   */\n  blurOnSubmit?: ?boolean,\n\n  /**\n   * Note that not all Text styles are supported, an incomplete list of what is not supported includes:\n   *\n   * - `borderLeftWidth`\n   * - `borderTopWidth`\n   * - `borderRightWidth`\n   * - `borderBottomWidth`\n   * - `borderTopLeftRadius`\n   * - `borderTopRightRadius`\n   * - `borderBottomRightRadius`\n   * - `borderBottomLeftRadius`\n   *\n   * see [Issue#7070](https://github.com/facebook/react-native/issues/7070)\n   * for more detail.\n   *\n   * [Styles](docs/style.html)\n   */\n  style?: ?TextStyleProp,\n\n  /**\n   * If `true`, caret is hidden. The default value is `false`.\n   *\n   * On Android devices manufactured by Xiaomi with Android Q,\n   * when keyboardType equals 'email-address'this will be set\n   * in native to 'true' to prevent a system related crash. This\n   * will cause cursor to be diabled as a side-effect.\n   *\n   */\n  caretHidden?: ?boolean,\n\n  /*\n   * If `true`, contextMenuHidden is hidden. The default value is `false`.\n   */\n  contextMenuHidden?: ?boolean,\n\n  forwardedRef?: ?ReactRefSetter<\n    React.ElementRef<HostComponent<mixed>> & ImperativeMethods,\n  >,\n|}>;\n\ntype ImperativeMethods = $ReadOnly<{|\n  clear: () => void,\n  isFocused: () => boolean,\n  getNativeRef: () => ?React.ElementRef<HostComponent<mixed>>,\n|}>;\n\nconst emptyFunctionThatReturnsTrue = () => true;\n\n/**\n * A foundational component for inputting text into the app via a\n * keyboard. Props provide configurability for several features, such as\n * auto-correction, auto-capitalization, placeholder text, and different keyboard\n * types, such as a numeric keypad.\n *\n * The simplest use case is to plop down a `TextInput` and subscribe to the\n * `onChangeText` events to read the user input. There are also other events,\n * such as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, TextInput } from 'react-native';\n *\n * export default class UselessTextInput extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = { text: 'Useless Placeholder' };\n *   }\n *\n *   render() {\n *     return (\n *       <TextInput\n *         style={{height: 40, borderColor: 'gray', borderWidth: 1}}\n *         onChangeText={(text) => this.setState({text})}\n *         value={this.state.text}\n *       />\n *     );\n *   }\n * }\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);\n * ```\n *\n * Two methods exposed via the native element are .focus() and .blur() that\n * will focus or blur the TextInput programmatically.\n *\n * Note that some props are only available with `multiline={true/false}`.\n * Additionally, border styles that apply to only one side of the element\n * (e.g., `borderBottomColor`, `borderLeftWidth`, etc.) will not be applied if\n * `multiline=false`. To achieve the same effect, you can wrap your `TextInput`\n * in a `View`:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, TextInput } from 'react-native';\n *\n * class UselessTextInput extends Component {\n *   render() {\n *     return (\n *       <TextInput\n *         {...this.props} // Inherit any props passed to it; e.g., multiline, numberOfLines below\n *         editable = {true}\n *         maxLength = {40}\n *       />\n *     );\n *   }\n * }\n *\n * export default class UselessTextInputMultiline extends Component {\n *   constructor(props) {\n *     super(props);\n *     this.state = {\n *       text: 'Useless Multiline Placeholder',\n *     };\n *   }\n *\n *   // If you type something in the text box that is a color, the background will change to that\n *   // color.\n *   render() {\n *     return (\n *      <View style={{\n *        backgroundColor: this.state.text,\n *        borderBottomColor: '#000000',\n *        borderBottomWidth: 1 }}\n *      >\n *        <UselessTextInput\n *          multiline = {true}\n *          numberOfLines = {4}\n *          onChangeText={(text) => this.setState({text})}\n *          value={this.state.text}\n *        />\n *      </View>\n *     );\n *   }\n * }\n *\n * // skip these lines if using Create React Native App\n * AppRegistry.registerComponent(\n *  'AwesomeProject',\n *  () => UselessTextInputMultiline\n * );\n * ```\n *\n * `TextInput` has by default a border at the bottom of its view. This border\n * has its padding set by the background image provided by the system, and it\n * cannot be changed. Solutions to avoid this is to either not set height\n * explicitly, case in which the system will take care of displaying the border\n * in the correct position, or to not display the border by setting\n * `underlineColorAndroid` to transparent.\n *\n * Note that on Android performing text selection in input can change\n * app's activity `windowSoftInputMode` param to `adjustResize`.\n * This may cause issues with components that have position: 'absolute'\n * while keyboard is active. To avoid this behavior either specify `windowSoftInputMode`\n * in AndroidManifest.xml ( https://developer.android.com/guide/topics/manifest/activity-element.html )\n * or control this param programmatically with native code.\n *\n */\nfunction InternalTextInput(props: Props): React.Node {\n  const inputRef = useRef<null | React.ElementRef<HostComponent<mixed>>>(null);\n\n  // Android sends a \"onTextChanged\" event followed by a \"onSelectionChanged\" event, for\n  // the same \"most recent event count\".\n  // For controlled selection, that means that immediately after text is updated,\n  // a controlled component will pass in the *previous* selection, even if the controlled\n  // component didn't mean to modify the selection at all.\n  // Therefore, we ignore selections and pass them through until the selection event has\n  // been sent.\n  // Note that this mitigation is NOT needed for Fabric.\n  let selection: ?Selection =\n    props.selection == null\n      ? null\n      : {\n          start: props.selection.start,\n          end: props.selection.end ?? props.selection.start,\n        };\n\n  const [mostRecentEventCount, setMostRecentEventCount] = useState<number>(0);\n\n  const [lastNativeText, setLastNativeText] = useState<?Stringish>(props.value);\n  const [lastNativeSelectionState, setLastNativeSelection] = useState<{|\n    selection: ?Selection,\n    mostRecentEventCount: number,\n  |}>({selection, mostRecentEventCount});\n\n  const lastNativeSelection = lastNativeSelectionState.selection;\n  const lastNativeSelectionEventCount =\n    lastNativeSelectionState.mostRecentEventCount;\n\n  if (lastNativeSelectionEventCount < mostRecentEventCount) {\n    selection = null;\n  }\n\n  let viewCommands: TextInputNativeCommands<HostComponent<any>>;\n  if (AndroidTextInputCommands) {\n    viewCommands = AndroidTextInputCommands;\n  } else {\n    viewCommands = props.multiline\n      ? RCTMultilineTextInputNativeCommands\n      : RCTSinglelineTextInputNativeCommands;\n  }\n\n  const text =\n    typeof props.value === 'string'\n      ? props.value\n      : typeof props.defaultValue === 'string'\n      ? props.defaultValue\n      : '';\n\n  // This is necessary in case native updates the text and JS decides\n  // that the update should be ignored and we should stick with the value\n  // that we have in JS.\n  useLayoutEffect(() => {\n    const nativeUpdate = {};\n\n    if (lastNativeText !== props.value && typeof props.value === 'string') {\n      nativeUpdate.text = props.value;\n      setLastNativeText(props.value);\n    }\n\n    if (\n      selection &&\n      lastNativeSelection &&\n      (lastNativeSelection.start !== selection.start ||\n        lastNativeSelection.end !== selection.end)\n    ) {\n      nativeUpdate.selection = selection;\n      setLastNativeSelection({selection, mostRecentEventCount});\n    }\n\n    if (Object.keys(nativeUpdate).length === 0) {\n      return;\n    }\n\n    if (inputRef.current != null) {\n      viewCommands.setTextAndSelection(\n        inputRef.current,\n        mostRecentEventCount,\n        text,\n        selection?.start ?? -1,\n        selection?.end ?? -1,\n      );\n    }\n  }, [\n    mostRecentEventCount,\n    inputRef,\n    props.value,\n    props.defaultValue,\n    lastNativeText,\n    selection,\n    lastNativeSelection,\n    text,\n    viewCommands,\n  ]);\n\n  useLayoutEffect(() => {\n    const inputRefValue = inputRef.current;\n\n    if (inputRefValue != null) {\n      TextInputState.registerInput(inputRefValue);\n\n      return () => {\n        TextInputState.unregisterInput(inputRefValue);\n\n        if (TextInputState.currentlyFocusedInput() === inputRefValue) {\n          nullthrows(inputRefValue).blur();\n        }\n      };\n    }\n  }, [inputRef]);\n\n  function clear(): void {\n    if (inputRef.current != null) {\n      viewCommands.setTextAndSelection(\n        inputRef.current,\n        mostRecentEventCount,\n        '',\n        0,\n        0,\n      );\n    }\n  }\n\n  // TODO: Fix this returning true on null === null, when no input is focused\n  function isFocused(): boolean {\n    return TextInputState.currentlyFocusedInput() === inputRef.current;\n  }\n\n  function getNativeRef(): ?React.ElementRef<HostComponent<mixed>> {\n    return inputRef.current;\n  }\n\n  const _setNativeRef = setAndForwardRef({\n    getForwardedRef: () => props.forwardedRef,\n    setLocalRef: ref => {\n      inputRef.current = ref;\n\n      /*\n        Hi reader from the future. I'm sorry for this.\n\n        This is a hack. Ideally we would forwardRef to the underlying\n        host component. However, since TextInput has it's own methods that can be\n        called as well, if we used the standard forwardRef then these\n        methods wouldn't be accessible and thus be a breaking change.\n\n        We have a couple of options of how to handle this:\n        - Return a new ref with everything we methods from both. This is problematic\n          because we need React to also know it is a host component which requires\n          internals of the class implementation of the ref.\n        - Break the API and have some other way to call one set of the methods or\n          the other. This is our long term approach as we want to eventually\n          get the methods on host components off the ref. So instead of calling\n          ref.measure() you might call ReactNative.measure(ref). This would hopefully\n          let the ref for TextInput then have the methods like `.clear`. Or we do it\n          the other way and make it TextInput.clear(textInputRef) which would be fine\n          too. Either way though is a breaking change that is longer term.\n        - Mutate this ref. :( Gross, but accomplishes what we need in the meantime\n          before we can get to the long term breaking change.\n        */\n      if (ref) {\n        ref.clear = clear;\n        ref.isFocused = isFocused;\n        ref.getNativeRef = getNativeRef;\n      }\n    },\n  });\n\n  const _onPress = (event: PressEvent) => {\n    if (props.editable || props.editable === undefined) {\n      nullthrows(inputRef.current).focus();\n    }\n  };\n\n  const _onChange = (event: ChangeEvent) => {\n    const text = event.nativeEvent.text;\n    props.onChange && props.onChange(event);\n    props.onChangeText && props.onChangeText(text);\n\n    if (inputRef.current == null) {\n      // calling `props.onChange` or `props.onChangeText`\n      // may clean up the input itself. Exits here.\n      return;\n    }\n\n    setLastNativeText(text);\n    // This must happen last, after we call setLastNativeText.\n    // Different ordering can cause bugs when editing AndroidTextInputs\n    // with multiple Fragments.\n    // We must update this so that controlled input updates work.\n    setMostRecentEventCount(event.nativeEvent.eventCount);\n  };\n\n  const _onSelectionChange = (event: SelectionChangeEvent) => {\n    props.onSelectionChange && props.onSelectionChange(event);\n\n    if (inputRef.current == null) {\n      // calling `props.onSelectionChange`\n      // may clean up the input itself. Exits here.\n      return;\n    }\n\n    setLastNativeSelection({\n      selection: event.nativeEvent.selection,\n      mostRecentEventCount,\n    });\n  };\n\n  const _onFocus = (event: FocusEvent) => {\n    TextInputState.focusInput(inputRef.current);\n    if (props.onFocus) {\n      props.onFocus(event);\n    }\n  };\n\n  const _onBlur = (event: BlurEvent) => {\n    TextInputState.blurInput(inputRef.current);\n    if (props.onBlur) {\n      props.onBlur(event);\n    }\n  };\n\n  const _onScroll = (event: ScrollEvent) => {\n    props.onScroll && props.onScroll(event);\n  };\n\n  let textInput = null;\n  let additionalTouchableProps: {|\n    rejectResponderTermination?: $PropertyType<\n      Props,\n      'rejectResponderTermination',\n    >,\n    // This is a hack to let Flow know we want an exact object\n  |} = {...null};\n\n  // The default value for `blurOnSubmit` is true for single-line fields and\n  // false for multi-line fields.\n  const blurOnSubmit = props.blurOnSubmit ?? !props.multiline;\n\n  if (Platform.OS === 'ios') {\n    const RCTTextInputView = props.multiline\n      ? RCTMultilineTextInputView\n      : RCTSinglelineTextInputView;\n\n    const style = props.multiline\n      ? [styles.multilineInput, props.style]\n      : props.style;\n\n    additionalTouchableProps.rejectResponderTermination =\n      props.rejectResponderTermination;\n\n    textInput = (\n      <RCTTextInputView\n        ref={_setNativeRef}\n        {...props}\n        blurOnSubmit={blurOnSubmit}\n        dataDetectorTypes={props.dataDetectorTypes}\n        mostRecentEventCount={mostRecentEventCount}\n        onBlur={_onBlur}\n        onChange={_onChange}\n        onContentSizeChange={props.onContentSizeChange}\n        onFocus={_onFocus}\n        onScroll={_onScroll}\n        onSelectionChange={_onSelectionChange}\n        onSelectionChangeShouldSetResponder={emptyFunctionThatReturnsTrue}\n        selection={selection}\n        style={style}\n        text={text}\n      />\n    );\n  } else if (Platform.OS === 'android') {\n    const style = [props.style];\n    const autoCapitalize = props.autoCapitalize || 'sentences';\n    let children = props.children;\n    const childCount = React.Children.count(children);\n    invariant(\n      !(props.value && childCount),\n      'Cannot specify both value and children.',\n    );\n    if (childCount > 1) {\n      children = <Text>{children}</Text>;\n    }\n\n    textInput = (\n      /* $FlowFixMe the types for AndroidTextInput don't match up exactly with\n        the props for TextInput. This will need to get fixed */\n      <AndroidTextInput\n        ref={_setNativeRef}\n        {...props}\n        autoCapitalize={autoCapitalize}\n        blurOnSubmit={blurOnSubmit}\n        children={children}\n        disableFullscreenUI={props.disableFullscreenUI}\n        mostRecentEventCount={mostRecentEventCount}\n        onBlur={_onBlur}\n        onChange={_onChange}\n        onFocus={_onFocus}\n        /* $FlowFixMe the types for AndroidTextInput don't match up exactly\n         * with the props for TextInput. This will need to get fixed */\n        onScroll={_onScroll}\n        onSelectionChange={_onSelectionChange}\n        selection={selection}\n        style={style}\n        text={text}\n        textBreakStrategy={props.textBreakStrategy}\n      />\n    );\n  }\n  return (\n    <TextAncestor.Provider value={true}>\n      <TouchableWithoutFeedback\n        onLayout={props.onLayout}\n        onPress={_onPress}\n        onPressIn={props.onPressIn}\n        onPressOut={props.onPressOut}\n        accessible={props.accessible}\n        accessibilityLabel={props.accessibilityLabel}\n        accessibilityRole={props.accessibilityRole}\n        accessibilityState={props.accessibilityState}\n        nativeID={props.nativeID}\n        testID={props.testID}\n        {...additionalTouchableProps}>\n        {textInput}\n      </TouchableWithoutFeedback>\n    </TextAncestor.Provider>\n  );\n}\n\nconst ExportedForwardRef: React.AbstractComponent<\n  React.ElementConfig<typeof InternalTextInput>,\n  React.ElementRef<HostComponent<mixed>> & ImperativeMethods,\n> = React.forwardRef(function TextInput(\n  props,\n  forwardedRef: ReactRefSetter<\n    React.ElementRef<HostComponent<mixed>> & ImperativeMethods,\n  >,\n) {\n  return <InternalTextInput {...props} forwardedRef={forwardedRef} />;\n});\n\n// $FlowFixMe\nExportedForwardRef.defaultProps = {\n  allowFontScaling: true,\n  rejectResponderTermination: true,\n  underlineColorAndroid: 'transparent',\n};\n\n// TODO: Deprecate this\n// $FlowFixMe\nExportedForwardRef.propTypes = DeprecatedTextInputPropTypes;\n\n// $FlowFixMe\nExportedForwardRef.State = {\n  currentlyFocusedInput: TextInputState.currentlyFocusedInput,\n\n  currentlyFocusedField: TextInputState.currentlyFocusedField,\n  focusTextInput: TextInputState.focusTextInput,\n  blurTextInput: TextInputState.blurTextInput,\n};\n\ntype TextInputComponentStatics = $ReadOnly<{|\n  State: $ReadOnly<{|\n    currentlyFocusedInput: typeof TextInputState.currentlyFocusedInput,\n    currentlyFocusedField: typeof TextInputState.currentlyFocusedField,\n    focusTextInput: typeof TextInputState.focusTextInput,\n    blurTextInput: typeof TextInputState.blurTextInput,\n  |}>,\n  propTypes: typeof DeprecatedTextInputPropTypes,\n|}>;\n\nconst styles = StyleSheet.create({\n  multilineInput: {\n    // This default top inset makes RCTMultilineTextInputView seem as close as possible\n    // to single-line RCTSinglelineTextInputView defaults, using the system defaults\n    // of font size 17 and a height of 31 points.\n    paddingTop: 5,\n  },\n});\n\nmodule.exports = ((ExportedForwardRef: any): React.AbstractComponent<\n  React.ElementConfig<typeof InternalTextInput>,\n  $ReadOnly<{|\n    ...React.ElementRef<HostComponent<mixed>>,\n    ...ImperativeMethods,\n  |}>,\n> &\n  TextInputComponentStatics);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst DeprecatedColorPropType = require('./DeprecatedColorPropType');\nconst DeprecatedViewPropTypes = require('./DeprecatedViewPropTypes');\nconst PropTypes = require('prop-types');\nconst Text = require('../Text/Text');\n\nconst DataDetectorTypes = [\n  'phoneNumber',\n  'link',\n  'address',\n  'calendarEvent',\n  'none',\n  'all',\n];\n\nmodule.exports = {\n  ...DeprecatedViewPropTypes,\n  /**\n   * Can tell `TextInput` to automatically capitalize certain characters.\n   *\n   * - `characters`: all characters.\n   * - `words`: first letter of each word.\n   * - `sentences`: first letter of each sentence (*default*).\n   * - `none`: don't auto capitalize anything.\n   */\n  autoCapitalize: (PropTypes.oneOf([\n    'none',\n    'sentences',\n    'words',\n    'characters',\n  ]): React$PropType$Primitive<'none' | 'sentences' | 'words' | 'characters'>),\n  /**\n   * Determines which content to suggest on auto complete, e.g.`username`.\n   * To disable auto complete, use `off`.\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `username`\n   * - `password`\n   * - `email`\n   * - `name`\n   * - `tel`\n   * - `street-address`\n   * - `postal-code`\n   * - `cc-number`\n   * - `cc-csc`\n   * - `cc-exp`\n   * - `cc-exp-month`\n   * - `cc-exp-year`\n   * - `off`\n   *\n   * @platform android\n   */\n  autoCompleteType: (PropTypes.oneOf([\n    'cc-csc',\n    'cc-exp',\n    'cc-exp-month',\n    'cc-exp-year',\n    'cc-number',\n    'email',\n    'name',\n    'password',\n    'postal-code',\n    'street-address',\n    'tel',\n    'username',\n    'off',\n  ]): React$PropType$Primitive<\n    | 'cc-csc'\n    | 'cc-exp'\n    | 'cc-exp-month'\n    | 'cc-exp-year'\n    | 'cc-number'\n    | 'email'\n    | 'name'\n    | 'password'\n    | 'postal-code'\n    | 'street-address'\n    | 'tel'\n    | 'username'\n    | 'off',\n  >),\n  /**\n   * If `false`, disables auto-correct. The default value is `true`.\n   */\n  autoCorrect: PropTypes.bool,\n  /**\n   * If `false`, disables spell-check style (i.e. red underlines).\n   * The default value is inherited from `autoCorrect`.\n   * @platform ios\n   */\n  spellCheck: PropTypes.bool,\n  /**\n   * If `true`, focuses the input on `componentDidMount`.\n   * The default value is `false`.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Specifies whether fonts should scale to respect Text Size accessibility settings. The\n   * default is `true`.\n   */\n  allowFontScaling: PropTypes.bool,\n  /**\n   * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.\n   * Possible values:\n   * `null/undefined` (default): inherit from the parent node or the global default (0)\n   * `0`: no max, ignore parent/global default\n   * `>= 1`: sets the maxFontSizeMultiplier of this node to this value\n   */\n  maxFontSizeMultiplier: PropTypes.number,\n  /**\n   * If `false`, text is not editable. The default value is `true`.\n   */\n  editable: PropTypes.bool,\n  /**\n   * Determines which keyboard to open, e.g.`numeric`.\n   *\n   * The following values work across platforms:\n   *\n   * - `default`\n   * - `numeric`\n   * - `number-pad`\n   * - `decimal-pad`\n   * - `email-address`\n   * - `phone-pad`\n   *\n   * *iOS Only*\n   *\n   * The following values work on iOS only:\n   *\n   * - `ascii-capable`\n   * - `numbers-and-punctuation`\n   * - `url`\n   * - `name-phone-pad`\n   * - `twitter`\n   * - `web-search`\n   * - `ascii-capable-number-pad`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `visible-password`\n   */\n  keyboardType: (PropTypes.oneOf([\n    // Cross-platform\n    'default',\n    'email-address',\n    'numeric',\n    'phone-pad',\n    'number-pad',\n    // iOS-only\n    'ascii-capable',\n    'numbers-and-punctuation',\n    'url',\n    'name-phone-pad',\n    'decimal-pad',\n    'twitter',\n    'web-search',\n    // iOS 10+ only\n    'ascii-capable-number-pad',\n    // Android-only\n    'visible-password',\n  ]): React$PropType$Primitive<\n    | 'default'\n    | 'email-address'\n    | 'numeric'\n    | 'phone-pad'\n    | 'number-pad'\n    | 'ascii-capable'\n    | 'numbers-and-punctuation'\n    | 'url'\n    | 'name-phone-pad'\n    | 'decimal-pad'\n    | 'twitter'\n    | 'web-search'\n    | 'ascii-capable-number-pad'\n    | 'visible-password',\n  >),\n  /**\n   * Determines the color of the keyboard.\n   * @platform ios\n   */\n  keyboardAppearance: (PropTypes.oneOf([\n    'default',\n    'light',\n    'dark',\n  ]): React$PropType$Primitive<'default' | 'light' | 'dark'>),\n  /**\n   * Determines how the return key should look. On Android you can also use\n   * `returnKeyLabel`.\n   *\n   * *Cross platform*\n   *\n   * The following values work across platforms:\n   *\n   * - `done`\n   * - `go`\n   * - `next`\n   * - `search`\n   * - `send`\n   *\n   * *Android Only*\n   *\n   * The following values work on Android only:\n   *\n   * - `none`\n   * - `previous`\n   *\n   * *iOS Only*\n   *\n   * The following values work on iOS only:\n   *\n   * - `default`\n   * - `emergency-call`\n   * - `google`\n   * - `join`\n   * - `route`\n   * - `yahoo`\n   */\n  returnKeyType: (PropTypes.oneOf([\n    // Cross-platform\n    'done',\n    'go',\n    'next',\n    'search',\n    'send',\n    // Android-only\n    'none',\n    'previous',\n    // iOS-only\n    'default',\n    'emergency-call',\n    'google',\n    'join',\n    'route',\n    'yahoo',\n  ]): React$PropType$Primitive<\n    | 'done'\n    | 'go'\n    | 'next'\n    | 'search'\n    | 'send'\n    | 'none'\n    | 'previous'\n    | 'default'\n    | 'emergency-call'\n    | 'google'\n    | 'join'\n    | 'route'\n    | 'yahoo',\n  >),\n  /**\n   * Sets the return key to the label. Use it instead of `returnKeyType`.\n   * @platform android\n   */\n  returnKeyLabel: PropTypes.string,\n  /**\n   * Limits the maximum number of characters that can be entered. Use this\n   * instead of implementing the logic in JS to avoid flicker.\n   */\n  maxLength: PropTypes.number,\n  /**\n   * Sets the number of lines for a `TextInput`. Use it with multiline set to\n   * `true` to be able to fill the lines.\n   * @platform android\n   */\n  numberOfLines: PropTypes.number,\n  /**\n   * When `false`, if there is a small amount of space available around a text input\n   * (e.g. landscape orientation on a phone), the OS may choose to have the user edit\n   * the text inside of a full screen text input mode. When `true`, this feature is\n   * disabled and users will always edit the text directly inside of the text input.\n   * Defaults to `false`.\n   * @platform android\n   */\n  disableFullscreenUI: PropTypes.bool,\n  /**\n   * If `true`, the keyboard disables the return key when there is no text and\n   * automatically enables it when there is text. The default value is `false`.\n   * @platform ios\n   */\n  enablesReturnKeyAutomatically: PropTypes.bool,\n  /**\n   * If `true`, the text input can be multiple lines.\n   * The default value is `false`.\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`\n   * The default value is `simple`.\n   * @platform android\n   */\n  textBreakStrategy: (PropTypes.oneOf([\n    'simple',\n    'highQuality',\n    'balanced',\n  ]): React$PropType$Primitive<'simple' | 'highQuality' | 'balanced'>),\n  /**\n   * Callback that is called when the text input is blurred.\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback that is called when the text input is focused.\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback that is called when the text input's text changes.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback that is called when the text input's text changes.\n   * Changed text is passed as an argument to the callback handler.\n   */\n  onChangeText: PropTypes.func,\n  /**\n   * Callback that is called when the text input's content size changes.\n   * This will be called with\n   * `{ nativeEvent: { contentSize: { width, height } } }`.\n   *\n   * Only called for multiline text inputs.\n   */\n  onContentSizeChange: PropTypes.func,\n  onTextInput: PropTypes.func,\n  /**\n   * Callback that is called when text input ends.\n   */\n  onEndEditing: PropTypes.func,\n  /**\n   * Callback that is called when the text input selection is changed.\n   * This will be called with\n   * `{ nativeEvent: { selection: { start, end } } }`.\n   */\n  onSelectionChange: PropTypes.func,\n  /**\n   * Callback that is called when the text input's submit button is pressed.\n   * Invalid if `multiline={true}` is specified.\n   */\n  onSubmitEditing: PropTypes.func,\n  /**\n   * Callback that is called when a key is pressed.\n   * This will be called with `{ nativeEvent: { key: keyValue } }`\n   * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and\n   * the typed-in character otherwise including `' '` for space.\n   * Fires before `onChange` callbacks.\n   */\n  onKeyPress: PropTypes.func,\n  /**\n   * Invoked on mount and layout changes with `{x, y, width, height}`.\n   */\n  onLayout: PropTypes.func,\n  /**\n   * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.\n   * May also contain other properties from ScrollEvent but on Android contentSize\n   * is not provided for performance reasons.\n   */\n  onScroll: PropTypes.func,\n  /**\n   * The string that will be rendered before text input has been entered.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * The text color of the placeholder string.\n   */\n  placeholderTextColor: DeprecatedColorPropType,\n  /**\n   * If `false`, scrolling of the text view will be disabled.\n   * The default value is `true`. Does only work with 'multiline={true}'.\n   * @platform ios\n   */\n  scrollEnabled: PropTypes.bool,\n  /**\n   * If `true`, the text input obscures the text entered so that sensitive text\n   * like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.\n   */\n  secureTextEntry: PropTypes.bool,\n  /**\n   * The highlight and cursor color of the text input.\n   */\n  selectionColor: DeprecatedColorPropType,\n  /**\n   * The start and end of the text input's selection. Set start and end to\n   * the same value to position the cursor.\n   */\n  selection: (PropTypes.shape({\n    start: PropTypes.number.isRequired,\n    end: PropTypes.number,\n  }): React$PropType$Primitive<{\n    end?: number,\n    start: number,\n    ...\n  }>),\n  /**\n   * The value to show for the text input. `TextInput` is a controlled\n   * component, which means the native value will be forced to match this\n   * value prop if provided. For most uses, this works great, but in some\n   * cases this may cause flickering - one common cause is preventing edits\n   * by keeping value the same. In addition to simply setting the same value,\n   * either set `editable={false}`, or set/update `maxLength` to prevent\n   * unwanted edits without flicker.\n   */\n  value: PropTypes.string,\n  /**\n   * Provides an initial value that will change when the user starts typing.\n   * Useful for simple use-cases where you do not want to deal with listening\n   * to events and updating the value prop to keep the controlled state in sync.\n   */\n  defaultValue: PropTypes.string,\n  /**\n   * When the clear button should appear on the right side of the text view.\n   * This property is supported only for single-line TextInput component.\n   * @platform ios\n   */\n  clearButtonMode: (PropTypes.oneOf([\n    'never',\n    'while-editing',\n    'unless-editing',\n    'always',\n  ]): React$PropType$Primitive<\n    'never' | 'while-editing' | 'unless-editing' | 'always',\n  >),\n  /**\n   * If `true`, clears the text field automatically when editing begins.\n   * @platform ios\n   */\n  clearTextOnFocus: PropTypes.bool,\n  /**\n   * If `true`, all text will automatically be selected on focus.\n   */\n  selectTextOnFocus: PropTypes.bool,\n  /**\n   * If `true`, the text field will blur when submitted.\n   * The default value is true for single-line fields and false for\n   * multiline fields. Note that for multiline fields, setting `blurOnSubmit`\n   * to `true` means that pressing return will blur the field and trigger the\n   * `onSubmitEditing` event instead of inserting a newline into the field.\n   */\n  blurOnSubmit: PropTypes.bool,\n  /**\n   * Note that not all Text styles are supported, an incomplete list of what is not supported includes:\n   *\n   * - `borderLeftWidth`\n   * - `borderTopWidth`\n   * - `borderRightWidth`\n   * - `borderBottomWidth`\n   * - `borderTopLeftRadius`\n   * - `borderTopRightRadius`\n   * - `borderBottomRightRadius`\n   * - `borderBottomLeftRadius`\n   *\n   * see [Issue#7070](https://github.com/facebook/react-native/issues/7070)\n   * for more detail.\n   *\n   * [Styles](docs/style.html)\n   */\n  // $FlowFixMe[incompatible-use]\n  style: Text.propTypes.style,\n  /**\n   * The color of the `TextInput` underline.\n   * @platform android\n   */\n  underlineColorAndroid: DeprecatedColorPropType,\n\n  /**\n   * If defined, the provided image resource will be rendered on the left.\n   * The image resource must be inside `/android/app/src/main/res/drawable` and referenced\n   * like\n   * ```\n   * <TextInput\n   *  inlineImageLeft='search_icon'\n   * />\n   * ```\n   * @platform android\n   */\n  inlineImageLeft: PropTypes.string,\n\n  /**\n   * Padding between the inline image, if any, and the text input itself.\n   * @platform android\n   */\n  inlineImagePadding: PropTypes.number,\n\n  /**\n   * If `true`, allows TextInput to pass touch events to the parent component.\n   * This allows components such as SwipeableListView to be swipeable from the TextInput on iOS,\n   * as is the case on Android by default.\n   * If `false`, TextInput always asks to handle the input (except when disabled).\n   * @platform ios\n   */\n  rejectResponderTermination: PropTypes.bool,\n\n  /**\n   * Determines the types of data converted to clickable URLs in the text input.\n   * Only valid if `multiline={true}` and `editable={false}`.\n   * By default no data types are detected.\n   *\n   * You can provide one type or an array of many types.\n   *\n   * Possible values for `dataDetectorTypes` are:\n   *\n   * - `'phoneNumber'`\n   * - `'link'`\n   * - `'address'`\n   * - `'calendarEvent'`\n   * - `'none'`\n   * - `'all'`\n   *\n   * @platform ios\n   */\n  dataDetectorTypes: (PropTypes.oneOfType([\n    PropTypes.oneOf(DataDetectorTypes),\n    PropTypes.arrayOf(PropTypes.oneOf(DataDetectorTypes)),\n  ]): React$PropType$Primitive<\n    | 'phoneNumber'\n    | 'link'\n    | 'address'\n    | 'calendarEvent'\n    | 'none'\n    | 'all'\n    | Array<\n        'phoneNumber' | 'link' | 'address' | 'calendarEvent' | 'none' | 'all',\n      >,\n  >),\n  /**\n   * If `true`, caret is hidden. The default value is `false`.\n   * This property is supported only for single-line TextInput component on iOS.\n   */\n  caretHidden: PropTypes.bool,\n  /*\n   * If `true`, contextMenuHidden is hidden. The default value is `false`.\n   */\n  contextMenuHidden: PropTypes.bool,\n  /**\n   * An optional identifier which links a custom InputAccessoryView to\n   * this text input. The InputAccessoryView is rendered above the\n   * keyboard when this text input is focused.\n   * @platform ios\n   */\n  inputAccessoryViewID: PropTypes.string,\n  /**\n   * Give the keyboard and the system information about the\n   * expected semantic meaning for the content that users enter.\n   * @platform ios\n   */\n  textContentType: (PropTypes.oneOf([\n    'none',\n    'URL',\n    'addressCity',\n    'addressCityAndState',\n    'addressState',\n    'countryName',\n    'creditCardNumber',\n    'emailAddress',\n    'familyName',\n    'fullStreetAddress',\n    'givenName',\n    'jobTitle',\n    'location',\n    'middleName',\n    'name',\n    'namePrefix',\n    'nameSuffix',\n    'nickname',\n    'organizationName',\n    'postalCode',\n    'streetAddressLine1',\n    'streetAddressLine2',\n    'sublocality',\n    'telephoneNumber',\n    'username',\n    'password',\n    'newPassword',\n    'oneTimeCode',\n  ]): React$PropType$Primitive<\n    | 'none'\n    | 'URL'\n    | 'addressCity'\n    | 'addressCityAndState'\n    | 'addressState'\n    | 'countryName'\n    | 'creditCardNumber'\n    | 'emailAddress'\n    | 'familyName'\n    | 'fullStreetAddress'\n    | 'givenName'\n    | 'jobTitle'\n    | 'location'\n    | 'middleName'\n    | 'name'\n    | 'namePrefix'\n    | 'nameSuffix'\n    | 'nickname'\n    | 'organizationName'\n    | 'postalCode'\n    | 'streetAddressLine1'\n    | 'streetAddressLine2'\n    | 'sublocality'\n    | 'telephoneNumber'\n    | 'username'\n    | 'password'\n    | 'newPassword'\n    | 'oneTimeCode',\n  >),\n  /**\n   * When `false`, it will prevent the soft keyboard from showing when the field is focused.\n   * Defaults to `true`.\n   */\n  showSoftInputOnFocus: PropTypes.bool,\n};\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst DeprecatedEdgeInsetsPropType = require('./DeprecatedEdgeInsetsPropType');\nconst DeprecatedStyleSheetPropType = require('./DeprecatedStyleSheetPropType');\nconst DeprecatedViewStylePropTypes = require('./DeprecatedViewStylePropTypes');\nconst PropTypes = require('prop-types');\n\nconst {DeprecatedAccessibilityRoles} = require('./DeprecatedViewAccessibility');\n\nconst stylePropType: ReactPropsCheckType = DeprecatedStyleSheetPropType(\n  DeprecatedViewStylePropTypes,\n);\n\nmodule.exports = {\n  /**\n   * When `true`, indicates that the view is an accessibility element.\n   * By default, all the touchable elements are accessible.\n   *\n   * See https://reactnative.dev/docs/view.html#accessible\n   */\n  accessible: PropTypes.bool,\n\n  /**\n   * Overrides the text that's read by the screen reader when the user interacts\n   * with the element. By default, the label is constructed by traversing all\n   * the children and accumulating all the `Text` nodes separated by space.\n   *\n   * See https://reactnative.dev/docs/view.html#accessibilitylabel\n   */\n  accessibilityLabel: PropTypes.node,\n\n  /**\n   * An accessibility hint helps users understand what will happen when they perform\n   * an action on the accessibility element when that result is not obvious from the\n   * accessibility label.\n   *\n   *\n   * See https://reactnative.dev/docs/view.html#accessibilityHint\n   */\n  accessibilityHint: PropTypes.string,\n\n  /**\n   * Provides an array of custom actions available for accessibility.\n   *\n   * @platform ios\n   */\n  accessibilityActions: (PropTypes.arrayOf(\n    PropTypes.string,\n  ): React$PropType$Primitive<Array<string>>),\n\n  /**\n   * Prevents view from being inverted if set to true and color inversion is turned on.\n   *\n   * @platform ios\n   */\n  accessibilityIgnoresInvertColors: PropTypes.bool,\n\n  /**\n   * Indicates to accessibility services to treat UI component like a specific role.\n   */\n  accessibilityRole: (PropTypes.oneOf(\n    DeprecatedAccessibilityRoles,\n  ): React$PropType$Primitive<\n    | 'none'\n    | 'button'\n    | 'link'\n    | 'search'\n    | 'image'\n    | 'keyboardkey'\n    | 'text'\n    | 'adjustable'\n    | 'imagebutton'\n    | 'header'\n    | 'summary'\n    | 'alert'\n    | 'checkbox'\n    | 'combobox'\n    | 'menu'\n    | 'menubar'\n    | 'menuitem'\n    | 'progressbar'\n    | 'radio'\n    | 'radiogroup'\n    | 'scrollbar'\n    | 'spinbutton'\n    | 'switch'\n    | 'tab'\n    | 'tablist'\n    | 'timer'\n    | 'toolbar',\n  >),\n\n  accessibilityState: PropTypes.object,\n  accessibilityValue: PropTypes.object,\n  /**\n   * Indicates to accessibility services whether the user should be notified\n   * when this view changes. Works for Android API >= 19 only.\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/view.html#accessibilityliveregion\n   */\n  accessibilityLiveRegion: (PropTypes.oneOf([\n    'none',\n    'polite',\n    'assertive',\n  ]): React$PropType$Primitive<'none' | 'polite' | 'assertive'>),\n\n  /**\n   * Controls how view is important for accessibility which is if it\n   * fires accessibility events and if it is reported to accessibility services\n   * that query the screen. Works for Android only.\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/view.html#importantforaccessibility\n   */\n  importantForAccessibility: (PropTypes.oneOf([\n    'auto',\n    'yes',\n    'no',\n    'no-hide-descendants',\n  ]): React$PropType$Primitive<'auto' | 'yes' | 'no' | 'no-hide-descendants'>),\n\n  /**\n   * A value indicating whether VoiceOver should ignore the elements\n   * within views that are siblings of the receiver.\n   * Default is `false`.\n   *\n   * @platform ios\n   *\n   * See https://reactnative.dev/docs/view.html#accessibilityviewismodal\n   */\n  accessibilityViewIsModal: PropTypes.bool,\n\n  /**\n   * A value indicating whether the accessibility elements contained within\n   * this accessibility element are hidden.\n   *\n   * @platform ios\n   *\n   * See https://reactnative.dev/docs/view.html#accessibilityElementsHidden\n   */\n  accessibilityElementsHidden: PropTypes.bool,\n\n  /**\n   * When `accessible` is true, the system will try to invoke this function\n   * when the user performs an accessibility custom action.\n   *\n   * @platform ios\n   */\n  onAccessibilityAction: PropTypes.func,\n\n  /**\n   * When `accessible` is true, the system will try to invoke this function\n   * when the user performs accessibility tap gesture.\n   *\n   * See https://reactnative.dev/docs/view.html#onaccessibilitytap\n   */\n  onAccessibilityTap: PropTypes.func,\n\n  /**\n   * When `accessible` is `true`, the system will invoke this function when the\n   * user performs the magic tap gesture.\n   *\n   * See https://reactnative.dev/docs/view.html#onmagictap\n   */\n  onMagicTap: PropTypes.func,\n\n  /**\n   * Used to locate this view in end-to-end tests.\n   *\n   * > This disables the 'layout-only view removal' optimization for this view!\n   *\n   * See https://reactnative.dev/docs/view.html#testid\n   */\n  testID: PropTypes.string,\n\n  /**\n   * Used to locate this view from native classes.\n   *\n   * > This disables the 'layout-only view removal' optimization for this view!\n   *\n   * See https://reactnative.dev/docs/view.html#nativeid\n   */\n  nativeID: PropTypes.string,\n\n  /**\n   * For most touch interactions, you'll simply want to wrap your component in\n   * `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,\n   * `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.\n   */\n\n  /**\n   * The View is now responding for touch events. This is the time to highlight\n   * and show the user what is happening.\n   *\n   * `View.props.onResponderGrant: (event) => {}`, where `event` is a synthetic\n   * touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onrespondergrant\n   */\n  onResponderGrant: PropTypes.func,\n\n  /**\n   * The user is moving their finger.\n   *\n   * `View.props.onResponderMove: (event) => {}`, where `event` is a synthetic\n   * touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onrespondermove\n   */\n  onResponderMove: PropTypes.func,\n\n  /**\n   * Another responder is already active and will not release it to that `View`\n   * asking to be the responder.\n   *\n   * `View.props.onResponderReject: (event) => {}`, where `event` is a\n   * synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onresponderreject\n   */\n  onResponderReject: PropTypes.func,\n\n  /**\n   * Fired at the end of the touch.\n   *\n   * `View.props.onResponderRelease: (event) => {}`, where `event` is a\n   * synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onresponderrelease\n   */\n  onResponderRelease: PropTypes.func,\n\n  /**\n   * The responder has been taken from the `View`. Might be taken by other\n   * views after a call to `onResponderTerminationRequest`, or might be taken\n   * by the OS without asking (e.g., happens with control center/ notification\n   * center on iOS)\n   *\n   * `View.props.onResponderTerminate: (event) => {}`, where `event` is a\n   * synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onresponderterminate\n   */\n  onResponderTerminate: PropTypes.func,\n\n  /**\n   * Some other `View` wants to become responder and is asking this `View` to\n   * release its responder. Returning `true` allows its release.\n   *\n   * `View.props.onResponderTerminationRequest: (event) => {}`, where `event`\n   * is a synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onresponderterminationrequest\n   */\n  onResponderTerminationRequest: PropTypes.func,\n\n  /**\n   * Does this view want to become responder on the start of a touch?\n   *\n   * `View.props.onStartShouldSetResponder: (event) => [true | false]`, where\n   * `event` is a synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onstartshouldsetresponder\n   */\n  onStartShouldSetResponder: PropTypes.func,\n\n  /**\n   * If a parent `View` wants to prevent a child `View` from becoming responder\n   * on a touch start, it should have this handler which returns `true`.\n   *\n   * `View.props.onStartShouldSetResponderCapture: (event) => [true | false]`,\n   * where `event` is a synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onstartshouldsetrespondercapture\n   */\n  onStartShouldSetResponderCapture: PropTypes.func,\n\n  /**\n   * Does this view want to \"claim\" touch responsiveness? This is called for\n   * every touch move on the `View` when it is not the responder.\n   *\n   * `View.props.onMoveShouldSetResponder: (event) => [true | false]`, where\n   * `event` is a synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onmoveshouldsetresponder\n   */\n  onMoveShouldSetResponder: PropTypes.func,\n\n  /**\n   * If a parent `View` wants to prevent a child `View` from becoming responder\n   * on a move, it should have this handler which returns `true`.\n   *\n   * `View.props.onMoveShouldSetResponderCapture: (event) => [true | false]`,\n   * where `event` is a synthetic touch event as described above.\n   *\n   * See https://reactnative.dev/docs/view.html#onMoveShouldsetrespondercapture\n   */\n  onMoveShouldSetResponderCapture: PropTypes.func,\n\n  /**\n   * This defines how far a touch event can start away from the view.\n   * Typical interface guidelines recommend touch targets that are at least\n   * 30 - 40 points/density-independent pixels.\n   *\n   * > The touch area never extends past the parent view bounds and the Z-index\n   * > of sibling views always takes precedence if a touch hits two overlapping\n   * > views.\n   *\n   * See https://reactnative.dev/docs/view.html#hitslop\n   */\n  hitSlop: DeprecatedEdgeInsetsPropType,\n\n  /**\n   * Invoked on mount and layout changes with:\n   *\n   * `{nativeEvent: { layout: {x, y, width, height}}}`\n   *\n   * This event is fired immediately once the layout has been calculated, but\n   * the new layout may not yet be reflected on the screen at the time the\n   * event is received, especially if a layout animation is in progress.\n   *\n   * See https://reactnative.dev/docs/view.html#onlayout\n   */\n  onLayout: PropTypes.func,\n\n  /**\n   * Controls whether the `View` can be the target of touch events.\n   *\n   * See https://reactnative.dev/docs/view.html#pointerevents\n   */\n  pointerEvents: (PropTypes.oneOf([\n    'box-none',\n    'none',\n    'box-only',\n    'auto',\n  ]): React$PropType$Primitive<'box-none' | 'none' | 'box-only' | 'auto'>),\n\n  /**\n   * See https://reactnative.dev/docs/style.html\n   */\n  style: stylePropType,\n\n  /**\n   * This is a special performance property exposed by `RCTView` and is useful\n   * for scrolling content when there are many subviews, most of which are\n   * offscreen. For this property to be effective, it must be applied to a\n   * view that contains many subviews that extend outside its bound. The\n   * subviews must also have `overflow: hidden`, as should the containing view\n   * (or one of its superviews).\n   *\n   * See https://reactnative.dev/docs/view.html#removeclippedsubviews\n   */\n  removeClippedSubviews: PropTypes.bool,\n\n  /**\n   * Whether this `View` should render itself (and all of its children) into a\n   * single hardware texture on the GPU.\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/view.html#rendertohardwaretextureandroid\n   */\n  renderToHardwareTextureAndroid: PropTypes.bool,\n\n  /**\n   * Whether this `View` should be rendered as a bitmap before compositing.\n   *\n   * @platform ios\n   *\n   * See https://reactnative.dev/docs/view.html#shouldrasterizeios\n   */\n  shouldRasterizeIOS: PropTypes.bool,\n\n  /**\n   * Views that are only used to layout their children or otherwise don't draw\n   * anything may be automatically removed from the native hierarchy as an\n   * optimization. Set this property to `false` to disable this optimization and\n   * ensure that this `View` exists in the native view hierarchy.\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/view.html#collapsable\n   */\n  collapsable: PropTypes.bool,\n\n  /**\n   * Whether this `View` needs to rendered offscreen and composited with an\n   * alpha in order to preserve 100% correct colors and blending behavior.\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/view.html#needsoffscreenalphacompositing\n   */\n  needsOffscreenAlphaCompositing: PropTypes.bool,\n};\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nmodule.exports = {\n  // This must be kept in sync with the AccessibilityRolesMask in RCTViewManager.m\n  DeprecatedAccessibilityRoles: [\n    'none',\n    'button',\n    'link',\n    'search',\n    'image',\n    'keyboardkey',\n    'text',\n    'adjustable',\n    'imagebutton',\n    'header',\n    'summary',\n    'alert',\n    'checkbox',\n    'combobox',\n    'menu',\n    'menubar',\n    'menuitem',\n    'progressbar',\n    'radio',\n    'radiogroup',\n    'scrollbar',\n    'spinbutton',\n    'switch',\n    'tab',\n    'tablist',\n    'timer',\n    'toolbar',\n  ],\n};\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport type {\n  AccessibilityActionEvent,\n  AccessibilityActionInfo,\n  AccessibilityRole,\n  AccessibilityState,\n  AccessibilityValue,\n} from '../../Components/View/ViewAccessibility';\nimport type {EdgeInsetsProp} from '../../StyleSheet/EdgeInsetsPropType';\nimport type {\n  BlurEvent,\n  FocusEvent,\n  LayoutEvent,\n  PressEvent,\n} from '../../Types/CoreEventTypes';\nimport View from '../../Components/View/View';\nimport * as React from 'react';\n\ntype Props = $ReadOnly<{|\n  accessibilityActions?: ?$ReadOnlyArray<AccessibilityActionInfo>,\n  accessibilityElementsHidden?: ?boolean,\n  accessibilityHint?: ?Stringish,\n  accessibilityIgnoresInvertColors?: ?boolean,\n  accessibilityLabel?: ?Stringish,\n  accessibilityLiveRegion?: ?('none' | 'polite' | 'assertive'),\n  accessibilityRole?: ?AccessibilityRole,\n  accessibilityState?: ?AccessibilityState,\n  accessibilityValue?: ?AccessibilityValue,\n  accessibilityViewIsModal?: ?boolean,\n  accessible?: ?boolean,\n  children?: ?React.Node,\n  delayLongPress?: ?number,\n  delayPressIn?: ?number,\n  delayPressOut?: ?number,\n  disabled?: ?boolean,\n  focusable?: ?boolean,\n  hitSlop?: ?EdgeInsetsProp,\n  importantForAccessibility?: ?('auto' | 'yes' | 'no' | 'no-hide-descendants'),\n  nativeID?: ?string,\n  onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,\n  onBlur?: ?(event: BlurEvent) => mixed,\n  onFocus?: ?(event: FocusEvent) => mixed,\n  onLayout?: ?(event: LayoutEvent) => mixed,\n  onLongPress?: ?(event: PressEvent) => mixed,\n  onPress?: ?(event: PressEvent) => mixed,\n  onPressIn?: ?(event: PressEvent) => mixed,\n  onPressOut?: ?(event: PressEvent) => mixed,\n  pressRetentionOffset?: ?EdgeInsetsProp,\n  rejectResponderTermination?: ?boolean,\n  testID?: ?string,\n  touchSoundDisabled?: ?boolean,\n|}>;\n\ntype State = $ReadOnly<{|\n  pressability: Pressability,\n|}>;\n\nconst PASSTHROUGH_PROPS = [\n  'accessibilityActions',\n  'accessibilityElementsHidden',\n  'accessibilityHint',\n  'accessibilityIgnoresInvertColors',\n  'accessibilityLabel',\n  'accessibilityLiveRegion',\n  'accessibilityRole',\n  'accessibilityState',\n  'accessibilityValue',\n  'accessibilityViewIsModal',\n  'hitSlop',\n  'importantForAccessibility',\n  'nativeID',\n  'onAccessibilityAction',\n  'onBlur',\n  'onFocus',\n  'onLayout',\n  'testID',\n];\n\nclass TouchableWithoutFeedback extends React.Component<Props, State> {\n  state: State = {\n    pressability: new Pressability(createPressabilityConfig(this.props)),\n  };\n\n  render(): React.Node {\n    const element = React.Children.only(this.props.children);\n    const children = [element.props.children];\n    if (__DEV__) {\n      if (element.type === View) {\n        children.push(\n          <PressabilityDebugView color=\"red\" hitSlop={this.props.hitSlop} />,\n        );\n      }\n    }\n\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {\n      onBlur,\n      onFocus,\n      ...eventHandlersWithoutBlurAndFocus\n    } = this.state.pressability.getEventHandlers();\n\n    const elementProps: {[string]: mixed, ...} = {\n      ...eventHandlersWithoutBlurAndFocus,\n      accessible: this.props.accessible !== false,\n      focusable:\n        this.props.focusable !== false && this.props.onPress !== undefined,\n    };\n    for (const prop of PASSTHROUGH_PROPS) {\n      if (this.props[prop] !== undefined) {\n        elementProps[prop] = this.props[prop];\n      }\n    }\n\n    return React.cloneElement(element, elementProps, ...children);\n  }\n\n  componentDidUpdate(): void {\n    this.state.pressability.configure(createPressabilityConfig(this.props));\n  }\n\n  componentWillUnmount(): void {\n    this.state.pressability.reset();\n  }\n}\n\nfunction createPressabilityConfig(props: Props): PressabilityConfig {\n  return {\n    cancelable: !props.rejectResponderTermination,\n    disabled: props.disabled,\n    hitSlop: props.hitSlop,\n    delayLongPress: props.delayLongPress,\n    delayPressIn: props.delayPressIn,\n    delayPressOut: props.delayPressOut,\n    minPressDuration: 0,\n    pressRectOffset: props.pressRetentionOffset,\n    android_disableSound: props.touchSoundDisabled,\n    onBlur: props.onBlur,\n    onFocus: props.onFocus,\n    onLongPress: props.onLongPress,\n    onPress: props.onPress,\n    onPressIn: props.onPressIn,\n    onPressOut: props.onPressOut,\n  };\n}\n\nmodule.exports = TouchableWithoutFeedback;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport type {HostComponent} from '../../Renderer/shims/ReactNativeTypes';\nimport requireNativeComponent from '../../ReactNative/requireNativeComponent';\nimport codegenNativeCommands from '../../Utilities/codegenNativeCommands';\nimport type {TextInputNativeCommands} from './TextInputNativeCommands';\n\ntype NativeType = HostComponent<mixed>;\n\ntype NativeCommands = TextInputNativeCommands<NativeType>;\n\nexport const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({\n  supportedCommands: ['focus', 'blur', 'setTextAndSelection'],\n});\n\nconst SinglelineTextInputNativeComponent: HostComponent<mixed> = requireNativeComponent<mixed>(\n  'RCTMultilineTextInputView',\n);\n\nexport default SinglelineTextInputNativeComponent;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport Pressability, {\n  type PressabilityConfig,\n} from '../../Pressability/Pressability';\nimport {PressabilityDebugView} from '../../Pressability/PressabilityDebug';\nimport StyleSheet, {type ViewStyleProp} from '../../StyleSheet/StyleSheet';\nimport type {ColorValue} from '../../StyleSheet/StyleSheet';\nimport typeof TouchableWithoutFeedback from './TouchableWithoutFeedback';\nimport Platform from '../../Utilities/Platform';\nimport View from '../../Components/View/View';\nimport * as React from 'react';\n\ntype AndroidProps = $ReadOnly<{|\n  nextFocusDown?: ?number,\n  nextFocusForward?: ?number,\n  nextFocusLeft?: ?number,\n  nextFocusRight?: ?number,\n  nextFocusUp?: ?number,\n|}>;\n\ntype IOSProps = $ReadOnly<{|\n  hasTVPreferredFocus?: ?boolean,\n|}>;\n\ntype Props = $ReadOnly<{|\n  ...React.ElementConfig<TouchableWithoutFeedback>,\n  ...AndroidProps,\n  ...IOSProps,\n\n  activeOpacity?: ?number,\n  underlayColor?: ?ColorValue,\n  style?: ?ViewStyleProp,\n  onShowUnderlay?: ?() => void,\n  onHideUnderlay?: ?() => void,\n  testOnly_pressed?: ?boolean,\n\n  hostRef: React.Ref<typeof View>,\n|}>;\n\ntype ExtraStyles = $ReadOnly<{|\n  child: ViewStyleProp,\n  underlay: ViewStyleProp,\n|}>;\n\ntype State = $ReadOnly<{|\n  pressability: Pressability,\n  extraStyles: ?ExtraStyles,\n|}>;\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view.\n *\n * The underlay comes from wrapping the child in a new View, which can affect\n * layout, and sometimes cause unwanted visual artifacts if not used correctly,\n * for example if the backgroundColor of the wrapped view isn't explicitly set\n * to an opaque color.\n *\n * TouchableHighlight must have one child (not zero or more than one).\n * If you wish to have several child components, wrap them in a View.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n *   return (\n *     <TouchableHighlight onPress={this._onPressButton}>\n *       <Image\n *         style={styles.button}\n *         source={require('./myButton.png')}\n *       />\n *     </TouchableHighlight>\n *   );\n * },\n * ```\n *\n *\n * ### Example\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react'\n * import {\n *   AppRegistry,\n *   StyleSheet,\n *   TouchableHighlight,\n *   Text,\n *   View,\n * } from 'react-native'\n *\n * class App extends Component {\n *   constructor(props) {\n *     super(props)\n *     this.state = { count: 0 }\n *   }\n *\n *   onPress = () => {\n *     this.setState({\n *       count: this.state.count+1\n *     })\n *   }\n *\n *  render() {\n *     return (\n *       <View style={styles.container}>\n *         <TouchableHighlight\n *          style={styles.button}\n *          onPress={this.onPress}\n *         >\n *          <Text> Touch Here </Text>\n *         </TouchableHighlight>\n *         <View style={[styles.countContainer]}>\n *           <Text style={[styles.countText]}>\n *             { this.state.count !== 0 ? this.state.count: null}\n *           </Text>\n *         </View>\n *       </View>\n *     )\n *   }\n * }\n *\n * const styles = StyleSheet.create({\n *   container: {\n *     flex: 1,\n *     justifyContent: 'center',\n *     paddingHorizontal: 10\n *   },\n *   button: {\n *     alignItems: 'center',\n *     backgroundColor: '#DDDDDD',\n *     padding: 10\n *   },\n *   countContainer: {\n *     alignItems: 'center',\n *     padding: 10\n *   },\n *   countText: {\n *     color: '#FF00FF'\n *   }\n * })\n *\n * AppRegistry.registerComponent('App', () => App)\n * ```\n *\n */\nclass TouchableHighlight extends React.Component<Props, State> {\n  _hideTimeout: ?TimeoutID;\n  _isMounted: boolean = false;\n\n  state: State = {\n    pressability: new Pressability(this._createPressabilityConfig()),\n    extraStyles:\n      this.props.testOnly_pressed === true ? this._createExtraStyles() : null,\n  };\n\n  _createPressabilityConfig(): PressabilityConfig {\n    return {\n      cancelable: !this.props.rejectResponderTermination,\n      disabled: this.props.disabled,\n      hitSlop: this.props.hitSlop,\n      delayLongPress: this.props.delayLongPress,\n      delayPressIn: this.props.delayPressIn,\n      delayPressOut: this.props.delayPressOut,\n      minPressDuration: 0,\n      pressRectOffset: this.props.pressRetentionOffset,\n      android_disableSound: this.props.touchSoundDisabled,\n      onBlur: event => {\n        if (Platform.isTV) {\n          this._hideUnderlay();\n        }\n        if (this.props.onBlur != null) {\n          this.props.onBlur(event);\n        }\n      },\n      onFocus: event => {\n        if (Platform.isTV) {\n          this._showUnderlay();\n        }\n        if (this.props.onFocus != null) {\n          this.props.onFocus(event);\n        }\n      },\n      onLongPress: this.props.onLongPress,\n      onPress: event => {\n        if (this._hideTimeout != null) {\n          clearTimeout(this._hideTimeout);\n        }\n        if (!Platform.isTV) {\n          this._showUnderlay();\n          this._hideTimeout = setTimeout(() => {\n            this._hideUnderlay();\n          }, this.props.delayPressOut ?? 0);\n        }\n        if (this.props.onPress != null) {\n          this.props.onPress(event);\n        }\n      },\n      onPressIn: event => {\n        if (this._hideTimeout != null) {\n          clearTimeout(this._hideTimeout);\n          this._hideTimeout = null;\n        }\n        this._showUnderlay();\n        if (this.props.onPressIn != null) {\n          this.props.onPressIn(event);\n        }\n      },\n      onPressOut: event => {\n        if (this._hideTimeout == null) {\n          this._hideUnderlay();\n        }\n        if (this.props.onPressOut != null) {\n          this.props.onPressOut(event);\n        }\n      },\n    };\n  }\n\n  _createExtraStyles(): ExtraStyles {\n    return {\n      child: {opacity: this.props.activeOpacity ?? 0.85},\n      underlay: {\n        backgroundColor:\n          this.props.underlayColor === undefined\n            ? 'black'\n            : this.props.underlayColor,\n      },\n    };\n  }\n\n  _showUnderlay(): void {\n    if (!this._isMounted || !this._hasPressHandler()) {\n      return;\n    }\n    this.setState({extraStyles: this._createExtraStyles()});\n    if (this.props.onShowUnderlay != null) {\n      this.props.onShowUnderlay();\n    }\n  }\n\n  _hideUnderlay(): void {\n    if (this._hideTimeout != null) {\n      clearTimeout(this._hideTimeout);\n      this._hideTimeout = null;\n    }\n    if (this.props.testOnly_pressed === true) {\n      return;\n    }\n    if (this._hasPressHandler()) {\n      this.setState({extraStyles: null});\n      if (this.props.onHideUnderlay != null) {\n        this.props.onHideUnderlay();\n      }\n    }\n  }\n\n  _hasPressHandler(): boolean {\n    return (\n      this.props.onPress != null ||\n      this.props.onPressIn != null ||\n      this.props.onPressOut != null ||\n      this.props.onLongPress != null\n    );\n  }\n\n  render(): React.Node {\n    const child = React.Children.only(this.props.children);\n\n    // BACKWARD-COMPATIBILITY: Focus and blur events were never supported before\n    // adopting `Pressability`, so preserve that behavior.\n    const {\n      onBlur,\n      onFocus,\n      ...eventHandlersWithoutBlurAndFocus\n    } = this.state.pressability.getEventHandlers();\n\n    return (\n      <View\n        accessible={this.props.accessible !== false}\n        accessibilityLabel={this.props.accessibilityLabel}\n        accessibilityHint={this.props.accessibilityHint}\n        accessibilityRole={this.props.accessibilityRole}\n        accessibilityState={this.props.accessibilityState}\n        accessibilityValue={this.props.accessibilityValue}\n        accessibilityActions={this.props.accessibilityActions}\n        onAccessibilityAction={this.props.onAccessibilityAction}\n        importantForAccessibility={this.props.importantForAccessibility}\n        accessibilityLiveRegion={this.props.accessibilityLiveRegion}\n        accessibilityViewIsModal={this.props.accessibilityViewIsModal}\n        accessibilityElementsHidden={this.props.accessibilityElementsHidden}\n        style={StyleSheet.compose(\n          this.props.style,\n          this.state.extraStyles?.underlay,\n        )}\n        onLayout={this.props.onLayout}\n        hitSlop={this.props.hitSlop}\n        hasTVPreferredFocus={this.props.hasTVPreferredFocus}\n        nextFocusDown={this.props.nextFocusDown}\n        nextFocusForward={this.props.nextFocusForward}\n        nextFocusLeft={this.props.nextFocusLeft}\n        nextFocusRight={this.props.nextFocusRight}\n        nextFocusUp={this.props.nextFocusUp}\n        focusable={\n          this.props.focusable !== false && this.props.onPress !== undefined\n        }\n        nativeID={this.props.nativeID}\n        testID={this.props.testID}\n        ref={this.props.hostRef}\n        {...eventHandlersWithoutBlurAndFocus}>\n        {React.cloneElement(child, {\n          style: StyleSheet.compose(\n            child.props.style,\n            this.state.extraStyles?.child,\n          ),\n        })}\n        {__DEV__ ? (\n          <PressabilityDebugView color=\"green\" hitSlop={this.props.hitSlop} />\n        ) : null}\n      </View>\n    );\n  }\n\n  componentDidMount(): void {\n    this._isMounted = true;\n  }\n\n  componentDidUpdate(prevProps: Props, prevState: State) {\n    this.state.pressability.configure(this._createPressabilityConfig());\n  }\n\n  componentWillUnmount(): void {\n    this._isMounted = false;\n    if (this._hideTimeout != null) {\n      clearTimeout(this._hideTimeout);\n    }\n    this.state.pressability.reset();\n  }\n}\n\nmodule.exports = (React.forwardRef((props, hostRef) => (\n  <TouchableHighlight {...props} hostRef={hostRef} />\n)): React.AbstractComponent<$ReadOnly<$Diff<Props, {|hostRef: mixed|}>>>);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport RCTActionSheetManager from './NativeActionSheetManager';\n\nconst invariant = require('invariant');\nconst processColor = require('../StyleSheet/processColor');\nimport type {ColorValue} from '../StyleSheet/StyleSheet';\nimport type {ProcessedColorValue} from '../StyleSheet/processColor';\n\n/**\n * Display action sheets and share sheets on iOS.\n *\n * See https://reactnative.dev/docs/actionsheetios.html\n */\nconst ActionSheetIOS = {\n  /**\n   * Display an iOS action sheet.\n   *\n   * The `options` object must contain one or more of:\n   *\n   * - `options` (array of strings) - a list of button titles (required)\n   * - `cancelButtonIndex` (int) - index of cancel button in `options`\n   * - `destructiveButtonIndex` (int or array of ints) - index or indices of destructive buttons in `options`\n   * - `title` (string) - a title to show above the action sheet\n   * - `message` (string) - a message to show below the title\n   * - `disabledButtonIndices` (array of numbers) - a list of button indices which should be disabled\n   *\n   * The 'callback' function takes one parameter, the zero-based index\n   * of the selected item.\n   *\n   * See https://reactnative.dev/docs/actionsheetios.html#showactionsheetwithoptions\n   */\n  showActionSheetWithOptions(\n    options: {|\n      +title?: ?string,\n      +message?: ?string,\n      +options: Array<string>,\n      +destructiveButtonIndex?: ?number | ?Array<number>,\n      +cancelButtonIndex?: ?number,\n      +anchor?: ?number,\n      +tintColor?: ColorValue | ProcessedColorValue,\n      +userInterfaceStyle?: string,\n      +disabledButtonIndices?: Array<number>,\n    |},\n    callback: (buttonIndex: number) => void,\n  ) {\n    invariant(\n      typeof options === 'object' && options !== null,\n      'Options must be a valid object',\n    );\n    invariant(typeof callback === 'function', 'Must provide a valid callback');\n    invariant(RCTActionSheetManager, \"ActionSheetManager doesn't exist\");\n\n    const {tintColor, destructiveButtonIndex, ...remainingOptions} = options;\n    let destructiveButtonIndices = null;\n\n    if (Array.isArray(destructiveButtonIndex)) {\n      destructiveButtonIndices = destructiveButtonIndex;\n    } else if (typeof destructiveButtonIndex === 'number') {\n      destructiveButtonIndices = [destructiveButtonIndex];\n    }\n\n    const processedTintColor = processColor(tintColor);\n    invariant(\n      processedTintColor == null || typeof processedTintColor === 'number',\n      'Unexpected color given for ActionSheetIOS.showActionSheetWithOptions tintColor',\n    );\n    RCTActionSheetManager.showActionSheetWithOptions(\n      {\n        ...remainingOptions,\n        tintColor: processedTintColor,\n        destructiveButtonIndices,\n      },\n      callback,\n    );\n  },\n\n  /**\n   * Display the iOS share sheet. The `options` object should contain\n   * one or both of `message` and `url` and can additionally have\n   * a `subject` or `excludedActivityTypes`:\n   *\n   * - `url` (string) - a URL to share\n   * - `message` (string) - a message to share\n   * - `subject` (string) - a subject for the message\n   * - `excludedActivityTypes` (array) - the activities to exclude from\n   *   the ActionSheet\n   * - `tintColor` (color) - tint color of the buttons\n   *\n   * The 'failureCallback' function takes one parameter, an error object.\n   * The only property defined on this object is an optional `stack` property\n   * of type `string`.\n   *\n   * The 'successCallback' function takes two parameters:\n   *\n   * - a boolean value signifying success or failure\n   * - a string that, in the case of success, indicates the method of sharing\n   *\n   * See https://reactnative.dev/docs/actionsheetios.html#showshareactionsheetwithoptions\n   */\n  showShareActionSheetWithOptions(\n    options: Object,\n    failureCallback: Function,\n    successCallback: Function,\n  ) {\n    invariant(\n      typeof options === 'object' && options !== null,\n      'Options must be a valid object',\n    );\n    invariant(\n      typeof failureCallback === 'function',\n      'Must provide a valid failureCallback',\n    );\n    invariant(\n      typeof successCallback === 'function',\n      'Must provide a valid successCallback',\n    );\n    invariant(RCTActionSheetManager, \"ActionSheetManager doesn't exist\");\n    RCTActionSheetManager.showShareActionSheetWithOptions(\n      {...options, tintColor: processColor(options.tintColor)},\n      failureCallback,\n      successCallback,\n    );\n  },\n};\n\nmodule.exports = ActionSheetIOS;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +showActionSheetWithOptions: (\n    options: {|\n      +title?: ?string,\n      +message?: ?string,\n      +options: ?Array<string>,\n      +destructiveButtonIndices?: ?Array<number>,\n      +cancelButtonIndex?: ?number,\n      +anchor?: ?number,\n      +tintColor?: ?number,\n      +userInterfaceStyle?: ?string,\n      +disabledButtonIndices?: Array<number>,\n    |},\n    callback: (buttonIndex: number) => void,\n  ) => void;\n  +showShareActionSheetWithOptions: (\n    options: {|\n      +message?: ?string,\n      +url?: ?string,\n      +subject?: ?string,\n      +anchor?: ?number,\n      +tintColor?: ?number,\n      +excludedActivityTypes?: ?Array<string>,\n      +userInterfaceStyle?: ?string,\n    |},\n    failureCallback: (error: {|\n      +domain: string,\n      +code: string,\n      +userInfo?: ?Object,\n      +message: string,\n    |}) => void,\n    successCallback: (completed: boolean, activityType: ?string) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ActionSheetManager'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport EventEmitter from '../vendor/emitter/EventEmitter';\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport NativeAppearance, {\n  type AppearancePreferences,\n  type ColorSchemeName,\n} from './NativeAppearance';\nimport invariant from 'invariant';\nimport {isAsyncDebugging} from './DebugEnvironment';\n\ntype AppearanceListener = (preferences: AppearancePreferences) => void;\nconst eventEmitter = new EventEmitter();\n\nif (NativeAppearance) {\n  const nativeEventEmitter = new NativeEventEmitter(NativeAppearance);\n  nativeEventEmitter.addListener(\n    'appearanceChanged',\n    (newAppearance: AppearancePreferences) => {\n      const {colorScheme} = newAppearance;\n      invariant(\n        colorScheme === 'dark' ||\n          colorScheme === 'light' ||\n          colorScheme == null,\n        \"Unrecognized color scheme. Did you mean 'dark' or 'light'?\",\n      );\n      eventEmitter.emit('change', {colorScheme});\n    },\n  );\n}\n\nmodule.exports = {\n  /**\n   * Note: Although color scheme is available immediately, it may change at any\n   * time. Any rendering logic or styles that depend on this should try to call\n   * this function on every render, rather than caching the value (for example,\n   * using inline styles rather than setting a value in a `StyleSheet`).\n   *\n   * Example: `const colorScheme = Appearance.getColorScheme();`\n   *\n   * @returns {?ColorSchemeName} Value for the color scheme preference.\n   */\n  getColorScheme(): ?ColorSchemeName {\n    if (__DEV__) {\n      if (isAsyncDebugging) {\n        // Hard code light theme when using the async debugger as\n        // sync calls aren't supported\n        return 'light';\n      }\n    }\n\n    // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union\n    const nativeColorScheme: ?string =\n      NativeAppearance == null\n        ? null\n        : NativeAppearance.getColorScheme() || null;\n    invariant(\n      nativeColorScheme === 'dark' ||\n        nativeColorScheme === 'light' ||\n        nativeColorScheme == null,\n      \"Unrecognized color scheme. Did you mean 'dark' or 'light'?\",\n    );\n    return nativeColorScheme;\n  },\n  /**\n   * Add an event handler that is fired when appearance preferences change.\n   */\n  addChangeListener(listener: AppearanceListener): void {\n    eventEmitter.addListener('change', listener);\n  },\n  /**\n   * Remove an event handler.\n   */\n  removeChangeListener(listener: AppearanceListener): void {\n    eventEmitter.removeListener('change', listener);\n  },\n};\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport type ColorSchemeName = 'light' | 'dark';\n\nexport type AppearancePreferences = {|\n  // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union\n  // types.\n  /* 'light' | 'dark' */\n  colorScheme?: ?string,\n|};\n\nexport interface Spec extends TurboModule {\n  // TODO: (hramos) T52919652 Use ?ColorSchemeName once codegen supports union\n  // types.\n  /* 'light' | 'dark' */\n  +getColorScheme: () => ?string;\n\n  // RCTEventEmitter\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('Appearance'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nexport let isAsyncDebugging: boolean = false;\n\nif (__DEV__) {\n  // These native interfaces don't exist in asynchronous debugging environments.\n  isAsyncDebugging =\n    !global.nativeExtensions &&\n    !global.nativeCallSyncHook &&\n    !global.RN$Bridgeless;\n}\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst BatchedBridge = require('../BatchedBridge/BatchedBridge');\nconst BugReporting = require('../BugReporting/BugReporting');\nconst ReactNative = require('../Renderer/shims/ReactNative');\nconst SceneTracker = require('../Utilities/SceneTracker');\n\nconst infoLog = require('../Utilities/infoLog');\nconst invariant = require('invariant');\nconst renderApplication = require('./renderApplication');\nimport type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';\n\nimport createPerformanceLogger from '../Utilities/createPerformanceLogger';\nimport NativeHeadlessJsTaskSupport from './NativeHeadlessJsTaskSupport';\nimport HeadlessJsTaskError from './HeadlessJsTaskError';\n\ntype Task = (taskData: any) => Promise<void>;\nexport type TaskProvider = () => Task;\ntype TaskCanceller = () => void;\ntype TaskCancelProvider = () => TaskCanceller;\n\nexport type ComponentProvider = () => React$ComponentType<any>;\nexport type ComponentProviderInstrumentationHook = (\n  component: ComponentProvider,\n  scopedPerformanceLogger: IPerformanceLogger,\n) => React$ComponentType<any>;\nexport type AppConfig = {\n  appKey: string,\n  component?: ComponentProvider,\n  run?: Function,\n  section?: boolean,\n  ...\n};\nexport type Runnable = {\n  component?: ComponentProvider,\n  run: Function,\n  ...\n};\nexport type Runnables = {[appKey: string]: Runnable, ...};\nexport type Registry = {\n  sections: Array<string>,\n  runnables: Runnables,\n  ...\n};\nexport type WrapperComponentProvider = any => React$ComponentType<*>;\n\nconst runnables: Runnables = {};\nlet runCount = 1;\nconst sections: Runnables = {};\nconst taskProviders: Map<string, TaskProvider> = new Map();\nconst taskCancelProviders: Map<string, TaskCancelProvider> = new Map();\nlet componentProviderInstrumentationHook: ComponentProviderInstrumentationHook = (\n  component: ComponentProvider,\n) => component();\n\nlet wrapperComponentProvider: ?WrapperComponentProvider;\nlet showArchitectureIndicator = false;\n\n/**\n * `AppRegistry` is the JavaScript entry point to running all React Native apps.\n *\n * See https://reactnative.dev/docs/appregistry.html\n */\nconst AppRegistry = {\n  setWrapperComponentProvider(provider: WrapperComponentProvider) {\n    wrapperComponentProvider = provider;\n  },\n\n  enableArchitectureIndicator(enabled: boolean): void {\n    showArchitectureIndicator = enabled;\n  },\n\n  registerConfig(config: Array<AppConfig>): void {\n    config.forEach(appConfig => {\n      if (appConfig.run) {\n        AppRegistry.registerRunnable(appConfig.appKey, appConfig.run);\n      } else {\n        invariant(\n          appConfig.component != null,\n          'AppRegistry.registerConfig(...): Every config is expected to set ' +\n            'either `run` or `component`, but `%s` has neither.',\n          appConfig.appKey,\n        );\n        AppRegistry.registerComponent(\n          appConfig.appKey,\n          appConfig.component,\n          appConfig.section,\n        );\n      }\n    });\n  },\n\n  /**\n   * Registers an app's root component.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#registercomponent\n   */\n  registerComponent(\n    appKey: string,\n    componentProvider: ComponentProvider,\n    section?: boolean,\n  ): string {\n    let scopedPerformanceLogger = createPerformanceLogger();\n    runnables[appKey] = {\n      componentProvider,\n      run: appParameters => {\n        renderApplication(\n          componentProviderInstrumentationHook(\n            componentProvider,\n            scopedPerformanceLogger,\n          ),\n          appParameters.initialProps,\n          appParameters.rootTag,\n          wrapperComponentProvider && wrapperComponentProvider(appParameters),\n          appParameters.fabric,\n          showArchitectureIndicator,\n          scopedPerformanceLogger,\n          appKey === 'LogBox',\n        );\n      },\n    };\n    if (section) {\n      sections[appKey] = runnables[appKey];\n    }\n    return appKey;\n  },\n\n  registerRunnable(appKey: string, run: Function): string {\n    runnables[appKey] = {run};\n    return appKey;\n  },\n\n  registerSection(appKey: string, component: ComponentProvider): void {\n    AppRegistry.registerComponent(appKey, component, true);\n  },\n\n  getAppKeys(): Array<string> {\n    return Object.keys(runnables);\n  },\n\n  getSectionKeys(): Array<string> {\n    return Object.keys(sections);\n  },\n\n  getSections(): Runnables {\n    return {\n      ...sections,\n    };\n  },\n\n  getRunnable(appKey: string): ?Runnable {\n    return runnables[appKey];\n  },\n\n  getRegistry(): Registry {\n    return {\n      sections: AppRegistry.getSectionKeys(),\n      runnables: {...runnables},\n    };\n  },\n\n  setComponentProviderInstrumentationHook(\n    hook: ComponentProviderInstrumentationHook,\n  ) {\n    componentProviderInstrumentationHook = hook;\n  },\n\n  /**\n   * Loads the JavaScript bundle and runs the app.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#runapplication\n   */\n  runApplication(appKey: string, appParameters: any): void {\n    if (appKey !== 'LogBox') {\n      const msg =\n        'Running \"' + appKey + '\" with ' + JSON.stringify(appParameters);\n      infoLog(msg);\n      BugReporting.addSource(\n        'AppRegistry.runApplication' + runCount++,\n        () => msg,\n      );\n    }\n    invariant(\n      runnables[appKey] && runnables[appKey].run,\n      `\"${appKey}\" has not been registered. This can happen if:\\n` +\n        '* Metro (the local dev server) is run from the wrong folder. ' +\n        'Check if Metro is running, stop it and restart it in the current project.\\n' +\n        \"* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called.\",\n    );\n\n    SceneTracker.setActiveScene({name: appKey});\n    runnables[appKey].run(appParameters);\n  },\n\n  /**\n   * Stops an application when a view should be destroyed.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#unmountapplicationcomponentatroottag\n   */\n  unmountApplicationComponentAtRootTag(rootTag: number): void {\n    ReactNative.unmountComponentAtNodeAndRemoveContainer(rootTag);\n  },\n\n  /**\n   * Register a headless task. A headless task is a bit of code that runs without a UI.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#registerheadlesstask\n   */\n  registerHeadlessTask(taskKey: string, taskProvider: TaskProvider): void {\n    this.registerCancellableHeadlessTask(taskKey, taskProvider, () => () => {\n      /* Cancel is no-op */\n    });\n  },\n\n  /**\n   * Register a cancellable headless task. A headless task is a bit of code that runs without a UI.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#registercancellableheadlesstask\n   */\n  registerCancellableHeadlessTask(\n    taskKey: string,\n    taskProvider: TaskProvider,\n    taskCancelProvider: TaskCancelProvider,\n  ): void {\n    if (taskProviders.has(taskKey)) {\n      console.warn(\n        `registerHeadlessTask or registerCancellableHeadlessTask called multiple times for same key '${taskKey}'`,\n      );\n    }\n    taskProviders.set(taskKey, taskProvider);\n    taskCancelProviders.set(taskKey, taskCancelProvider);\n  },\n\n  /**\n   * Only called from native code. Starts a headless task.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#startheadlesstask\n   */\n  startHeadlessTask(taskId: number, taskKey: string, data: any): void {\n    const taskProvider = taskProviders.get(taskKey);\n    if (!taskProvider) {\n      console.warn(`No task registered for key ${taskKey}`);\n      if (NativeHeadlessJsTaskSupport) {\n        NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);\n      }\n      return;\n    }\n    taskProvider()(data)\n      .then(() => {\n        if (NativeHeadlessJsTaskSupport) {\n          NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);\n        }\n      })\n      .catch(reason => {\n        console.error(reason);\n\n        if (\n          NativeHeadlessJsTaskSupport &&\n          reason instanceof HeadlessJsTaskError\n        ) {\n          NativeHeadlessJsTaskSupport.notifyTaskRetry(taskId).then(\n            retryPosted => {\n              if (!retryPosted) {\n                NativeHeadlessJsTaskSupport.notifyTaskFinished(taskId);\n              }\n            },\n          );\n        }\n      });\n  },\n\n  /**\n   * Only called from native code. Cancels a headless task.\n   *\n   * See https://reactnative.dev/docs/appregistry.html#cancelheadlesstask\n   */\n  cancelHeadlessTask(taskId: number, taskKey: string): void {\n    const taskCancelProvider = taskCancelProviders.get(taskKey);\n    if (!taskCancelProvider) {\n      throw new Error(`No task canceller registered for key '${taskKey}'`);\n    }\n    taskCancelProvider()();\n  },\n};\n\nBatchedBridge.registerCallableModule('AppRegistry', AppRegistry);\n\nif (__DEV__) {\n  const LogBoxInspector = require('../LogBox/LogBoxInspectorContainer').default;\n  AppRegistry.registerComponent('LogBox', () => LogBoxInspector);\n} else {\n  AppRegistry.registerComponent(\n    'LogBox',\n    () =>\n      function NoOp() {\n        return null;\n      },\n  );\n}\n\nmodule.exports = AppRegistry;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +notifyTaskFinished: (taskId: number) => void;\n  +notifyTaskRetry: (taskId: number) => Promise<boolean>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('HeadlessJsTaskSupport'): ?Spec);\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nexport default class HeadlessJsTaskError extends Error {}\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';\nimport NativeRedBox from '../NativeModules/specs/NativeRedBox';\nimport {type EventSubscription} from '../vendor/emitter/EventEmitter';\nimport NativeBugReporting from './NativeBugReporting';\n\ntype ExtraData = {[key: string]: string, ...};\ntype SourceCallback = () => string;\ntype DebugData = {\n  extras: ExtraData,\n  files: ExtraData,\n  ...\n};\n\nfunction defaultExtras() {\n  BugReporting.addFileSource('react_hierarchy.txt', () =>\n    require('./dumpReactTree')(),\n  );\n}\n\n/**\n * A simple class for collecting bug report data. Components can add sources that will be queried when a bug report\n * is created via `collectExtraData`. For example, a list component might add a source that provides the list of rows\n * that are currently visible on screen. Components should also remember to call `remove()` on the object that is\n * returned by `addSource` when they are unmounted.\n */\nclass BugReporting {\n  static _extraSources: Map<string, SourceCallback> = new Map();\n  static _fileSources: Map<string, SourceCallback> = new Map();\n  static _subscription: ?EventSubscription = null;\n  static _redboxSubscription: ?EventSubscription = null;\n\n  static _maybeInit() {\n    if (!BugReporting._subscription) {\n      BugReporting._subscription = RCTDeviceEventEmitter.addListener(\n        'collectBugExtraData',\n        BugReporting.collectExtraData,\n        null,\n      );\n      defaultExtras();\n    }\n\n    if (!BugReporting._redboxSubscription) {\n      BugReporting._redboxSubscription = RCTDeviceEventEmitter.addListener(\n        'collectRedBoxExtraData',\n        BugReporting.collectExtraData,\n        null,\n      );\n    }\n  }\n\n  /**\n   * Maps a string key to a simple callback that should return a string payload to be attached\n   * to a bug report. Source callbacks are called when `collectExtraData` is called.\n   *\n   * Returns an object to remove the source when the component unmounts.\n   *\n   * Conflicts trample with a warning.\n   */\n  static addSource(\n    key: string,\n    callback: SourceCallback,\n  ): {remove: () => void, ...} {\n    return this._addSource(key, callback, BugReporting._extraSources);\n  }\n\n  /**\n   * Maps a string key to a simple callback that should return a string payload to be attached\n   * to a bug report. Source callbacks are called when `collectExtraData` is called.\n   *\n   * Returns an object to remove the source when the component unmounts.\n   *\n   * Conflicts trample with a warning.\n   */\n  static addFileSource(\n    key: string,\n    callback: SourceCallback,\n  ): {remove: () => void, ...} {\n    return this._addSource(key, callback, BugReporting._fileSources);\n  }\n\n  static _addSource(\n    key: string,\n    callback: SourceCallback,\n    source: Map<string, SourceCallback>,\n  ): {remove: () => void, ...} {\n    BugReporting._maybeInit();\n    if (source.has(key)) {\n      console.warn(\n        `BugReporting.add* called multiple times for same key '${key}'`,\n      );\n    }\n    source.set(key, callback);\n    return {\n      remove: () => {\n        source.delete(key);\n      },\n    };\n  }\n\n  /**\n   * This can be called from a native bug reporting flow, or from JS code.\n   *\n   * If available, this will call `NativeModules.BugReporting.setExtraData(extraData)`\n   * after collecting `extraData`.\n   */\n  static collectExtraData(): DebugData {\n    const extraData: ExtraData = {};\n    for (const [key, callback] of BugReporting._extraSources) {\n      extraData[key] = callback();\n    }\n    const fileData: ExtraData = {};\n    for (const [key, callback] of BugReporting._fileSources) {\n      fileData[key] = callback();\n    }\n\n    if (NativeBugReporting != null && NativeBugReporting.setExtraData != null) {\n      NativeBugReporting.setExtraData(extraData, fileData);\n    }\n\n    if (NativeRedBox != null && NativeRedBox.setExtraData != null) {\n      NativeRedBox.setExtraData(extraData, 'From BugReporting.js');\n    }\n\n    return {extras: extraData, files: fileData};\n  }\n}\n\nmodule.exports = BugReporting;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +setExtraData: (extraData: Object, forIdentifier: string) => void;\n  +dismiss: () => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('RedBox'): ?Spec);\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 * @format\n * @flow\n */\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +startReportAProblemFlow: () => void;\n  +setExtraData: (extraData: Object, extraFiles: Object) => void;\n  +setCategoryID: (categoryID: string) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('BugReporting'): ?Spec);\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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/*\nconst getReactData = require('getReactData');\n\nconst INDENTATION_SIZE = 2;\nconst MAX_DEPTH = 2;\nconst MAX_STRING_LENGTH = 50;\n*/\n\n/**\n * Dump all React Native root views and their content. This function tries\n * it best to get the content but ultimately relies on implementation details\n * of React and will fail in future versions.\n */\nfunction dumpReactTree(): string {\n  try {\n    return getReactTree();\n  } catch (e) {\n    return 'Failed to dump react tree: ' + e;\n  }\n}\n\nfunction getReactTree() {\n  // TODO(sema): Reenable tree dumps using the Fiber tree structure. #15945684\n  return (\n    'React tree dumps have been temporarily disabled while React is ' +\n    'upgraded to Fiber.'\n  );\n  /*\n  let output = '';\n  const rootIds = Object.getOwnPropertyNames(ReactNativeMount._instancesByContainerID);\n  for (const rootId of rootIds) {\n    const instance = ReactNativeMount._instancesByContainerID[rootId];\n    output += `============ Root ID: ${rootId} ============\\n`;\n    output += dumpNode(instance, 0);\n    output += `============ End root ID: ${rootId} ============\\n`;\n  }\n  return output;\n*/\n}\n\n/*\nfunction dumpNode(node: Object, indentation: number) {\n  const data = getReactData(node);\n  if (data.nodeType === 'Text') {\n    return indent(indentation) + data.text + '\\n';\n  } else if (data.nodeType === 'Empty') {\n    return '';\n  }\n  let output = indent(indentation) + `<${data.name}`;\n  if (data.nodeType === 'Composite') {\n    for (const propName of Object.getOwnPropertyNames(data.props || {})) {\n      if (isNormalProp(propName)) {\n        try {\n          const value = convertValue(data.props[propName]);\n          if (value) {\n            output += ` ${propName}=${value}`;\n          }\n        } catch (e) {\n          const message = `[Failed to get property: ${e}]`;\n          output += ` ${propName}=${message}`;\n        }\n      }\n    }\n  }\n  let childOutput = '';\n  for (const child of data.children || []) {\n    childOutput += dumpNode(child, indentation + 1);\n  }\n\n  if (childOutput) {\n    output += '>\\n' + childOutput + indent(indentation) + `</${data.name}>\\n`;\n  } else {\n    output += ' />\\n';\n  }\n\n  return output;\n}\n\nfunction isNormalProp(name: string): boolean {\n  switch (name) {\n    case 'children':\n    case 'key':\n    case 'ref':\n      return false;\n    default:\n      return true;\n  }\n}\n\nfunction convertObject(object: Object, depth: number) {\n  if (depth >= MAX_DEPTH) {\n    return '[...omitted]';\n  }\n  let output = '{';\n  let first = true;\n  for (const key of Object.getOwnPropertyNames(object)) {\n    if (!first) {\n      output += ', ';\n    }\n    output += `${key}: ${convertValue(object[key], depth + 1)}`;\n    first = false;\n  }\n  return output + '}';\n}\n\nfunction convertValue(value, depth = 0): ?string {\n  if (!value) {\n    return null;\n  }\n\n  switch (typeof value) {\n    case 'string':\n      return JSON.stringify(possiblyEllipsis(value).replace('\\n', '\\\\n'));\n    case 'boolean':\n    case 'number':\n      return JSON.stringify(value);\n    case 'function':\n      return '[function]';\n    case 'object':\n      return convertObject(value, depth);\n    default:\n      return null;\n  }\n}\n\nfunction possiblyEllipsis(value: string) {\n  if (value.length > MAX_STRING_LENGTH) {\n    return value.slice(0, MAX_STRING_LENGTH) + '...';\n  } else {\n    return value;\n  }\n}\n\nfunction indent(size: number) {\n  return ' '.repeat(size * INDENTATION_SIZE);\n}\n*/\n\nmodule.exports = dumpReactTree;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nexport type Scene = {name: string, ...};\n\nlet _listeners: Array<(scene: Scene) => void> = [];\n\nlet _activeScene = {name: 'default'};\n\nconst SceneTracker = {\n  setActiveScene(scene: Scene) {\n    _activeScene = scene;\n    _listeners.forEach(listener => listener(_activeScene));\n  },\n\n  getActiveScene(): Scene {\n    return _activeScene;\n  },\n\n  addActiveSceneChangedListener(\n    callback: (scene: Scene) => void,\n  ): {remove: () => void, ...} {\n    _listeners.push(callback);\n    return {\n      remove: () => {\n        _listeners = _listeners.filter(listener => callback !== listener);\n      },\n    };\n  },\n};\n\nmodule.exports = SceneTracker;\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst AppContainer = require('./AppContainer');\nimport GlobalPerformanceLogger from '../Utilities/GlobalPerformanceLogger';\nimport type {IPerformanceLogger} from '../Utilities/createPerformanceLogger';\nimport PerformanceLoggerContext from '../Utilities/PerformanceLoggerContext';\nconst React = require('react');\n\nconst invariant = require('invariant');\n\n// require BackHandler so it sets the default handler that exits the app if no listeners respond\nrequire('../Utilities/BackHandler');\n\nfunction renderApplication<Props: Object>(\n  RootComponent: React.ComponentType<Props>,\n  initialProps: Props,\n  rootTag: any,\n  WrapperComponent?: ?React.ComponentType<*>,\n  fabric?: boolean,\n  showArchitectureIndicator?: boolean,\n  scopedPerformanceLogger?: IPerformanceLogger,\n  isLogBox?: boolean,\n) {\n  invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);\n\n  const performanceLogger = scopedPerformanceLogger ?? GlobalPerformanceLogger;\n\n  const renderable = (\n    <PerformanceLoggerContext.Provider value={performanceLogger}>\n      <AppContainer\n        rootTag={rootTag}\n        fabric={fabric}\n        showArchitectureIndicator={showArchitectureIndicator}\n        WrapperComponent={WrapperComponent}\n        initialProps={initialProps ?? Object.freeze({})}\n        internal_excludeLogBox={isLogBox}>\n        <RootComponent {...initialProps} rootTag={rootTag} />\n      </AppContainer>\n    </PerformanceLoggerContext.Provider>\n  );\n\n  performanceLogger.startTimespan('renderApplication_React_render');\n  performanceLogger.setExtra('usedReactFabric', fabric ? '1' : '0');\n\n  if (fabric) {\n    require('../Renderer/shims/ReactFabric').render(renderable, rootTag);\n  } else {\n    require('../Renderer/shims/ReactNative').render(renderable, rootTag);\n  }\n  performanceLogger.stopTimespan('renderApplication_React_render');\n}\n\nmodule.exports = renderApplication;\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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nimport * as React from 'react';\nimport GlobalPerformanceLogger from './GlobalPerformanceLogger';\nimport type {IPerformanceLogger} from './createPerformanceLogger';\n\n/**\n * This is a React Context that provides a scoped instance of IPerformanceLogger.\n * We wrap every <AppContainer /> with a Provider for this context so the logger\n * should be available in every component.\n * See React docs about using Context: https://reactjs.org/docs/context.html\n */\nconst PerformanceLoggerContext: React.Context<IPerformanceLogger> = React.createContext(\n  GlobalPerformanceLogger,\n);\nmodule.exports = PerformanceLoggerContext;\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 * @format\n * @flow\n */\n\n'use strict';\n\nmodule.exports = require('../Components/UnimplementedViews/UnimplementedView');\n\ntype BackPressEventName = 'backPress' | 'hardwareBackPress';\n\nfunction emptyFunction(): void {}\n\ntype TBackHandler = {|\n  +exitApp: () => void,\n  +addEventListener: (\n    eventName: BackPressEventName,\n    handler: () => ?boolean,\n  ) => {remove: () => void, ...},\n  +removeEventListener: (\n    eventName: BackPressEventName,\n    handler: () => ?boolean,\n  ) => void,\n|};\n\nlet BackHandler: TBackHandler = {\n  exitApp: emptyFunction,\n  addEventListener(_eventName: BackPressEventName, _handler: Function) {\n    return {\n      remove: emptyFunction,\n    };\n  },\n  removeEventListener(_eventName: BackPressEventName, _handler: Function) {},\n};\n\nmodule.exports = BackHandler;\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport {BatchedBridge} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface';\n\n// TODO @sema: Adjust types\nimport type {ReactNativeType} from './ReactNativeTypes';\n\nlet ReactFabric;\n\nif (__DEV__) {\n  ReactFabric = require('../implementations/ReactFabric-dev');\n} else {\n  ReactFabric = require('../implementations/ReactFabric-prod');\n}\n\nif (global.RN$Bridgeless) {\n  global.RN$stopSurface = ReactFabric.stopSurface;\n} else {\n  BatchedBridge.registerCallableModule('ReactFabric', ReactFabric);\n}\n\nmodule.exports = (ReactFabric: ReactNativeType);\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 * @noflow\n * @nolint\n * @providesModule ReactFabric-prod\n * @preventMunge\n * @generated\n */\n\n\"use strict\";\nrequire(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInitializeCore\");\nvar ReactNativePrivateInterface = require(\"react-native/Libraries/ReactPrivate/ReactNativePrivateInterface\"),\n  React = require(\"react\"),\n  Scheduler = require(\"scheduler\");\nfunction invokeGuardedCallbackImpl(name, func, context, a, b, c, d, e, f) {\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    this.onError(error);\n  }\n}\nvar hasError = !1,\n  caughtError = null,\n  hasRethrowError = !1,\n  rethrowError = null,\n  reporter = {\n    onError: function(error) {\n      hasError = !0;\n      caughtError = error;\n    }\n  };\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n  hasError = !1;\n  caughtError = null;\n  invokeGuardedCallbackImpl.apply(reporter, arguments);\n}\nfunction invokeGuardedCallbackAndCatchFirstError(\n  name,\n  func,\n  context,\n  a,\n  b,\n  c,\n  d,\n  e,\n  f\n) {\n  invokeGuardedCallback.apply(this, arguments);\n  if (hasError) {\n    if (hasError) {\n      var error = caughtError;\n      hasError = !1;\n      caughtError = null;\n    } else\n      throw Error(\n        \"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n    hasRethrowError || ((hasRethrowError = !0), (rethrowError = error));\n  }\n}\nvar getFiberCurrentPropsFromNode = null,\n  getInstanceFromNode = null,\n  getNodeFromInstance = null;\nfunction executeDispatch(event, listener, inst) {\n  var type = event.type || \"unknown-event\";\n  event.currentTarget = getNodeFromInstance(inst);\n  invokeGuardedCallbackAndCatchFirstError(type, listener, void 0, event);\n  event.currentTarget = null;\n}\nfunction executeDirectDispatch(event) {\n  var dispatchListener = event._dispatchListeners,\n    dispatchInstance = event._dispatchInstances;\n  if (Array.isArray(dispatchListener))\n    throw Error(\"executeDirectDispatch(...): Invalid `event`.\");\n  event.currentTarget = dispatchListener\n    ? getNodeFromInstance(dispatchInstance)\n    : null;\n  dispatchListener = dispatchListener ? dispatchListener(event) : null;\n  event.currentTarget = null;\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n  return dispatchListener;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction SyntheticEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n  this._dispatchInstances = this._dispatchListeners = null;\n  dispatchConfig = this.constructor.Interface;\n  for (var propName in dispatchConfig)\n    dispatchConfig.hasOwnProperty(propName) &&\n      ((targetInst = dispatchConfig[propName])\n        ? (this[propName] = targetInst(nativeEvent))\n        : \"target\" === propName\n        ? (this.target = nativeEventTarget)\n        : (this[propName] = nativeEvent[propName]));\n  this.isDefaultPrevented = (null != nativeEvent.defaultPrevented\n  ? nativeEvent.defaultPrevented\n  : !1 === nativeEvent.returnValue)\n    ? functionThatReturnsTrue\n    : functionThatReturnsFalse;\n  this.isPropagationStopped = functionThatReturnsFalse;\n  return this;\n}\nObject.assign(SyntheticEvent.prototype, {\n  preventDefault: function() {\n    this.defaultPrevented = !0;\n    var event = this.nativeEvent;\n    event &&\n      (event.preventDefault\n        ? event.preventDefault()\n        : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n      (this.isDefaultPrevented = functionThatReturnsTrue));\n  },\n  stopPropagation: function() {\n    var event = this.nativeEvent;\n    event &&\n      (event.stopPropagation\n        ? event.stopPropagation()\n        : \"unknown\" !== typeof event.cancelBubble && (event.cancelBubble = !0),\n      (this.isPropagationStopped = functionThatReturnsTrue));\n  },\n  persist: function() {\n    this.isPersistent = functionThatReturnsTrue;\n  },\n  isPersistent: functionThatReturnsFalse,\n  destructor: function() {\n    var Interface = this.constructor.Interface,\n      propName;\n    for (propName in Interface) this[propName] = null;\n    this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n    this.isPropagationStopped = this.isDefaultPrevented = functionThatReturnsFalse;\n    this._dispatchInstances = this._dispatchListeners = null;\n  }\n});\nSyntheticEvent.Interface = {\n  type: null,\n  target: null,\n  currentTarget: function() {\n    return null;\n  },\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function(event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\nSyntheticEvent.extend = function(Interface) {\n  function E() {}\n  function Class() {\n    return Super.apply(this, arguments);\n  }\n  var Super = this;\n  E.prototype = Super.prototype;\n  var prototype = new E();\n  Object.assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n  Class.Interface = Object.assign({}, Super.Interface, Interface);\n  Class.extend = Super.extend;\n  addEventPoolingTo(Class);\n  return Class;\n};\naddEventPoolingTo(SyntheticEvent);\nfunction createOrGetPooledEvent(\n  dispatchConfig,\n  targetInst,\n  nativeEvent,\n  nativeInst\n) {\n  if (this.eventPool.length) {\n    var instance = this.eventPool.pop();\n    this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n    return instance;\n  }\n  return new this(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\nfunction releasePooledEvent(event) {\n  if (!(event instanceof this))\n    throw Error(\n      \"Trying to release an event instance into a pool of a different type.\"\n    );\n  event.destructor();\n  10 > this.eventPool.length && this.eventPool.push(event);\n}\nfunction addEventPoolingTo(EventConstructor) {\n  EventConstructor.getPooled = createOrGetPooledEvent;\n  EventConstructor.eventPool = [];\n  EventConstructor.release = releasePooledEvent;\n}\nvar ResponderSyntheticEvent = SyntheticEvent.extend({\n  touchHistory: function() {\n    return null;\n  }\n});\nfunction isStartish(topLevelType) {\n  return \"topTouchStart\" === topLevelType;\n}\nfunction isMoveish(topLevelType) {\n  return \"topTouchMove\" === topLevelType;\n}\nvar startDependencies = [\"topTouchStart\"],\n  moveDependencies = [\"topTouchMove\"],\n  endDependencies = [\"topTouchCancel\", \"topTouchEnd\"],\n  touchBank = [],\n  touchHistory = {\n    touchBank: touchBank,\n    numberActiveTouches: 0,\n    indexOfSingleActiveTouch: -1,\n    mostRecentTimeStamp: 0\n  };\nfunction timestampForTouch(touch) {\n  return touch.timeStamp || touch.timestamp;\n}\nfunction getTouchIdentifier(_ref) {\n  _ref = _ref.identifier;\n  if (null == _ref) throw Error(\"Touch object is missing identifier.\");\n  return _ref;\n}\nfunction recordTouchStart(touch) {\n  var identifier = getTouchIdentifier(touch),\n    touchRecord = touchBank[identifier];\n  touchRecord\n    ? ((touchRecord.touchActive = !0),\n      (touchRecord.startPageX = touch.pageX),\n      (touchRecord.startPageY = touch.pageY),\n      (touchRecord.startTimeStamp = timestampForTouch(touch)),\n      (touchRecord.currentPageX = touch.pageX),\n      (touchRecord.currentPageY = touch.pageY),\n      (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n      (touchRecord.previousPageX = touch.pageX),\n      (touchRecord.previousPageY = touch.pageY),\n      (touchRecord.previousTimeStamp = timestampForTouch(touch)))\n    : ((touchRecord = {\n        touchActive: !0,\n        startPageX: touch.pageX,\n        startPageY: touch.pageY,\n        startTimeStamp: timestampForTouch(touch),\n        currentPageX: touch.pageX,\n        currentPageY: touch.pageY,\n        currentTimeStamp: timestampForTouch(touch),\n        previousPageX: touch.pageX,\n        previousPageY: touch.pageY,\n        previousTimeStamp: timestampForTouch(touch)\n      }),\n      (touchBank[identifier] = touchRecord));\n  touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\nfunction recordTouchMove(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !0),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nfunction recordTouchEnd(touch) {\n  var touchRecord = touchBank[getTouchIdentifier(touch)];\n  touchRecord &&\n    ((touchRecord.touchActive = !1),\n    (touchRecord.previousPageX = touchRecord.currentPageX),\n    (touchRecord.previousPageY = touchRecord.currentPageY),\n    (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n    (touchRecord.currentPageX = touch.pageX),\n    (touchRecord.currentPageY = touch.pageY),\n    (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n    (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)));\n}\nvar ResponderTouchHistoryStore = {\n  recordTouchTrack: function(topLevelType, nativeEvent) {\n    if (isMoveish(topLevelType))\n      nativeEvent.changedTouches.forEach(recordTouchMove);\n    else if (isStartish(topLevelType))\n      nativeEvent.changedTouches.forEach(recordTouchStart),\n        (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n        1 === touchHistory.numberActiveTouches &&\n          (touchHistory.indexOfSingleActiveTouch =\n            nativeEvent.touches[0].identifier);\n    else if (\n      \"topTouchEnd\" === topLevelType ||\n      \"topTouchCancel\" === topLevelType\n    )\n      if (\n        (nativeEvent.changedTouches.forEach(recordTouchEnd),\n        (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n        1 === touchHistory.numberActiveTouches)\n      )\n        for (topLevelType = 0; topLevelType < touchBank.length; topLevelType++)\n          if (\n            ((nativeEvent = touchBank[topLevelType]),\n            null != nativeEvent && nativeEvent.touchActive)\n          ) {\n            touchHistory.indexOfSingleActiveTouch = topLevelType;\n            break;\n          }\n  },\n  touchHistory: touchHistory\n};\nfunction accumulate(current, next) {\n  if (null == next)\n    throw Error(\n      \"accumulate(...): Accumulated items must not be null or undefined.\"\n    );\n  return null == current\n    ? next\n    : Array.isArray(current)\n    ? current.concat(next)\n    : Array.isArray(next)\n    ? [current].concat(next)\n    : [current, next];\n}\nfunction accumulateInto(current, next) {\n  if (null == next)\n    throw Error(\n      \"accumulateInto(...): Accumulated items must not be null or undefined.\"\n    );\n  if (null == current) return next;\n  if (Array.isArray(current)) {\n    if (Array.isArray(next)) return current.push.apply(current, next), current;\n    current.push(next);\n    return current;\n  }\n  return Array.isArray(next) ? [current].concat(next) : [current, next];\n}\nfunction forEachAccumulated(arr, cb, scope) {\n  Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr);\n}\nvar responderInst = null,\n  trackedTouchCount = 0;\nfunction changeResponder(nextResponderInst, blockHostResponder) {\n  var oldResponderInst = responderInst;\n  responderInst = nextResponderInst;\n  if (null !== ResponderEventPlugin.GlobalResponderHandler)\n    ResponderEventPlugin.GlobalResponderHandler.onChange(\n      oldResponderInst,\n      nextResponderInst,\n      blockHostResponder\n    );\n}\nvar eventTypes = {\n  startShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onStartShouldSetResponder\",\n      captured: \"onStartShouldSetResponderCapture\"\n    },\n    dependencies: startDependencies\n  },\n  scrollShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onScrollShouldSetResponder\",\n      captured: \"onScrollShouldSetResponderCapture\"\n    },\n    dependencies: [\"topScroll\"]\n  },\n  selectionChangeShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onSelectionChangeShouldSetResponder\",\n      captured: \"onSelectionChangeShouldSetResponderCapture\"\n    },\n    dependencies: [\"topSelectionChange\"]\n  },\n  moveShouldSetResponder: {\n    phasedRegistrationNames: {\n      bubbled: \"onMoveShouldSetResponder\",\n      captured: \"onMoveShouldSetResponderCapture\"\n    },\n    dependencies: moveDependencies\n  },\n  responderStart: {\n    registrationName: \"onResponderStart\",\n    dependencies: startDependencies\n  },\n  responderMove: {\n    registrationName: \"onResponderMove\",\n    dependencies: moveDependencies\n  },\n  responderEnd: {\n    registrationName: \"onResponderEnd\",\n    dependencies: endDependencies\n  },\n  responderRelease: {\n    registrationName: \"onResponderRelease\",\n    dependencies: endDependencies\n  },\n  responderTerminationRequest: {\n    registrationName: \"onResponderTerminationRequest\",\n    dependencies: []\n  },\n  responderGrant: { registrationName: \"onResponderGrant\", dependencies: [] },\n  responderReject: { registrationName: \"onResponderReject\", dependencies: [] },\n  responderTerminate: {\n    registrationName: \"onResponderTerminate\",\n    dependencies: []\n  }\n};\nfunction getParent(inst) {\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction traverseTwoPhase(inst, fn, arg) {\n  for (var path = []; inst; ) path.push(inst), (inst = getParent(inst));\n  for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n  for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction getListener(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  if (\n    (phase = getListener(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    targetInst = targetInst ? getParent(targetInst) : null;\n    traverseTwoPhase(targetInst, accumulateDirectionalDispatches, event);\n  }\n}\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  event &&\n    event.dispatchConfig.phasedRegistrationNames &&\n    traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n}\nvar ResponderEventPlugin = {\n    _getResponder: function() {\n      return responderInst;\n    },\n    eventTypes: eventTypes,\n    extractEvents: function(\n      topLevelType,\n      targetInst,\n      nativeEvent,\n      nativeEventTarget\n    ) {\n      if (isStartish(topLevelType)) trackedTouchCount += 1;\n      else if (\n        \"topTouchEnd\" === topLevelType ||\n        \"topTouchCancel\" === topLevelType\n      )\n        if (0 <= trackedTouchCount) --trackedTouchCount;\n        else return null;\n      ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n      if (\n        targetInst &&\n        ((\"topScroll\" === topLevelType && !nativeEvent.responderIgnoreScroll) ||\n          (0 < trackedTouchCount && \"topSelectionChange\" === topLevelType) ||\n          isStartish(topLevelType) ||\n          isMoveish(topLevelType))\n      ) {\n        var shouldSetEventType = isStartish(topLevelType)\n          ? eventTypes.startShouldSetResponder\n          : isMoveish(topLevelType)\n          ? eventTypes.moveShouldSetResponder\n          : \"topSelectionChange\" === topLevelType\n          ? eventTypes.selectionChangeShouldSetResponder\n          : eventTypes.scrollShouldSetResponder;\n        if (responderInst)\n          b: {\n            var JSCompiler_temp = responderInst;\n            for (\n              var depthA = 0, tempA = JSCompiler_temp;\n              tempA;\n              tempA = getParent(tempA)\n            )\n              depthA++;\n            tempA = 0;\n            for (var tempB = targetInst; tempB; tempB = getParent(tempB))\n              tempA++;\n            for (; 0 < depthA - tempA; )\n              (JSCompiler_temp = getParent(JSCompiler_temp)), depthA--;\n            for (; 0 < tempA - depthA; )\n              (targetInst = getParent(targetInst)), tempA--;\n            for (; depthA--; ) {\n              if (\n                JSCompiler_temp === targetInst ||\n                JSCompiler_temp === targetInst.alternate\n              )\n                break b;\n              JSCompiler_temp = getParent(JSCompiler_temp);\n              targetInst = getParent(targetInst);\n            }\n            JSCompiler_temp = null;\n          }\n        else JSCompiler_temp = targetInst;\n        targetInst = JSCompiler_temp;\n        JSCompiler_temp = targetInst === responderInst;\n        shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        shouldSetEventType.touchHistory =\n          ResponderTouchHistoryStore.touchHistory;\n        JSCompiler_temp\n          ? forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingleSkipTarget\n            )\n          : forEachAccumulated(\n              shouldSetEventType,\n              accumulateTwoPhaseDispatchesSingle\n            );\n        b: {\n          JSCompiler_temp = shouldSetEventType._dispatchListeners;\n          targetInst = shouldSetEventType._dispatchInstances;\n          if (Array.isArray(JSCompiler_temp))\n            for (\n              depthA = 0;\n              depthA < JSCompiler_temp.length &&\n              !shouldSetEventType.isPropagationStopped();\n              depthA++\n            ) {\n              if (\n                JSCompiler_temp[depthA](shouldSetEventType, targetInst[depthA])\n              ) {\n                JSCompiler_temp = targetInst[depthA];\n                break b;\n              }\n            }\n          else if (\n            JSCompiler_temp &&\n            JSCompiler_temp(shouldSetEventType, targetInst)\n          ) {\n            JSCompiler_temp = targetInst;\n            break b;\n          }\n          JSCompiler_temp = null;\n        }\n        shouldSetEventType._dispatchInstances = null;\n        shouldSetEventType._dispatchListeners = null;\n        shouldSetEventType.isPersistent() ||\n          shouldSetEventType.constructor.release(shouldSetEventType);\n        if (JSCompiler_temp && JSCompiler_temp !== responderInst)\n          if (\n            ((shouldSetEventType = ResponderSyntheticEvent.getPooled(\n              eventTypes.responderGrant,\n              JSCompiler_temp,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            (shouldSetEventType.touchHistory =\n              ResponderTouchHistoryStore.touchHistory),\n            forEachAccumulated(\n              shouldSetEventType,\n              accumulateDirectDispatchesSingle\n            ),\n            (targetInst = !0 === executeDirectDispatch(shouldSetEventType)),\n            responderInst)\n          )\n            if (\n              ((depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminationRequest,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (depthA.touchHistory = ResponderTouchHistoryStore.touchHistory),\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle),\n              (tempA =\n                !depthA._dispatchListeners || executeDirectDispatch(depthA)),\n              depthA.isPersistent() || depthA.constructor.release(depthA),\n              tempA)\n            ) {\n              depthA = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderTerminate,\n                responderInst,\n                nativeEvent,\n                nativeEventTarget\n              );\n              depthA.touchHistory = ResponderTouchHistoryStore.touchHistory;\n              forEachAccumulated(depthA, accumulateDirectDispatchesSingle);\n              var JSCompiler_temp$jscomp$0 = accumulate(\n                JSCompiler_temp$jscomp$0,\n                [shouldSetEventType, depthA]\n              );\n              changeResponder(JSCompiler_temp, targetInst);\n            } else\n              (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n                eventTypes.responderReject,\n                JSCompiler_temp,\n                nativeEvent,\n                nativeEventTarget\n              )),\n                (shouldSetEventType.touchHistory =\n                  ResponderTouchHistoryStore.touchHistory),\n                forEachAccumulated(\n                  shouldSetEventType,\n                  accumulateDirectDispatchesSingle\n                ),\n                (JSCompiler_temp$jscomp$0 = accumulate(\n                  JSCompiler_temp$jscomp$0,\n                  shouldSetEventType\n                ));\n          else\n            (JSCompiler_temp$jscomp$0 = accumulate(\n              JSCompiler_temp$jscomp$0,\n              shouldSetEventType\n            )),\n              changeResponder(JSCompiler_temp, targetInst);\n        else JSCompiler_temp$jscomp$0 = null;\n      } else JSCompiler_temp$jscomp$0 = null;\n      shouldSetEventType = responderInst && isStartish(topLevelType);\n      JSCompiler_temp = responderInst && isMoveish(topLevelType);\n      targetInst =\n        responderInst &&\n        (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType);\n      if (\n        (shouldSetEventType = shouldSetEventType\n          ? eventTypes.responderStart\n          : JSCompiler_temp\n          ? eventTypes.responderMove\n          : targetInst\n          ? eventTypes.responderEnd\n          : null)\n      )\n        (shouldSetEventType = ResponderSyntheticEvent.getPooled(\n          shouldSetEventType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (shouldSetEventType.touchHistory =\n            ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(\n            shouldSetEventType,\n            accumulateDirectDispatchesSingle\n          ),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            shouldSetEventType\n          ));\n      shouldSetEventType = responderInst && \"topTouchCancel\" === topLevelType;\n      if (\n        (topLevelType =\n          responderInst &&\n          !shouldSetEventType &&\n          (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType))\n      )\n        a: {\n          if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length)\n            for (\n              JSCompiler_temp = 0;\n              JSCompiler_temp < topLevelType.length;\n              JSCompiler_temp++\n            )\n              if (\n                ((targetInst = topLevelType[JSCompiler_temp].target),\n                null !== targetInst &&\n                  void 0 !== targetInst &&\n                  0 !== targetInst)\n              ) {\n                depthA = getInstanceFromNode(targetInst);\n                b: {\n                  for (targetInst = responderInst; depthA; ) {\n                    if (\n                      targetInst === depthA ||\n                      targetInst === depthA.alternate\n                    ) {\n                      targetInst = !0;\n                      break b;\n                    }\n                    depthA = getParent(depthA);\n                  }\n                  targetInst = !1;\n                }\n                if (targetInst) {\n                  topLevelType = !1;\n                  break a;\n                }\n              }\n          topLevelType = !0;\n        }\n      if (\n        (topLevelType = shouldSetEventType\n          ? eventTypes.responderTerminate\n          : topLevelType\n          ? eventTypes.responderRelease\n          : null)\n      )\n        (nativeEvent = ResponderSyntheticEvent.getPooled(\n          topLevelType,\n          responderInst,\n          nativeEvent,\n          nativeEventTarget\n        )),\n          (nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory),\n          forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle),\n          (JSCompiler_temp$jscomp$0 = accumulate(\n            JSCompiler_temp$jscomp$0,\n            nativeEvent\n          )),\n          changeResponder(null);\n      return JSCompiler_temp$jscomp$0;\n    },\n    GlobalResponderHandler: null,\n    injection: {\n      injectGlobalResponderHandler: function(GlobalResponderHandler) {\n        ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n      }\n    }\n  },\n  eventPluginOrder = null,\n  namesToPlugins = {};\nfunction recomputePluginOrdering() {\n  if (eventPluginOrder)\n    for (var pluginName in namesToPlugins) {\n      var pluginModule = namesToPlugins[pluginName],\n        pluginIndex = eventPluginOrder.indexOf(pluginName);\n      if (!(-1 < pluginIndex))\n        throw Error(\n          \"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `\" +\n            pluginName +\n            \"`.\"\n        );\n      if (!plugins[pluginIndex]) {\n        if (!pluginModule.extractEvents)\n          throw Error(\n            \"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `\" +\n              pluginName +\n              \"` does not.\"\n          );\n        plugins[pluginIndex] = pluginModule;\n        pluginIndex = pluginModule.eventTypes;\n        for (var eventName in pluginIndex) {\n          var JSCompiler_inline_result = void 0;\n          var dispatchConfig = pluginIndex[eventName],\n            eventName$jscomp$0 = eventName;\n          if (eventNameDispatchConfigs.hasOwnProperty(eventName$jscomp$0))\n            throw Error(\n              \"EventPluginRegistry: More than one plugin attempted to publish the same event name, `\" +\n                eventName$jscomp$0 +\n                \"`.\"\n            );\n          eventNameDispatchConfigs[eventName$jscomp$0] = dispatchConfig;\n          var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n          if (phasedRegistrationNames) {\n            for (JSCompiler_inline_result in phasedRegistrationNames)\n              phasedRegistrationNames.hasOwnProperty(\n                JSCompiler_inline_result\n              ) &&\n                publishRegistrationName(\n                  phasedRegistrationNames[JSCompiler_inline_result],\n                  pluginModule,\n                  eventName$jscomp$0\n                );\n            JSCompiler_inline_result = !0;\n          } else\n            dispatchConfig.registrationName\n              ? (publishRegistrationName(\n                  dispatchConfig.registrationName,\n                  pluginModule,\n                  eventName$jscomp$0\n                ),\n                (JSCompiler_inline_result = !0))\n              : (JSCompiler_inline_result = !1);\n          if (!JSCompiler_inline_result)\n            throw Error(\n              \"EventPluginRegistry: Failed to publish event `\" +\n                eventName +\n                \"` for plugin `\" +\n                pluginName +\n                \"`.\"\n            );\n        }\n      }\n    }\n}\nfunction publishRegistrationName(registrationName, pluginModule) {\n  if (registrationNameModules[registrationName])\n    throw Error(\n      \"EventPluginRegistry: More than one plugin attempted to publish the same registration name, `\" +\n        registrationName +\n        \"`.\"\n    );\n  registrationNameModules[registrationName] = pluginModule;\n}\nvar plugins = [],\n  eventNameDispatchConfigs = {},\n  registrationNameModules = {};\nfunction getListener$1(inst, registrationName) {\n  inst = inst.stateNode;\n  if (null === inst) return null;\n  inst = getFiberCurrentPropsFromNode(inst);\n  if (null === inst) return null;\n  if ((inst = inst[registrationName]) && \"function\" !== typeof inst)\n    throw Error(\n      \"Expected `\" +\n        registrationName +\n        \"` listener to be a function, instead got a value of `\" +\n        typeof inst +\n        \"` type.\"\n    );\n  return inst;\n}\nvar customBubblingEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customBubblingEventTypes,\n  customDirectEventTypes =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry\n      .customDirectEventTypes;\nfunction accumulateDirectionalDispatches$1(inst, phase, event) {\n  if (\n    (phase = getListener$1(\n      inst,\n      event.dispatchConfig.phasedRegistrationNames[phase]\n    ))\n  )\n    (event._dispatchListeners = accumulateInto(\n      event._dispatchListeners,\n      phase\n    )),\n      (event._dispatchInstances = accumulateInto(\n        event._dispatchInstances,\n        inst\n      ));\n}\nfunction accumulateTwoPhaseDispatchesSingle$1(event) {\n  if (event && event.dispatchConfig.phasedRegistrationNames) {\n    for (var inst = event._targetInst, path = []; inst; ) {\n      path.push(inst);\n      do inst = inst.return;\n      while (inst && 5 !== inst.tag);\n      inst = inst ? inst : null;\n    }\n    for (inst = path.length; 0 < inst--; )\n      accumulateDirectionalDispatches$1(path[inst], \"captured\", event);\n    for (inst = 0; inst < path.length; inst++)\n      accumulateDirectionalDispatches$1(path[inst], \"bubbled\", event);\n  }\n}\nfunction accumulateDirectDispatchesSingle$1(event) {\n  if (event && event.dispatchConfig.registrationName) {\n    var inst = event._targetInst;\n    if (inst && event && event.dispatchConfig.registrationName) {\n      var listener = getListener$1(inst, event.dispatchConfig.registrationName);\n      listener &&\n        ((event._dispatchListeners = accumulateInto(\n          event._dispatchListeners,\n          listener\n        )),\n        (event._dispatchInstances = accumulateInto(\n          event._dispatchInstances,\n          inst\n        )));\n    }\n  }\n}\nif (eventPluginOrder)\n  throw Error(\n    \"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.\"\n  );\neventPluginOrder = Array.prototype.slice.call([\n  \"ResponderEventPlugin\",\n  \"ReactNativeBridgeEventPlugin\"\n]);\nrecomputePluginOrdering();\nvar injectedNamesToPlugins$jscomp$inline_219 = {\n    ResponderEventPlugin: ResponderEventPlugin,\n    ReactNativeBridgeEventPlugin: {\n      eventTypes: {},\n      extractEvents: function(\n        topLevelType,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      ) {\n        if (null == targetInst) return null;\n        var bubbleDispatchConfig = customBubblingEventTypes[topLevelType],\n          directDispatchConfig = customDirectEventTypes[topLevelType];\n        if (!bubbleDispatchConfig && !directDispatchConfig)\n          throw Error(\n            'Unsupported top level event type \"' + topLevelType + '\" dispatched'\n          );\n        topLevelType = SyntheticEvent.getPooled(\n          bubbleDispatchConfig || directDispatchConfig,\n          targetInst,\n          nativeEvent,\n          nativeEventTarget\n        );\n        if (bubbleDispatchConfig)\n          forEachAccumulated(\n            topLevelType,\n            accumulateTwoPhaseDispatchesSingle$1\n          );\n        else if (directDispatchConfig)\n          forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle$1);\n        else return null;\n        return topLevelType;\n      }\n    }\n  },\n  isOrderingDirty$jscomp$inline_220 = !1,\n  pluginName$jscomp$inline_221;\nfor (pluginName$jscomp$inline_221 in injectedNamesToPlugins$jscomp$inline_219)\n  if (\n    injectedNamesToPlugins$jscomp$inline_219.hasOwnProperty(\n      pluginName$jscomp$inline_221\n    )\n  ) {\n    var pluginModule$jscomp$inline_222 =\n      injectedNamesToPlugins$jscomp$inline_219[pluginName$jscomp$inline_221];\n    if (\n      !namesToPlugins.hasOwnProperty(pluginName$jscomp$inline_221) ||\n      namesToPlugins[pluginName$jscomp$inline_221] !==\n        pluginModule$jscomp$inline_222\n    ) {\n      if (namesToPlugins[pluginName$jscomp$inline_221])\n        throw Error(\n          \"EventPluginRegistry: Cannot inject two different event plugins using the same name, `\" +\n            pluginName$jscomp$inline_221 +\n            \"`.\"\n        );\n      namesToPlugins[\n        pluginName$jscomp$inline_221\n      ] = pluginModule$jscomp$inline_222;\n      isOrderingDirty$jscomp$inline_220 = !0;\n    }\n  }\nisOrderingDirty$jscomp$inline_220 && recomputePluginOrdering();\nfunction getInstanceFromInstance(instanceHandle) {\n  return instanceHandle;\n}\ngetFiberCurrentPropsFromNode = function(inst) {\n  return inst.canonical.currentProps;\n};\ngetInstanceFromNode = getInstanceFromInstance;\ngetNodeFromInstance = function(inst) {\n  inst = inst.stateNode.canonical;\n  if (!inst._nativeTag) throw Error(\"All native instances should have a tag.\");\n  return inst;\n};\nResponderEventPlugin.injection.injectGlobalResponderHandler({\n  onChange: function(from, to, blockNativeResponder) {\n    null !== to\n      ? ReactNativePrivateInterface.UIManager.setJSResponder(\n          to.stateNode.canonical._nativeTag,\n          blockNativeResponder\n        )\n      : ReactNativePrivateInterface.UIManager.clearJSResponder();\n  }\n});\nvar ReactSharedInternals =\n    React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n  REACT_ELEMENT_TYPE = 60103,\n  REACT_PORTAL_TYPE = 60106,\n  REACT_FRAGMENT_TYPE = 60107,\n  REACT_STRICT_MODE_TYPE = 60108,\n  REACT_PROFILER_TYPE = 60114,\n  REACT_PROVIDER_TYPE = 60109,\n  REACT_CONTEXT_TYPE = 60110,\n  REACT_FORWARD_REF_TYPE = 60112,\n  REACT_SUSPENSE_TYPE = 60113,\n  REACT_SUSPENSE_LIST_TYPE = 60120,\n  REACT_MEMO_TYPE = 60115,\n  REACT_LAZY_TYPE = 60116,\n  REACT_BLOCK_TYPE = 60121,\n  REACT_DEBUG_TRACING_MODE_TYPE = 60129,\n  REACT_OFFSCREEN_TYPE = 60130,\n  REACT_LEGACY_HIDDEN_TYPE = 60131;\nif (\"function\" === typeof Symbol && Symbol.for) {\n  var symbolFor = Symbol.for;\n  REACT_ELEMENT_TYPE = symbolFor(\"react.element\");\n  REACT_PORTAL_TYPE = symbolFor(\"react.portal\");\n  REACT_FRAGMENT_TYPE = symbolFor(\"react.fragment\");\n  REACT_STRICT_MODE_TYPE = symbolFor(\"react.strict_mode\");\n  REACT_PROFILER_TYPE = symbolFor(\"react.profiler\");\n  REACT_PROVIDER_TYPE = symbolFor(\"react.provider\");\n  REACT_CONTEXT_TYPE = symbolFor(\"react.context\");\n  REACT_FORWARD_REF_TYPE = symbolFor(\"react.forward_ref\");\n  REACT_SUSPENSE_TYPE = symbolFor(\"react.suspense\");\n  REACT_SUSPENSE_LIST_TYPE = symbolFor(\"react.suspense_list\");\n  REACT_MEMO_TYPE = symbolFor(\"react.memo\");\n  REACT_LAZY_TYPE = symbolFor(\"react.lazy\");\n  REACT_BLOCK_TYPE = symbolFor(\"react.block\");\n  symbolFor(\"react.scope\");\n  REACT_DEBUG_TRACING_MODE_TYPE = symbolFor(\"react.debug_trace_mode\");\n  REACT_OFFSCREEN_TYPE = symbolFor(\"react.offscreen\");\n  REACT_LEGACY_HIDDEN_TYPE = symbolFor(\"react.legacy_hidden\");\n}\nvar MAYBE_ITERATOR_SYMBOL = \"function\" === typeof Symbol && Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nfunction getComponentName(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type) return type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PORTAL_TYPE:\n      return \"Portal\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Consumer\";\n      case REACT_PROVIDER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Provider\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        innerType = innerType.displayName || innerType.name || \"\";\n        return (\n          type.displayName ||\n          (\"\" !== innerType ? \"ForwardRef(\" + innerType + \")\" : \"ForwardRef\")\n        );\n      case REACT_MEMO_TYPE:\n        return getComponentName(type.type);\n      case REACT_BLOCK_TYPE:\n        return getComponentName(type._render);\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentName(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 1026) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(\"Unable to find node on an unmounted component.\");\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate)\n      throw Error(\"Unable to find node on an unmounted component.\");\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(\"Unable to find node on an unmounted component.\");\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n        if (child$0 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$0 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$0 = child$0.sibling;\n      }\n      if (!didFindChild) {\n        for (child$0 = parentB.child; child$0; ) {\n          if (child$0 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$0 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$0 = child$0.sibling;\n        }\n        if (!didFindChild)\n          throw Error(\n            \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n          );\n      }\n    }\n    if (a.alternate !== b)\n      throw Error(\n        \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n  }\n  if (3 !== a.tag)\n    throw Error(\"Unable to find node on an unmounted component.\");\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiber(parent) {\n  parent = findCurrentFiberUsingSlowPath(parent);\n  if (!parent) return null;\n  for (var node = parent; ; ) {\n    if (5 === node.tag || 6 === node.tag) return node;\n    if (node.child) (node.child.return = node), (node = node.child);\n    else {\n      if (node === parent) break;\n      for (; !node.sibling; ) {\n        if (!node.return || node.return === parent) return null;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return null;\n}\nfunction doesFiberContain(parentFiber, childFiber) {\n  for (\n    var parentFiberAlternate = parentFiber.alternate;\n    null !== childFiber;\n\n  ) {\n    if (childFiber === parentFiber || childFiber === parentFiberAlternate)\n      return !0;\n    childFiber = childFiber.return;\n  }\n  return !1;\n}\nfunction mountSafeCallback_NOT_REALLY_SAFE(context, callback) {\n  return function() {\n    if (\n      callback &&\n      (\"boolean\" !== typeof context.__isMounted || context.__isMounted)\n    )\n      return callback.apply(context, arguments);\n  };\n}\nvar emptyObject = {},\n  removedKeys = null,\n  removedKeyCount = 0,\n  deepDifferOptions = { unsafelyIgnoreFunctions: !0 };\nfunction defaultDiffer(prevProp, nextProp) {\n  return \"object\" !== typeof nextProp || null === nextProp\n    ? !0\n    : ReactNativePrivateInterface.deepDiffer(\n        prevProp,\n        nextProp,\n        deepDifferOptions\n      );\n}\nfunction restoreDeletedValuesInNestedArray(\n  updatePayload,\n  node,\n  validAttributes\n) {\n  if (Array.isArray(node))\n    for (var i = node.length; i-- && 0 < removedKeyCount; )\n      restoreDeletedValuesInNestedArray(\n        updatePayload,\n        node[i],\n        validAttributes\n      );\n  else if (node && 0 < removedKeyCount)\n    for (i in removedKeys)\n      if (removedKeys[i]) {\n        var nextProp = node[i];\n        if (void 0 !== nextProp) {\n          var attributeConfig = validAttributes[i];\n          if (attributeConfig) {\n            \"function\" === typeof nextProp && (nextProp = !0);\n            \"undefined\" === typeof nextProp && (nextProp = null);\n            if (\"object\" !== typeof attributeConfig)\n              updatePayload[i] = nextProp;\n            else if (\n              \"function\" === typeof attributeConfig.diff ||\n              \"function\" === typeof attributeConfig.process\n            )\n              (nextProp =\n                \"function\" === typeof attributeConfig.process\n                  ? attributeConfig.process(nextProp)\n                  : nextProp),\n                (updatePayload[i] = nextProp);\n            removedKeys[i] = !1;\n            removedKeyCount--;\n          }\n        }\n      }\n}\nfunction diffNestedProperty(\n  updatePayload,\n  prevProp,\n  nextProp,\n  validAttributes\n) {\n  if (!updatePayload && prevProp === nextProp) return updatePayload;\n  if (!prevProp || !nextProp)\n    return nextProp\n      ? addNestedProperty(updatePayload, nextProp, validAttributes)\n      : prevProp\n      ? clearNestedProperty(updatePayload, prevProp, validAttributes)\n      : updatePayload;\n  if (!Array.isArray(prevProp) && !Array.isArray(nextProp))\n    return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n  if (Array.isArray(prevProp) && Array.isArray(nextProp)) {\n    var minLength =\n        prevProp.length < nextProp.length ? prevProp.length : nextProp.length,\n      i;\n    for (i = 0; i < minLength; i++)\n      updatePayload = diffNestedProperty(\n        updatePayload,\n        prevProp[i],\n        nextProp[i],\n        validAttributes\n      );\n    for (; i < prevProp.length; i++)\n      updatePayload = clearNestedProperty(\n        updatePayload,\n        prevProp[i],\n        validAttributes\n      );\n    for (; i < nextProp.length; i++)\n      updatePayload = addNestedProperty(\n        updatePayload,\n        nextProp[i],\n        validAttributes\n      );\n    return updatePayload;\n  }\n  return Array.isArray(prevProp)\n    ? diffProperties(\n        updatePayload,\n        ReactNativePrivateInterface.flattenStyle(prevProp),\n        nextProp,\n        validAttributes\n      )\n    : diffProperties(\n        updatePayload,\n        prevProp,\n        ReactNativePrivateInterface.flattenStyle(nextProp),\n        validAttributes\n      );\n}\nfunction addNestedProperty(updatePayload, nextProp, validAttributes) {\n  if (!nextProp) return updatePayload;\n  if (!Array.isArray(nextProp))\n    return diffProperties(\n      updatePayload,\n      emptyObject,\n      nextProp,\n      validAttributes\n    );\n  for (var i = 0; i < nextProp.length; i++)\n    updatePayload = addNestedProperty(\n      updatePayload,\n      nextProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction clearNestedProperty(updatePayload, prevProp, validAttributes) {\n  if (!prevProp) return updatePayload;\n  if (!Array.isArray(prevProp))\n    return diffProperties(\n      updatePayload,\n      prevProp,\n      emptyObject,\n      validAttributes\n    );\n  for (var i = 0; i < prevProp.length; i++)\n    updatePayload = clearNestedProperty(\n      updatePayload,\n      prevProp[i],\n      validAttributes\n    );\n  return updatePayload;\n}\nfunction diffProperties(updatePayload, prevProps, nextProps, validAttributes) {\n  var attributeConfig, propKey;\n  for (propKey in nextProps)\n    if ((attributeConfig = validAttributes[propKey])) {\n      var prevProp = prevProps[propKey];\n      var nextProp = nextProps[propKey];\n      \"function\" === typeof nextProp &&\n        ((nextProp = !0), \"function\" === typeof prevProp && (prevProp = !0));\n      \"undefined\" === typeof nextProp &&\n        ((nextProp = null),\n        \"undefined\" === typeof prevProp && (prevProp = null));\n      removedKeys && (removedKeys[propKey] = !1);\n      if (updatePayload && void 0 !== updatePayload[propKey])\n        if (\"object\" !== typeof attributeConfig)\n          updatePayload[propKey] = nextProp;\n        else {\n          if (\n            \"function\" === typeof attributeConfig.diff ||\n            \"function\" === typeof attributeConfig.process\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              (updatePayload[propKey] = attributeConfig);\n        }\n      else if (prevProp !== nextProp)\n        if (\"object\" !== typeof attributeConfig)\n          defaultDiffer(prevProp, nextProp) &&\n            ((updatePayload || (updatePayload = {}))[propKey] = nextProp);\n        else if (\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n        ) {\n          if (\n            void 0 === prevProp ||\n            (\"function\" === typeof attributeConfig.diff\n              ? attributeConfig.diff(prevProp, nextProp)\n              : defaultDiffer(prevProp, nextProp))\n          )\n            (attributeConfig =\n              \"function\" === typeof attributeConfig.process\n                ? attributeConfig.process(nextProp)\n                : nextProp),\n              ((updatePayload || (updatePayload = {}))[\n                propKey\n              ] = attributeConfig);\n        } else\n          (removedKeys = null),\n            (removedKeyCount = 0),\n            (updatePayload = diffNestedProperty(\n              updatePayload,\n              prevProp,\n              nextProp,\n              attributeConfig\n            )),\n            0 < removedKeyCount &&\n              updatePayload &&\n              (restoreDeletedValuesInNestedArray(\n                updatePayload,\n                nextProp,\n                attributeConfig\n              ),\n              (removedKeys = null));\n    }\n  for (var propKey$2 in prevProps)\n    void 0 === nextProps[propKey$2] &&\n      (!(attributeConfig = validAttributes[propKey$2]) ||\n        (updatePayload && void 0 !== updatePayload[propKey$2]) ||\n        ((prevProp = prevProps[propKey$2]),\n        void 0 !== prevProp &&\n          (\"object\" !== typeof attributeConfig ||\n          \"function\" === typeof attributeConfig.diff ||\n          \"function\" === typeof attributeConfig.process\n            ? (((updatePayload || (updatePayload = {}))[propKey$2] = null),\n              removedKeys || (removedKeys = {}),\n              removedKeys[propKey$2] ||\n                ((removedKeys[propKey$2] = !0), removedKeyCount++))\n            : (updatePayload = clearNestedProperty(\n                updatePayload,\n                prevProp,\n                attributeConfig\n              )))));\n  return updatePayload;\n}\nfunction batchedUpdatesImpl(fn, bookkeeping) {\n  return fn(bookkeeping);\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates(fn, bookkeeping) {\n  if (isInsideEventHandler) return fn(bookkeeping);\n  isInsideEventHandler = !0;\n  try {\n    return batchedUpdatesImpl(fn, bookkeeping);\n  } finally {\n    isInsideEventHandler = !1;\n  }\n}\nvar eventQueue = null;\nfunction executeDispatchesAndReleaseTopLevel(e) {\n  if (e) {\n    var dispatchListeners = e._dispatchListeners,\n      dispatchInstances = e._dispatchInstances;\n    if (Array.isArray(dispatchListeners))\n      for (\n        var i = 0;\n        i < dispatchListeners.length && !e.isPropagationStopped();\n        i++\n      )\n        executeDispatch(e, dispatchListeners[i], dispatchInstances[i]);\n    else\n      dispatchListeners &&\n        executeDispatch(e, dispatchListeners, dispatchInstances);\n    e._dispatchListeners = null;\n    e._dispatchInstances = null;\n    e.isPersistent() || e.constructor.release(e);\n  }\n}\nfunction dispatchEvent(target, topLevelType, nativeEvent) {\n  var eventTarget = null;\n  if (null != target) {\n    var stateNode = target.stateNode;\n    null != stateNode && (eventTarget = stateNode.canonical);\n  }\n  batchedUpdates(function() {\n    var JSCompiler_inline_result = eventTarget;\n    for (\n      var events = null, legacyPlugins = plugins, i = 0;\n      i < legacyPlugins.length;\n      i++\n    ) {\n      var possiblePlugin = legacyPlugins[i];\n      possiblePlugin &&\n        (possiblePlugin = possiblePlugin.extractEvents(\n          topLevelType,\n          target,\n          nativeEvent,\n          JSCompiler_inline_result\n        )) &&\n        (events = accumulateInto(events, possiblePlugin));\n    }\n    JSCompiler_inline_result = events;\n    null !== JSCompiler_inline_result &&\n      (eventQueue = accumulateInto(eventQueue, JSCompiler_inline_result));\n    JSCompiler_inline_result = eventQueue;\n    eventQueue = null;\n    if (JSCompiler_inline_result) {\n      forEachAccumulated(\n        JSCompiler_inline_result,\n        executeDispatchesAndReleaseTopLevel\n      );\n      if (eventQueue)\n        throw Error(\n          \"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.\"\n        );\n      if (hasRethrowError)\n        throw ((JSCompiler_inline_result = rethrowError),\n        (hasRethrowError = !1),\n        (rethrowError = null),\n        JSCompiler_inline_result);\n    }\n  });\n}\nfunction shim() {\n  throw Error(\n    \"The current renderer does not support mutation. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction shim$1() {\n  throw Error(\n    \"The current renderer does not support hydration. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nvar _nativeFabricUIManage = nativeFabricUIManager,\n  createNode = _nativeFabricUIManage.createNode,\n  cloneNode = _nativeFabricUIManage.cloneNode,\n  cloneNodeWithNewChildren = _nativeFabricUIManage.cloneNodeWithNewChildren,\n  cloneNodeWithNewChildrenAndProps =\n    _nativeFabricUIManage.cloneNodeWithNewChildrenAndProps,\n  cloneNodeWithNewProps = _nativeFabricUIManage.cloneNodeWithNewProps,\n  createChildNodeSet = _nativeFabricUIManage.createChildSet,\n  appendChildNode = _nativeFabricUIManage.appendChild,\n  appendChildNodeToSet = _nativeFabricUIManage.appendChildToSet,\n  completeRoot = _nativeFabricUIManage.completeRoot,\n  registerEventHandler = _nativeFabricUIManage.registerEventHandler,\n  fabricMeasure = _nativeFabricUIManage.measure,\n  fabricMeasureInWindow = _nativeFabricUIManage.measureInWindow,\n  fabricMeasureLayout = _nativeFabricUIManage.measureLayout,\n  getViewConfigForType =\n    ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get,\n  nextReactTag = 2;\nregisterEventHandler && registerEventHandler(dispatchEvent);\nvar ReactFabricHostComponent = (function() {\n  function ReactFabricHostComponent(\n    tag,\n    viewConfig,\n    props,\n    internalInstanceHandle\n  ) {\n    this._nativeTag = tag;\n    this.viewConfig = viewConfig;\n    this.currentProps = props;\n    this._internalInstanceHandle = internalInstanceHandle;\n  }\n  var _proto = ReactFabricHostComponent.prototype;\n  _proto.blur = function() {\n    ReactNativePrivateInterface.TextInputState.blurTextInput(this);\n  };\n  _proto.focus = function() {\n    ReactNativePrivateInterface.TextInputState.focusTextInput(this);\n  };\n  _proto.measure = function(callback) {\n    fabricMeasure(\n      this._internalInstanceHandle.stateNode.node,\n      mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n    );\n  };\n  _proto.measureInWindow = function(callback) {\n    fabricMeasureInWindow(\n      this._internalInstanceHandle.stateNode.node,\n      mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n    );\n  };\n  _proto.measureLayout = function(relativeToNativeNode, onSuccess, onFail) {\n    \"number\" !== typeof relativeToNativeNode &&\n      relativeToNativeNode instanceof ReactFabricHostComponent &&\n      fabricMeasureLayout(\n        this._internalInstanceHandle.stateNode.node,\n        relativeToNativeNode._internalInstanceHandle.stateNode.node,\n        mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n        mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n      );\n  };\n  _proto.setNativeProps = function() {};\n  return ReactFabricHostComponent;\n})();\nfunction createTextInstance(\n  text,\n  rootContainerInstance,\n  hostContext,\n  internalInstanceHandle\n) {\n  if (!hostContext.isInAParentText)\n    throw Error(\"Text strings must be rendered within a <Text> component.\");\n  hostContext = nextReactTag;\n  nextReactTag += 2;\n  return {\n    node: createNode(\n      hostContext,\n      \"RCTRawText\",\n      rootContainerInstance,\n      { text: text },\n      internalInstanceHandle\n    )\n  };\n}\nvar scheduleTimeout = setTimeout,\n  cancelTimeout = clearTimeout;\nfunction cloneHiddenInstance(instance) {\n  var node = instance.node;\n  var JSCompiler_inline_result = diffProperties(\n    null,\n    emptyObject,\n    { style: { display: \"none\" } },\n    instance.canonical.viewConfig.validAttributes\n  );\n  return {\n    node: cloneNodeWithNewProps(node, JSCompiler_inline_result),\n    canonical: instance.canonical\n  };\n}\nfunction describeComponentFrame(name, source, ownerName) {\n  source = \"\";\n  ownerName && (source = \" (created by \" + ownerName + \")\");\n  return \"\\n    in \" + (name || \"Unknown\") + source;\n}\nfunction describeFunctionComponentFrame(fn, source) {\n  return fn\n    ? describeComponentFrame(fn.displayName || fn.name || null, source, null)\n    : \"\";\n}\nvar valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar emptyContextObject = {},\n  contextStackCursor = createCursor(emptyContextObject),\n  didPerformWorkStackCursor = createCursor(!1),\n  previousContext = emptyContextObject;\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n  var contextTypes = workInProgress.type.contextTypes;\n  if (!contextTypes) return emptyContextObject;\n  var instance = workInProgress.stateNode;\n  if (\n    instance &&\n    instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext\n  )\n    return instance.__reactInternalMemoizedMaskedChildContext;\n  var context = {},\n    key;\n  for (key in contextTypes) context[key] = unmaskedContext[key];\n  instance &&\n    ((workInProgress = workInProgress.stateNode),\n    (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n    (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n  return context;\n}\nfunction isContextProvider(type) {\n  type = type.childContextTypes;\n  return null !== type && void 0 !== type;\n}\nfunction popContext() {\n  pop(didPerformWorkStackCursor);\n  pop(contextStackCursor);\n}\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n  if (contextStackCursor.current !== emptyContextObject)\n    throw Error(\n      \"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  push(contextStackCursor, context);\n  push(didPerformWorkStackCursor, didChange);\n}\nfunction processChildContext(fiber, type, parentContext) {\n  var instance = fiber.stateNode;\n  fiber = type.childContextTypes;\n  if (\"function\" !== typeof instance.getChildContext) return parentContext;\n  instance = instance.getChildContext();\n  for (var contextKey in instance)\n    if (!(contextKey in fiber))\n      throw Error(\n        (getComponentName(type) || \"Unknown\") +\n          '.getChildContext(): key \"' +\n          contextKey +\n          '\" is not defined in childContextTypes.'\n      );\n  return Object.assign({}, parentContext, instance);\n}\nfunction pushContextProvider(workInProgress) {\n  workInProgress =\n    ((workInProgress = workInProgress.stateNode) &&\n      workInProgress.__reactInternalMemoizedMergedChildContext) ||\n    emptyContextObject;\n  previousContext = contextStackCursor.current;\n  push(contextStackCursor, workInProgress);\n  push(didPerformWorkStackCursor, didPerformWorkStackCursor.current);\n  return !0;\n}\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n  var instance = workInProgress.stateNode;\n  if (!instance)\n    throw Error(\n      \"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  didChange\n    ? ((workInProgress = processChildContext(\n        workInProgress,\n        type,\n        previousContext\n      )),\n      (instance.__reactInternalMemoizedMergedChildContext = workInProgress),\n      pop(didPerformWorkStackCursor),\n      pop(contextStackCursor),\n      push(contextStackCursor, workInProgress))\n    : pop(didPerformWorkStackCursor);\n  push(didPerformWorkStackCursor, didChange);\n}\nvar rendererID = null,\n  injectedHook = null,\n  Scheduler_now = Scheduler.unstable_now;\nScheduler_now();\nvar return_highestLanePriority = 8;\nfunction getHighestPriorityLanes(lanes) {\n  if (0 !== (1 & lanes)) return (return_highestLanePriority = 15), 1;\n  if (0 !== (2 & lanes)) return (return_highestLanePriority = 14), 2;\n  if (0 !== (4 & lanes)) return (return_highestLanePriority = 13), 4;\n  var inputDiscreteLanes = 24 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 12), inputDiscreteLanes;\n  if (0 !== (lanes & 32)) return (return_highestLanePriority = 11), 32;\n  inputDiscreteLanes = 192 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 10), inputDiscreteLanes;\n  if (0 !== (lanes & 256)) return (return_highestLanePriority = 9), 256;\n  inputDiscreteLanes = 3584 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 8), inputDiscreteLanes;\n  if (0 !== (lanes & 4096)) return (return_highestLanePriority = 7), 4096;\n  inputDiscreteLanes = 4186112 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 6), inputDiscreteLanes;\n  inputDiscreteLanes = 62914560 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 5), inputDiscreteLanes;\n  if (lanes & 67108864) return (return_highestLanePriority = 4), 67108864;\n  if (0 !== (lanes & 134217728))\n    return (return_highestLanePriority = 3), 134217728;\n  inputDiscreteLanes = 805306368 & lanes;\n  if (0 !== inputDiscreteLanes)\n    return (return_highestLanePriority = 2), inputDiscreteLanes;\n  if (0 !== (1073741824 & lanes))\n    return (return_highestLanePriority = 1), 1073741824;\n  return_highestLanePriority = 8;\n  return lanes;\n}\nfunction schedulerPriorityToLanePriority(schedulerPriorityLevel) {\n  switch (schedulerPriorityLevel) {\n    case 99:\n      return 15;\n    case 98:\n      return 10;\n    case 97:\n    case 96:\n      return 8;\n    case 95:\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction lanePriorityToSchedulerPriority(lanePriority) {\n  switch (lanePriority) {\n    case 15:\n    case 14:\n      return 99;\n    case 13:\n    case 12:\n    case 11:\n    case 10:\n      return 98;\n    case 9:\n    case 8:\n    case 7:\n    case 6:\n    case 4:\n    case 5:\n      return 97;\n    case 3:\n    case 2:\n    case 1:\n      return 95;\n    case 0:\n      return 90;\n    default:\n      throw Error(\n        \"Invalid update priority: \" + lanePriority + \". This is a bug in React.\"\n      );\n  }\n}\nfunction getNextLanes(root, wipLanes) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return (return_highestLanePriority = 0);\n  var nextLanes = 0,\n    nextLanePriority = 0,\n    expiredLanes = root.expiredLanes,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  if (0 !== expiredLanes)\n    (nextLanes = expiredLanes),\n      (nextLanePriority = return_highestLanePriority = 15);\n  else if (((expiredLanes = pendingLanes & 134217727), 0 !== expiredLanes)) {\n    var nonIdleUnblockedLanes = expiredLanes & ~suspendedLanes;\n    0 !== nonIdleUnblockedLanes\n      ? ((nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes)),\n        (nextLanePriority = return_highestLanePriority))\n      : ((pingedLanes &= expiredLanes),\n        0 !== pingedLanes &&\n          ((nextLanes = getHighestPriorityLanes(pingedLanes)),\n          (nextLanePriority = return_highestLanePriority)));\n  } else\n    (expiredLanes = pendingLanes & ~suspendedLanes),\n      0 !== expiredLanes\n        ? ((nextLanes = getHighestPriorityLanes(expiredLanes)),\n          (nextLanePriority = return_highestLanePriority))\n        : 0 !== pingedLanes &&\n          ((nextLanes = getHighestPriorityLanes(pingedLanes)),\n          (nextLanePriority = return_highestLanePriority));\n  if (0 === nextLanes) return 0;\n  nextLanes = 31 - clz32(nextLanes);\n  nextLanes = pendingLanes & (((0 > nextLanes ? 0 : 1 << nextLanes) << 1) - 1);\n  if (\n    0 !== wipLanes &&\n    wipLanes !== nextLanes &&\n    0 === (wipLanes & suspendedLanes)\n  ) {\n    getHighestPriorityLanes(wipLanes);\n    if (nextLanePriority <= return_highestLanePriority) return wipLanes;\n    return_highestLanePriority = nextLanePriority;\n  }\n  wipLanes = root.entangledLanes;\n  if (0 !== wipLanes)\n    for (root = root.entanglements, wipLanes &= nextLanes; 0 < wipLanes; )\n      (pendingLanes = 31 - clz32(wipLanes)),\n        (nextLanePriority = 1 << pendingLanes),\n        (nextLanes |= root[pendingLanes]),\n        (wipLanes &= ~nextLanePriority);\n  return nextLanes;\n}\nfunction getLanesToRetrySynchronouslyOnError(root) {\n  root = root.pendingLanes & -1073741825;\n  return 0 !== root ? root : root & 1073741824 ? 1073741824 : 0;\n}\nfunction findUpdateLane(lanePriority, wipLanes) {\n  switch (lanePriority) {\n    case 15:\n      return 1;\n    case 14:\n      return 2;\n    case 12:\n      return (\n        (lanePriority = getHighestPriorityLane(24 & ~wipLanes)),\n        0 === lanePriority ? findUpdateLane(10, wipLanes) : lanePriority\n      );\n    case 10:\n      return (\n        (lanePriority = getHighestPriorityLane(192 & ~wipLanes)),\n        0 === lanePriority ? findUpdateLane(8, wipLanes) : lanePriority\n      );\n    case 8:\n      return (\n        (lanePriority = getHighestPriorityLane(3584 & ~wipLanes)),\n        0 === lanePriority &&\n          ((lanePriority = getHighestPriorityLane(4186112 & ~wipLanes)),\n          0 === lanePriority && (lanePriority = 512)),\n        lanePriority\n      );\n    case 2:\n      return (\n        (wipLanes = getHighestPriorityLane(805306368 & ~wipLanes)),\n        0 === wipLanes && (wipLanes = 268435456),\n        wipLanes\n      );\n  }\n  throw Error(\n    \"Invalid update priority: \" + lanePriority + \". This is a bug in React.\"\n  );\n}\nfunction getHighestPriorityLane(lanes) {\n  return lanes & -lanes;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated(root, updateLane, eventTime) {\n  root.pendingLanes |= updateLane;\n  var higherPriorityLanes = updateLane - 1;\n  root.suspendedLanes &= higherPriorityLanes;\n  root.pingedLanes &= higherPriorityLanes;\n  root = root.eventTimes;\n  updateLane = 31 - clz32(updateLane);\n  root[updateLane] = eventTime;\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(lanes) {\n  return 0 === lanes ? 32 : (31 - ((log(lanes) / LN2) | 0)) | 0;\n}\nvar Scheduler_runWithPriority = Scheduler.unstable_runWithPriority,\n  Scheduler_scheduleCallback = Scheduler.unstable_scheduleCallback,\n  Scheduler_cancelCallback = Scheduler.unstable_cancelCallback,\n  Scheduler_shouldYield = Scheduler.unstable_shouldYield,\n  Scheduler_requestPaint = Scheduler.unstable_requestPaint,\n  Scheduler_now$1 = Scheduler.unstable_now,\n  Scheduler_getCurrentPriorityLevel =\n    Scheduler.unstable_getCurrentPriorityLevel,\n  Scheduler_ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  Scheduler_UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  Scheduler_NormalPriority = Scheduler.unstable_NormalPriority,\n  Scheduler_LowPriority = Scheduler.unstable_LowPriority,\n  Scheduler_IdlePriority = Scheduler.unstable_IdlePriority,\n  fakeCallbackNode = {},\n  requestPaint =\n    void 0 !== Scheduler_requestPaint ? Scheduler_requestPaint : function() {},\n  syncQueue = null,\n  immediateQueueCallbackNode = null,\n  isFlushingSyncQueue = !1,\n  initialTimeMs$1 = Scheduler_now$1(),\n  now =\n    1e4 > initialTimeMs$1\n      ? Scheduler_now$1\n      : function() {\n          return Scheduler_now$1() - initialTimeMs$1;\n        };\nfunction getCurrentPriorityLevel() {\n  switch (Scheduler_getCurrentPriorityLevel()) {\n    case Scheduler_ImmediatePriority:\n      return 99;\n    case Scheduler_UserBlockingPriority:\n      return 98;\n    case Scheduler_NormalPriority:\n      return 97;\n    case Scheduler_LowPriority:\n      return 96;\n    case Scheduler_IdlePriority:\n      return 95;\n    default:\n      throw Error(\"Unknown priority level.\");\n  }\n}\nfunction reactPriorityToSchedulerPriority(reactPriorityLevel) {\n  switch (reactPriorityLevel) {\n    case 99:\n      return Scheduler_ImmediatePriority;\n    case 98:\n      return Scheduler_UserBlockingPriority;\n    case 97:\n      return Scheduler_NormalPriority;\n    case 96:\n      return Scheduler_LowPriority;\n    case 95:\n      return Scheduler_IdlePriority;\n    default:\n      throw Error(\"Unknown priority level.\");\n  }\n}\nfunction runWithPriority(reactPriorityLevel, fn) {\n  reactPriorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);\n  return Scheduler_runWithPriority(reactPriorityLevel, fn);\n}\nfunction scheduleCallback(reactPriorityLevel, callback, options) {\n  reactPriorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);\n  return Scheduler_scheduleCallback(reactPriorityLevel, callback, options);\n}\nfunction flushSyncCallbackQueue() {\n  if (null !== immediateQueueCallbackNode) {\n    var node = immediateQueueCallbackNode;\n    immediateQueueCallbackNode = null;\n    Scheduler_cancelCallback(node);\n  }\n  flushSyncCallbackQueueImpl();\n}\nfunction flushSyncCallbackQueueImpl() {\n  if (!isFlushingSyncQueue && null !== syncQueue) {\n    isFlushingSyncQueue = !0;\n    var i = 0;\n    try {\n      var queue = syncQueue;\n      runWithPriority(99, function() {\n        for (; i < queue.length; i++) {\n          var callback = queue[i];\n          do callback = callback(!0);\n          while (null !== callback);\n        }\n      });\n      syncQueue = null;\n    } catch (error) {\n      throw (null !== syncQueue && (syncQueue = syncQueue.slice(i + 1)),\n      Scheduler_scheduleCallback(\n        Scheduler_ImmediatePriority,\n        flushSyncCallbackQueue\n      ),\n      error);\n    } finally {\n      isFlushingSyncQueue = !1;\n    }\n  }\n}\nvar ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++)\n    if (\n      !hasOwnProperty.call(objB, keysA[keysB]) ||\n      !objectIs(objA[keysA[keysB]], objB[keysA[keysB]])\n    )\n      return !1;\n  return !0;\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 5:\n      return describeComponentFrame(fiber.type, null, null);\n    case 16:\n      return describeComponentFrame(\"Lazy\", null, null);\n    case 13:\n      return describeComponentFrame(\"Suspense\", null, null);\n    case 19:\n      return describeComponentFrame(\"SuspenseList\", null, null);\n    case 0:\n    case 2:\n    case 15:\n      return describeFunctionComponentFrame(fiber.type, null);\n    case 11:\n      return describeFunctionComponentFrame(fiber.type.render, null);\n    case 22:\n      return describeFunctionComponentFrame(fiber.type._render, null);\n    case 1:\n      return (fiber = describeFunctionComponentFrame(fiber.type, null)), fiber;\n    default:\n      return \"\";\n  }\n}\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    baseProps = Object.assign({}, baseProps);\n    Component = Component.defaultProps;\n    for (var propName in Component)\n      void 0 === baseProps[propName] &&\n        (baseProps[propName] = Component[propName]);\n    return baseProps;\n  }\n  return baseProps;\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber = null,\n  lastContextDependency = null,\n  lastContextWithAllBitsObserved = null;\nfunction resetContextDependencies() {\n  lastContextWithAllBitsObserved = lastContextDependency = currentlyRenderingFiber = null;\n}\nfunction popProvider(providerFiber) {\n  var currentValue = valueCursor.current;\n  pop(valueCursor);\n  providerFiber.type._context._currentValue2 = currentValue;\n}\nfunction scheduleWorkOnParentPath(parent, renderLanes) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    if ((parent.childLanes & renderLanes) === renderLanes)\n      if (\n        null === alternate ||\n        (alternate.childLanes & renderLanes) === renderLanes\n      )\n        break;\n      else alternate.childLanes |= renderLanes;\n    else\n      (parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes);\n    parent = parent.return;\n  }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextWithAllBitsObserved = lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress &&\n    null !== workInProgress.firstContext &&\n    (0 !== (workInProgress.lanes & renderLanes) && (didReceiveUpdate = !0),\n    (workInProgress.firstContext = null));\n}\nfunction readContext(context, observedBits) {\n  if (\n    lastContextWithAllBitsObserved !== context &&\n    !1 !== observedBits &&\n    0 !== observedBits\n  ) {\n    if (\"number\" !== typeof observedBits || 1073741823 === observedBits)\n      (lastContextWithAllBitsObserved = context), (observedBits = 1073741823);\n    observedBits = { context: context, observedBits: observedBits, next: null };\n    if (null === lastContextDependency) {\n      if (null === currentlyRenderingFiber)\n        throw Error(\n          \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n        );\n      lastContextDependency = observedBits;\n      currentlyRenderingFiber.dependencies = {\n        lanes: 0,\n        firstContext: observedBits,\n        responders: null\n      };\n    } else lastContextDependency = lastContextDependency.next = observedBits;\n  }\n  return context._currentValue2;\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null },\n    effects: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      effects: current.effects\n    });\n}\nfunction createUpdate(eventTime, lane) {\n  return {\n    eventTime: eventTime,\n    lane: lane,\n    tag: 0,\n    payload: null,\n    callback: null,\n    next: null\n  };\n}\nfunction enqueueUpdate(fiber, update) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber) {\n    fiber = fiber.shared;\n    var pending = fiber.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    fiber.pending = update;\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          eventTime: queue.eventTime,\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: queue.callback,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      effects: current.effects\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance,\n  renderLanes\n) {\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    if (null !== current) {\n      current = current.updateQueue;\n      var currentLastBaseUpdate = current.lastBaseUpdate;\n      currentLastBaseUpdate !== lastBaseUpdate &&\n        (null === currentLastBaseUpdate\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (currentLastBaseUpdate.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate));\n    }\n  }\n  if (null !== firstBaseUpdate) {\n    currentLastBaseUpdate = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    do {\n      pendingQueue = firstBaseUpdate.lane;\n      var updateEventTime = firstBaseUpdate.eventTime;\n      if ((renderLanes & pendingQueue) === pendingQueue) {\n        null !== current &&\n          (current = current.next = {\n            eventTime: updateEventTime,\n            lane: 0,\n            tag: firstBaseUpdate.tag,\n            payload: firstBaseUpdate.payload,\n            callback: firstBaseUpdate.callback,\n            next: null\n          });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = firstBaseUpdate;\n          pendingQueue = props;\n          updateEventTime = instance;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                currentLastBaseUpdate = workInProgress.call(\n                  updateEventTime,\n                  currentLastBaseUpdate,\n                  pendingQueue\n                );\n                break a;\n              }\n              currentLastBaseUpdate = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -8193) | 64;\n            case 0:\n              workInProgress = update.payload;\n              pendingQueue =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(\n                      updateEventTime,\n                      currentLastBaseUpdate,\n                      pendingQueue\n                    )\n                  : workInProgress;\n              if (null === pendingQueue || void 0 === pendingQueue) break a;\n              currentLastBaseUpdate = Object.assign(\n                {},\n                currentLastBaseUpdate,\n                pendingQueue\n              );\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        null !== firstBaseUpdate.callback &&\n          ((workInProgress$jscomp$0.flags |= 32),\n          (pendingQueue = queue.effects),\n          null === pendingQueue\n            ? (queue.effects = [firstBaseUpdate])\n            : pendingQueue.push(firstBaseUpdate));\n      } else\n        (updateEventTime = {\n          eventTime: updateEventTime,\n          lane: pendingQueue,\n          tag: firstBaseUpdate.tag,\n          payload: firstBaseUpdate.payload,\n          callback: firstBaseUpdate.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = updateEventTime),\n              (lastPendingUpdate = currentLastBaseUpdate))\n            : (current = current.next = updateEventTime),\n          (lastBaseUpdate |= pendingQueue);\n      firstBaseUpdate = firstBaseUpdate.next;\n      if (null === firstBaseUpdate)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (firstBaseUpdate = pendingQueue.next),\n            (pendingQueue.next = null),\n            (queue.lastBaseUpdate = pendingQueue),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = currentLastBaseUpdate);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = currentLastBaseUpdate;\n  }\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n  finishedWork = finishedQueue.effects;\n  finishedQueue.effects = null;\n  if (null !== finishedWork)\n    for (\n      finishedQueue = 0;\n      finishedQueue < finishedWork.length;\n      finishedQueue++\n    ) {\n      var effect = finishedWork[finishedQueue],\n        callback = effect.callback;\n      if (null !== callback) {\n        effect.callback = null;\n        if (\"function\" !== typeof callback)\n          throw Error(\n            \"Invalid argument passed as callback. Expected a function. Instead received: \" +\n              callback\n          );\n        callback.call(instance);\n      }\n    }\n}\nvar emptyRefsObject = new React.Component().refs;\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : Object.assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  isMounted: function(component) {\n    return (component = component._reactInternals)\n      ? getNearestMountedFiber(component) === component\n      : !1;\n  },\n  enqueueSetState: function(inst, payload, callback) {\n    inst = inst._reactInternals;\n    var eventTime = requestEventTime(),\n      lane = requestUpdateLane(inst),\n      update = createUpdate(eventTime, lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    enqueueUpdate(inst, update);\n    scheduleUpdateOnFiber(inst, lane, eventTime);\n  },\n  enqueueReplaceState: function(inst, payload, callback) {\n    inst = inst._reactInternals;\n    var eventTime = requestEventTime(),\n      lane = requestUpdateLane(inst),\n      update = createUpdate(eventTime, lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    enqueueUpdate(inst, update);\n    scheduleUpdateOnFiber(inst, lane, eventTime);\n  },\n  enqueueForceUpdate: function(inst, callback) {\n    inst = inst._reactInternals;\n    var eventTime = requestEventTime(),\n      lane = requestUpdateLane(inst),\n      update = createUpdate(eventTime, lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    enqueueUpdate(inst, update);\n    scheduleUpdateOnFiber(inst, lane, eventTime);\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n    ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n    : !0;\n}\nfunction constructClassInstance(workInProgress, ctor, props) {\n  var isLegacyContextConsumer = !1,\n    unmaskedContext = emptyContextObject;\n  var context = ctor.contextType;\n  \"object\" === typeof context && null !== context\n    ? (context = readContext(context))\n    : ((unmaskedContext = isContextProvider(ctor)\n        ? previousContext\n        : contextStackCursor.current),\n      (isLegacyContextConsumer = ctor.contextTypes),\n      (context = (isLegacyContextConsumer =\n        null !== isLegacyContextConsumer && void 0 !== isLegacyContextConsumer)\n        ? getMaskedContext(workInProgress, unmaskedContext)\n        : emptyContextObject));\n  ctor = new ctor(props, context);\n  workInProgress.memoizedState =\n    null !== ctor.state && void 0 !== ctor.state ? ctor.state : null;\n  ctor.updater = classComponentUpdater;\n  workInProgress.stateNode = ctor;\n  ctor._reactInternals = workInProgress;\n  isLegacyContextConsumer &&\n    ((workInProgress = workInProgress.stateNode),\n    (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n    (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n  return ctor;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = emptyRefsObject;\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n  \"object\" === typeof contextType && null !== contextType\n    ? (instance.context = readContext(contextType))\n    : ((contextType = isContextProvider(ctor)\n        ? previousContext\n        : contextStackCursor.current),\n      (instance.context = getMaskedContext(workInProgress, contextType)));\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  instance.state = workInProgress.memoizedState;\n  contextType = ctor.getDerivedStateFromProps;\n  \"function\" === typeof contextType &&\n    (applyDerivedStateFromProps(workInProgress, ctor, contextType, newProps),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof ctor.getDerivedStateFromProps ||\n    \"function\" === typeof instance.getSnapshotBeforeUpdate ||\n    (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n      \"function\" !== typeof instance.componentWillMount) ||\n    ((ctor = instance.state),\n    \"function\" === typeof instance.componentWillMount &&\n      instance.componentWillMount(),\n    \"function\" === typeof instance.UNSAFE_componentWillMount &&\n      instance.UNSAFE_componentWillMount(),\n    ctor !== instance.state &&\n      classComponentUpdater.enqueueReplaceState(instance, instance.state, null),\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes),\n    (instance.state = workInProgress.memoizedState));\n  \"function\" === typeof instance.componentDidMount &&\n    (workInProgress.flags |= 4);\n}\nvar isArray = Array.isArray;\nfunction coerceRef(returnFiber, current, element) {\n  returnFiber = element.ref;\n  if (\n    null !== returnFiber &&\n    \"function\" !== typeof returnFiber &&\n    \"object\" !== typeof returnFiber\n  ) {\n    if (element._owner) {\n      element = element._owner;\n      if (element) {\n        if (1 !== element.tag)\n          throw Error(\n            \"Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref\"\n          );\n        var inst = element.stateNode;\n      }\n      if (!inst)\n        throw Error(\n          \"Missing owner for string ref \" +\n            returnFiber +\n            \". This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      var stringRef = \"\" + returnFiber;\n      if (\n        null !== current &&\n        null !== current.ref &&\n        \"function\" === typeof current.ref &&\n        current.ref._stringRef === stringRef\n      )\n        return current.ref;\n      current = function(value) {\n        var refs = inst.refs;\n        refs === emptyRefsObject && (refs = inst.refs = {});\n        null === value ? delete refs[stringRef] : (refs[stringRef] = value);\n      };\n      current._stringRef = stringRef;\n      return current;\n    }\n    if (\"string\" !== typeof returnFiber)\n      throw Error(\n        \"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\"\n      );\n    if (!element._owner)\n      throw Error(\n        \"Element ref was specified as a string (\" +\n          returnFiber +\n          \") but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://reactjs.org/link/refs-must-have-owner for more information.\"\n      );\n  }\n  return returnFiber;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (\"textarea\" !== returnFiber.type)\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === Object.prototype.toString.call(newChild)\n          ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n          : newChild) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n}\nfunction ChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var last = returnFiber.lastEffect;\n      null !== last\n        ? ((last.nextEffect = childToDelete),\n          (returnFiber.lastEffect = childToDelete))\n        : (returnFiber.firstEffect = returnFiber.lastEffect = childToDelete);\n      childToDelete.nextEffect = null;\n      childToDelete.flags = 8;\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    for (returnFiber = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? returnFiber.set(currentFirstChild.key, currentFirstChild)\n        : returnFiber.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return returnFiber;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects) return lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags = 2), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags = 2;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags = 2);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    if (null !== current && current.elementType === element.type)\n      return (\n        (lanes = useFiber(current, element.props)),\n        (lanes.ref = coerceRef(returnFiber, current, element)),\n        (lanes.return = returnFiber),\n        lanes\n      );\n    lanes = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    lanes.ref = coerceRef(returnFiber, current, element);\n    lanes.return = returnFiber;\n    return lanes;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            (lanes.ref = coerceRef(returnFiber, null, newChild)),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n      }\n      if (isArray(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? newChild.type === REACT_FRAGMENT_TYPE\n              ? updateFragment(\n                  returnFiber,\n                  oldFiber,\n                  newChild.props.children,\n                  lanes,\n                  key\n                )\n              : updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n      }\n      if (isArray(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? updateFragment(\n                  returnFiber,\n                  existingChildren,\n                  newChild.props.children,\n                  lanes,\n                  newChild.key\n                )\n              : updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n      }\n      if (isArray(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber), resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function(child) {\n        return deleteChild(returnFiber, child);\n      });\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildrenIterable,\n    lanes\n  ) {\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n    if (\"function\" !== typeof iteratorFn)\n      throw Error(\n        \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n    newChildrenIterable = iteratorFn.call(newChildrenIterable);\n    if (null == newChildrenIterable)\n      throw Error(\"An iterable object provided no iterator.\");\n    for (\n      var previousNewFiber = (iteratorFn = null),\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildrenIterable.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildrenIterable.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (iteratorFn = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return deleteRemainingChildren(returnFiber, oldFiber), iteratorFn;\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildrenIterable.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (iteratorFn = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      return iteratorFn;\n    }\n    for (\n      oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n      !step.done;\n      newIdx++, step = newChildrenIterable.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (iteratorFn = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function(child) {\n        return deleteChild(returnFiber, child);\n      });\n    return iteratorFn;\n  }\n  return function(returnFiber, currentFirstChild, newChild, lanes) {\n    var isUnkeyedTopLevelFragment =\n      \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key;\n    isUnkeyedTopLevelFragment && (newChild = newChild.props.children);\n    var isObject = \"object\" === typeof newChild && null !== newChild;\n    if (isObject)\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            isObject = newChild.key;\n            for (\n              isUnkeyedTopLevelFragment = currentFirstChild;\n              null !== isUnkeyedTopLevelFragment;\n\n            ) {\n              if (isUnkeyedTopLevelFragment.key === isObject) {\n                switch (isUnkeyedTopLevelFragment.tag) {\n                  case 7:\n                    if (newChild.type === REACT_FRAGMENT_TYPE) {\n                      deleteRemainingChildren(\n                        returnFiber,\n                        isUnkeyedTopLevelFragment.sibling\n                      );\n                      currentFirstChild = useFiber(\n                        isUnkeyedTopLevelFragment,\n                        newChild.props.children\n                      );\n                      currentFirstChild.return = returnFiber;\n                      returnFiber = currentFirstChild;\n                      break a;\n                    }\n                    break;\n                  default:\n                    if (\n                      isUnkeyedTopLevelFragment.elementType === newChild.type\n                    ) {\n                      deleteRemainingChildren(\n                        returnFiber,\n                        isUnkeyedTopLevelFragment.sibling\n                      );\n                      currentFirstChild = useFiber(\n                        isUnkeyedTopLevelFragment,\n                        newChild.props\n                      );\n                      currentFirstChild.ref = coerceRef(\n                        returnFiber,\n                        isUnkeyedTopLevelFragment,\n                        newChild\n                      );\n                      currentFirstChild.return = returnFiber;\n                      returnFiber = currentFirstChild;\n                      break a;\n                    }\n                }\n                deleteRemainingChildren(returnFiber, isUnkeyedTopLevelFragment);\n                break;\n              } else deleteChild(returnFiber, isUnkeyedTopLevelFragment);\n              isUnkeyedTopLevelFragment = isUnkeyedTopLevelFragment.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((currentFirstChild = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (currentFirstChild.return = returnFiber),\n                (returnFiber = currentFirstChild))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                (lanes.ref = coerceRef(\n                  returnFiber,\n                  currentFirstChild,\n                  newChild\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (\n              isUnkeyedTopLevelFragment = newChild.key;\n              null !== currentFirstChild;\n\n            ) {\n              if (currentFirstChild.key === isUnkeyedTopLevelFragment)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  currentFirstChild = useFiber(\n                    currentFirstChild,\n                    newChild.children || []\n                  );\n                  currentFirstChild.return = returnFiber;\n                  returnFiber = currentFirstChild;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            currentFirstChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            );\n            currentFirstChild.return = returnFiber;\n            returnFiber = currentFirstChild;\n          }\n          return placeSingleChild(returnFiber);\n      }\n    if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n      return (\n        (newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (currentFirstChild = useFiber(currentFirstChild, newChild)),\n            (currentFirstChild.return = returnFiber),\n            (returnFiber = currentFirstChild))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (currentFirstChild = createFiberFromText(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (currentFirstChild.return = returnFiber),\n            (returnFiber = currentFirstChild)),\n        placeSingleChild(returnFiber)\n      );\n    if (isArray(newChild))\n      return reconcileChildrenArray(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n    if (getIteratorFn(newChild))\n      return reconcileChildrenIterator(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n    isObject && throwOnInvalidObjectType(returnFiber, newChild);\n    if (\"undefined\" === typeof newChild && !isUnkeyedTopLevelFragment)\n      switch (returnFiber.tag) {\n        case 1:\n        case 22:\n        case 0:\n        case 11:\n        case 15:\n          throw Error(\n            (getComponentName(returnFiber.type) || \"Component\") +\n              \"(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.\"\n          );\n      }\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  };\n}\nvar reconcileChildFibers = ChildReconciler(!0),\n  mountChildFibers = ChildReconciler(!1),\n  NO_CONTEXT = {},\n  contextStackCursor$1 = createCursor(NO_CONTEXT),\n  contextFiberStackCursor = createCursor(NO_CONTEXT),\n  rootInstanceStackCursor = createCursor(NO_CONTEXT);\nfunction requiredContext(c) {\n  if (c === NO_CONTEXT)\n    throw Error(\n      \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  return c;\n}\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor$1, NO_CONTEXT);\n  pop(contextStackCursor$1);\n  push(contextStackCursor$1, { isInAParentText: !1 });\n}\nfunction popHostContainer() {\n  pop(contextStackCursor$1);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  requiredContext(rootInstanceStackCursor.current);\n  var context = requiredContext(contextStackCursor$1.current);\n  var JSCompiler_inline_result = fiber.type;\n  JSCompiler_inline_result =\n    \"AndroidTextInput\" === JSCompiler_inline_result ||\n    \"RCTMultilineTextInputView\" === JSCompiler_inline_result ||\n    \"RCTSinglelineTextInputView\" === JSCompiler_inline_result ||\n    \"RCTText\" === JSCompiler_inline_result ||\n    \"RCTVirtualText\" === JSCompiler_inline_result;\n  JSCompiler_inline_result =\n    context.isInAParentText !== JSCompiler_inline_result\n      ? { isInAParentText: JSCompiler_inline_result }\n      : context;\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor$1, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor$1), pop(contextFiberStackCursor));\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (null !== state && (null === state.dehydrated || shim$1() || shim$1()))\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 64)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nvar workInProgressSources = [];\nfunction resetWorkInProgressVersions() {\n  for (var i = 0; i < workInProgressSources.length; i++)\n    workInProgressSources[i]._workInProgressVersionSecondary = null;\n  workInProgressSources.length = 0;\n}\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n  ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig,\n  renderLanes = 0,\n  currentlyRenderingFiber$1 = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\nfunction throwInvalidHookError() {\n  throw Error(\n    \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n  );\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactCurrentDispatcher$1.current =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  current = Component(props, secondArg);\n  if (didScheduleRenderPhaseUpdateDuringThisPass) {\n    nextRenderLanes = 0;\n    do {\n      didScheduleRenderPhaseUpdateDuringThisPass = !1;\n      if (!(25 > nextRenderLanes))\n        throw Error(\n          \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\"\n        );\n      nextRenderLanes += 1;\n      workInProgressHook = currentHook = null;\n      workInProgress.updateQueue = null;\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnRerender;\n      current = Component(props, secondArg);\n    } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  }\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n  workInProgress = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n  didScheduleRenderPhaseUpdate = !1;\n  if (workInProgress)\n    throw Error(\n      \"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\"\n    );\n  return current;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber$1.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber$1.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook)\n      throw Error(\"Rendered more hooks than during the previous render.\");\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue)\n    throw Error(\n      \"Should have a queue. This is likely a bug in React. Please file an issue.\"\n    );\n  queue.lastRenderedReducer = reducer;\n  var current = currentHook,\n    baseQueue = current.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  if (null !== baseQueue) {\n    baseQueue = baseQueue.next;\n    current = current.baseState;\n    var newBaseQueueLast = (baseFirst = pendingQueue = null),\n      update = baseQueue;\n    do {\n      var updateLane = update.lane;\n      if ((renderLanes & updateLane) === updateLane)\n        null !== newBaseQueueLast &&\n          (newBaseQueueLast = newBaseQueueLast.next = {\n            lane: 0,\n            action: update.action,\n            eagerReducer: update.eagerReducer,\n            eagerState: update.eagerState,\n            next: null\n          }),\n          (current =\n            update.eagerReducer === reducer\n              ? update.eagerState\n              : reducer(current, update.action));\n      else {\n        var clone = {\n          lane: updateLane,\n          action: update.action,\n          eagerReducer: update.eagerReducer,\n          eagerState: update.eagerState,\n          next: null\n        };\n        null === newBaseQueueLast\n          ? ((baseFirst = newBaseQueueLast = clone), (pendingQueue = current))\n          : (newBaseQueueLast = newBaseQueueLast.next = clone);\n        currentlyRenderingFiber$1.lanes |= updateLane;\n        workInProgressRootSkippedLanes |= updateLane;\n      }\n      update = update.next;\n    } while (null !== update && update !== baseQueue);\n    null === newBaseQueueLast\n      ? (pendingQueue = current)\n      : (newBaseQueueLast.next = baseFirst);\n    objectIs(current, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = current;\n    hook.baseState = pendingQueue;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = current;\n  }\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue)\n    throw Error(\n      \"Should have a queue. This is likely a bug in React. Please file an issue.\"\n    );\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction readFromUnsubcribedMutableSource(root, source, getSnapshot) {\n  var getVersion = source._getVersion;\n  getVersion = getVersion(source._source);\n  var JSCompiler_inline_result = source._workInProgressVersionSecondary;\n  if (null !== JSCompiler_inline_result)\n    root = JSCompiler_inline_result === getVersion;\n  else if (\n    ((root = root.mutableReadLanes), (root = (renderLanes & root) === root))\n  )\n    (source._workInProgressVersionSecondary = getVersion),\n      workInProgressSources.push(source);\n  if (root) return getSnapshot(source._source);\n  workInProgressSources.push(source);\n  throw Error(\n    \"Cannot read from mutable source during the current render without tearing. This is a bug in React. Please file an issue.\"\n  );\n}\nfunction useMutableSource(hook, source, getSnapshot, subscribe) {\n  var root = workInProgressRoot;\n  if (null === root)\n    throw Error(\n      \"Expected a work-in-progress root. This is a bug in React. Please file an issue.\"\n    );\n  var getVersion = source._getVersion,\n    version = getVersion(source._source),\n    dispatcher = ReactCurrentDispatcher$1.current,\n    _dispatcher$useState = dispatcher.useState(function() {\n      return readFromUnsubcribedMutableSource(root, source, getSnapshot);\n    }),\n    setSnapshot = _dispatcher$useState[1],\n    snapshot = _dispatcher$useState[0];\n  _dispatcher$useState = workInProgressHook;\n  var memoizedState = hook.memoizedState,\n    refs = memoizedState.refs,\n    prevGetSnapshot = refs.getSnapshot,\n    prevSource = memoizedState.source;\n  memoizedState = memoizedState.subscribe;\n  var fiber = currentlyRenderingFiber$1;\n  hook.memoizedState = { refs: refs, source: source, subscribe: subscribe };\n  dispatcher.useEffect(\n    function() {\n      refs.getSnapshot = getSnapshot;\n      refs.setSnapshot = setSnapshot;\n      var maybeNewVersion = getVersion(source._source);\n      if (!objectIs(version, maybeNewVersion)) {\n        maybeNewVersion = getSnapshot(source._source);\n        objectIs(snapshot, maybeNewVersion) ||\n          (setSnapshot(maybeNewVersion),\n          (maybeNewVersion = requestUpdateLane(fiber)),\n          (root.mutableReadLanes |= maybeNewVersion & root.pendingLanes));\n        maybeNewVersion = root.mutableReadLanes;\n        root.entangledLanes |= maybeNewVersion;\n        for (\n          var entanglements = root.entanglements, lanes = maybeNewVersion;\n          0 < lanes;\n\n        ) {\n          var index$11 = 31 - clz32(lanes),\n            lane = 1 << index$11;\n          entanglements[index$11] |= maybeNewVersion;\n          lanes &= ~lane;\n        }\n      }\n    },\n    [getSnapshot, source, subscribe]\n  );\n  dispatcher.useEffect(\n    function() {\n      return subscribe(source._source, function() {\n        var latestGetSnapshot = refs.getSnapshot,\n          latestSetSnapshot = refs.setSnapshot;\n        try {\n          latestSetSnapshot(latestGetSnapshot(source._source));\n          var lane = requestUpdateLane(fiber);\n          root.mutableReadLanes |= lane & root.pendingLanes;\n        } catch (error) {\n          latestSetSnapshot(function() {\n            throw error;\n          });\n        }\n      });\n    },\n    [source, subscribe]\n  );\n  (objectIs(prevGetSnapshot, getSnapshot) &&\n    objectIs(prevSource, source) &&\n    objectIs(memoizedState, subscribe)) ||\n    ((hook = {\n      pending: null,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: snapshot\n    }),\n    (hook.dispatch = setSnapshot = dispatchAction.bind(\n      null,\n      currentlyRenderingFiber$1,\n      hook\n    )),\n    (_dispatcher$useState.queue = hook),\n    (_dispatcher$useState.baseQueue = null),\n    (snapshot = readFromUnsubcribedMutableSource(root, source, getSnapshot)),\n    (_dispatcher$useState.memoizedState = _dispatcher$useState.baseState = snapshot));\n  return snapshot;\n}\nfunction updateMutableSource(source, getSnapshot, subscribe) {\n  var hook = updateWorkInProgressHook();\n  return useMutableSource(hook, source, getSnapshot, subscribe);\n}\nfunction mountState(initialState) {\n  var hook = mountWorkInProgressHook();\n  \"function\" === typeof initialState && (initialState = initialState());\n  hook.memoizedState = hook.baseState = initialState;\n  initialState = hook.queue = {\n    pending: null,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  initialState = initialState.dispatch = dispatchAction.bind(\n    null,\n    currentlyRenderingFiber$1,\n    initialState\n  );\n  return [hook.memoizedState, initialState];\n}\nfunction pushEffect(tag, create, destroy, deps) {\n  tag = { tag: tag, create: create, destroy: destroy, deps: deps, next: null };\n  create = currentlyRenderingFiber$1.updateQueue;\n  null === create\n    ? ((create = { lastEffect: null }),\n      (currentlyRenderingFiber$1.updateQueue = create),\n      (create.lastEffect = tag.next = tag))\n    : ((destroy = create.lastEffect),\n      null === destroy\n        ? (create.lastEffect = tag.next = tag)\n        : ((deps = destroy.next),\n          (destroy.next = tag),\n          (tag.next = deps),\n          (create.lastEffect = tag)));\n  return tag;\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(\n    1 | hookFlags,\n    create,\n    void 0,\n    void 0 === deps ? null : deps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var destroy = void 0;\n  if (null !== currentHook) {\n    var prevEffect = currentHook.memoizedState;\n    destroy = prevEffect.destroy;\n    if (null !== deps && areHookInputsEqual(deps, prevEffect.deps)) {\n      pushEffect(hookFlags, create, destroy, deps);\n      return;\n    }\n  }\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(1 | hookFlags, create, destroy, deps);\n}\nfunction mountEffect(create, deps) {\n  return mountEffectImpl(516, 4, create, deps);\n}\nfunction updateEffect(create, deps) {\n  return updateEffectImpl(516, 4, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref)\n    return (\n      (create = create()),\n      ref(create),\n      function() {\n        ref(null);\n      }\n    );\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function() {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  return updateEffectImpl(\n    4,\n    2,\n    imperativeHandleEffect.bind(null, create, ref),\n    deps\n  );\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (\n    null !== prevState &&\n    null !== deps &&\n    areHookInputsEqual(deps, prevState[1])\n  )\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (\n    null !== prevState &&\n    null !== deps &&\n    areHookInputsEqual(deps, prevState[1])\n  )\n    return prevState[0];\n  nextCreate = nextCreate();\n  hook.memoizedState = [nextCreate, deps];\n  return nextCreate;\n}\nfunction startTransition(setPending, callback) {\n  var priorityLevel = getCurrentPriorityLevel();\n  runWithPriority(98 > priorityLevel ? 98 : priorityLevel, function() {\n    setPending(!0);\n  });\n  runWithPriority(97 < priorityLevel ? 97 : priorityLevel, function() {\n    var prevTransition = ReactCurrentBatchConfig$1.transition;\n    ReactCurrentBatchConfig$1.transition = 1;\n    try {\n      setPending(!1), callback();\n    } finally {\n      ReactCurrentBatchConfig$1.transition = prevTransition;\n    }\n  });\n}\nfunction dispatchAction(fiber, queue, action) {\n  var eventTime = requestEventTime(),\n    lane = requestUpdateLane(fiber),\n    update = {\n      lane: lane,\n      action: action,\n      eagerReducer: null,\n      eagerState: null,\n      next: null\n    },\n    pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n  pending = fiber.alternate;\n  if (\n    fiber === currentlyRenderingFiber$1 ||\n    (null !== pending && pending === currentlyRenderingFiber$1)\n  )\n    didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = !0;\n  else {\n    if (\n      0 === fiber.lanes &&\n      (null === pending || 0 === pending.lanes) &&\n      ((pending = queue.lastRenderedReducer), null !== pending)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = pending(currentState, action);\n        update.eagerReducer = pending;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState)) return;\n      } catch (error) {\n      } finally {\n      }\n    scheduleUpdateOnFiber(fiber, lane, eventTime);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useMutableSource: throwInvalidHookError,\n    useOpaqueIdentifier: throwInvalidHookError,\n    unstable_isNewReconciler: !1\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    useCallback: function(callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function(ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      return mountEffectImpl(\n        4,\n        2,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function(create, deps) {\n      return mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function(nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      nextCreate = nextCreate();\n      hook.memoizedState = [nextCreate, deps];\n      return nextCreate;\n    },\n    useReducer: function(reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      initialArg = void 0 !== init ? init(initialArg) : initialArg;\n      hook.memoizedState = hook.baseState = initialArg;\n      reducer = hook.queue = {\n        pending: null,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialArg\n      };\n      reducer = reducer.dispatch = dispatchAction.bind(\n        null,\n        currentlyRenderingFiber$1,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function(initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: mountState,\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function(value) {\n      var _mountState = mountState(value),\n        prevValue = _mountState[0],\n        setValue = _mountState[1];\n      mountEffect(\n        function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = 1;\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        },\n        [value]\n      );\n      return prevValue;\n    },\n    useTransition: function() {\n      var _mountState2 = mountState(!1),\n        isPending = _mountState2[0];\n      _mountState2 = startTransition.bind(null, _mountState2[1]);\n      mountWorkInProgressHook().memoizedState = _mountState2;\n      return [_mountState2, isPending];\n    },\n    useMutableSource: function(source, getSnapshot, subscribe) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = {\n        refs: { getSnapshot: getSnapshot, setSnapshot: null },\n        source: source,\n        subscribe: subscribe\n      };\n      return useMutableSource(hook, source, getSnapshot, subscribe);\n    },\n    useOpaqueIdentifier: function() {\n      throw Error(\"Not yet implemented\");\n    },\n    unstable_isNewReconciler: !1\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function() {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function(value) {\n      var _updateState = updateReducer(basicStateReducer),\n        prevValue = _updateState[0],\n        setValue = _updateState[1];\n      updateEffect(\n        function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = 1;\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        },\n        [value]\n      );\n      return prevValue;\n    },\n    useTransition: function() {\n      var isPending = updateReducer(basicStateReducer)[0];\n      return [updateWorkInProgressHook().memoizedState, isPending];\n    },\n    useMutableSource: updateMutableSource,\n    useOpaqueIdentifier: function() {\n      return updateReducer(basicStateReducer)[0];\n    },\n    unstable_isNewReconciler: !1\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function() {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function(value) {\n      var _rerenderState = rerenderReducer(basicStateReducer),\n        prevValue = _rerenderState[0],\n        setValue = _rerenderState[1];\n      updateEffect(\n        function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = 1;\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        },\n        [value]\n      );\n      return prevValue;\n    },\n    useTransition: function() {\n      var isPending = rerenderReducer(basicStateReducer)[0];\n      return [updateWorkInProgressHook().memoizedState, isPending];\n    },\n    useMutableSource: updateMutableSource,\n    useOpaqueIdentifier: function() {\n      return rerenderReducer(basicStateReducer)[0];\n    },\n    unstable_isNewReconciler: !1\n  },\n  ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner,\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  prepareToReadContext(workInProgress, renderLanes);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    ref,\n    renderLanes\n  );\n  if (null !== current && !didReceiveUpdate)\n    return (\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.flags &= -517),\n      (current.lanes &= ~renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  updateLanes,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare &&\n      void 0 === Component.defaultProps\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          updateLanes,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (\n    0 === (updateLanes & renderLanes) &&\n    ((updateLanes = type.memoizedProps),\n    (Component = Component.compare),\n    (Component = null !== Component ? Component : shallowEqual),\n    Component(updateLanes, nextProps) && current.ref === workInProgress.ref)\n  )\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  updateLanes,\n  renderLanes\n) {\n  if (\n    null !== current &&\n    shallowEqual(current.memoizedProps, nextProps) &&\n    current.ref === workInProgress.ref\n  )\n    if (((didReceiveUpdate = !1), 0 !== (renderLanes & updateLanes)))\n      0 !== (current.flags & 32768) && (didReceiveUpdate = !0);\n    else\n      return (\n        (workInProgress.lanes = current.lanes),\n        bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n      );\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\n    \"hidden\" === nextProps.mode ||\n    \"unstable-defer-without-hiding\" === nextProps.mode\n  )\n    if (0 === (workInProgress.mode & 4))\n      (workInProgress.memoizedState = { baseLanes: 0 }),\n        pushRenderLanes(workInProgress, renderLanes);\n    else if (0 !== (renderLanes & 1073741824))\n      (workInProgress.memoizedState = { baseLanes: 0 }),\n        pushRenderLanes(\n          workInProgress,\n          null !== prevState ? prevState.baseLanes : renderLanes\n        );\n    else\n      return (\n        (current =\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes),\n        (workInProgress.lanes = workInProgress.childLanes = 1073741824),\n        (workInProgress.memoizedState = { baseLanes: current }),\n        pushRenderLanes(workInProgress, current),\n        null\n      );\n  else\n    null !== prevState\n      ? ((nextProps = prevState.baseLanes | renderLanes),\n        (workInProgress.memoizedState = null))\n      : (nextProps = renderLanes),\n      pushRenderLanes(workInProgress, nextProps);\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (\n    (null === current && null !== ref) ||\n    (null !== current && current.ref !== ref)\n  )\n    workInProgress.flags |= 128;\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  var context = isContextProvider(Component)\n    ? previousContext\n    : contextStackCursor.current;\n  context = getMaskedContext(workInProgress, context);\n  prepareToReadContext(workInProgress, renderLanes);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    context,\n    renderLanes\n  );\n  if (null !== current && !didReceiveUpdate)\n    return (\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.flags &= -517),\n      (current.lanes &= ~renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (isContextProvider(Component)) {\n    var hasContext = !0;\n    pushContextProvider(workInProgress);\n  } else hasContext = !1;\n  prepareToReadContext(workInProgress, renderLanes);\n  if (null === workInProgress.stateNode)\n    null !== current &&\n      ((current.alternate = null),\n      (workInProgress.alternate = null),\n      (workInProgress.flags |= 2)),\n      constructClassInstance(workInProgress, Component, nextProps),\n      mountClassInstance(workInProgress, Component, nextProps, renderLanes),\n      (nextProps = !0);\n  else if (null === current) {\n    var instance = workInProgress.stateNode,\n      oldProps = workInProgress.memoizedProps;\n    instance.props = oldProps;\n    var oldContext = instance.context,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType && null !== contextType\n      ? (contextType = readContext(contextType))\n      : ((contextType = isContextProvider(Component)\n          ? previousContext\n          : contextStackCursor.current),\n        (contextType = getMaskedContext(workInProgress, contextType)));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps,\n      hasNewLifecycles =\n        \"function\" === typeof getDerivedStateFromProps ||\n        \"function\" === typeof instance.getSnapshotBeforeUpdate;\n    hasNewLifecycles ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((oldProps !== nextProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, renderLanes);\n    oldContext = workInProgress.memoizedState;\n    oldProps !== nextProps ||\n    oldState !== oldContext ||\n    didPerformWorkStackCursor.current ||\n    hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (hasNewLifecycles ||\n              (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n                \"function\" !== typeof instance.componentWillMount) ||\n              (\"function\" === typeof instance.componentWillMount &&\n                instance.componentWillMount(),\n              \"function\" === typeof instance.UNSAFE_componentWillMount &&\n                instance.UNSAFE_componentWillMount()),\n            \"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4))\n          : (\"function\" === typeof instance.componentDidMount &&\n              (workInProgress.flags |= 4),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (instance.props = nextProps),\n        (instance.state = oldContext),\n        (instance.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof instance.componentDidMount &&\n          (workInProgress.flags |= 4),\n        (nextProps = !1));\n  } else {\n    instance = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    oldProps = workInProgress.memoizedProps;\n    contextType =\n      workInProgress.type === workInProgress.elementType\n        ? oldProps\n        : resolveDefaultProps(workInProgress.type, oldProps);\n    instance.props = contextType;\n    hasNewLifecycles = workInProgress.pendingProps;\n    oldState = instance.context;\n    oldContext = Component.contextType;\n    \"object\" === typeof oldContext && null !== oldContext\n      ? (oldContext = readContext(oldContext))\n      : ((oldContext = isContextProvider(Component)\n          ? previousContext\n          : contextStackCursor.current),\n        (oldContext = getMaskedContext(workInProgress, oldContext)));\n    var getDerivedStateFromProps$jscomp$0 = Component.getDerivedStateFromProps;\n    (getDerivedStateFromProps =\n      \"function\" === typeof getDerivedStateFromProps$jscomp$0 ||\n      \"function\" === typeof instance.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof instance.componentWillReceiveProps) ||\n      ((oldProps !== hasNewLifecycles || oldState !== oldContext) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          instance,\n          nextProps,\n          oldContext\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    instance.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, instance, renderLanes);\n    var newState = workInProgress.memoizedState;\n    oldProps !== hasNewLifecycles ||\n    oldState !== newState ||\n    didPerformWorkStackCursor.current ||\n    hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps$jscomp$0 &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps$jscomp$0,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType,\n            nextProps,\n            oldState,\n            newState,\n            oldContext\n          ))\n          ? (getDerivedStateFromProps ||\n              (\"function\" !== typeof instance.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof instance.componentWillUpdate) ||\n              (\"function\" === typeof instance.componentWillUpdate &&\n                instance.componentWillUpdate(nextProps, newState, oldContext),\n              \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n                instance.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldContext\n                )),\n            \"function\" === typeof instance.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof instance.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 256))\n          : (\"function\" !== typeof instance.componentDidUpdate ||\n              (oldProps === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n              (oldProps === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 256),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (instance.props = nextProps),\n        (instance.state = newState),\n        (instance.context = oldContext),\n        (nextProps = contextType))\n      : (\"function\" !== typeof instance.componentDidUpdate ||\n          (oldProps === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n          (oldProps === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 256),\n        (nextProps = !1));\n  }\n  return finishClassComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    hasContext,\n    renderLanes\n  );\n}\nfunction finishClassComponent(\n  current,\n  workInProgress,\n  Component,\n  shouldUpdate,\n  hasContext,\n  renderLanes\n) {\n  markRef(current, workInProgress);\n  var didCaptureError = 0 !== (workInProgress.flags & 64);\n  if (!shouldUpdate && !didCaptureError)\n    return (\n      hasContext && invalidateContextProvider(workInProgress, Component, !1),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  shouldUpdate = workInProgress.stateNode;\n  ReactCurrentOwner$1.current = workInProgress;\n  var nextChildren =\n    didCaptureError && \"function\" !== typeof Component.getDerivedStateFromError\n      ? null\n      : shouldUpdate.render();\n  workInProgress.flags |= 1;\n  null !== current && didCaptureError\n    ? ((workInProgress.child = reconcileChildFibers(\n        workInProgress,\n        current.child,\n        null,\n        renderLanes\n      )),\n      (workInProgress.child = reconcileChildFibers(\n        workInProgress,\n        null,\n        nextChildren,\n        renderLanes\n      )))\n    : reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  workInProgress.memoizedState = shouldUpdate.state;\n  hasContext && invalidateContextProvider(workInProgress, Component, !0);\n  return workInProgress.child;\n}\nfunction pushHostRootContext(workInProgress) {\n  var root = workInProgress.stateNode;\n  root.pendingContext\n    ? pushTopLevelContextObject(\n        workInProgress,\n        root.pendingContext,\n        root.pendingContext !== root.context\n      )\n    : root.context &&\n      pushTopLevelContextObject(workInProgress, root.context, !1);\n  pushHostContainer(workInProgress, root.containerInfo);\n}\nvar SUSPENDED_MARKER = { dehydrated: null, retryLane: 0 };\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    suspenseContext = suspenseStackCursor.current,\n    showFallback = !1,\n    JSCompiler_temp;\n  (JSCompiler_temp = 0 !== (workInProgress.flags & 64)) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseContext & 2));\n  JSCompiler_temp\n    ? ((showFallback = !0), (workInProgress.flags &= -65))\n    : (null !== current && null === current.memoizedState) ||\n      void 0 === nextProps.fallback ||\n      !0 === nextProps.unstable_avoidThisFallback ||\n      (suspenseContext |= 1);\n  push(suspenseStackCursor, suspenseContext & 1);\n  if (null === current) {\n    current = nextProps.children;\n    suspenseContext = nextProps.fallback;\n    if (showFallback)\n      return (\n        (current = mountSuspenseFallbackChildren(\n          workInProgress,\n          current,\n          suspenseContext,\n          renderLanes\n        )),\n        (workInProgress.child.memoizedState = { baseLanes: renderLanes }),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        current\n      );\n    if (\"number\" === typeof nextProps.unstable_expectedLoadTime)\n      return (\n        (current = mountSuspenseFallbackChildren(\n          workInProgress,\n          current,\n          suspenseContext,\n          renderLanes\n        )),\n        (workInProgress.child.memoizedState = { baseLanes: renderLanes }),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        (workInProgress.lanes = 33554432),\n        current\n      );\n    renderLanes = createFiberFromOffscreen(\n      { mode: \"visible\", children: current },\n      workInProgress.mode,\n      renderLanes,\n      null\n    );\n    renderLanes.return = workInProgress;\n    return (workInProgress.child = renderLanes);\n  }\n  if (null !== current.memoizedState) {\n    if (showFallback)\n      return (\n        (nextProps = updateSuspenseFallbackChildren(\n          current,\n          workInProgress,\n          nextProps.children,\n          nextProps.fallback,\n          renderLanes\n        )),\n        (showFallback = workInProgress.child),\n        (suspenseContext = current.child.memoizedState),\n        (showFallback.memoizedState =\n          null === suspenseContext\n            ? { baseLanes: renderLanes }\n            : { baseLanes: suspenseContext.baseLanes | renderLanes }),\n        (showFallback.childLanes = current.childLanes & ~renderLanes),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    renderLanes = updateSuspensePrimaryChildren(\n      current,\n      workInProgress,\n      nextProps.children,\n      renderLanes\n    );\n    workInProgress.memoizedState = null;\n    return renderLanes;\n  }\n  if (showFallback)\n    return (\n      (nextProps = updateSuspenseFallbackChildren(\n        current,\n        workInProgress,\n        nextProps.children,\n        nextProps.fallback,\n        renderLanes\n      )),\n      (showFallback = workInProgress.child),\n      (suspenseContext = current.child.memoizedState),\n      (showFallback.memoizedState =\n        null === suspenseContext\n          ? { baseLanes: renderLanes }\n          : { baseLanes: suspenseContext.baseLanes | renderLanes }),\n      (showFallback.childLanes = current.childLanes & ~renderLanes),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  renderLanes = updateSuspensePrimaryChildren(\n    current,\n    workInProgress,\n    nextProps.children,\n    renderLanes\n  );\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspenseFallbackChildren(\n  workInProgress,\n  primaryChildren,\n  fallbackChildren,\n  renderLanes\n) {\n  var mode = workInProgress.mode,\n    progressedPrimaryFragment = workInProgress.child;\n  primaryChildren = { mode: \"hidden\", children: primaryChildren };\n  0 === (mode & 2) && null !== progressedPrimaryFragment\n    ? ((progressedPrimaryFragment.childLanes = 0),\n      (progressedPrimaryFragment.pendingProps = primaryChildren))\n    : (progressedPrimaryFragment = createFiberFromOffscreen(\n        primaryChildren,\n        mode,\n        0,\n        null\n      ));\n  fallbackChildren = createFiberFromFragment(\n    fallbackChildren,\n    mode,\n    renderLanes,\n    null\n  );\n  progressedPrimaryFragment.return = workInProgress;\n  fallbackChildren.return = workInProgress;\n  progressedPrimaryFragment.sibling = fallbackChildren;\n  workInProgress.child = progressedPrimaryFragment;\n  return fallbackChildren;\n}\nfunction updateSuspensePrimaryChildren(\n  current,\n  workInProgress,\n  primaryChildren,\n  renderLanes\n) {\n  var currentPrimaryChildFragment = current.child;\n  current = currentPrimaryChildFragment.sibling;\n  primaryChildren = createWorkInProgress(currentPrimaryChildFragment, {\n    mode: \"visible\",\n    children: primaryChildren\n  });\n  0 === (workInProgress.mode & 2) && (primaryChildren.lanes = renderLanes);\n  primaryChildren.return = workInProgress;\n  primaryChildren.sibling = null;\n  null !== current &&\n    ((current.nextEffect = null),\n    (current.flags = 8),\n    (workInProgress.firstEffect = workInProgress.lastEffect = current));\n  return (workInProgress.child = primaryChildren);\n}\nfunction updateSuspenseFallbackChildren(\n  current,\n  workInProgress,\n  primaryChildren,\n  fallbackChildren,\n  renderLanes\n) {\n  var mode = workInProgress.mode,\n    currentPrimaryChildFragment = current.child;\n  current = currentPrimaryChildFragment.sibling;\n  var primaryChildProps = { mode: \"hidden\", children: primaryChildren };\n  0 === (mode & 2) && workInProgress.child !== currentPrimaryChildFragment\n    ? ((primaryChildren = workInProgress.child),\n      (primaryChildren.childLanes = 0),\n      (primaryChildren.pendingProps = primaryChildProps),\n      (currentPrimaryChildFragment = primaryChildren.lastEffect),\n      null !== currentPrimaryChildFragment\n        ? ((workInProgress.firstEffect = primaryChildren.firstEffect),\n          (workInProgress.lastEffect = currentPrimaryChildFragment),\n          (currentPrimaryChildFragment.nextEffect = null))\n        : (workInProgress.firstEffect = workInProgress.lastEffect = null))\n    : (primaryChildren = createWorkInProgress(\n        currentPrimaryChildFragment,\n        primaryChildProps\n      ));\n  null !== current\n    ? (fallbackChildren = createWorkInProgress(current, fallbackChildren))\n    : ((fallbackChildren = createFiberFromFragment(\n        fallbackChildren,\n        mode,\n        renderLanes,\n        null\n      )),\n      (fallbackChildren.flags |= 2));\n  fallbackChildren.return = workInProgress;\n  primaryChildren.return = workInProgress;\n  primaryChildren.sibling = fallbackChildren;\n  workInProgress.child = primaryChildren;\n  return fallbackChildren;\n}\nfunction scheduleWorkOnFiber(fiber, renderLanes) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleWorkOnParentPath(fiber.return, renderLanes);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode,\n  lastEffectBeforeRendering\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode,\n        lastEffect: lastEffectBeforeRendering\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode),\n      (renderState.lastEffect = lastEffectBeforeRendering));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 64);\n  else {\n    if (null !== current && 0 !== (current.flags & 64))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleWorkOnFiber(current, renderLanes);\n        else if (19 === current.tag) scheduleWorkOnFiber(current, renderLanes);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  if (0 === (workInProgress.mode & 2)) workInProgress.memoizedState = null;\n  else\n    switch (revealOrder) {\n      case \"forwards\":\n        renderLanes = workInProgress.child;\n        for (revealOrder = null; null !== renderLanes; )\n          (current = renderLanes.alternate),\n            null !== current &&\n              null === findFirstSuspended(current) &&\n              (revealOrder = renderLanes),\n            (renderLanes = renderLanes.sibling);\n        renderLanes = revealOrder;\n        null === renderLanes\n          ? ((revealOrder = workInProgress.child),\n            (workInProgress.child = null))\n          : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          revealOrder,\n          renderLanes,\n          tailMode,\n          workInProgress.lastEffect\n        );\n        break;\n      case \"backwards\":\n        renderLanes = null;\n        revealOrder = workInProgress.child;\n        for (workInProgress.child = null; null !== revealOrder; ) {\n          current = revealOrder.alternate;\n          if (null !== current && null === findFirstSuspended(current)) {\n            workInProgress.child = revealOrder;\n            break;\n          }\n          current = revealOrder.sibling;\n          revealOrder.sibling = renderLanes;\n          renderLanes = revealOrder;\n          revealOrder = current;\n        }\n        initSuspenseListRenderState(\n          workInProgress,\n          !0,\n          renderLanes,\n          null,\n          tailMode,\n          workInProgress.lastEffect\n        );\n        break;\n      case \"together\":\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          null,\n          null,\n          void 0,\n          workInProgress.lastEffect\n        );\n        break;\n      default:\n        workInProgress.memoizedState = null;\n    }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 !== (renderLanes & workInProgress.childLanes)) {\n    if (null !== current && workInProgress.child !== current.child)\n      throw Error(\"Resuming work not yet implemented.\");\n    if (null !== workInProgress.child) {\n      current = workInProgress.child;\n      renderLanes = createWorkInProgress(current, current.pendingProps);\n      workInProgress.child = renderLanes;\n      for (renderLanes.return = workInProgress; null !== current.sibling; )\n        (current = current.sibling),\n          (renderLanes = renderLanes.sibling = createWorkInProgress(\n            current,\n            current.pendingProps\n          )),\n          (renderLanes.return = workInProgress);\n      renderLanes.sibling = null;\n    }\n    return workInProgress.child;\n  }\n  return null;\n}\nvar appendAllChildren,\n  updateHostContainer,\n  updateHostComponent$1,\n  updateHostText$1;\nappendAllChildren = function(\n  parent,\n  workInProgress,\n  needsVisibilityToggle,\n  isHidden\n) {\n  for (var node = workInProgress.child; null !== node; ) {\n    if (5 === node.tag) {\n      var instance = node.stateNode;\n      needsVisibilityToggle &&\n        isHidden &&\n        (instance = cloneHiddenInstance(instance));\n      appendChildNode(parent.node, instance.node);\n    } else if (6 === node.tag) {\n      instance = node.stateNode;\n      if (needsVisibilityToggle && isHidden)\n        throw Error(\"Not yet implemented.\");\n      appendChildNode(parent.node, instance.node);\n    } else if (4 !== node.tag) {\n      if (\n        13 === node.tag &&\n        0 !== (node.flags & 4) &&\n        (instance = null !== node.memoizedState)\n      ) {\n        var primaryChildParent = node.child;\n        if (\n          null !== primaryChildParent &&\n          (null !== primaryChildParent.child &&\n            ((primaryChildParent.child.return = primaryChildParent),\n            appendAllChildren(parent, primaryChildParent, !0, instance)),\n          (instance = primaryChildParent.sibling),\n          null !== instance)\n        ) {\n          instance.return = node;\n          node = instance;\n          continue;\n        }\n      }\n      if (null !== node.child) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    }\n    if (node === workInProgress) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === workInProgress) return;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n};\nfunction appendAllChildrenToContainer(\n  containerChildSet,\n  workInProgress,\n  needsVisibilityToggle,\n  isHidden\n) {\n  for (var node = workInProgress.child; null !== node; ) {\n    if (5 === node.tag) {\n      var instance = node.stateNode;\n      needsVisibilityToggle &&\n        isHidden &&\n        (instance = cloneHiddenInstance(instance));\n      appendChildNodeToSet(containerChildSet, instance.node);\n    } else if (6 === node.tag) {\n      instance = node.stateNode;\n      if (needsVisibilityToggle && isHidden)\n        throw Error(\"Not yet implemented.\");\n      appendChildNodeToSet(containerChildSet, instance.node);\n    } else if (4 !== node.tag) {\n      if (\n        13 === node.tag &&\n        0 !== (node.flags & 4) &&\n        (instance = null !== node.memoizedState)\n      ) {\n        var primaryChildParent = node.child;\n        if (\n          null !== primaryChildParent &&\n          (null !== primaryChildParent.child &&\n            ((primaryChildParent.child.return = primaryChildParent),\n            appendAllChildrenToContainer(\n              containerChildSet,\n              primaryChildParent,\n              !0,\n              instance\n            )),\n          (instance = primaryChildParent.sibling),\n          null !== instance)\n        ) {\n          instance.return = node;\n          node = instance;\n          continue;\n        }\n      }\n      if (null !== node.child) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n    }\n    if (node === workInProgress) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === workInProgress) return;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\nupdateHostContainer = function(workInProgress) {\n  var portalOrRoot = workInProgress.stateNode;\n  if (null !== workInProgress.firstEffect) {\n    var container = portalOrRoot.containerInfo,\n      newChildSet = createChildNodeSet(container);\n    appendAllChildrenToContainer(newChildSet, workInProgress, !1, !1);\n    portalOrRoot.pendingChildren = newChildSet;\n    workInProgress.flags |= 4;\n    completeRoot(container, newChildSet);\n  }\n};\nupdateHostComponent$1 = function(current, workInProgress, type, newProps) {\n  type = current.stateNode;\n  var oldProps = current.memoizedProps;\n  if ((current = null === workInProgress.firstEffect) && oldProps === newProps)\n    workInProgress.stateNode = type;\n  else {\n    var recyclableInstance = workInProgress.stateNode;\n    requiredContext(contextStackCursor$1.current);\n    var updatePayload = null;\n    oldProps !== newProps &&\n      ((oldProps = diffProperties(\n        null,\n        oldProps,\n        newProps,\n        recyclableInstance.canonical.viewConfig.validAttributes\n      )),\n      (recyclableInstance.canonical.currentProps = newProps),\n      (updatePayload = oldProps));\n    current && null === updatePayload\n      ? (workInProgress.stateNode = type)\n      : ((newProps = updatePayload),\n        (recyclableInstance = type.node),\n        (type = {\n          node: current\n            ? null !== newProps\n              ? cloneNodeWithNewProps(recyclableInstance, newProps)\n              : cloneNode(recyclableInstance)\n            : null !== newProps\n            ? cloneNodeWithNewChildrenAndProps(recyclableInstance, newProps)\n            : cloneNodeWithNewChildren(recyclableInstance),\n          canonical: type.canonical\n        }),\n        (workInProgress.stateNode = type),\n        current\n          ? (workInProgress.flags |= 4)\n          : appendAllChildren(type, workInProgress, !1, !1));\n  }\n};\nupdateHostText$1 = function(current, workInProgress, oldText, newText) {\n  oldText !== newText\n    ? ((current = requiredContext(rootInstanceStackCursor.current)),\n      (oldText = requiredContext(contextStackCursor$1.current)),\n      (workInProgress.stateNode = createTextInstance(\n        newText,\n        current,\n        oldText,\n        workInProgress\n      )),\n      (workInProgress.flags |= 4))\n    : (workInProgress.stateNode = current.stateNode);\n};\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  switch (renderState.tailMode) {\n    case \"hidden\":\n      hasRenderedATailFallback = renderState.tail;\n      for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n        null !== hasRenderedATailFallback.alternate &&\n          (lastTailNode = hasRenderedATailFallback),\n          (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n      null === lastTailNode\n        ? (renderState.tail = null)\n        : (lastTailNode.sibling = null);\n      break;\n    case \"collapsed\":\n      lastTailNode = renderState.tail;\n      for (var lastTailNode$64 = null; null !== lastTailNode; )\n        null !== lastTailNode.alternate && (lastTailNode$64 = lastTailNode),\n          (lastTailNode = lastTailNode.sibling);\n      null === lastTailNode$64\n        ? hasRenderedATailFallback || null === renderState.tail\n          ? (renderState.tail = null)\n          : (renderState.tail.sibling = null)\n        : (lastTailNode$64.sibling = null);\n  }\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  switch (workInProgress.tag) {\n    case 2:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return null;\n    case 1:\n      return isContextProvider(workInProgress.type) && popContext(), null;\n    case 3:\n      return (\n        popHostContainer(),\n        pop(didPerformWorkStackCursor),\n        pop(contextStackCursor),\n        resetWorkInProgressVersions(),\n        (newProps = workInProgress.stateNode),\n        newProps.pendingContext &&\n          ((newProps.context = newProps.pendingContext),\n          (newProps.pendingContext = null)),\n        (null !== current && null !== current.child) ||\n          newProps.hydrate ||\n          (workInProgress.flags |= 256),\n        updateHostContainer(workInProgress),\n        null\n      );\n    case 5:\n      popHostContext(workInProgress);\n      var rootContainerInstance = requiredContext(\n        rootInstanceStackCursor.current\n      );\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        updateHostComponent$1(\n          current,\n          workInProgress,\n          renderLanes,\n          newProps,\n          rootContainerInstance\n        ),\n          current.ref !== workInProgress.ref && (workInProgress.flags |= 128);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(\n              \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n            );\n          return null;\n        }\n        requiredContext(contextStackCursor$1.current);\n        current = nextReactTag;\n        nextReactTag += 2;\n        renderLanes = getViewConfigForType(renderLanes);\n        var updatePayload = diffProperties(\n          null,\n          emptyObject,\n          newProps,\n          renderLanes.validAttributes\n        );\n        rootContainerInstance = createNode(\n          current,\n          renderLanes.uiViewClassName,\n          rootContainerInstance,\n          updatePayload,\n          workInProgress\n        );\n        current = new ReactFabricHostComponent(\n          current,\n          renderLanes,\n          newProps,\n          workInProgress\n        );\n        current = { node: rootContainerInstance, canonical: current };\n        appendAllChildren(current, workInProgress, !1, !1);\n        workInProgress.stateNode = current;\n        null !== workInProgress.ref && (workInProgress.flags |= 128);\n      }\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        updateHostText$1(\n          current,\n          workInProgress,\n          current.memoizedProps,\n          newProps\n        );\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(\n            \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n          );\n        current = requiredContext(rootInstanceStackCursor.current);\n        rootContainerInstance = requiredContext(contextStackCursor$1.current);\n        workInProgress.stateNode = createTextInstance(\n          newProps,\n          current,\n          rootContainerInstance,\n          workInProgress\n        );\n      }\n      return null;\n    case 13:\n      pop(suspenseStackCursor);\n      newProps = workInProgress.memoizedState;\n      if (0 !== (workInProgress.flags & 64))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      newProps = null !== newProps;\n      rootContainerInstance = !1;\n      null !== current &&\n        (rootContainerInstance = null !== current.memoizedState);\n      if (newProps && !rootContainerInstance && 0 !== (workInProgress.mode & 2))\n        if (\n          (null === current &&\n            !0 !== workInProgress.memoizedProps.unstable_avoidThisFallback) ||\n          0 !== (suspenseStackCursor.current & 1)\n        )\n          0 === workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 3);\n        else {\n          if (\n            0 === workInProgressRootExitStatus ||\n            3 === workInProgressRootExitStatus\n          )\n            workInProgressRootExitStatus = 4;\n          null === workInProgressRoot ||\n            (0 === (workInProgressRootSkippedLanes & 134217727) &&\n              0 === (workInProgressRootUpdatedLanes & 134217727)) ||\n            markRootSuspended$1(\n              workInProgressRoot,\n              workInProgressRootRenderLanes\n            );\n        }\n      newProps && (workInProgress.flags |= 4);\n      return null;\n    case 4:\n      return popHostContainer(), updateHostContainer(workInProgress), null;\n    case 10:\n      return popProvider(workInProgress), null;\n    case 17:\n      return isContextProvider(workInProgress.type) && popContext(), null;\n    case 19:\n      pop(suspenseStackCursor);\n      newProps = workInProgress.memoizedState;\n      if (null === newProps) return null;\n      rootContainerInstance = 0 !== (workInProgress.flags & 64);\n      updatePayload = newProps.rendering;\n      if (null === updatePayload)\n        if (rootContainerInstance) cutOffTailIfNeeded(newProps, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 64))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              updatePayload = findFirstSuspended(current);\n              if (null !== updatePayload) {\n                workInProgress.flags |= 64;\n                cutOffTailIfNeeded(newProps, !1);\n                current = updatePayload.updateQueue;\n                null !== current &&\n                  ((workInProgress.updateQueue = current),\n                  (workInProgress.flags |= 4));\n                null === newProps.lastEffect &&\n                  (workInProgress.firstEffect = null);\n                workInProgress.lastEffect = newProps.lastEffect;\n                current = renderLanes;\n                for (newProps = workInProgress.child; null !== newProps; )\n                  (rootContainerInstance = newProps),\n                    (renderLanes = current),\n                    (rootContainerInstance.flags &= 2),\n                    (rootContainerInstance.nextEffect = null),\n                    (rootContainerInstance.firstEffect = null),\n                    (rootContainerInstance.lastEffect = null),\n                    (updatePayload = rootContainerInstance.alternate),\n                    null === updatePayload\n                      ? ((rootContainerInstance.childLanes = 0),\n                        (rootContainerInstance.lanes = renderLanes),\n                        (rootContainerInstance.child = null),\n                        (rootContainerInstance.memoizedProps = null),\n                        (rootContainerInstance.memoizedState = null),\n                        (rootContainerInstance.updateQueue = null),\n                        (rootContainerInstance.dependencies = null),\n                        (rootContainerInstance.stateNode = null))\n                      : ((rootContainerInstance.childLanes =\n                          updatePayload.childLanes),\n                        (rootContainerInstance.lanes = updatePayload.lanes),\n                        (rootContainerInstance.child = updatePayload.child),\n                        (rootContainerInstance.memoizedProps =\n                          updatePayload.memoizedProps),\n                        (rootContainerInstance.memoizedState =\n                          updatePayload.memoizedState),\n                        (rootContainerInstance.updateQueue =\n                          updatePayload.updateQueue),\n                        (rootContainerInstance.type = updatePayload.type),\n                        (renderLanes = updatePayload.dependencies),\n                        (rootContainerInstance.dependencies =\n                          null === renderLanes\n                            ? null\n                            : {\n                                lanes: renderLanes.lanes,\n                                firstContext: renderLanes.firstContext\n                              })),\n                    (newProps = newProps.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== newProps.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 64),\n            (rootContainerInstance = !0),\n            cutOffTailIfNeeded(newProps, !1),\n            (workInProgress.lanes = 33554432));\n        }\n      else {\n        if (!rootContainerInstance)\n          if (\n            ((current = findFirstSuspended(updatePayload)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 64),\n              (rootContainerInstance = !0),\n              (current = current.updateQueue),\n              null !== current &&\n                ((workInProgress.updateQueue = current),\n                (workInProgress.flags |= 4)),\n              cutOffTailIfNeeded(newProps, !0),\n              null === newProps.tail &&\n                \"hidden\" === newProps.tailMode &&\n                !updatePayload.alternate)\n            )\n              return (\n                (workInProgress = workInProgress.lastEffect =\n                  newProps.lastEffect),\n                null !== workInProgress && (workInProgress.nextEffect = null),\n                null\n              );\n          } else\n            2 * now() - newProps.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              1073741824 !== renderLanes &&\n              ((workInProgress.flags |= 64),\n              (rootContainerInstance = !0),\n              cutOffTailIfNeeded(newProps, !1),\n              (workInProgress.lanes = 33554432));\n        newProps.isBackwards\n          ? ((updatePayload.sibling = workInProgress.child),\n            (workInProgress.child = updatePayload))\n          : ((current = newProps.last),\n            null !== current\n              ? (current.sibling = updatePayload)\n              : (workInProgress.child = updatePayload),\n            (newProps.last = updatePayload));\n      }\n      return null !== newProps.tail\n        ? ((current = newProps.tail),\n          (newProps.rendering = current),\n          (newProps.tail = current.sibling),\n          (newProps.lastEffect = workInProgress.lastEffect),\n          (newProps.renderingStartTime = now()),\n          (current.sibling = null),\n          (workInProgress = suspenseStackCursor.current),\n          push(\n            suspenseStackCursor,\n            rootContainerInstance\n              ? (workInProgress & 1) | 2\n              : workInProgress & 1\n          ),\n          current)\n        : null;\n    case 23:\n    case 24:\n      return (\n        popRenderLanes(),\n        null !== current &&\n          (null !== current.memoizedState) !==\n            (null !== workInProgress.memoizedState) &&\n          \"unstable-defer-without-hiding\" !== newProps.mode &&\n          (workInProgress.flags |= 4),\n        null\n      );\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction unwindWork(workInProgress) {\n  switch (workInProgress.tag) {\n    case 1:\n      isContextProvider(workInProgress.type) && popContext();\n      var flags = workInProgress.flags;\n      return flags & 8192\n        ? ((workInProgress.flags = (flags & -8193) | 64), workInProgress)\n        : null;\n    case 3:\n      popHostContainer();\n      pop(didPerformWorkStackCursor);\n      pop(contextStackCursor);\n      resetWorkInProgressVersions();\n      flags = workInProgress.flags;\n      if (0 !== (flags & 64))\n        throw Error(\n          \"The root failed to unmount after an error. This is likely a bug in React. Please file an issue.\"\n        );\n      workInProgress.flags = (flags & -8193) | 64;\n      return workInProgress;\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      return (\n        pop(suspenseStackCursor),\n        (flags = workInProgress.flags),\n        flags & 8192\n          ? ((workInProgress.flags = (flags & -8193) | 64), workInProgress)\n          : null\n      );\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress), null;\n    case 23:\n    case 24:\n      return popRenderLanes(), null;\n    default:\n      return null;\n  }\n}\nfunction createCapturedValue(value, source) {\n  try {\n    var info = \"\",\n      node = source;\n    do (info += describeFiber(node)), (node = node.return);\n    while (node);\n    var JSCompiler_inline_result = info;\n  } catch (x) {\n    JSCompiler_inline_result =\n      \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n  return { value: value, source: source, stack: JSCompiler_inline_result };\n}\nif (\n  \"function\" !==\n  typeof ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog\n)\n  throw Error(\n    \"Expected ReactFiberErrorDialog.showErrorDialog to be a function.\"\n  );\nfunction logCapturedError(boundary, errorInfo) {\n  try {\n    !1 !==\n      ReactNativePrivateInterface.ReactFiberErrorDialog.showErrorDialog({\n        componentStack: null !== errorInfo.stack ? errorInfo.stack : \"\",\n        error: errorInfo.value,\n        errorBoundary:\n          null !== boundary && 1 === boundary.tag ? boundary.stateNode : null\n      }) && console.error(errorInfo.value);\n  } catch (e) {\n    setTimeout(function() {\n      throw e;\n    });\n  }\n}\nvar PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map;\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n  lane = createUpdate(-1, lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  var error = errorInfo.value;\n  lane.callback = function() {\n    hasUncaughtError || ((hasUncaughtError = !0), (firstUncaughtError = error));\n    logCapturedError(fiber, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n  lane = createUpdate(-1, lane);\n  lane.tag = 3;\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    lane.payload = function() {\n      logCapturedError(fiber, errorInfo);\n      return getDerivedStateFromError(error);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (lane.callback = function() {\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this),\n        logCapturedError(fiber, errorInfo));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n  return lane;\n}\nvar PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set;\nfunction safelyDetachRef(current) {\n  var ref = current.ref;\n  if (null !== ref)\n    if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (refError) {\n        captureCommitPhaseError(current, refError);\n      }\n    else ref.current = null;\n}\nfunction commitBeforeMutationLifeCycles(current, finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n    case 22:\n      return;\n    case 1:\n      if (finishedWork.flags & 256 && null !== current) {\n        var prevProps = current.memoizedProps,\n          prevState = current.memoizedState;\n        current = finishedWork.stateNode;\n        finishedWork = current.getSnapshotBeforeUpdate(\n          finishedWork.elementType === finishedWork.type\n            ? prevProps\n            : resolveDefaultProps(finishedWork.type, prevProps),\n          prevState\n        );\n        current.__reactInternalSnapshotBeforeUpdate = finishedWork;\n      }\n      return;\n    case 3:\n      return;\n    case 5:\n    case 6:\n    case 4:\n    case 17:\n      return;\n  }\n  throw Error(\n    \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction commitLifeCycles(finishedRoot, current, finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n    case 22:\n      current = finishedWork.updateQueue;\n      current = null !== current ? current.lastEffect : null;\n      if (null !== current) {\n        finishedRoot = current = current.next;\n        do {\n          if (3 === (finishedRoot.tag & 3)) {\n            var create$81 = finishedRoot.create;\n            finishedRoot.destroy = create$81();\n          }\n          finishedRoot = finishedRoot.next;\n        } while (finishedRoot !== current);\n      }\n      current = finishedWork.updateQueue;\n      current = null !== current ? current.lastEffect : null;\n      if (null !== current) {\n        finishedRoot = current = current.next;\n        do {\n          var _effect = finishedRoot;\n          create$81 = _effect.next;\n          _effect = _effect.tag;\n          0 !== (_effect & 4) &&\n            0 !== (_effect & 1) &&\n            (enqueuePendingPassiveHookEffectUnmount(finishedWork, finishedRoot),\n            enqueuePendingPassiveHookEffectMount(finishedWork, finishedRoot));\n          finishedRoot = create$81;\n        } while (finishedRoot !== current);\n      }\n      return;\n    case 1:\n      finishedRoot = finishedWork.stateNode;\n      finishedWork.flags & 4 &&\n        (null === current\n          ? finishedRoot.componentDidMount()\n          : ((create$81 =\n              finishedWork.elementType === finishedWork.type\n                ? current.memoizedProps\n                : resolveDefaultProps(\n                    finishedWork.type,\n                    current.memoizedProps\n                  )),\n            finishedRoot.componentDidUpdate(\n              create$81,\n              current.memoizedState,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            )));\n      current = finishedWork.updateQueue;\n      null !== current &&\n        commitUpdateQueue(finishedWork, current, finishedRoot);\n      return;\n    case 3:\n      current = finishedWork.updateQueue;\n      if (null !== current) {\n        finishedRoot = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 5:\n              finishedRoot = finishedWork.child.stateNode.canonical;\n              break;\n            case 1:\n              finishedRoot = finishedWork.child.stateNode;\n          }\n        commitUpdateQueue(finishedWork, current, finishedRoot);\n      }\n      return;\n    case 5:\n      null === current && finishedWork.flags & 4 && shim();\n      return;\n    case 6:\n      return;\n    case 4:\n      return;\n    case 12:\n      return;\n    case 13:\n      return;\n    case 19:\n    case 17:\n    case 20:\n    case 21:\n    case 23:\n    case 24:\n      return;\n  }\n  throw Error(\n    \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n  );\n}\nfunction detachFiberMutation(fiber) {\n  fiber.alternate = null;\n  fiber.child = null;\n  fiber.dependencies = null;\n  fiber.firstEffect = null;\n  fiber.lastEffect = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.return = null;\n  fiber.updateQueue = null;\n}\nfunction commitWork(current, finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n    case 22:\n      current = finishedWork.updateQueue;\n      current = null !== current ? current.lastEffect : null;\n      if (null !== current) {\n        finishedWork = current = current.next;\n        do {\n          if (3 === (finishedWork.tag & 3)) {\n            var destroy = finishedWork.destroy;\n            finishedWork.destroy = void 0;\n            void 0 !== destroy && destroy();\n          }\n          finishedWork = finishedWork.next;\n        } while (finishedWork !== current);\n      }\n      return;\n    case 12:\n      return;\n    case 13:\n      null !== finishedWork.memoizedState &&\n        (globalMostRecentFallbackTime = now());\n      attachSuspenseRetryListeners(finishedWork);\n      return;\n    case 19:\n      attachSuspenseRetryListeners(finishedWork);\n      return;\n    case 23:\n    case 24:\n      return;\n  }\n  a: {\n    switch (finishedWork.tag) {\n      case 1:\n      case 5:\n      case 6:\n      case 20:\n        break a;\n      case 3:\n      case 4:\n        break a;\n    }\n    throw Error(\n      \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork) {\n  var wakeables = finishedWork.updateQueue;\n  if (null !== wakeables) {\n    finishedWork.updateQueue = null;\n    var retryCache = finishedWork.stateNode;\n    null === retryCache &&\n      (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n    wakeables.forEach(function(wakeable) {\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n      retryCache.has(wakeable) ||\n        (retryCache.add(wakeable), wakeable.then(retry, retry));\n    });\n  }\n}\nfunction isSuspenseBoundaryBeingHidden(current, finishedWork) {\n  return null !== current &&\n    ((current = current.memoizedState),\n    null === current || null !== current.dehydrated)\n    ? ((finishedWork = finishedWork.memoizedState),\n      null !== finishedWork && null === finishedWork.dehydrated)\n    : !1;\n}\nvar ceil = Math.ceil,\n  ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,\n  ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  subtreeRenderLanes = 0,\n  subtreeRenderLanesCursor = createCursor(0),\n  workInProgressRootExitStatus = 0,\n  workInProgressRootFatalError = null,\n  workInProgressRootIncludedLanes = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  mostRecentlyUpdatedRoot = null,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  nextEffect = null,\n  hasUncaughtError = !1,\n  firstUncaughtError = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  rootDoesHavePassiveEffects = !1,\n  rootWithPendingPassiveEffects = null,\n  pendingPassiveEffectsRenderPriority = 90,\n  pendingPassiveHookEffectsMount = [],\n  pendingPassiveHookEffectsUnmount = [],\n  rootsWithPendingDiscreteUpdates = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null,\n  currentEventTime = -1,\n  currentEventWipLanes = 0,\n  currentEventPendingLanes = 0,\n  focusedInstanceHandle = null,\n  shouldFireAfterActiveInstanceBlur = !1;\nfunction requestEventTime() {\n  return 0 !== (executionContext & 48)\n    ? now()\n    : -1 !== currentEventTime\n    ? currentEventTime\n    : (currentEventTime = now());\n}\nfunction requestUpdateLane(fiber) {\n  fiber = fiber.mode;\n  if (0 === (fiber & 2)) return 1;\n  if (0 === (fiber & 4)) return 99 === getCurrentPriorityLevel() ? 1 : 2;\n  0 === currentEventWipLanes &&\n    (currentEventWipLanes = workInProgressRootIncludedLanes);\n  if (0 !== ReactCurrentBatchConfig.transition) {\n    0 !== currentEventPendingLanes &&\n      (currentEventPendingLanes =\n        null !== mostRecentlyUpdatedRoot\n          ? mostRecentlyUpdatedRoot.pendingLanes\n          : 0);\n    fiber = currentEventWipLanes;\n    var lane = 4186112 & ~currentEventPendingLanes;\n    lane &= -lane;\n    0 === lane &&\n      ((fiber = 4186112 & ~fiber),\n      (lane = fiber & -fiber),\n      0 === lane && (lane = 8192));\n    return lane;\n  }\n  fiber = getCurrentPriorityLevel();\n  0 !== (executionContext & 4) && 98 === fiber\n    ? (fiber = findUpdateLane(12, currentEventWipLanes))\n    : ((fiber = schedulerPriorityToLanePriority(fiber)),\n      (fiber = findUpdateLane(fiber, currentEventWipLanes)));\n  return fiber;\n}\nfunction scheduleUpdateOnFiber(fiber, lane, eventTime) {\n  if (50 < nestedUpdateCount)\n    throw ((nestedUpdateCount = 0),\n    (rootWithNestedUpdates = null),\n    Error(\n      \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\"\n    ));\n  fiber = markUpdateLaneFromFiberToRoot(fiber, lane);\n  if (null === fiber) return null;\n  markRootUpdated(fiber, lane, eventTime);\n  fiber === workInProgressRoot &&\n    ((workInProgressRootUpdatedLanes |= lane),\n    4 === workInProgressRootExitStatus &&\n      markRootSuspended$1(fiber, workInProgressRootRenderLanes));\n  var priorityLevel = getCurrentPriorityLevel();\n  1 === lane\n    ? 0 !== (executionContext & 8) && 0 === (executionContext & 48)\n      ? performSyncWorkOnRoot(fiber)\n      : (ensureRootIsScheduled(fiber, eventTime),\n        0 === executionContext &&\n          ((workInProgressRootRenderTargetTime = now() + 500),\n          flushSyncCallbackQueue()))\n    : (0 === (executionContext & 4) ||\n        (98 !== priorityLevel && 99 !== priorityLevel) ||\n        (null === rootsWithPendingDiscreteUpdates\n          ? (rootsWithPendingDiscreteUpdates = new Set([fiber]))\n          : rootsWithPendingDiscreteUpdates.add(fiber)),\n      ensureRootIsScheduled(fiber, eventTime));\n  mostRecentlyUpdatedRoot = fiber;\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  alternate = sourceFiber;\n  for (sourceFiber = sourceFiber.return; null !== sourceFiber; )\n    (sourceFiber.childLanes |= lane),\n      (alternate = sourceFiber.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      (alternate = sourceFiber),\n      (sourceFiber = sourceFiber.return);\n  return 3 === alternate.tag ? alternate.stateNode : null;\n}\nfunction ensureRootIsScheduled(root, currentTime) {\n  for (\n    var existingCallbackNode = root.callbackNode,\n      suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes;\n    0 < lanes;\n\n  ) {\n    var index$5 = 31 - clz32(lanes),\n      lane = 1 << index$5,\n      expirationTime = expirationTimes[index$5];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes)) {\n        expirationTime = currentTime;\n        getHighestPriorityLanes(lane);\n        var priority = return_highestLanePriority;\n        expirationTimes[index$5] =\n          10 <= priority\n            ? expirationTime + 250\n            : 6 <= priority\n            ? expirationTime + 5e3\n            : -1;\n      }\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  suspendedLanes = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes : 0\n  );\n  currentTime = return_highestLanePriority;\n  if (0 === suspendedLanes)\n    null !== existingCallbackNode &&\n      (existingCallbackNode !== fakeCallbackNode &&\n        Scheduler_cancelCallback(existingCallbackNode),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0));\n  else {\n    if (null !== existingCallbackNode) {\n      if (root.callbackPriority === currentTime) return;\n      existingCallbackNode !== fakeCallbackNode &&\n        Scheduler_cancelCallback(existingCallbackNode);\n    }\n    15 === currentTime\n      ? ((existingCallbackNode = performSyncWorkOnRoot.bind(null, root)),\n        null === syncQueue\n          ? ((syncQueue = [existingCallbackNode]),\n            (immediateQueueCallbackNode = Scheduler_scheduleCallback(\n              Scheduler_ImmediatePriority,\n              flushSyncCallbackQueueImpl\n            )))\n          : syncQueue.push(existingCallbackNode),\n        (existingCallbackNode = fakeCallbackNode))\n      : 14 === currentTime\n      ? (existingCallbackNode = scheduleCallback(\n          99,\n          performSyncWorkOnRoot.bind(null, root)\n        ))\n      : ((existingCallbackNode = lanePriorityToSchedulerPriority(currentTime)),\n        (existingCallbackNode = scheduleCallback(\n          existingCallbackNode,\n          performConcurrentWorkOnRoot.bind(null, root)\n        )));\n    root.callbackPriority = currentTime;\n    root.callbackNode = existingCallbackNode;\n  }\n}\nfunction performConcurrentWorkOnRoot(root) {\n  currentEventTime = -1;\n  currentEventPendingLanes = currentEventWipLanes = 0;\n  if (0 !== (executionContext & 48))\n    throw Error(\"Should not already be working.\");\n  var originalCallbackNode = root.callbackNode;\n  if (flushPassiveEffects() && root.callbackNode !== originalCallbackNode)\n    return null;\n  var lanes = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes : 0\n  );\n  if (0 === lanes) return null;\n  var exitStatus = lanes;\n  var prevExecutionContext = executionContext;\n  executionContext |= 16;\n  var prevDispatcher = pushDispatcher();\n  if (\n    workInProgressRoot !== root ||\n    workInProgressRootRenderLanes !== exitStatus\n  )\n    (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, exitStatus);\n  do\n    try {\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  while (1);\n  resetContextDependencies();\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n  executionContext = prevExecutionContext;\n  null !== workInProgress\n    ? (exitStatus = 0)\n    : ((workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0),\n      (exitStatus = workInProgressRootExitStatus));\n  if (0 !== (workInProgressRootIncludedLanes & workInProgressRootUpdatedLanes))\n    prepareFreshStack(root, 0);\n  else if (0 !== exitStatus) {\n    2 === exitStatus &&\n      ((executionContext |= 64),\n      root.hydrate && ((root.hydrate = !1), shim(root.containerInfo)),\n      (lanes = getLanesToRetrySynchronouslyOnError(root)),\n      0 !== lanes && (exitStatus = renderRootSync(root, lanes)));\n    if (1 === exitStatus)\n      throw ((originalCallbackNode = workInProgressRootFatalError),\n      prepareFreshStack(root, 0),\n      markRootSuspended$1(root, lanes),\n      ensureRootIsScheduled(root, now()),\n      originalCallbackNode);\n    root.finishedWork = root.current.alternate;\n    root.finishedLanes = lanes;\n    switch (exitStatus) {\n      case 0:\n      case 1:\n        throw Error(\"Root did not complete. This is a bug in React.\");\n      case 2:\n        commitRoot(root);\n        break;\n      case 3:\n        markRootSuspended$1(root, lanes);\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 500 - now()),\n          10 < exitStatus)\n        ) {\n          if (0 !== getNextLanes(root, 0)) break;\n          prevExecutionContext = root.suspendedLanes;\n          if ((prevExecutionContext & lanes) !== lanes) {\n            requestEventTime();\n            root.pingedLanes |= root.suspendedLanes & prevExecutionContext;\n            break;\n          }\n          root.timeoutHandle = scheduleTimeout(\n            commitRoot.bind(null, root),\n            exitStatus\n          );\n          break;\n        }\n        commitRoot(root);\n        break;\n      case 4:\n        markRootSuspended$1(root, lanes);\n        if ((lanes & 4186112) === lanes) break;\n        exitStatus = root.eventTimes;\n        for (prevExecutionContext = -1; 0 < lanes; ) {\n          var index$4 = 31 - clz32(lanes);\n          prevDispatcher = 1 << index$4;\n          index$4 = exitStatus[index$4];\n          index$4 > prevExecutionContext && (prevExecutionContext = index$4);\n          lanes &= ~prevDispatcher;\n        }\n        lanes = prevExecutionContext;\n        lanes = now() - lanes;\n        lanes =\n          (120 > lanes\n            ? 120\n            : 480 > lanes\n            ? 480\n            : 1080 > lanes\n            ? 1080\n            : 1920 > lanes\n            ? 1920\n            : 3e3 > lanes\n            ? 3e3\n            : 4320 > lanes\n            ? 4320\n            : 1960 * ceil(lanes / 1960)) - lanes;\n        if (10 < lanes) {\n          root.timeoutHandle = scheduleTimeout(\n            commitRoot.bind(null, root),\n            lanes\n          );\n          break;\n        }\n        commitRoot(root);\n        break;\n      case 5:\n        commitRoot(root);\n        break;\n      default:\n        throw Error(\"Unknown root exit status.\");\n    }\n  }\n  ensureRootIsScheduled(root, now());\n  return root.callbackNode === originalCallbackNode\n    ? performConcurrentWorkOnRoot.bind(null, root)\n    : null;\n}\nfunction markRootSuspended$1(root, suspendedLanes) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  for (root = root.expirationTimes; 0 < suspendedLanes; ) {\n    var index$9 = 31 - clz32(suspendedLanes),\n      lane = 1 << index$9;\n    root[index$9] = -1;\n    suspendedLanes &= ~lane;\n  }\n}\nfunction performSyncWorkOnRoot(root) {\n  if (0 !== (executionContext & 48))\n    throw Error(\"Should not already be working.\");\n  flushPassiveEffects();\n  if (\n    root === workInProgressRoot &&\n    0 !== (root.expiredLanes & workInProgressRootRenderLanes)\n  ) {\n    var lanes = workInProgressRootRenderLanes;\n    var exitStatus = renderRootSync(root, lanes);\n    0 !== (workInProgressRootIncludedLanes & workInProgressRootUpdatedLanes) &&\n      ((lanes = getNextLanes(root, lanes)),\n      (exitStatus = renderRootSync(root, lanes)));\n  } else\n    (lanes = getNextLanes(root, 0)), (exitStatus = renderRootSync(root, lanes));\n  0 !== root.tag &&\n    2 === exitStatus &&\n    ((executionContext |= 64),\n    root.hydrate && ((root.hydrate = !1), shim(root.containerInfo)),\n    (lanes = getLanesToRetrySynchronouslyOnError(root)),\n    0 !== lanes && (exitStatus = renderRootSync(root, lanes)));\n  if (1 === exitStatus)\n    throw ((exitStatus = workInProgressRootFatalError),\n    prepareFreshStack(root, 0),\n    markRootSuspended$1(root, lanes),\n    ensureRootIsScheduled(root, now()),\n    exitStatus);\n  root.finishedWork = root.current.alternate;\n  root.finishedLanes = lanes;\n  commitRoot(root);\n  ensureRootIsScheduled(root, now());\n  return null;\n}\nfunction pushRenderLanes(fiber, lanes) {\n  push(subtreeRenderLanesCursor, subtreeRenderLanes);\n  subtreeRenderLanes |= lanes;\n  workInProgressRootIncludedLanes |= lanes;\n}\nfunction popRenderLanes() {\n  subtreeRenderLanes = subtreeRenderLanesCursor.current;\n  pop(subtreeRenderLanesCursor);\n}\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  if (null !== workInProgress)\n    for (timeoutHandle = workInProgress.return; null !== timeoutHandle; ) {\n      var interruptedWork = timeoutHandle;\n      switch (interruptedWork.tag) {\n        case 1:\n          interruptedWork = interruptedWork.type.childContextTypes;\n          null !== interruptedWork &&\n            void 0 !== interruptedWork &&\n            popContext();\n          break;\n        case 3:\n          popHostContainer();\n          pop(didPerformWorkStackCursor);\n          pop(contextStackCursor);\n          resetWorkInProgressVersions();\n          break;\n        case 5:\n          popHostContext(interruptedWork);\n          break;\n        case 4:\n          popHostContainer();\n          break;\n        case 13:\n          pop(suspenseStackCursor);\n          break;\n        case 19:\n          pop(suspenseStackCursor);\n          break;\n        case 10:\n          popProvider(interruptedWork);\n          break;\n        case 23:\n        case 24:\n          popRenderLanes();\n      }\n      timeoutHandle = timeoutHandle.return;\n    }\n  workInProgressRoot = root;\n  workInProgress = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n  workInProgressRootExitStatus = 0;\n  workInProgressRootFatalError = null;\n  workInProgressRootPingedLanes = workInProgressRootUpdatedLanes = workInProgressRootSkippedLanes = 0;\n}\nfunction handleError(root$jscomp$0, thrownValue) {\n  do {\n    var erroredWork = workInProgress;\n    try {\n      resetContextDependencies();\n      ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n      if (didScheduleRenderPhaseUpdate) {\n        for (\n          var hook = currentlyRenderingFiber$1.memoizedState;\n          null !== hook;\n\n        ) {\n          var queue = hook.queue;\n          null !== queue && (queue.pending = null);\n          hook = hook.next;\n        }\n        didScheduleRenderPhaseUpdate = !1;\n      }\n      renderLanes = 0;\n      workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n      didScheduleRenderPhaseUpdateDuringThisPass = !1;\n      ReactCurrentOwner$2.current = null;\n      if (null === erroredWork || null === erroredWork.return) {\n        workInProgressRootExitStatus = 1;\n        workInProgressRootFatalError = thrownValue;\n        workInProgress = null;\n        break;\n      }\n      a: {\n        var root = root$jscomp$0,\n          returnFiber = erroredWork.return,\n          sourceFiber = erroredWork,\n          value = thrownValue;\n        thrownValue = workInProgressRootRenderLanes;\n        sourceFiber.flags |= 4096;\n        sourceFiber.firstEffect = sourceFiber.lastEffect = null;\n        if (\n          null !== value &&\n          \"object\" === typeof value &&\n          \"function\" === typeof value.then\n        ) {\n          var wakeable = value;\n          if (0 === (sourceFiber.mode & 2)) {\n            var currentSource = sourceFiber.alternate;\n            currentSource\n              ? ((sourceFiber.updateQueue = currentSource.updateQueue),\n                (sourceFiber.memoizedState = currentSource.memoizedState),\n                (sourceFiber.lanes = currentSource.lanes))\n              : ((sourceFiber.updateQueue = null),\n                (sourceFiber.memoizedState = null));\n          }\n          var hasInvisibleParentBoundary =\n              0 !== (suspenseStackCursor.current & 1),\n            workInProgress$76 = returnFiber;\n          do {\n            var JSCompiler_temp;\n            if ((JSCompiler_temp = 13 === workInProgress$76.tag)) {\n              var nextState = workInProgress$76.memoizedState;\n              if (null !== nextState)\n                JSCompiler_temp = null !== nextState.dehydrated ? !0 : !1;\n              else {\n                var props = workInProgress$76.memoizedProps;\n                JSCompiler_temp =\n                  void 0 === props.fallback\n                    ? !1\n                    : !0 !== props.unstable_avoidThisFallback\n                    ? !0\n                    : hasInvisibleParentBoundary\n                    ? !1\n                    : !0;\n              }\n            }\n            if (JSCompiler_temp) {\n              var wakeables = workInProgress$76.updateQueue;\n              if (null === wakeables) {\n                var updateQueue = new Set();\n                updateQueue.add(wakeable);\n                workInProgress$76.updateQueue = updateQueue;\n              } else wakeables.add(wakeable);\n              if (0 === (workInProgress$76.mode & 2)) {\n                workInProgress$76.flags |= 64;\n                sourceFiber.flags |= 32768;\n                sourceFiber.flags &= -5029;\n                if (1 === sourceFiber.tag)\n                  if (null === sourceFiber.alternate) sourceFiber.tag = 17;\n                  else {\n                    var update = createUpdate(-1, 1);\n                    update.tag = 2;\n                    enqueueUpdate(sourceFiber, update);\n                  }\n                sourceFiber.lanes |= 1;\n                break a;\n              }\n              value = void 0;\n              sourceFiber = thrownValue;\n              var pingCache = root.pingCache;\n              null === pingCache\n                ? ((pingCache = root.pingCache = new PossiblyWeakMap()),\n                  (value = new Set()),\n                  pingCache.set(wakeable, value))\n                : ((value = pingCache.get(wakeable)),\n                  void 0 === value &&\n                    ((value = new Set()), pingCache.set(wakeable, value)));\n              if (!value.has(sourceFiber)) {\n                value.add(sourceFiber);\n                var ping = pingSuspendedRoot.bind(\n                  null,\n                  root,\n                  wakeable,\n                  sourceFiber\n                );\n                wakeable.then(ping, ping);\n              }\n              workInProgress$76.flags |= 8192;\n              workInProgress$76.lanes = thrownValue;\n              break a;\n            }\n            workInProgress$76 = workInProgress$76.return;\n          } while (null !== workInProgress$76);\n          value = Error(\n            (getComponentName(sourceFiber.type) || \"A React component\") +\n              \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"\n          );\n        }\n        5 !== workInProgressRootExitStatus &&\n          (workInProgressRootExitStatus = 2);\n        value = createCapturedValue(value, sourceFiber);\n        workInProgress$76 = returnFiber;\n        do {\n          switch (workInProgress$76.tag) {\n            case 3:\n              root = value;\n              workInProgress$76.flags |= 8192;\n              thrownValue &= -thrownValue;\n              workInProgress$76.lanes |= thrownValue;\n              var update$77 = createRootErrorUpdate(\n                workInProgress$76,\n                root,\n                thrownValue\n              );\n              enqueueCapturedUpdate(workInProgress$76, update$77);\n              break a;\n            case 1:\n              root = value;\n              var ctor = workInProgress$76.type,\n                instance = workInProgress$76.stateNode;\n              if (\n                0 === (workInProgress$76.flags & 64) &&\n                (\"function\" === typeof ctor.getDerivedStateFromError ||\n                  (null !== instance &&\n                    \"function\" === typeof instance.componentDidCatch &&\n                    (null === legacyErrorBoundariesThatAlreadyFailed ||\n                      !legacyErrorBoundariesThatAlreadyFailed.has(instance))))\n              ) {\n                workInProgress$76.flags |= 8192;\n                thrownValue &= -thrownValue;\n                workInProgress$76.lanes |= thrownValue;\n                var update$80 = createClassErrorUpdate(\n                  workInProgress$76,\n                  root,\n                  thrownValue\n                );\n                enqueueCapturedUpdate(workInProgress$76, update$80);\n                break a;\n              }\n          }\n          workInProgress$76 = workInProgress$76.return;\n        } while (null !== workInProgress$76);\n      }\n      completeUnitOfWork(erroredWork);\n    } catch (yetAnotherThrownValue) {\n      thrownValue = yetAnotherThrownValue;\n      workInProgress === erroredWork &&\n        null !== erroredWork &&\n        (workInProgress = erroredWork = erroredWork.return);\n      continue;\n    }\n    break;\n  } while (1);\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactCurrentDispatcher$2.current;\n  ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction renderRootSync(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 16;\n  var prevDispatcher = pushDispatcher();\n  (workInProgressRoot === root && workInProgressRootRenderLanes === lanes) ||\n    prepareFreshStack(root, lanes);\n  do\n    try {\n      workLoopSync();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  while (1);\n  resetContextDependencies();\n  executionContext = prevExecutionContext;\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n  if (null !== workInProgress)\n    throw Error(\n      \"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  return workInProgressRootExitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction workLoopConcurrent() {\n  for (; null !== workInProgress && !Scheduler_shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork$1(unitOfWork.alternate, unitOfWork, subtreeRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n  ReactCurrentOwner$2.current = null;\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    var current = completedWork.alternate;\n    unitOfWork = completedWork.return;\n    if (0 === (completedWork.flags & 4096)) {\n      current = completeWork(current, completedWork, subtreeRenderLanes);\n      if (null !== current) {\n        workInProgress = current;\n        return;\n      }\n      current = completedWork;\n      if (\n        (24 !== current.tag && 23 !== current.tag) ||\n        null === current.memoizedState ||\n        0 !== (subtreeRenderLanes & 1073741824) ||\n        0 === (current.mode & 4)\n      ) {\n        for (var newChildLanes = 0, child = current.child; null !== child; )\n          (newChildLanes |= child.lanes | child.childLanes),\n            (child = child.sibling);\n        current.childLanes = newChildLanes;\n      }\n      null !== unitOfWork &&\n        0 === (unitOfWork.flags & 4096) &&\n        (null === unitOfWork.firstEffect &&\n          (unitOfWork.firstEffect = completedWork.firstEffect),\n        null !== completedWork.lastEffect &&\n          (null !== unitOfWork.lastEffect &&\n            (unitOfWork.lastEffect.nextEffect = completedWork.firstEffect),\n          (unitOfWork.lastEffect = completedWork.lastEffect)),\n        1 < completedWork.flags &&\n          (null !== unitOfWork.lastEffect\n            ? (unitOfWork.lastEffect.nextEffect = completedWork)\n            : (unitOfWork.firstEffect = completedWork),\n          (unitOfWork.lastEffect = completedWork)));\n    } else {\n      current = unwindWork(completedWork);\n      if (null !== current) {\n        current.flags &= 4095;\n        workInProgress = current;\n        return;\n      }\n      null !== unitOfWork &&\n        ((unitOfWork.firstEffect = unitOfWork.lastEffect = null),\n        (unitOfWork.flags |= 4096));\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction commitRoot(root) {\n  var renderPriorityLevel = getCurrentPriorityLevel();\n  runWithPriority(99, commitRootImpl.bind(null, root, renderPriorityLevel));\n  return null;\n}\nfunction commitRootImpl(root, renderPriorityLevel) {\n  do flushPassiveEffects();\n  while (null !== rootWithPendingPassiveEffects);\n  if (0 !== (executionContext & 48))\n    throw Error(\"Should not already be working.\");\n  var finishedWork = root.finishedWork;\n  if (null === finishedWork) return null;\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  if (finishedWork === root.current)\n    throw Error(\n      \"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\"\n    );\n  root.callbackNode = null;\n  var remainingLanes = finishedWork.lanes | finishedWork.childLanes,\n    remainingLanes$jscomp$0 = remainingLanes,\n    noLongerPendingLanes = root.pendingLanes & ~remainingLanes$jscomp$0;\n  root.pendingLanes = remainingLanes$jscomp$0;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.expiredLanes &= remainingLanes$jscomp$0;\n  root.mutableReadLanes &= remainingLanes$jscomp$0;\n  root.entangledLanes &= remainingLanes$jscomp$0;\n  remainingLanes$jscomp$0 = root.entanglements;\n  for (\n    var eventTimes = root.eventTimes, expirationTimes = root.expirationTimes;\n    0 < noLongerPendingLanes;\n\n  ) {\n    var index$10 = 31 - clz32(noLongerPendingLanes),\n      lane = 1 << index$10;\n    remainingLanes$jscomp$0[index$10] = 0;\n    eventTimes[index$10] = -1;\n    expirationTimes[index$10] = -1;\n    noLongerPendingLanes &= ~lane;\n  }\n  null !== rootsWithPendingDiscreteUpdates &&\n    0 === (remainingLanes & 24) &&\n    rootsWithPendingDiscreteUpdates.has(root) &&\n    rootsWithPendingDiscreteUpdates.delete(root);\n  root === workInProgressRoot &&\n    ((workInProgress = workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0));\n  1 < finishedWork.flags\n    ? null !== finishedWork.lastEffect\n      ? ((finishedWork.lastEffect.nextEffect = finishedWork),\n        (remainingLanes = finishedWork.firstEffect))\n      : (remainingLanes = finishedWork)\n    : (remainingLanes = finishedWork.firstEffect);\n  if (null !== remainingLanes) {\n    remainingLanes$jscomp$0 = executionContext;\n    executionContext |= 32;\n    focusedInstanceHandle = ReactCurrentOwner$2.current = null;\n    shouldFireAfterActiveInstanceBlur = !1;\n    nextEffect = remainingLanes;\n    do\n      try {\n        commitBeforeMutationEffects();\n      } catch (error) {\n        if (null === nextEffect) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(nextEffect, error);\n        nextEffect = nextEffect.nextEffect;\n      }\n    while (null !== nextEffect);\n    focusedInstanceHandle = null;\n    nextEffect = remainingLanes;\n    do\n      try {\n        for (; null !== nextEffect; ) {\n          var flags = nextEffect.flags;\n          if (flags & 128) {\n            var current = nextEffect.alternate;\n            if (null !== current) {\n              var currentRef = current.ref;\n              null !== currentRef &&\n                (\"function\" === typeof currentRef\n                  ? currentRef(null)\n                  : (currentRef.current = null));\n            }\n          }\n          switch (flags & 1038) {\n            case 2:\n              nextEffect.flags &= -3;\n              break;\n            case 6:\n              nextEffect.flags &= -3;\n              commitWork(nextEffect.alternate, nextEffect);\n              break;\n            case 1024:\n              nextEffect.flags &= -1025;\n              break;\n            case 1028:\n              nextEffect.flags &= -1025;\n              commitWork(nextEffect.alternate, nextEffect);\n              break;\n            case 4:\n              commitWork(nextEffect.alternate, nextEffect);\n              break;\n            case 8:\n              eventTimes = nextEffect;\n              a: for (noLongerPendingLanes = expirationTimes = eventTimes; ; ) {\n                index$10 = noLongerPendingLanes;\n                if (\n                  injectedHook &&\n                  \"function\" === typeof injectedHook.onCommitFiberUnmount\n                )\n                  try {\n                    injectedHook.onCommitFiberUnmount(rendererID, index$10);\n                  } catch (err) {}\n                switch (index$10.tag) {\n                  case 0:\n                  case 11:\n                  case 14:\n                  case 15:\n                  case 22:\n                    var updateQueue = index$10.updateQueue;\n                    if (null !== updateQueue) {\n                      var lastEffect = updateQueue.lastEffect;\n                      if (null !== lastEffect) {\n                        var firstEffect = lastEffect.next;\n                        lane = firstEffect;\n                        do {\n                          var _effect2 = lane,\n                            destroy = _effect2.destroy,\n                            tag = _effect2.tag;\n                          if (void 0 !== destroy)\n                            if (0 !== (tag & 4))\n                              enqueuePendingPassiveHookEffectUnmount(\n                                index$10,\n                                lane\n                              );\n                            else {\n                              _effect2 = index$10;\n                              try {\n                                destroy();\n                              } catch (error) {\n                                captureCommitPhaseError(_effect2, error);\n                              }\n                            }\n                          lane = lane.next;\n                        } while (lane !== firstEffect);\n                      }\n                    }\n                    break;\n                  case 1:\n                    safelyDetachRef(index$10);\n                    var instance = index$10.stateNode;\n                    if (\"function\" === typeof instance.componentWillUnmount)\n                      try {\n                        (lane = index$10),\n                          (_effect2 = instance),\n                          (_effect2.props = lane.memoizedProps),\n                          (_effect2.state = lane.memoizedState),\n                          _effect2.componentWillUnmount();\n                      } catch (unmountError) {\n                        captureCommitPhaseError(index$10, unmountError);\n                      }\n                    break;\n                  case 5:\n                    safelyDetachRef(index$10);\n                    break;\n                  case 4:\n                    createChildNodeSet(index$10.stateNode.containerInfo);\n                }\n                if (null !== noLongerPendingLanes.child)\n                  (noLongerPendingLanes.child.return = noLongerPendingLanes),\n                    (noLongerPendingLanes = noLongerPendingLanes.child);\n                else {\n                  if (noLongerPendingLanes === expirationTimes) break;\n                  for (; null === noLongerPendingLanes.sibling; ) {\n                    if (\n                      null === noLongerPendingLanes.return ||\n                      noLongerPendingLanes.return === expirationTimes\n                    )\n                      break a;\n                    noLongerPendingLanes = noLongerPendingLanes.return;\n                  }\n                  noLongerPendingLanes.sibling.return =\n                    noLongerPendingLanes.return;\n                  noLongerPendingLanes = noLongerPendingLanes.sibling;\n                }\n              }\n              var alternate = eventTimes.alternate;\n              detachFiberMutation(eventTimes);\n              null !== alternate && detachFiberMutation(alternate);\n          }\n          nextEffect = nextEffect.nextEffect;\n        }\n      } catch (error$87) {\n        if (null === nextEffect) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(nextEffect, error$87);\n        nextEffect = nextEffect.nextEffect;\n      }\n    while (null !== nextEffect);\n    root.current = finishedWork;\n    nextEffect = remainingLanes;\n    do\n      try {\n        for (flags = root; null !== nextEffect; ) {\n          var flags$jscomp$0 = nextEffect.flags;\n          flags$jscomp$0 & 36 &&\n            commitLifeCycles(flags, nextEffect.alternate, nextEffect);\n          if (flags$jscomp$0 & 128) {\n            current = void 0;\n            var ref = nextEffect.ref;\n            if (null !== ref) {\n              var instance$jscomp$0 = nextEffect.stateNode;\n              switch (nextEffect.tag) {\n                case 5:\n                  current = instance$jscomp$0.canonical;\n                  break;\n                default:\n                  current = instance$jscomp$0;\n              }\n              \"function\" === typeof ref\n                ? ref(current)\n                : (ref.current = current);\n            }\n          }\n          nextEffect = nextEffect.nextEffect;\n        }\n      } catch (error$88) {\n        if (null === nextEffect) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(nextEffect, error$88);\n        nextEffect = nextEffect.nextEffect;\n      }\n    while (null !== nextEffect);\n    nextEffect = null;\n    requestPaint();\n    executionContext = remainingLanes$jscomp$0;\n  } else root.current = finishedWork;\n  if (rootDoesHavePassiveEffects)\n    (rootDoesHavePassiveEffects = !1),\n      (rootWithPendingPassiveEffects = root),\n      (pendingPassiveEffectsRenderPriority = renderPriorityLevel);\n  else\n    for (nextEffect = remainingLanes; null !== nextEffect; )\n      (renderPriorityLevel = nextEffect.nextEffect),\n        (nextEffect.nextEffect = null),\n        nextEffect.flags & 8 &&\n          ((flags$jscomp$0 = nextEffect),\n          (flags$jscomp$0.sibling = null),\n          (flags$jscomp$0.stateNode = null)),\n        (nextEffect = renderPriorityLevel);\n  remainingLanes = root.pendingLanes;\n  0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n  1 === remainingLanes\n    ? root === rootWithNestedUpdates\n      ? nestedUpdateCount++\n      : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n    : (nestedUpdateCount = 0);\n  finishedWork = finishedWork.stateNode;\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n    try {\n      injectedHook.onCommitFiberRoot(\n        rendererID,\n        finishedWork,\n        void 0,\n        64 === (finishedWork.current.flags & 64)\n      );\n    } catch (err) {}\n  ensureRootIsScheduled(root, now());\n  if (hasUncaughtError)\n    throw ((hasUncaughtError = !1),\n    (root = firstUncaughtError),\n    (firstUncaughtError = null),\n    root);\n  if (0 !== (executionContext & 8)) return null;\n  flushSyncCallbackQueue();\n  return null;\n}\nfunction commitBeforeMutationEffects() {\n  for (; null !== nextEffect; ) {\n    var current = nextEffect.alternate;\n    shouldFireAfterActiveInstanceBlur ||\n      null === focusedInstanceHandle ||\n      (0 !== (nextEffect.flags & 8)\n        ? doesFiberContain(nextEffect, focusedInstanceHandle) &&\n          (shouldFireAfterActiveInstanceBlur = !0)\n        : 13 === nextEffect.tag &&\n          isSuspenseBoundaryBeingHidden(current, nextEffect) &&\n          doesFiberContain(nextEffect, focusedInstanceHandle) &&\n          (shouldFireAfterActiveInstanceBlur = !0));\n    var flags = nextEffect.flags;\n    0 !== (flags & 256) && commitBeforeMutationLifeCycles(current, nextEffect);\n    0 === (flags & 512) ||\n      rootDoesHavePassiveEffects ||\n      ((rootDoesHavePassiveEffects = !0),\n      scheduleCallback(97, function() {\n        flushPassiveEffects();\n        return null;\n      }));\n    nextEffect = nextEffect.nextEffect;\n  }\n}\nfunction flushPassiveEffects() {\n  if (90 !== pendingPassiveEffectsRenderPriority) {\n    var priorityLevel =\n      97 < pendingPassiveEffectsRenderPriority\n        ? 97\n        : pendingPassiveEffectsRenderPriority;\n    pendingPassiveEffectsRenderPriority = 90;\n    return runWithPriority(priorityLevel, flushPassiveEffectsImpl);\n  }\n  return !1;\n}\nfunction enqueuePendingPassiveHookEffectMount(fiber, effect) {\n  pendingPassiveHookEffectsMount.push(effect, fiber);\n  rootDoesHavePassiveEffects ||\n    ((rootDoesHavePassiveEffects = !0),\n    scheduleCallback(97, function() {\n      flushPassiveEffects();\n      return null;\n    }));\n}\nfunction enqueuePendingPassiveHookEffectUnmount(fiber, effect) {\n  pendingPassiveHookEffectsUnmount.push(effect, fiber);\n  rootDoesHavePassiveEffects ||\n    ((rootDoesHavePassiveEffects = !0),\n    scheduleCallback(97, function() {\n      flushPassiveEffects();\n      return null;\n    }));\n}\nfunction flushPassiveEffectsImpl() {\n  if (null === rootWithPendingPassiveEffects) return !1;\n  var root = rootWithPendingPassiveEffects;\n  rootWithPendingPassiveEffects = null;\n  if (0 !== (executionContext & 48))\n    throw Error(\"Cannot flush passive effects while already rendering.\");\n  var prevExecutionContext = executionContext;\n  executionContext |= 32;\n  var unmountEffects = pendingPassiveHookEffectsUnmount;\n  pendingPassiveHookEffectsUnmount = [];\n  for (var i = 0; i < unmountEffects.length; i += 2) {\n    var effect$93 = unmountEffects[i],\n      fiber = unmountEffects[i + 1],\n      destroy = effect$93.destroy;\n    effect$93.destroy = void 0;\n    if (\"function\" === typeof destroy)\n      try {\n        destroy();\n      } catch (error) {\n        if (null === fiber) throw Error(\"Should be working on an effect.\");\n        captureCommitPhaseError(fiber, error);\n      }\n  }\n  unmountEffects = pendingPassiveHookEffectsMount;\n  pendingPassiveHookEffectsMount = [];\n  for (i = 0; i < unmountEffects.length; i += 2) {\n    effect$93 = unmountEffects[i];\n    fiber = unmountEffects[i + 1];\n    try {\n      var create$97 = effect$93.create;\n      effect$93.destroy = create$97();\n    } catch (error$98) {\n      if (null === fiber) throw Error(\"Should be working on an effect.\");\n      captureCommitPhaseError(fiber, error$98);\n    }\n  }\n  for (create$97 = root.current.firstEffect; null !== create$97; )\n    (root = create$97.nextEffect),\n      (create$97.nextEffect = null),\n      create$97.flags & 8 &&\n        ((create$97.sibling = null), (create$97.stateNode = null)),\n      (create$97 = root);\n  executionContext = prevExecutionContext;\n  flushSyncCallbackQueue();\n  return !0;\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValue(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber, sourceFiber, 1);\n  enqueueUpdate(rootFiber, sourceFiber);\n  sourceFiber = requestEventTime();\n  rootFiber = markUpdateLaneFromFiberToRoot(rootFiber, 1);\n  null !== rootFiber &&\n    (markRootUpdated(rootFiber, 1, sourceFiber),\n    ensureRootIsScheduled(rootFiber, sourceFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (var fiber = sourceFiber.return; null !== fiber; ) {\n      if (3 === fiber.tag) {\n        captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error);\n        break;\n      } else if (1 === fiber.tag) {\n        var instance = fiber.stateNode;\n        if (\n          \"function\" === typeof fiber.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValue(error, sourceFiber);\n          var update = createClassErrorUpdate(fiber, sourceFiber, 1);\n          enqueueUpdate(fiber, update);\n          update = requestEventTime();\n          fiber = markUpdateLaneFromFiberToRoot(fiber, 1);\n          if (null !== fiber)\n            markRootUpdated(fiber, 1, update),\n              ensureRootIsScheduled(fiber, update);\n          else if (\n            \"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance))\n          )\n            try {\n              instance.componentDidCatch(error, sourceFiber);\n            } catch (errorToIgnore) {}\n          break;\n        }\n      }\n      fiber = fiber.return;\n    }\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  wakeable = requestEventTime();\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      500 > now() - globalMostRecentFallbackTime)\n      ? prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes));\n  ensureRootIsScheduled(root, wakeable);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryCache = boundaryFiber.stateNode;\n  null !== retryCache && retryCache.delete(wakeable);\n  wakeable = 0;\n  0 === wakeable &&\n    ((wakeable = boundaryFiber.mode),\n    0 === (wakeable & 2)\n      ? (wakeable = 1)\n      : 0 === (wakeable & 4)\n      ? (wakeable = 99 === getCurrentPriorityLevel() ? 1 : 2)\n      : (0 === currentEventWipLanes &&\n          (currentEventWipLanes = workInProgressRootIncludedLanes),\n        (wakeable = getHighestPriorityLane(62914560 & ~currentEventWipLanes)),\n        0 === wakeable && (wakeable = 4194304)));\n  retryCache = requestEventTime();\n  boundaryFiber = markUpdateLaneFromFiberToRoot(boundaryFiber, wakeable);\n  null !== boundaryFiber &&\n    (markRootUpdated(boundaryFiber, wakeable, retryCache),\n    ensureRootIsScheduled(boundaryFiber, retryCache));\n}\nvar beginWork$1;\nbeginWork$1 = function(current, workInProgress, renderLanes) {\n  var updateLanes = workInProgress.lanes;\n  if (null !== current)\n    if (\n      current.memoizedProps !== workInProgress.pendingProps ||\n      didPerformWorkStackCursor.current\n    )\n      didReceiveUpdate = !0;\n    else if (0 !== (renderLanes & updateLanes))\n      didReceiveUpdate = 0 !== (current.flags & 32768) ? !0 : !1;\n    else {\n      didReceiveUpdate = !1;\n      switch (workInProgress.tag) {\n        case 3:\n          pushHostRootContext(workInProgress);\n          break;\n        case 5:\n          pushHostContext(workInProgress);\n          break;\n        case 1:\n          isContextProvider(workInProgress.type) &&\n            pushContextProvider(workInProgress);\n          break;\n        case 4:\n          pushHostContainer(\n            workInProgress,\n            workInProgress.stateNode.containerInfo\n          );\n          break;\n        case 10:\n          updateLanes = workInProgress.memoizedProps.value;\n          var context = workInProgress.type._context;\n          push(valueCursor, context._currentValue2);\n          context._currentValue2 = updateLanes;\n          break;\n        case 13:\n          if (null !== workInProgress.memoizedState) {\n            if (0 !== (renderLanes & workInProgress.child.childLanes))\n              return updateSuspenseComponent(\n                current,\n                workInProgress,\n                renderLanes\n              );\n            push(suspenseStackCursor, suspenseStackCursor.current & 1);\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            return null !== workInProgress ? workInProgress.sibling : null;\n          }\n          push(suspenseStackCursor, suspenseStackCursor.current & 1);\n          break;\n        case 19:\n          updateLanes = 0 !== (renderLanes & workInProgress.childLanes);\n          if (0 !== (current.flags & 64)) {\n            if (updateLanes)\n              return updateSuspenseListComponent(\n                current,\n                workInProgress,\n                renderLanes\n              );\n            workInProgress.flags |= 64;\n          }\n          context = workInProgress.memoizedState;\n          null !== context &&\n            ((context.rendering = null),\n            (context.tail = null),\n            (context.lastEffect = null));\n          push(suspenseStackCursor, suspenseStackCursor.current);\n          if (updateLanes) break;\n          else return null;\n        case 23:\n        case 24:\n          return (\n            (workInProgress.lanes = 0),\n            updateOffscreenComponent(current, workInProgress, renderLanes)\n          );\n      }\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n  else didReceiveUpdate = !1;\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 2:\n      updateLanes = workInProgress.type;\n      null !== current &&\n        ((current.alternate = null),\n        (workInProgress.alternate = null),\n        (workInProgress.flags |= 2));\n      current = workInProgress.pendingProps;\n      context = getMaskedContext(workInProgress, contextStackCursor.current);\n      prepareToReadContext(workInProgress, renderLanes);\n      context = renderWithHooks(\n        null,\n        workInProgress,\n        updateLanes,\n        current,\n        context,\n        renderLanes\n      );\n      workInProgress.flags |= 1;\n      if (\n        \"object\" === typeof context &&\n        null !== context &&\n        \"function\" === typeof context.render &&\n        void 0 === context.$$typeof\n      ) {\n        workInProgress.tag = 1;\n        workInProgress.memoizedState = null;\n        workInProgress.updateQueue = null;\n        if (isContextProvider(updateLanes)) {\n          var hasContext = !0;\n          pushContextProvider(workInProgress);\n        } else hasContext = !1;\n        workInProgress.memoizedState =\n          null !== context.state && void 0 !== context.state\n            ? context.state\n            : null;\n        initializeUpdateQueue(workInProgress);\n        var getDerivedStateFromProps = updateLanes.getDerivedStateFromProps;\n        \"function\" === typeof getDerivedStateFromProps &&\n          applyDerivedStateFromProps(\n            workInProgress,\n            updateLanes,\n            getDerivedStateFromProps,\n            current\n          );\n        context.updater = classComponentUpdater;\n        workInProgress.stateNode = context;\n        context._reactInternals = workInProgress;\n        mountClassInstance(workInProgress, updateLanes, current, renderLanes);\n        workInProgress = finishClassComponent(\n          null,\n          workInProgress,\n          updateLanes,\n          !0,\n          hasContext,\n          renderLanes\n        );\n      } else\n        (workInProgress.tag = 0),\n          reconcileChildren(null, workInProgress, context, renderLanes),\n          (workInProgress = workInProgress.child);\n      return workInProgress;\n    case 16:\n      context = workInProgress.elementType;\n      a: {\n        null !== current &&\n          ((current.alternate = null),\n          (workInProgress.alternate = null),\n          (workInProgress.flags |= 2));\n        current = workInProgress.pendingProps;\n        hasContext = context._init;\n        context = hasContext(context._payload);\n        workInProgress.type = context;\n        hasContext = workInProgress.tag = resolveLazyComponentTag(context);\n        current = resolveDefaultProps(context, current);\n        switch (hasContext) {\n          case 0:\n            workInProgress = updateFunctionComponent(\n              null,\n              workInProgress,\n              context,\n              current,\n              renderLanes\n            );\n            break a;\n          case 1:\n            workInProgress = updateClassComponent(\n              null,\n              workInProgress,\n              context,\n              current,\n              renderLanes\n            );\n            break a;\n          case 11:\n            workInProgress = updateForwardRef(\n              null,\n              workInProgress,\n              context,\n              current,\n              renderLanes\n            );\n            break a;\n          case 14:\n            workInProgress = updateMemoComponent(\n              null,\n              workInProgress,\n              context,\n              resolveDefaultProps(context.type, current),\n              updateLanes,\n              renderLanes\n            );\n            break a;\n        }\n        throw Error(\n          \"Element type is invalid. Received a promise that resolves to: \" +\n            context +\n            \". Lazy element type must resolve to a class or function.\"\n        );\n      }\n      return workInProgress;\n    case 0:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        updateFunctionComponent(\n          current,\n          workInProgress,\n          updateLanes,\n          context,\n          renderLanes\n        )\n      );\n    case 1:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        updateClassComponent(\n          current,\n          workInProgress,\n          updateLanes,\n          context,\n          renderLanes\n        )\n      );\n    case 3:\n      pushHostRootContext(workInProgress);\n      updateLanes = workInProgress.updateQueue;\n      if (null === current || null === updateLanes)\n        throw Error(\n          \"If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      updateLanes = workInProgress.pendingProps;\n      context = workInProgress.memoizedState;\n      context = null !== context ? context.element : null;\n      cloneUpdateQueue(current, workInProgress);\n      processUpdateQueue(workInProgress, updateLanes, null, renderLanes);\n      updateLanes = workInProgress.memoizedState.element;\n      updateLanes === context\n        ? (workInProgress = bailoutOnAlreadyFinishedWork(\n            current,\n            workInProgress,\n            renderLanes\n          ))\n        : (reconcileChildren(current, workInProgress, updateLanes, renderLanes),\n          (workInProgress = workInProgress.child));\n      return workInProgress;\n    case 5:\n      return (\n        pushHostContext(workInProgress),\n        (updateLanes = workInProgress.pendingProps.children),\n        markRef(current, workInProgress),\n        reconcileChildren(current, workInProgress, updateLanes, renderLanes),\n        workInProgress.child\n      );\n    case 6:\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (updateLanes = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              updateLanes,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              updateLanes,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        updateForwardRef(\n          current,\n          workInProgress,\n          updateLanes,\n          context,\n          renderLanes\n        )\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      a: {\n        updateLanes = workInProgress.type._context;\n        context = workInProgress.pendingProps;\n        getDerivedStateFromProps = workInProgress.memoizedProps;\n        hasContext = context.value;\n        var context$jscomp$0 = workInProgress.type._context;\n        push(valueCursor, context$jscomp$0._currentValue2);\n        context$jscomp$0._currentValue2 = hasContext;\n        if (null !== getDerivedStateFromProps)\n          if (\n            ((context$jscomp$0 = getDerivedStateFromProps.value),\n            (hasContext = objectIs(context$jscomp$0, hasContext)\n              ? 0\n              : (\"function\" === typeof updateLanes._calculateChangedBits\n                  ? updateLanes._calculateChangedBits(\n                      context$jscomp$0,\n                      hasContext\n                    )\n                  : 1073741823) | 0),\n            0 === hasContext)\n          ) {\n            if (\n              getDerivedStateFromProps.children === context.children &&\n              !didPerformWorkStackCursor.current\n            ) {\n              workInProgress = bailoutOnAlreadyFinishedWork(\n                current,\n                workInProgress,\n                renderLanes\n              );\n              break a;\n            }\n          } else\n            for (\n              context$jscomp$0 = workInProgress.child,\n                null !== context$jscomp$0 &&\n                  (context$jscomp$0.return = workInProgress);\n              null !== context$jscomp$0;\n\n            ) {\n              var list = context$jscomp$0.dependencies;\n              if (null !== list) {\n                getDerivedStateFromProps = context$jscomp$0.child;\n                for (\n                  var dependency = list.firstContext;\n                  null !== dependency;\n\n                ) {\n                  if (\n                    dependency.context === updateLanes &&\n                    0 !== (dependency.observedBits & hasContext)\n                  ) {\n                    1 === context$jscomp$0.tag &&\n                      ((dependency = createUpdate(\n                        -1,\n                        renderLanes & -renderLanes\n                      )),\n                      (dependency.tag = 2),\n                      enqueueUpdate(context$jscomp$0, dependency));\n                    context$jscomp$0.lanes |= renderLanes;\n                    dependency = context$jscomp$0.alternate;\n                    null !== dependency && (dependency.lanes |= renderLanes);\n                    scheduleWorkOnParentPath(\n                      context$jscomp$0.return,\n                      renderLanes\n                    );\n                    list.lanes |= renderLanes;\n                    break;\n                  }\n                  dependency = dependency.next;\n                }\n              } else\n                getDerivedStateFromProps =\n                  10 === context$jscomp$0.tag\n                    ? context$jscomp$0.type === workInProgress.type\n                      ? null\n                      : context$jscomp$0.child\n                    : context$jscomp$0.child;\n              if (null !== getDerivedStateFromProps)\n                getDerivedStateFromProps.return = context$jscomp$0;\n              else\n                for (\n                  getDerivedStateFromProps = context$jscomp$0;\n                  null !== getDerivedStateFromProps;\n\n                ) {\n                  if (getDerivedStateFromProps === workInProgress) {\n                    getDerivedStateFromProps = null;\n                    break;\n                  }\n                  context$jscomp$0 = getDerivedStateFromProps.sibling;\n                  if (null !== context$jscomp$0) {\n                    context$jscomp$0.return = getDerivedStateFromProps.return;\n                    getDerivedStateFromProps = context$jscomp$0;\n                    break;\n                  }\n                  getDerivedStateFromProps = getDerivedStateFromProps.return;\n                }\n              context$jscomp$0 = getDerivedStateFromProps;\n            }\n        reconcileChildren(\n          current,\n          workInProgress,\n          context.children,\n          renderLanes\n        );\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 9:\n      return (\n        (context = workInProgress.type),\n        (hasContext = workInProgress.pendingProps),\n        (updateLanes = hasContext.children),\n        prepareToReadContext(workInProgress, renderLanes),\n        (context = readContext(context, hasContext.unstable_observedBits)),\n        (updateLanes = updateLanes(context)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, updateLanes, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return (\n        (context = workInProgress.type),\n        (hasContext = resolveDefaultProps(\n          context,\n          workInProgress.pendingProps\n        )),\n        (hasContext = resolveDefaultProps(context.type, hasContext)),\n        updateMemoComponent(\n          current,\n          workInProgress,\n          context,\n          hasContext,\n          updateLanes,\n          renderLanes\n        )\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        updateLanes,\n        renderLanes\n      );\n    case 17:\n      return (\n        (updateLanes = workInProgress.type),\n        (context = workInProgress.pendingProps),\n        (context =\n          workInProgress.elementType === updateLanes\n            ? context\n            : resolveDefaultProps(updateLanes, context)),\n        null !== current &&\n          ((current.alternate = null),\n          (workInProgress.alternate = null),\n          (workInProgress.flags |= 2)),\n        (workInProgress.tag = 1),\n        isContextProvider(updateLanes)\n          ? ((current = !0), pushContextProvider(workInProgress))\n          : (current = !1),\n        prepareToReadContext(workInProgress, renderLanes),\n        constructClassInstance(workInProgress, updateLanes, context),\n        mountClassInstance(workInProgress, updateLanes, context, renderLanes),\n        finishClassComponent(\n          null,\n          workInProgress,\n          updateLanes,\n          !0,\n          current,\n          renderLanes\n        )\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 23:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n  }\n  throw Error(\n    \"Unknown unit of work tag (\" +\n      workInProgress.tag +\n      \"). This error is likely caused by a bug in React. Please file an issue.\"\n  );\n};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n  this.mode = mode;\n  this.flags = 0;\n  this.lastEffect = this.firstEffect = this.nextEffect = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiber(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction resolveLazyComponentTag(Component) {\n  if (\"function\" === typeof Component)\n    return shouldConstruct(Component) ? 1 : 0;\n  if (void 0 !== Component && null !== Component) {\n    Component = Component.$$typeof;\n    if (Component === REACT_FORWARD_REF_TYPE) return 11;\n    if (Component === REACT_MEMO_TYPE) return 14;\n  }\n  return 2;\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiber(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.nextEffect = null),\n      (workInProgress.firstEffect = null),\n      (workInProgress.lastEffect = null));\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 2;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type) fiberTag = 5;\n  else\n    a: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_DEBUG_TRACING_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 16;\n        break;\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 1;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiber(12, pendingProps, key, mode | 8)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.type = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiber(13, pendingProps, key, mode)),\n          (type.type = REACT_SUSPENSE_TYPE),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiber(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n      case REACT_LEGACY_HIDDEN_TYPE:\n        return (\n          (type = createFiber(24, pendingProps, key, mode)),\n          (type.elementType = REACT_LEGACY_HIDDEN_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n            case REACT_BLOCK_TYPE:\n              fiberTag = 22;\n              break a;\n          }\n        throw Error(\n          \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" +\n            (null == type ? type : typeof type) +\n            \".\"\n        );\n    }\n  key = createFiber(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiber(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  pendingProps = createFiber(23, pendingProps, key, mode);\n  pendingProps.elementType = REACT_OFFSCREEN_TYPE;\n  pendingProps.lanes = lanes;\n  return pendingProps;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiber(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiber(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nfunction FiberRootNode(containerInfo, tag, hydrate) {\n  this.tag = tag;\n  this.containerInfo = containerInfo;\n  this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.pendingContext = this.context = null;\n  this.hydrate = hydrate;\n  this.callbackNode = null;\n  this.callbackPriority = 0;\n  this.eventTimes = createLaneMap(0);\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;\n  this.entanglements = createLaneMap(0);\n}\nfunction createPortal(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nfunction findHostInstance(component) {\n  var fiber = component._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof component.render)\n      throw Error(\"Unable to find node on an unmounted component.\");\n    throw Error(\n      \"Argument appears to not be a ReactComponent. Keys: \" +\n        Object.keys(component)\n    );\n  }\n  component = findCurrentHostFiber(fiber);\n  return null === component ? null : component.stateNode;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  var current = container.current,\n    eventTime = requestEventTime(),\n    lane = requestUpdateLane(current);\n  a: if (parentComponent) {\n    parentComponent = parentComponent._reactInternals;\n    b: {\n      if (\n        getNearestMountedFiber(parentComponent) !== parentComponent ||\n        1 !== parentComponent.tag\n      )\n        throw Error(\n          \"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\"\n        );\n      var JSCompiler_inline_result = parentComponent;\n      do {\n        switch (JSCompiler_inline_result.tag) {\n          case 3:\n            JSCompiler_inline_result =\n              JSCompiler_inline_result.stateNode.context;\n            break b;\n          case 1:\n            if (isContextProvider(JSCompiler_inline_result.type)) {\n              JSCompiler_inline_result =\n                JSCompiler_inline_result.stateNode\n                  .__reactInternalMemoizedMergedChildContext;\n              break b;\n            }\n        }\n        JSCompiler_inline_result = JSCompiler_inline_result.return;\n      } while (null !== JSCompiler_inline_result);\n      throw Error(\n        \"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\"\n      );\n    }\n    if (1 === parentComponent.tag) {\n      var Component = parentComponent.type;\n      if (isContextProvider(Component)) {\n        parentComponent = processChildContext(\n          parentComponent,\n          Component,\n          JSCompiler_inline_result\n        );\n        break a;\n      }\n    }\n    parentComponent = JSCompiler_inline_result;\n  } else parentComponent = emptyContextObject;\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(eventTime, lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  enqueueUpdate(current, container);\n  scheduleUpdateOnFiber(current, lane, eventTime);\n  return lane;\n}\nfunction emptyFindFiberByHostInstance() {\n  return null;\n}\nfunction findNodeHandle(componentOrHandle) {\n  if (null == componentOrHandle) return null;\n  if (\"number\" === typeof componentOrHandle) return componentOrHandle;\n  if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag;\n  if (componentOrHandle.canonical && componentOrHandle.canonical._nativeTag)\n    return componentOrHandle.canonical._nativeTag;\n  componentOrHandle = findHostInstance(componentOrHandle);\n  return null == componentOrHandle\n    ? componentOrHandle\n    : componentOrHandle.canonical\n    ? componentOrHandle.canonical._nativeTag\n    : componentOrHandle._nativeTag;\n}\nbatchedUpdatesImpl = function(fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 1;\n  try {\n    return fn(a);\n  } finally {\n    (executionContext = prevExecutionContext),\n      0 === executionContext &&\n        ((workInProgressRootRenderTargetTime = now() + 500),\n        flushSyncCallbackQueue());\n  }\n};\nvar roots = new Map(),\n  devToolsConfig$jscomp$inline_865 = {\n    findFiberByHostInstance: getInstanceFromInstance,\n    bundleType: 0,\n    version: \"17.0.1-4e5d7faf5\",\n    rendererPackageName: \"react-native-renderer\",\n    rendererConfig: {\n      getInspectorDataForViewTag: function() {\n        throw Error(\n          \"getInspectorDataForViewTag() is not available in production\"\n        );\n      },\n      getInspectorDataForViewAtPoint: function() {\n        throw Error(\n          \"getInspectorDataForViewAtPoint() is not available in production.\"\n        );\n      }.bind(null, findNodeHandle)\n    }\n  };\nvar internals$jscomp$inline_1054 = {\n  bundleType: devToolsConfig$jscomp$inline_865.bundleType,\n  version: devToolsConfig$jscomp$inline_865.version,\n  rendererPackageName: devToolsConfig$jscomp$inline_865.rendererPackageName,\n  rendererConfig: devToolsConfig$jscomp$inline_865.rendererConfig,\n  overrideHookState: null,\n  overrideHookStateDeletePath: null,\n  overrideHookStateRenamePath: null,\n  overrideProps: null,\n  overridePropsDeletePath: null,\n  overridePropsRenamePath: null,\n  setSuspenseHandler: null,\n  scheduleUpdate: null,\n  currentDispatcherRef: ReactSharedInternals.ReactCurrentDispatcher,\n  findHostInstanceByFiber: function(fiber) {\n    fiber = findCurrentHostFiber(fiber);\n    return null === fiber ? null : fiber.stateNode;\n  },\n  findFiberByHostInstance:\n    devToolsConfig$jscomp$inline_865.findFiberByHostInstance ||\n    emptyFindFiberByHostInstance,\n  findHostInstancesForRefresh: null,\n  scheduleRefresh: null,\n  scheduleRoot: null,\n  setRefreshHandler: null,\n  getCurrentFiber: null\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_1055 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_1055.isDisabled &&\n    hook$jscomp$inline_1055.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_1055.inject(\n        internals$jscomp$inline_1054\n      )),\n        (injectedHook = hook$jscomp$inline_1055);\n    } catch (err) {}\n}\nexports.createPortal = function(children, containerTag) {\n  return createPortal(\n    children,\n    containerTag,\n    null,\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null\n  );\n};\nexports.dispatchCommand = function(handle, command, args) {\n  null != handle._nativeTag &&\n    (handle._internalInstanceHandle\n      ? nativeFabricUIManager.dispatchCommand(\n          handle._internalInstanceHandle.stateNode.node,\n          command,\n          args\n        )\n      : ReactNativePrivateInterface.UIManager.dispatchViewManagerCommand(\n          handle._nativeTag,\n          command,\n          args\n        ));\n};\nexports.findHostInstance_DEPRECATED = function(componentOrHandle) {\n  if (null == componentOrHandle) return null;\n  if (componentOrHandle._nativeTag) return componentOrHandle;\n  if (componentOrHandle.canonical && componentOrHandle.canonical._nativeTag)\n    return componentOrHandle.canonical;\n  componentOrHandle = findHostInstance(componentOrHandle);\n  return null == componentOrHandle\n    ? componentOrHandle\n    : componentOrHandle.canonical\n    ? componentOrHandle.canonical\n    : componentOrHandle;\n};\nexports.findNodeHandle = findNodeHandle;\nexports.render = function(element, containerTag, callback) {\n  var root = roots.get(containerTag);\n  if (!root) {\n    root = new FiberRootNode(containerTag, 0, !1);\n    var uninitializedFiber = createFiber(3, null, null, 0);\n    root.current = uninitializedFiber;\n    uninitializedFiber.stateNode = root;\n    initializeUpdateQueue(uninitializedFiber);\n    roots.set(containerTag, root);\n  }\n  updateContainer(element, root, null, callback);\n  a: if (((element = root.current), element.child))\n    switch (element.child.tag) {\n      case 5:\n        element = element.child.stateNode.canonical;\n        break a;\n      default:\n        element = element.child.stateNode;\n    }\n  else element = null;\n  return element;\n};\nexports.stopSurface = function(containerTag) {\n  var root = roots.get(containerTag);\n  root &&\n    updateContainer(null, root, null, function() {\n      roots.delete(containerTag);\n    });\n};\nexports.unmountComponentAtNode = function(containerTag) {\n  this.stopSurface(containerTag);\n};\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport logError from '../Utilities/logError';\nimport EventEmitter from '../vendor/emitter/EventEmitter';\nimport NativeAppState from './NativeAppState';\nimport invariant from 'invariant';\n\n/**\n * `AppState` can tell you if the app is in the foreground or background,\n * and notify you when the state changes.\n *\n * See https://reactnative.dev/docs/appstate.html\n */\nclass AppState extends NativeEventEmitter {\n  _eventHandlers: Object;\n  _supportedEvents = ['change', 'memoryWarning', 'blur', 'focus'];\n  currentState: ?string;\n  isAvailable: boolean;\n\n  constructor() {\n    super(NativeAppState);\n\n    this.isAvailable = true;\n    this._eventHandlers = this._supportedEvents.reduce((handlers, key) => {\n      handlers[key] = new Map();\n      return handlers;\n    }, {});\n\n    this.currentState = NativeAppState.getConstants().initialAppState;\n\n    let eventUpdated = false;\n\n    // TODO: this is a terrible solution - in order to ensure `currentState`\n    // prop is up to date, we have to register an observer that updates it\n    // whenever the state changes, even if nobody cares. We should just\n    // deprecate the `currentState` property and get rid of this.\n    this.addListener('appStateDidChange', appStateData => {\n      eventUpdated = true;\n      this.currentState = appStateData.app_state;\n    });\n\n    // TODO: see above - this request just populates the value of `currentState`\n    // when the module is first initialized. Would be better to get rid of the\n    // prop and expose `getCurrentAppState` method directly.\n    NativeAppState.getCurrentAppState(appStateData => {\n      // It's possible that the state will have changed here & listeners need to be notified\n      if (!eventUpdated && this.currentState !== appStateData.app_state) {\n        this.currentState = appStateData.app_state;\n        this.emit('appStateDidChange', appStateData);\n      }\n    }, logError);\n  }\n\n  // TODO: now that AppState is a subclass of NativeEventEmitter, we could\n  // deprecate `addEventListener` and `removeEventListener` and just use\n  // addListener` and `listener.remove()` directly. That will be a breaking\n  // change though, as both the method and event names are different\n  // (addListener events are currently required to be globally unique).\n  /**\n   * Add a handler to AppState changes by listening to the `change` event type\n   * and providing the handler.\n   *\n   * See https://reactnative.dev/docs/appstate.html#addeventlistener\n   */\n  addEventListener(type: string, handler: Function) {\n    invariant(\n      this._supportedEvents.indexOf(type) !== -1,\n      'Trying to subscribe to unknown event: \"%s\"',\n      type,\n    );\n\n    switch (type) {\n      case 'change': {\n        this._eventHandlers[type].set(\n          handler,\n          this.addListener('appStateDidChange', appStateData => {\n            handler(appStateData.app_state);\n          }),\n        );\n        break;\n      }\n      case 'memoryWarning': {\n        this._eventHandlers[type].set(\n          handler,\n          this.addListener('memoryWarning', handler),\n        );\n        break;\n      }\n\n      case 'blur':\n      case 'focus': {\n        this._eventHandlers[type].set(\n          handler,\n          this.addListener('appStateFocusChange', hasFocus => {\n            if (type === 'blur' && !hasFocus) {\n              handler();\n            }\n            if (type === 'focus' && hasFocus) {\n              handler();\n            }\n          }),\n        );\n      }\n    }\n  }\n\n  /**\n   * Remove a handler by passing the `change` event type and the handler.\n   *\n   * See https://reactnative.dev/docs/appstate.html#removeeventlistener\n   */\n  removeEventListener(type: string, handler: Function) {\n    invariant(\n      this._supportedEvents.indexOf(type) !== -1,\n      'Trying to remove listener for unknown event: \"%s\"',\n      type,\n    );\n    if (!this._eventHandlers[type].has(handler)) {\n      return;\n    }\n    this._eventHandlers[type].get(handler).remove();\n    this._eventHandlers[type].delete(handler);\n  }\n}\n\nfunction throwMissingNativeModule() {\n  invariant(\n    false,\n    'Cannot use AppState module when native RCTAppState is not included in the build.\\n' +\n      'Either include it, or check AppState.isAvailable before calling any methods.',\n  );\n}\n\nclass MissingNativeAppStateShim extends EventEmitter {\n  // AppState\n  isAvailable: boolean = false;\n  currentState: ?string = null;\n\n  addEventListener(type: string, handler: Function) {\n    throwMissingNativeModule();\n  }\n\n  removeEventListener(type: string, handler: Function) {\n    throwMissingNativeModule();\n  }\n\n  // EventEmitter\n  addListener() {\n    throwMissingNativeModule();\n  }\n\n  removeAllListeners() {\n    throwMissingNativeModule();\n  }\n\n  removeSubscription() {\n    throwMissingNativeModule();\n  }\n}\n\n// This module depends on the native `RCTAppState` module. If you don't include it,\n// `AppState.isAvailable` will return `false`, and any method calls will throw.\n// We reassign the class variable to keep the autodoc generator happy.\nconst AppStateInstance: AppState | MissingNativeAppStateShim = NativeAppState\n  ? new AppState()\n  : new MissingNativeAppStateShim();\n\nmodule.exports = AppStateInstance;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound.  If passes an\n * `Error` object, it will print the message and stack.\n */\nconst logError = function(...args: $ReadOnlyArray<mixed>) {\n  if (args.length === 1 && args[0] instanceof Error) {\n    const err = args[0];\n    console.error('Error: \"' + err.message + '\".  Stack:\\n' + err.stack);\n  } else {\n    console.error.apply(console, args);\n  }\n};\n\nmodule.exports = logError;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    initialAppState: string,\n  |};\n  +getCurrentAppState: (\n    success: (appState: {|app_state: string|}) => void,\n    error: (error: Object) => void,\n  ) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('AppState'): Spec);\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 * @format\n * @noflow\n * @flow-weak\n * @jsdoc\n */\n\n'use strict';\n\nimport NativeAsyncLocalStorage from './NativeAsyncLocalStorage';\nimport NativeAsyncSQLiteDBStorage from './NativeAsyncSQLiteDBStorage';\nimport invariant from 'invariant';\n\n// Use SQLite if available, otherwise file storage.\nconst RCTAsyncStorage = NativeAsyncSQLiteDBStorage || NativeAsyncLocalStorage;\n\n/**\n * `AsyncStorage` is a simple, unencrypted, asynchronous, persistent, key-value\n * storage system that is global to the app.  It should be used instead of\n * LocalStorage.\n *\n * See https://reactnative.dev/docs/asyncstorage.html\n */\nconst AsyncStorage = {\n  _getRequests: ([]: Array<any>),\n  _getKeys: ([]: Array<string>),\n  _immediate: (null: ?number),\n\n  /**\n   * Fetches an item for a `key` and invokes a callback upon completion.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#getitem\n   */\n  getItem: function(\n    key: string,\n    callback?: ?(error: ?Error, result: ?string) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiGet([key], function(errors, result) {\n        // Unpack result to get value from [[key,value]]\n        const value = result && result[0] && result[0][1] ? result[0][1] : null;\n        const errs = convertErrors(errors);\n        callback && callback(errs && errs[0], value);\n        if (errs) {\n          reject(errs[0]);\n        } else {\n          resolve(value);\n        }\n      });\n    });\n  },\n\n  /**\n   * Sets the value for a `key` and invokes a callback upon completion.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#setitem\n   */\n  setItem: function(\n    key: string,\n    value: string,\n    callback?: ?(error: ?Error) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiSet([[key, value]], function(errors) {\n        const errs = convertErrors(errors);\n        callback && callback(errs && errs[0]);\n        if (errs) {\n          reject(errs[0]);\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n\n  /**\n   * Removes an item for a `key` and invokes a callback upon completion.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#removeitem\n   */\n  removeItem: function(\n    key: string,\n    callback?: ?(error: ?Error) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiRemove([key], function(errors) {\n        const errs = convertErrors(errors);\n        callback && callback(errs && errs[0]);\n        if (errs) {\n          reject(errs[0]);\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n\n  /**\n   * Merges an existing `key` value with an input value, assuming both values\n   * are stringified JSON.\n   *\n   * **NOTE:** This is not supported by all native implementations.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#mergeitem\n   */\n  mergeItem: function(\n    key: string,\n    value: string,\n    callback?: ?(error: ?Error) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiMerge([[key, value]], function(errors) {\n        const errs = convertErrors(errors);\n        callback && callback(errs && errs[0]);\n        if (errs) {\n          reject(errs[0]);\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n\n  /**\n   * Erases *all* `AsyncStorage` for all clients, libraries, etc. You probably\n   * don't want to call this; use `removeItem` or `multiRemove` to clear only\n   * your app's keys.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#clear\n   */\n  clear: function(callback?: ?(error: ?Error) => void): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.clear(function(error) {\n        callback && callback(convertError(error));\n        if (error && convertError(error)) {\n          reject(convertError(error));\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n\n  /**\n   * Gets *all* keys known to your app; for all callers, libraries, etc.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#getallkeys\n   */\n  getAllKeys: function(\n    callback?: ?(error: ?Error, keys: ?Array<string>) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.getAllKeys(function(error, keys) {\n        callback && callback(convertError(error), keys);\n        if (error) {\n          reject(convertError(error));\n        } else {\n          resolve(keys);\n        }\n      });\n    });\n  },\n\n  /**\n   * The following batched functions are useful for executing a lot of\n   * operations at once, allowing for native optimizations and provide the\n   * convenience of a single callback after all operations are complete.\n   *\n   * These functions return arrays of errors, potentially one for every key.\n   * For key-specific errors, the Error object will have a key property to\n   * indicate which key caused the error.\n   */\n\n  /**\n   * Flushes any pending requests using a single batch call to get the data.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#flushgetrequests\n   * */\n  flushGetRequests: function(): void {\n    const getRequests = this._getRequests;\n    const getKeys = this._getKeys;\n\n    this._getRequests = [];\n    this._getKeys = [];\n\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    RCTAsyncStorage.multiGet(getKeys, function(errors, result) {\n      // Even though the runtime complexity of this is theoretically worse vs if we used a map,\n      // it's much, much faster in practice for the data sets we deal with (we avoid\n      // allocating result pair arrays). This was heavily benchmarked.\n      //\n      // Is there a way to avoid using the map but fix the bug in this breaking test?\n      // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264\n      const map = {};\n      result &&\n        result.forEach(([key, value]) => {\n          map[key] = value;\n          return value;\n        });\n      const reqLength = getRequests.length;\n      for (let i = 0; i < reqLength; i++) {\n        const request = getRequests[i];\n        const requestKeys = request.keys;\n        const requestResult = requestKeys.map(key => [key, map[key]]);\n        request.callback && request.callback(null, requestResult);\n        request.resolve && request.resolve(requestResult);\n      }\n    });\n  },\n\n  /**\n   * This allows you to batch the fetching of items given an array of `key`\n   * inputs. Your callback will be invoked with an array of corresponding\n   * key-value pairs found.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#multiget\n   */\n  multiGet: function(\n    keys: Array<string>,\n    callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void,\n  ): Promise {\n    if (!this._immediate) {\n      this._immediate = setImmediate(() => {\n        this._immediate = null;\n        this.flushGetRequests();\n      });\n    }\n\n    const getRequest = {\n      keys: keys,\n      callback: callback,\n      // do we need this?\n      keyIndex: this._getKeys.length,\n      resolve: null,\n      reject: null,\n    };\n\n    const promiseResult = new Promise((resolve, reject) => {\n      getRequest.resolve = resolve;\n      getRequest.reject = reject;\n    });\n\n    this._getRequests.push(getRequest);\n    // avoid fetching duplicates\n    keys.forEach(key => {\n      if (this._getKeys.indexOf(key) === -1) {\n        this._getKeys.push(key);\n      }\n    });\n\n    return promiseResult;\n  },\n\n  /**\n   * Use this as a batch operation for storing multiple key-value pairs. When\n   * the operation completes you'll get a single callback with any errors.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#multiset\n   */\n  multiSet: function(\n    keyValuePairs: Array<Array<string>>,\n    callback?: ?(errors: ?Array<Error>) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n        const error = convertErrors(errors);\n        callback && callback(error);\n        if (error) {\n          reject(error);\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n\n  /**\n   * Call this to batch the deletion of all keys in the `keys` array.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#multiremove\n   */\n  multiRemove: function(\n    keys: Array<string>,\n    callback?: ?(errors: ?Array<Error>) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiRemove(keys, function(errors) {\n        const error = convertErrors(errors);\n        callback && callback(error);\n        if (error) {\n          reject(error);\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n\n  /**\n   * Batch operation to merge in existing and new values for a given set of\n   * keys. This assumes that the values are stringified JSON.\n   *\n   * **NOTE**: This is not supported by all native implementations.\n   *\n   * See https://reactnative.dev/docs/asyncstorage.html#multimerge\n   */\n  multiMerge: function(\n    keyValuePairs: Array<Array<string>>,\n    callback?: ?(errors: ?Array<Error>) => void,\n  ): Promise {\n    invariant(RCTAsyncStorage, 'RCTAsyncStorage not available');\n    return new Promise((resolve, reject) => {\n      RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n        const error = convertErrors(errors);\n        callback && callback(error);\n        if (error) {\n          reject(error);\n        } else {\n          resolve(null);\n        }\n      });\n    });\n  },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n  delete AsyncStorage.mergeItem;\n  delete AsyncStorage.multiMerge;\n}\n\nfunction convertErrors(errs) {\n  if (!errs) {\n    return null;\n  }\n  return (Array.isArray(errs) ? errs : [errs]).map(e => convertError(e));\n}\n\nfunction convertError(error) {\n  if (!error) {\n    return null;\n  }\n  const out = new Error(error.message);\n  out.key = error.key; // flow doesn't like this :(\n  return out;\n}\n\nmodule.exports = AsyncStorage;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +multiGet: (\n    keys: Array<string>,\n    callback: (\n      errors: ?Array<{|message: string|}>,\n      kvPairs: ?Array<Array<string>>,\n    ) => void,\n  ) => void;\n  +multiSet: (\n    kvPairs: Array<Array<string>>,\n    callback: (errors: ?Array<{|message: string|}>) => void,\n  ) => void;\n  +multiMerge: (\n    kvPairs: Array<Array<string>>,\n    callback: (errors: ?Array<{|message: string|}>) => void,\n  ) => void;\n  +multiRemove: (\n    keys: Array<string>,\n    callback: (errors: ?Array<{|message: string|}>) => void,\n  ) => void;\n  +clear: (callback: (error: {|message: string|}) => void) => void;\n  +getAllKeys: (\n    callback: (error: ?{|message: string|}, allKeys: ?Array<string>) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('AsyncLocalStorage'): ?Spec);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +multiGet: (\n    keys: Array<string>,\n    callback: (\n      errors: ?Array<{|message: string|}>,\n      kvPairs: ?Array<Array<string>>,\n    ) => void,\n  ) => void;\n  +multiSet: (\n    kvPairs: Array<Array<string>>,\n    callback: (errors: ?Array<{|message: string|}>) => void,\n  ) => void;\n  +multiMerge: (\n    kvPairs: Array<Array<string>>,\n    callback: (errors: ?Array<{|message: string|}>) => void,\n  ) => void;\n  +multiRemove: (\n    keys: Array<string>,\n    callback: (errors: ?Array<{|message: string|}>) => void,\n  ) => void;\n  +clear: (callback: (error: {|message: string|}) => void) => void;\n  +getAllKeys: (\n    callback: (error: ?{|message: string|}, allKeys: ?Array<string>) => void,\n  ) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('AsyncSQLiteDBStorage'): ?Spec);\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport NativeClipboard from './NativeClipboard';\n\n/**\n * `Clipboard` gives you an interface for setting and getting content from Clipboard on both iOS and Android\n */\nmodule.exports = {\n  /**\n   * Get content of string type, this method returns a `Promise`, so you can use following code to get clipboard content\n   * ```javascript\n   * async _getContent() {\n   *   var content = await Clipboard.getString();\n   * }\n   * ```\n   */\n  getString(): Promise<string> {\n    return NativeClipboard.getString();\n  },\n  /**\n   * Set content of string type. You can use following code to set clipboard content\n   * ```javascript\n   * _setContent() {\n   *   Clipboard.setString('hello world');\n   * }\n   * ```\n   * @param the content to be stored in the clipboard.\n   */\n  setString(content: string) {\n    NativeClipboard.setString(content);\n  },\n};\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +getString: () => Promise<string>;\n  +setString: (content: string) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('Clipboard'): Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {Options, DatePickerOpenAction} from './DatePickerAndroidTypes';\n\nclass DatePickerAndroid {\n  static async open(options: ?Options): Promise<DatePickerOpenAction> {\n    throw new Error('DatePickerAndroid is not supported on this platform.');\n  }\n\n  /**\n   * A date has been selected.\n   */\n  static +dateSetAction: 'dateSetAction' = 'dateSetAction';\n  /**\n   * The dialog has been dismissed.\n   */\n  static +dismissedAction: 'dismissedAction' = 'dismissedAction';\n}\n\nmodule.exports = DatePickerAndroid;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeDeviceInfo from './NativeDeviceInfo';\n\nmodule.exports = NativeDeviceInfo;\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 * @format\n * @flow strict-local\n */\n\nimport NativeDevSettings from '../NativeModules/specs/NativeDevSettings';\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\n\ninterface IDevSettings {\n  addMenuItem(title: string, handler: () => mixed): void;\n  reload(reason?: string): void;\n  onFastRefresh(): void;\n}\n\nclass DevSettings extends NativeEventEmitter implements IDevSettings {\n  _menuItems: Map<string, () => mixed>;\n\n  constructor() {\n    super(NativeDevSettings);\n\n    this._menuItems = new Map();\n  }\n\n  addMenuItem(title: string, handler: () => mixed) {\n    // Make sure items are not added multiple times. This can\n    // happen when hot reloading the module that registers the\n    // menu items. The title is used as the id which means we\n    // don't support multiple items with the same name.\n    const oldHandler = this._menuItems.get(title);\n    if (oldHandler != null) {\n      this.removeListener('didPressMenuItem', oldHandler);\n    } else {\n      NativeDevSettings.addMenuItem(title);\n    }\n\n    this._menuItems.set(title, handler);\n    this.addListener('didPressMenuItem', event => {\n      if (event.title === title) {\n        handler();\n      }\n    });\n  }\n\n  reload(reason?: string) {\n    if (typeof NativeDevSettings.reloadWithReason === 'function') {\n      NativeDevSettings.reloadWithReason(reason ?? 'Uncategorized from JS');\n    } else {\n      NativeDevSettings.reload();\n    }\n  }\n\n  onFastRefresh() {\n    if (typeof NativeDevSettings.onFastRefresh === 'function') {\n      NativeDevSettings.onFastRefresh();\n    }\n  }\n\n  // TODO: Add other dev setting methods exposed by the native module.\n}\n\n// Avoid including the full `NativeDevSettings` class in prod.\nclass NoopDevSettings implements IDevSettings {\n  addMenuItem(title: string, handler: () => mixed) {}\n  reload(reason?: string) {}\n  onFastRefresh() {}\n}\n\nmodule.exports = ((__DEV__\n  ? new DevSettings()\n  : new NoopDevSettings()): IDevSettings);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +reload: () => void;\n  +reloadWithReason?: (reason: string) => void;\n  +onFastRefresh?: () => void;\n  +setHotLoadingEnabled: (isHotLoadingEnabled: boolean) => void;\n  +setIsDebuggingRemotely: (isDebuggingRemotelyEnabled: boolean) => void;\n  +setProfilingEnabled: (isProfilingEnabled: boolean) => void;\n  +toggleElementInspector: () => void;\n  +addMenuItem: (title: string) => void;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n\n  // iOS only.\n  +setIsShakeToShowDevMenuEnabled: (enabled: boolean) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('DevSettings'): Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeImagePickerIOS from './NativeImagePickerIOS';\nimport invariant from 'invariant';\n\nconst ImagePickerIOS = {\n  canRecordVideos: function(callback: (result: boolean) => void): void {\n    invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');\n    return NativeImagePickerIOS.canRecordVideos(callback);\n  },\n  canUseCamera: function(callback: (result: boolean) => void): void {\n    invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');\n    return NativeImagePickerIOS.canUseCamera(callback);\n  },\n  openCameraDialog: function(\n    config: $ReadOnly<{|\n      unmirrorFrontFacingCamera?: boolean,\n      videoMode?: boolean,\n    |}>,\n    successCallback: (imageURL: string, height: number, width: number) => void,\n    cancelCallback: () => void,\n  ): void {\n    invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');\n\n    var newConfig = {\n      videoMode: true,\n      unmirrorFrontFacingCamera: false,\n    };\n\n    if (config.videoMode != null) {\n      newConfig.videoMode = config.videoMode;\n    }\n\n    if (config.unmirrorFrontFacingCamera != null) {\n      newConfig.unmirrorFrontFacingCamera = config.unmirrorFrontFacingCamera;\n    }\n\n    return NativeImagePickerIOS.openCameraDialog(\n      newConfig,\n      successCallback,\n      cancelCallback,\n    );\n  },\n  openSelectDialog: function(\n    config: $ReadOnly<{|\n      showImages?: boolean,\n      showVideos?: boolean,\n    |}>,\n    successCallback: (imageURL: string, height: number, width: number) => void,\n    cancelCallback: () => void,\n  ): void {\n    invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');\n\n    var newConfig = {\n      showImages: true,\n      showVideos: false,\n    };\n\n    if (config.showImages != null) {\n      newConfig.showImages = config.showImages;\n    }\n\n    if (config.showVideos != null) {\n      newConfig.showVideos = config.showVideos;\n    }\n\n    return NativeImagePickerIOS.openSelectDialog(\n      newConfig,\n      successCallback,\n      cancelCallback,\n    );\n  },\n  /**\n   * In iOS 13, the video URLs returned by the Image Picker are invalidated when\n   * the picker is dismissed, unless reference to it is held. This API allows\n   * the application to signal when it's finished with the video so that the\n   * reference can be cleaned up.\n   * It is safe to call this method for urlsthat aren't video URLs;\n   * it will be a no-op.\n   */\n  removePendingVideo: function(url: string): void {\n    invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');\n    NativeImagePickerIOS.removePendingVideo(url);\n  },\n  /**\n   * WARNING: In most cases, removePendingVideo should be used instead because\n   * clearAllPendingVideos could clear out pending videos made by other callers.\n   */\n  clearAllPendingVideos: function(): void {\n    invariant(NativeImagePickerIOS, 'ImagePickerIOS is not available');\n    NativeImagePickerIOS.clearAllPendingVideos();\n  },\n};\n\nmodule.exports = ImagePickerIOS;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +canRecordVideos: (callback: (result: boolean) => void) => void;\n  +canUseCamera: (callback: (result: boolean) => void) => void;\n  +openCameraDialog: (\n    config: {|\n      unmirrorFrontFacingCamera: boolean,\n      videoMode: boolean,\n    |},\n    successCallback: (imageURL: string, height: number, width: number) => void,\n    cancelCallback: () => void,\n  ) => void;\n  +openSelectDialog: (\n    config: {|\n      showImages: boolean,\n      showVideos: boolean,\n    |},\n    successCallback: (imageURL: string, height: number, width: number) => void,\n    cancelCallback: () => void,\n  ) => void;\n  +clearAllPendingVideos: () => void;\n  +removePendingVideo: (url: string) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ImagePickerIOS'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport InteractionManager from '../Interaction/InteractionManager';\nimport Platform from '../Utilities/Platform';\nimport NativeLinkingManager from './NativeLinkingManager';\nimport NativeIntentAndroid from './NativeIntentAndroid';\nimport invariant from 'invariant';\nimport nullthrows from 'nullthrows';\n\n/**\n * `Linking` gives you a general interface to interact with both incoming\n * and outgoing app links.\n *\n * See https://reactnative.dev/docs/linking.html\n */\nclass Linking extends NativeEventEmitter {\n  constructor() {\n    super(Platform.OS === 'ios' ? nullthrows(NativeLinkingManager) : undefined);\n  }\n\n  /**\n   * Add a handler to Linking changes by listening to the `url` event type\n   * and providing the handler\n   *\n   * See https://reactnative.dev/docs/linking.html#addeventlistener\n   */\n  addEventListener<T>(type: string, handler: T) {\n    this.addListener(type, handler);\n  }\n\n  /**\n   * Remove a handler by passing the `url` event type and the handler.\n   *\n   * See https://reactnative.dev/docs/linking.html#removeeventlistener\n   */\n  removeEventListener<T>(type: string, handler: T) {\n    this.removeListener(type, handler);\n  }\n\n  /**\n   * Try to open the given `url` with any of the installed apps.\n   *\n   * See https://reactnative.dev/docs/linking.html#openurl\n   */\n  openURL(url: string): Promise<void> {\n    this._validateURL(url);\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).openURL(url);\n    } else {\n      return nullthrows(NativeLinkingManager).openURL(url);\n    }\n  }\n\n  /**\n   * Determine whether or not an installed app can handle a given URL.\n   *\n   * See https://reactnative.dev/docs/linking.html#canopenurl\n   */\n  canOpenURL(url: string): Promise<boolean> {\n    this._validateURL(url);\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).canOpenURL(url);\n    } else {\n      return nullthrows(NativeLinkingManager).canOpenURL(url);\n    }\n  }\n\n  /**\n   * Open app settings.\n   *\n   * See https://reactnative.dev/docs/linking.html#opensettings\n   */\n  openSettings(): Promise<void> {\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).openSettings();\n    } else {\n      return nullthrows(NativeLinkingManager).openSettings();\n    }\n  }\n\n  /**\n   * If the app launch was triggered by an app link,\n   * it will give the link url, otherwise it will give `null`\n   *\n   * See https://reactnative.dev/docs/linking.html#getinitialurl\n   */\n  getInitialURL(): Promise<?string> {\n    return Platform.OS === 'android'\n      ? InteractionManager.runAfterInteractions().then(() =>\n          nullthrows(NativeIntentAndroid).getInitialURL(),\n        )\n      : nullthrows(NativeLinkingManager).getInitialURL();\n  }\n\n  /*\n   * Launch an Android intent with extras (optional)\n   *\n   * @platform android\n   *\n   * See https://reactnative.dev/docs/linking.html#sendintent\n   */\n  sendIntent(\n    action: string,\n    extras?: Array<{\n      key: string,\n      value: string | number | boolean,\n      ...\n    }>,\n  ): Promise<void> {\n    if (Platform.OS === 'android') {\n      return nullthrows(NativeIntentAndroid).sendIntent(action, extras);\n    } else {\n      return new Promise((resolve, reject) => reject(new Error('Unsupported')));\n    }\n  }\n\n  _validateURL(url: string) {\n    invariant(\n      typeof url === 'string',\n      'Invalid URL: should be a string. Was: ' + url,\n    );\n    invariant(url, 'Invalid URL: cannot be empty');\n  }\n}\n\nmodule.exports = (new Linking(): Linking);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  // Common interface\n  +getInitialURL: () => Promise<string>;\n  +canOpenURL: (url: string) => Promise<boolean>;\n  +openURL: (url: string) => Promise<void>;\n  +openSettings: () => Promise<void>;\n\n  // Events\n  +addListener: (eventName: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('LinkingManager'): ?Spec);\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getInitialURL: () => Promise<string>;\n  +canOpenURL: (url: string) => Promise<boolean>;\n  +openURL: (url: string) => Promise<void>;\n  +openSettings: () => Promise<void>;\n  +sendIntent: (\n    action: string,\n    extras: ?Array<{\n      key: string,\n      value: string | number | boolean, // TODO(T67672788): Union types are not type safe\n      ...\n    }>,\n  ) => Promise<void>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('IntentAndroid'): ?Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport Platform from '../Utilities/Platform';\nimport RCTLog from '../Utilities/RCTLog';\n\nimport type {IgnorePattern} from './Data/LogBoxData';\n\nlet LogBox;\n\n/**\n * LogBox displays logs in the app.\n */\nif (__DEV__) {\n  const LogBoxData = require('./Data/LogBoxData');\n  const {parseLogBoxLog, parseInterpolation} = require('./Data/parseLogBoxLog');\n\n  // LogBox needs to insert itself early,\n  // in order to access the component stacks appended by React DevTools.\n  const {error, warn} = console;\n  let errorImpl = error.bind(console);\n  let warnImpl = warn.bind(console);\n\n  (console: any).error = function(...args) {\n    errorImpl(...args);\n  };\n  (console: any).warn = function(...args) {\n    warnImpl(...args);\n  };\n\n  LogBox = {\n    ignoreLogs: (patterns: $ReadOnlyArray<IgnorePattern>): void => {\n      LogBoxData.addIgnorePatterns(patterns);\n    },\n\n    ignoreAllLogs: (value?: ?boolean): void => {\n      LogBoxData.setDisabled(value == null ? true : value);\n    },\n\n    uninstall: (): void => {\n      errorImpl = error;\n      warnImpl = warn;\n      delete (console: any).disableLogBox;\n    },\n\n    install: (): void => {\n      // Trigger lazy initialization of module.\n      require('../NativeModules/specs/NativeLogBox');\n\n      errorImpl = function(...args) {\n        registerError(...args);\n      };\n\n      warnImpl = function(...args) {\n        registerWarning(...args);\n      };\n\n      if ((console: any).disableYellowBox === true) {\n        LogBoxData.setDisabled(true);\n        console.warn(\n          'console.disableYellowBox has been deprecated and will be removed in a future release. Please use LogBox.ignoreAllLogs(value) instead.',\n        );\n      }\n\n      (Object.defineProperty: any)(console, 'disableYellowBox', {\n        configurable: true,\n        get: () => LogBoxData.isDisabled(),\n        set: value => {\n          LogBoxData.setDisabled(value);\n          console.warn(\n            'console.disableYellowBox has been deprecated and will be removed in a future release. Please use LogBox.ignoreAllLogs(value) instead.',\n          );\n        },\n      });\n\n      if (Platform.isTesting) {\n        LogBoxData.setDisabled(true);\n      }\n\n      RCTLog.setWarningHandler((...args) => {\n        registerWarning(...args);\n      });\n    },\n  };\n\n  const isRCTLogAdviceWarning = (...args) => {\n    // RCTLogAdvice is a native logging function designed to show users\n    // a message in the console, but not show it to them in Logbox.\n    return typeof args[0] === 'string' && args[0].startsWith('(ADVICE)');\n  };\n\n  const isWarningModuleWarning = (...args) => {\n    return typeof args[0] === 'string' && args[0].startsWith('Warning: ');\n  };\n\n  const registerWarning = (...args): void => {\n    // Let warnings within LogBox itself fall through.\n    if (LogBoxData.isLogBoxErrorMessage(String(args[0]))) {\n      error.call(console, ...args);\n      return;\n    }\n\n    try {\n      if (!isRCTLogAdviceWarning(...args)) {\n        const {category, message, componentStack} = parseLogBoxLog(args);\n\n        if (!LogBoxData.isMessageIgnored(message.content)) {\n          // Be sure to pass LogBox warnings through.\n          warn.call(console, ...args);\n\n          LogBoxData.addLog({\n            level: 'warn',\n            category,\n            message,\n            componentStack,\n          });\n        }\n      }\n    } catch (err) {\n      LogBoxData.reportLogBoxError(err);\n    }\n  };\n\n  const registerError = (...args): void => {\n    // Let errors within LogBox itself fall through.\n    if (LogBoxData.isLogBoxErrorMessage(args[0])) {\n      error.call(console, ...args);\n      return;\n    }\n\n    try {\n      if (!isWarningModuleWarning(...args)) {\n        // Only show LogBox for the 'warning' module, otherwise pass through.\n        // By passing through, this will get picked up by the React console override,\n        // potentially adding the component stack. React then passes it back to the\n        // React Native ExceptionsManager, which reports it to LogBox as an error.\n        //\n        // The 'warning' module needs to be handled here because React internally calls\n        // `console.error('Warning: ')` with the component stack already included.\n        error.call(console, ...args);\n        return;\n      }\n\n      const format = args[0].replace('Warning: ', '');\n      const filterResult = LogBoxData.checkWarningFilter(format);\n      if (filterResult.suppressCompletely) {\n        return;\n      }\n\n      let level = 'error';\n      if (filterResult.suppressDialog_LEGACY === true) {\n        level = 'warn';\n      } else if (filterResult.forceDialogImmediately === true) {\n        level = 'fatal'; // Do not downgrade. These are real bugs with same severity as throws.\n      }\n\n      // Unfortunately, we need to add the Warning: prefix back for downstream dependencies.\n      args[0] = `Warning: ${filterResult.finalFormat}`;\n      const {category, message, componentStack} = parseLogBoxLog(args);\n\n      if (!LogBoxData.isMessageIgnored(message.content)) {\n        // Interpolate the message so they are formatted for adb and other CLIs.\n        // This is different than the message.content above because it includes component stacks.\n        const interpolated = parseInterpolation(args);\n        error.call(console, interpolated.message.content);\n\n        LogBoxData.addLog({\n          level,\n          category,\n          message,\n          componentStack,\n        });\n      }\n    } catch (err) {\n      LogBoxData.reportLogBoxError(err);\n    }\n  };\n} else {\n  LogBox = {\n    ignoreLogs: (patterns: $ReadOnlyArray<IgnorePattern>): void => {\n      // Do nothing.\n    },\n\n    ignoreAllLogs: (value?: ?boolean): void => {\n      // Do nothing.\n    },\n\n    install: (): void => {\n      // Do nothing.\n    },\n\n    uninstall: (): void => {\n      // Do nothing.\n    },\n  };\n}\n\nmodule.exports = (LogBox: {\n  ignoreLogs($ReadOnlyArray<IgnorePattern>): void,\n  ignoreAllLogs(?boolean): void,\n  install(): void,\n  uninstall(): void,\n  ...\n});\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst InteractionManager = require('./InteractionManager');\nconst TouchHistoryMath = require('./TouchHistoryMath');\n\nimport type {PressEvent} from '../Types/CoreEventTypes';\n\nconst currentCentroidXOfTouchesChangedAfter =\n  TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nconst currentCentroidYOfTouchesChangedAfter =\n  TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nconst previousCentroidXOfTouchesChangedAfter =\n  TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nconst previousCentroidYOfTouchesChangedAfter =\n  TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nconst currentCentroidX = TouchHistoryMath.currentCentroidX;\nconst currentCentroidY = TouchHistoryMath.currentCentroidY;\n\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * By default, `PanResponder` holds an `InteractionManager` handle to block\n * long-running JS events from interrupting active gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * native event object:\n *\n * ```\n * onPanResponderMove: (event, gestureState) => {}\n * ```\n *\n * A native event is a synthetic touch event with the following form:\n *\n *  - `nativeEvent`\n *      + `changedTouches` - Array of all touch events that have changed since the last event\n *      + `identifier` - The ID of the touch\n *      + `locationX` - The X position of the touch, relative to the element\n *      + `locationY` - The Y position of the touch, relative to the element\n *      + `pageX` - The X position of the touch, relative to the root element\n *      + `pageY` - The Y position of the touch, relative to the root element\n *      + `target` - The node id of the element receiving the touch event\n *      + `timestamp` - A time identifier for the touch, useful for velocity calculation\n *      + `touches` - Array of all current touches on the screen\n *\n * A `gestureState` object has the following:\n *\n *  - `stateID` - ID of the gestureState- persisted as long as there at least\n *     one touch on screen\n *  - `moveX` - the latest screen coordinates of the recently-moved touch\n *  - `moveY` - the latest screen coordinates of the recently-moved touch\n *  - `x0` - the screen coordinates of the responder grant\n *  - `y0` - the screen coordinates of the responder grant\n *  - `dx` - accumulated distance of the gesture since the touch started\n *  - `dy` - accumulated distance of the gesture since the touch started\n *  - `vx` - current velocity of the gesture\n *  - `vy` - current velocity of the gesture\n *  - `numberActiveTouches` - Number of touches currently on screen\n *\n * ### Basic Usage\n *\n * ```\n *   componentWillMount: function() {\n *     this._panResponder = PanResponder.create({\n *       // Ask to be the responder:\n *       onStartShouldSetPanResponder: (evt, gestureState) => true,\n *       onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n *       onMoveShouldSetPanResponder: (evt, gestureState) => true,\n *       onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n *       onPanResponderGrant: (evt, gestureState) => {\n *         // The gesture has started. Show visual feedback so the user knows\n *         // what is happening!\n *\n *         // gestureState.d{x,y} will be set to zero now\n *       },\n *       onPanResponderMove: (evt, gestureState) => {\n *         // The most recent move distance is gestureState.move{X,Y}\n *\n *         // The accumulated gesture distance since becoming responder is\n *         // gestureState.d{x,y}\n *       },\n *       onPanResponderTerminationRequest: (evt, gestureState) => true,\n *       onPanResponderRelease: (evt, gestureState) => {\n *         // The user has released all touches while this view is the\n *         // responder. This typically means a gesture has succeeded\n *       },\n *       onPanResponderTerminate: (evt, gestureState) => {\n *         // Another component has become the responder, so this gesture\n *         // should be cancelled\n *       },\n *       onShouldBlockNativeResponder: (evt, gestureState) => {\n *         // Returns whether this component should block native components from becoming the JS\n *         // responder. Returns true by default. Is currently only supported on android.\n *         return true;\n *       },\n *     });\n *   },\n *\n *   render: function() {\n *     return (\n *       <View {...this._panResponder.panHandlers} />\n *     );\n *   },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/master/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js)\n */\n\nexport type GestureState = {|\n  /**\n   * ID of the gestureState - persisted as long as there at least one touch on screen\n   */\n  stateID: number,\n\n  /**\n   * The latest screen coordinates of the recently-moved touch\n   */\n  moveX: number,\n\n  /**\n   * The latest screen coordinates of the recently-moved touch\n   */\n  moveY: number,\n\n  /**\n   * The screen coordinates of the responder grant\n   */\n  x0: number,\n\n  /**\n   * The screen coordinates of the responder grant\n   */\n  y0: number,\n\n  /**\n   * Accumulated distance of the gesture since the touch started\n   */\n  dx: number,\n\n  /**\n   * Accumulated distance of the gesture since the touch started\n   */\n  dy: number,\n\n  /**\n   * Current velocity of the gesture\n   */\n  vx: number,\n\n  /**\n   * Current velocity of the gesture\n   */\n  vy: number,\n\n  /**\n   * Number of touches currently on screen\n   */\n  numberActiveTouches: number,\n\n  /**\n   * All `gestureState` accounts for timeStamps up until this value\n   *\n   * @private\n   */\n  _accountsForMovesUpTo: number,\n|};\n\ntype ActiveCallback = (\n  event: PressEvent,\n  gestureState: GestureState,\n) => boolean;\n\ntype PassiveCallback = (event: PressEvent, gestureState: GestureState) => mixed;\n\ntype PanResponderConfig = $ReadOnly<{|\n  onMoveShouldSetPanResponder?: ?ActiveCallback,\n  onMoveShouldSetPanResponderCapture?: ?ActiveCallback,\n  onStartShouldSetPanResponder?: ?ActiveCallback,\n  onStartShouldSetPanResponderCapture?: ?ActiveCallback,\n  /**\n   * The body of `onResponderGrant` returns a bool, but the vast majority of\n   * callsites return void and this TODO notice is found in it:\n   *   TODO: t7467124 investigate if this can be removed\n   */\n  onPanResponderGrant?: ?(PassiveCallback | ActiveCallback),\n  onPanResponderReject?: ?PassiveCallback,\n  onPanResponderStart?: ?PassiveCallback,\n  onPanResponderEnd?: ?PassiveCallback,\n  onPanResponderRelease?: ?PassiveCallback,\n  onPanResponderMove?: ?PassiveCallback,\n  onPanResponderTerminate?: ?PassiveCallback,\n  onPanResponderTerminationRequest?: ?ActiveCallback,\n  onShouldBlockNativeResponder?: ?ActiveCallback,\n|}>;\n\nconst PanResponder = {\n  /**\n   *\n   * A graphical explanation of the touch data flow:\n   *\n   * +----------------------------+             +--------------------------------+\n   * | ResponderTouchHistoryStore |             |TouchHistoryMath                |\n   * +----------------------------+             +----------+---------------------+\n   * |Global store of touchHistory|             |Allocation-less math util       |\n   * |including activeness, start |             |on touch history (centroids     |\n   * |position, prev/cur position.|             |and multitouch movement etc)    |\n   * |                            |             |                                |\n   * +----^-----------------------+             +----^---------------------------+\n   *      |                                          |\n   *      | (records relevant history                |\n   *      |  of touches relevant for                 |\n   *      |  implementing higher level               |\n   *      |  gestures)                               |\n   *      |                                          |\n   * +----+-----------------------+             +----|---------------------------+\n   * | ResponderEventPlugin       |             |    |   Your App/Component      |\n   * +----------------------------+             +----|---------------------------+\n   * |Negotiates which view gets  | Low level   |    |             High level    |\n   * |onResponderMove events.     | events w/   |  +-+-------+     events w/     |\n   * |Also records history into   | touchHistory|  |   Pan   |     multitouch +  |\n   * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n   * +----------------------------+ attached to |  |         |     distance and  |\n   *                                 each event |  +---------+     velocity.     |\n   *                                            |                                |\n   *                                            |                                |\n   *                                            +--------------------------------+\n   *\n   *\n   *\n   * Gesture that calculates cumulative movement over time in a way that just\n   * \"does the right thing\" for multiple touches. The \"right thing\" is very\n   * nuanced. When moving two touches in opposite directions, the cumulative\n   * distance is zero in each dimension. When two touches move in parallel five\n   * pixels in the same direction, the cumulative distance is five, not ten. If\n   * two touches start, one moves five in a direction, then stops and the other\n   * touch moves fives in the same direction, the cumulative distance is ten.\n   *\n   * This logic requires a kind of processing of time \"clusters\" of touch events\n   * so that two touch moves that essentially occur in parallel but move every\n   * other frame respectively, are considered part of the same movement.\n   *\n   * Explanation of some of the non-obvious fields:\n   *\n   * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n   *   invalid. If a move event has been observed, `(moveX, moveY)` is the\n   *   centroid of the most recently moved \"cluster\" of active touches.\n   *   (Currently all move have the same timeStamp, but later we should add some\n   *   threshold for what is considered to be \"moving\"). If a palm is\n   *   accidentally counted as a touch, but a finger is moving greatly, the palm\n   *   will move slightly, but we only want to count the single moving touch.\n   * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n   *   responder.\n   * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n   *   distance. Accounts for touch moves that are clustered together in time,\n   *   moving the same direction. Only valid when currently responder (otherwise,\n   *   it only represents the drag distance below the threshold).\n   * - vx/vy: Velocity.\n   */\n\n  _initializeGestureState(gestureState: GestureState) {\n    gestureState.moveX = 0;\n    gestureState.moveY = 0;\n    gestureState.x0 = 0;\n    gestureState.y0 = 0;\n    gestureState.dx = 0;\n    gestureState.dy = 0;\n    gestureState.vx = 0;\n    gestureState.vy = 0;\n    gestureState.numberActiveTouches = 0;\n    // All `gestureState` accounts for timeStamps up until:\n    gestureState._accountsForMovesUpTo = 0;\n  },\n\n  /**\n   * This is nuanced and is necessary. It is incorrect to continuously take all\n   * active *and* recently moved touches, find the centroid, and track how that\n   * result changes over time. Instead, we must take all recently moved\n   * touches, and calculate how the centroid has changed just for those\n   * recently moved touches, and append that change to an accumulator. This is\n   * to (at least) handle the case where the user is moving three fingers, and\n   * then one of the fingers stops but the other two continue.\n   *\n   * This is very different than taking all of the recently moved touches and\n   * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n   * changes* in the centroid of recently moved touches.\n   *\n   * There is also some nuance with how we handle multiple moved touches in a\n   * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n   * individual events, multiple touches generate two 'move' events, each of\n   * them triggering `onResponderMove`. But with the way `PanResponder` works,\n   * all of the gesture inference is performed on the first dispatch, since it\n   * looks at all of the touches (even the ones for which there hasn't been a\n   * native dispatch yet). Therefore, `PanResponder` does not call\n   * `onResponderMove` passed the first dispatch. This diverges from the\n   * typical responder callback pattern (without using `PanResponder`), but\n   * avoids more dispatches than necessary.\n   */\n  _updateGestureStateOnMove(\n    gestureState: GestureState,\n    touchHistory: $PropertyType<PressEvent, 'touchHistory'>,\n  ) {\n    gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n    gestureState.moveX = currentCentroidXOfTouchesChangedAfter(\n      touchHistory,\n      gestureState._accountsForMovesUpTo,\n    );\n    gestureState.moveY = currentCentroidYOfTouchesChangedAfter(\n      touchHistory,\n      gestureState._accountsForMovesUpTo,\n    );\n    const movedAfter = gestureState._accountsForMovesUpTo;\n    const prevX = previousCentroidXOfTouchesChangedAfter(\n      touchHistory,\n      movedAfter,\n    );\n    const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n    const prevY = previousCentroidYOfTouchesChangedAfter(\n      touchHistory,\n      movedAfter,\n    );\n    const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n    const nextDX = gestureState.dx + (x - prevX);\n    const nextDY = gestureState.dy + (y - prevY);\n\n    // TODO: This must be filtered intelligently.\n    const dt =\n      touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\n    gestureState.vx = (nextDX - gestureState.dx) / dt;\n    gestureState.vy = (nextDY - gestureState.dy) / dt;\n\n    gestureState.dx = nextDX;\n    gestureState.dy = nextDY;\n    gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n  },\n\n  /**\n   * @param {object} config Enhanced versions of all of the responder callbacks\n   * that provide not only the typical `ResponderSyntheticEvent`, but also the\n   * `PanResponder` gesture state.  Simply replace the word `Responder` with\n   * `PanResponder` in each of the typical `onResponder*` callbacks. For\n   * example, the `config` object would look like:\n   *\n   *  - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n   *  - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n   *  - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n   *  - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n   *  - `onPanResponderReject: (e, gestureState) => {...}`\n   *  - `onPanResponderGrant: (e, gestureState) => {...}`\n   *  - `onPanResponderStart: (e, gestureState) => {...}`\n   *  - `onPanResponderEnd: (e, gestureState) => {...}`\n   *  - `onPanResponderRelease: (e, gestureState) => {...}`\n   *  - `onPanResponderMove: (e, gestureState) => {...}`\n   *  - `onPanResponderTerminate: (e, gestureState) => {...}`\n   *  - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n   *  - `onShouldBlockNativeResponder: (e, gestureState) => {...}`\n   *\n   *  In general, for events that have capture equivalents, we update the\n   *  gestureState once in the capture phase and can use it in the bubble phase\n   *  as well.\n   *\n   *  Be careful with onStartShould* callbacks. They only reflect updated\n   *  `gestureState` for start/end events that bubble/capture to the Node.\n   *  Once the node is the responder, you can rely on every start/end event\n   *  being processed by the gesture and `gestureState` being updated\n   *  accordingly. (numberActiveTouches) may not be totally accurate unless you\n   *  are the responder.\n   */\n  create(\n    config: PanResponderConfig,\n  ): $TEMPORARY$object<{|\n    getInteractionHandle: () => ?number,\n    panHandlers: $TEMPORARY$object<{|\n      onMoveShouldSetResponder: (event: PressEvent) => boolean,\n      onMoveShouldSetResponderCapture: (event: PressEvent) => boolean,\n      onResponderEnd: (event: PressEvent) => void,\n      onResponderGrant: (event: PressEvent) => boolean,\n      onResponderMove: (event: PressEvent) => void,\n      onResponderReject: (event: PressEvent) => void,\n      onResponderRelease: (event: PressEvent) => void,\n      onResponderStart: (event: PressEvent) => void,\n      onResponderTerminate: (event: PressEvent) => void,\n      onResponderTerminationRequest: (event: PressEvent) => boolean,\n      onStartShouldSetResponder: (event: PressEvent) => boolean,\n      onStartShouldSetResponderCapture: (event: PressEvent) => boolean,\n    |}>,\n  |}> {\n    const interactionState = {\n      handle: (null: ?number),\n    };\n    const gestureState: GestureState = {\n      // Useful for debugging\n      stateID: Math.random(),\n      moveX: 0,\n      moveY: 0,\n      x0: 0,\n      y0: 0,\n      dx: 0,\n      dy: 0,\n      vx: 0,\n      vy: 0,\n      numberActiveTouches: 0,\n      _accountsForMovesUpTo: 0,\n    };\n    const panHandlers = {\n      onStartShouldSetResponder(event: PressEvent): boolean {\n        return config.onStartShouldSetPanResponder == null\n          ? false\n          : config.onStartShouldSetPanResponder(event, gestureState);\n      },\n      onMoveShouldSetResponder(event: PressEvent): boolean {\n        return config.onMoveShouldSetPanResponder == null\n          ? false\n          : config.onMoveShouldSetPanResponder(event, gestureState);\n      },\n      onStartShouldSetResponderCapture(event: PressEvent): boolean {\n        // TODO: Actually, we should reinitialize the state any time\n        // touches.length increases from 0 active to > 0 active.\n        if (event.nativeEvent.touches.length === 1) {\n          PanResponder._initializeGestureState(gestureState);\n        }\n        gestureState.numberActiveTouches =\n          event.touchHistory.numberActiveTouches;\n        return config.onStartShouldSetPanResponderCapture != null\n          ? config.onStartShouldSetPanResponderCapture(event, gestureState)\n          : false;\n      },\n\n      onMoveShouldSetResponderCapture(event: PressEvent): boolean {\n        const touchHistory = event.touchHistory;\n        // Responder system incorrectly dispatches should* to current responder\n        // Filter out any touch moves past the first one - we would have\n        // already processed multi-touch geometry during the first event.\n        if (\n          gestureState._accountsForMovesUpTo ===\n          touchHistory.mostRecentTimeStamp\n        ) {\n          return false;\n        }\n        PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n        return config.onMoveShouldSetPanResponderCapture\n          ? config.onMoveShouldSetPanResponderCapture(event, gestureState)\n          : false;\n      },\n\n      onResponderGrant(event: PressEvent): boolean {\n        if (!interactionState.handle) {\n          interactionState.handle = InteractionManager.createInteractionHandle();\n        }\n        gestureState.x0 = currentCentroidX(event.touchHistory);\n        gestureState.y0 = currentCentroidY(event.touchHistory);\n        gestureState.dx = 0;\n        gestureState.dy = 0;\n        if (config.onPanResponderGrant) {\n          config.onPanResponderGrant(event, gestureState);\n        }\n        // TODO: t7467124 investigate if this can be removed\n        return config.onShouldBlockNativeResponder == null\n          ? true\n          : config.onShouldBlockNativeResponder(event, gestureState);\n      },\n\n      onResponderReject(event: PressEvent): void {\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderReject,\n          event,\n          gestureState,\n        );\n      },\n\n      onResponderRelease(event: PressEvent): void {\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderRelease,\n          event,\n          gestureState,\n        );\n        PanResponder._initializeGestureState(gestureState);\n      },\n\n      onResponderStart(event: PressEvent): void {\n        const touchHistory = event.touchHistory;\n        gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n        if (config.onPanResponderStart) {\n          config.onPanResponderStart(event, gestureState);\n        }\n      },\n\n      onResponderMove(event: PressEvent): void {\n        const touchHistory = event.touchHistory;\n        // Guard against the dispatch of two touch moves when there are two\n        // simultaneously changed touches.\n        if (\n          gestureState._accountsForMovesUpTo ===\n          touchHistory.mostRecentTimeStamp\n        ) {\n          return;\n        }\n        // Filter out any touch moves past the first one - we would have\n        // already processed multi-touch geometry during the first event.\n        PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n        if (config.onPanResponderMove) {\n          config.onPanResponderMove(event, gestureState);\n        }\n      },\n\n      onResponderEnd(event: PressEvent): void {\n        const touchHistory = event.touchHistory;\n        gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderEnd,\n          event,\n          gestureState,\n        );\n      },\n\n      onResponderTerminate(event: PressEvent): void {\n        clearInteractionHandle(\n          interactionState,\n          config.onPanResponderTerminate,\n          event,\n          gestureState,\n        );\n        PanResponder._initializeGestureState(gestureState);\n      },\n\n      onResponderTerminationRequest(event: PressEvent): boolean {\n        return config.onPanResponderTerminationRequest == null\n          ? true\n          : config.onPanResponderTerminationRequest(event, gestureState);\n      },\n    };\n    return {\n      panHandlers,\n      getInteractionHandle(): ?number {\n        return interactionState.handle;\n      },\n    };\n  },\n};\n\nfunction clearInteractionHandle(\n  interactionState: {handle: ?number, ...},\n  callback: ?(ActiveCallback | PassiveCallback),\n  event: PressEvent,\n  gestureState: GestureState,\n) {\n  if (interactionState.handle) {\n    InteractionManager.clearInteractionHandle(interactionState.handle);\n    interactionState.handle = null;\n  }\n  if (callback) {\n    callback(event, gestureState);\n  }\n}\n\nexport type PanResponderInstance = $Call<\n  $PropertyType<typeof PanResponder, 'create'>,\n  PanResponderConfig,\n>;\n\nmodule.exports = PanResponder;\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 * @format\n */\n\nconst TouchHistoryMath = {\n  /**\n   * This code is optimized and not intended to look beautiful. This allows\n   * computing of touch centroids that have moved after `touchesChangedAfter`\n   * timeStamp. You can compute the current centroid involving all touches\n   * moves after `touchesChangedAfter`, or you can compute the previous\n   * centroid of all touches that were moved after `touchesChangedAfter`.\n   *\n   * @param {TouchHistoryMath} touchHistory Standard Responder touch track\n   * data.\n   * @param {number} touchesChangedAfter timeStamp after which moved touches\n   * are considered \"actively moving\" - not just \"active\".\n   * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.\n   * @param {boolean} ofCurrent Compute current centroid for actively moving\n   * touches vs. previous centroid of now actively moving touches.\n   * @return {number} value of centroid in specified dimension.\n   */\n  centroidDimension: function(\n    touchHistory,\n    touchesChangedAfter,\n    isXAxis,\n    ofCurrent,\n  ) {\n    const touchBank = touchHistory.touchBank;\n    let total = 0;\n    let count = 0;\n\n    const oneTouchData =\n      touchHistory.numberActiveTouches === 1\n        ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]\n        : null;\n\n    if (oneTouchData !== null) {\n      if (\n        oneTouchData.touchActive &&\n        oneTouchData.currentTimeStamp > touchesChangedAfter\n      ) {\n        total +=\n          ofCurrent && isXAxis\n            ? oneTouchData.currentPageX\n            : ofCurrent && !isXAxis\n            ? oneTouchData.currentPageY\n            : !ofCurrent && isXAxis\n            ? oneTouchData.previousPageX\n            : oneTouchData.previousPageY;\n        count = 1;\n      }\n    } else {\n      for (let i = 0; i < touchBank.length; i++) {\n        const touchTrack = touchBank[i];\n        if (\n          touchTrack !== null &&\n          touchTrack !== undefined &&\n          touchTrack.touchActive &&\n          touchTrack.currentTimeStamp >= touchesChangedAfter\n        ) {\n          let toAdd; // Yuck, program temporarily in invalid state.\n          if (ofCurrent && isXAxis) {\n            toAdd = touchTrack.currentPageX;\n          } else if (ofCurrent && !isXAxis) {\n            toAdd = touchTrack.currentPageY;\n          } else if (!ofCurrent && isXAxis) {\n            toAdd = touchTrack.previousPageX;\n          } else {\n            toAdd = touchTrack.previousPageY;\n          }\n          total += toAdd;\n          count++;\n        }\n      }\n    }\n    return count > 0 ? total / count : TouchHistoryMath.noCentroid;\n  },\n\n  currentCentroidXOfTouchesChangedAfter: function(\n    touchHistory,\n    touchesChangedAfter,\n  ) {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      true, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  currentCentroidYOfTouchesChangedAfter: function(\n    touchHistory,\n    touchesChangedAfter,\n  ) {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      false, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  previousCentroidXOfTouchesChangedAfter: function(\n    touchHistory,\n    touchesChangedAfter,\n  ) {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      true, // isXAxis\n      false, // ofCurrent\n    );\n  },\n\n  previousCentroidYOfTouchesChangedAfter: function(\n    touchHistory,\n    touchesChangedAfter,\n  ) {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      touchesChangedAfter,\n      false, // isXAxis\n      false, // ofCurrent\n    );\n  },\n\n  currentCentroidX: function(touchHistory) {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      0, // touchesChangedAfter\n      true, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  currentCentroidY: function(touchHistory) {\n    return TouchHistoryMath.centroidDimension(\n      touchHistory,\n      0, // touchesChangedAfter\n      false, // isXAxis\n      true, // ofCurrent\n    );\n  },\n\n  noCentroid: -1,\n};\n\nmodule.exports = TouchHistoryMath;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst Platform = require('../Utilities/Platform');\n\nimport NativeDialogManagerAndroid from '../NativeModules/specs/NativeDialogManagerAndroid';\nimport NativePermissionsAndroid from './NativePermissionsAndroid';\nimport type {\n  PermissionStatus,\n  PermissionType,\n} from './NativePermissionsAndroid';\nimport invariant from 'invariant';\n\nexport type Rationale = {\n  title: string,\n  message: string,\n  buttonPositive?: string,\n  buttonNegative?: string,\n  buttonNeutral?: string,\n  ...\n};\n\nconst PERMISSION_REQUEST_RESULT = Object.freeze({\n  GRANTED: 'granted',\n  DENIED: 'denied',\n  NEVER_ASK_AGAIN: 'never_ask_again',\n});\n\nconst PERMISSIONS = Object.freeze({\n  READ_CALENDAR: 'android.permission.READ_CALENDAR',\n  WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',\n  CAMERA: 'android.permission.CAMERA',\n  READ_CONTACTS: 'android.permission.READ_CONTACTS',\n  WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',\n  GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',\n  ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',\n  ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',\n  ACCESS_BACKGROUND_LOCATION: 'android.permission.ACCESS_BACKGROUND_LOCATION',\n  RECORD_AUDIO: 'android.permission.RECORD_AUDIO',\n  READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',\n  CALL_PHONE: 'android.permission.CALL_PHONE',\n  READ_CALL_LOG: 'android.permission.READ_CALL_LOG',\n  WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',\n  ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',\n  USE_SIP: 'android.permission.USE_SIP',\n  PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',\n  BODY_SENSORS: 'android.permission.BODY_SENSORS',\n  SEND_SMS: 'android.permission.SEND_SMS',\n  RECEIVE_SMS: 'android.permission.RECEIVE_SMS',\n  READ_SMS: 'android.permission.READ_SMS',\n  RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',\n  RECEIVE_MMS: 'android.permission.RECEIVE_MMS',\n  READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',\n  WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',\n});\n\n/**\n * `PermissionsAndroid` provides access to Android M's new permissions model.\n *\n * See https://reactnative.dev/docs/permissionsandroid.html\n */\n\nclass PermissionsAndroid {\n  PERMISSIONS: {|\n    ACCESS_BACKGROUND_LOCATION: string,\n    ACCESS_COARSE_LOCATION: string,\n    ACCESS_FINE_LOCATION: string,\n    ADD_VOICEMAIL: string,\n    BODY_SENSORS: string,\n    CALL_PHONE: string,\n    CAMERA: string,\n    GET_ACCOUNTS: string,\n    PROCESS_OUTGOING_CALLS: string,\n    READ_CALENDAR: string,\n    READ_CALL_LOG: string,\n    READ_CONTACTS: string,\n    READ_EXTERNAL_STORAGE: string,\n    READ_PHONE_STATE: string,\n    READ_SMS: string,\n    RECEIVE_MMS: string,\n    RECEIVE_SMS: string,\n    RECEIVE_WAP_PUSH: string,\n    RECORD_AUDIO: string,\n    SEND_SMS: string,\n    USE_SIP: string,\n    WRITE_CALENDAR: string,\n    WRITE_CALL_LOG: string,\n    WRITE_CONTACTS: string,\n    WRITE_EXTERNAL_STORAGE: string,\n  |} = PERMISSIONS;\n  RESULTS: {|\n    DENIED: $TEMPORARY$string<'denied'>,\n    GRANTED: $TEMPORARY$string<'granted'>,\n    NEVER_ASK_AGAIN: $TEMPORARY$string<'never_ask_again'>,\n  |} = PERMISSION_REQUEST_RESULT;\n\n  /**\n   * DEPRECATED - use check\n   *\n   * Returns a promise resolving to a boolean value as to whether the specified\n   * permissions has been granted\n   *\n   * @deprecated\n   */\n  checkPermission(permission: PermissionType): Promise<boolean> {\n    console.warn(\n      '\"PermissionsAndroid.checkPermission\" is deprecated. Use \"PermissionsAndroid.check\" instead',\n    );\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(false);\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    return NativePermissionsAndroid.checkPermission(permission);\n  }\n\n  /**\n   * Returns a promise resolving to a boolean value as to whether the specified\n   * permissions has been granted\n   *\n   * See https://reactnative.dev/docs/permissionsandroid.html#check\n   */\n  check(permission: PermissionType): Promise<boolean> {\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(false);\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    return NativePermissionsAndroid.checkPermission(permission);\n  }\n\n  /**\n   * DEPRECATED - use request\n   *\n   * Prompts the user to enable a permission and returns a promise resolving to a\n   * boolean value indicating whether the user allowed or denied the request\n   *\n   * If the optional rationale argument is included (which is an object with a\n   * `title` and `message`), this function checks with the OS whether it is\n   * necessary to show a dialog explaining why the permission is needed\n   * (https://developer.android.com/training/permissions/requesting.html#explain)\n   * and then shows the system permission dialog\n   *\n   * @deprecated\n   */\n  async requestPermission(\n    permission: PermissionType,\n    rationale?: Rationale,\n  ): Promise<boolean> {\n    console.warn(\n      '\"PermissionsAndroid.requestPermission\" is deprecated. Use \"PermissionsAndroid.request\" instead',\n    );\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(false);\n    }\n\n    const response = await this.request(permission, rationale);\n    return response === this.RESULTS.GRANTED;\n  }\n\n  /**\n   * Prompts the user to enable a permission and returns a promise resolving to a\n   * string value indicating whether the user allowed or denied the request\n   *\n   * See https://reactnative.dev/docs/permissionsandroid.html#request\n   */\n  async request(\n    permission: PermissionType,\n    rationale?: Rationale,\n  ): Promise<PermissionStatus> {\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve(this.RESULTS.DENIED);\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    if (rationale) {\n      const shouldShowRationale = await NativePermissionsAndroid.shouldShowRequestPermissionRationale(\n        permission,\n      );\n\n      if (shouldShowRationale && !!NativeDialogManagerAndroid) {\n        return new Promise((resolve, reject) => {\n          const options = {\n            ...rationale,\n          };\n          NativeDialogManagerAndroid.showAlert(\n            /* $FlowFixMe(>=0.111.0 site=react_native_fb) This comment\n             * suppresses an error found when Flow v0.111 was deployed. To see\n             * the error, delete this comment and run Flow. */\n            options,\n            () => reject(new Error('Error showing rationale')),\n            () =>\n              resolve(NativePermissionsAndroid.requestPermission(permission)),\n          );\n        });\n      }\n    }\n    return NativePermissionsAndroid.requestPermission(permission);\n  }\n\n  /**\n   * Prompts the user to enable multiple permissions in the same dialog and\n   * returns an object with the permissions as keys and strings as values\n   * indicating whether the user allowed or denied the request\n   *\n   * See https://reactnative.dev/docs/permissionsandroid.html#requestmultiple\n   */\n  requestMultiple(\n    permissions: Array<PermissionType>,\n  ): Promise<{[permission: PermissionType]: PermissionStatus, ...}> {\n    if (Platform.OS !== 'android') {\n      console.warn(\n        '\"PermissionsAndroid\" module works only for Android platform.',\n      );\n      return Promise.resolve({});\n    }\n\n    invariant(\n      NativePermissionsAndroid,\n      'PermissionsAndroid is not installed correctly.',\n    );\n\n    return NativePermissionsAndroid.requestMultiplePermissions(permissions);\n  }\n}\n\nconst PermissionsAndroidInstance: PermissionsAndroid = new PermissionsAndroid();\n\nmodule.exports = PermissionsAndroidInstance;\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\n// TODO: Use proper enum types.\nexport type PermissionStatus = string;\nexport type PermissionType = string;\n/*\nexport type PermissionStatus = 'granted' | 'denied' | 'never_ask_again';\nexport type PermissionType =\n  | 'android.permission.READ_CALENDAR'\n  | 'android.permission.WRITE_CALENDAR'\n  | 'android.permission.CAMERA'\n  | 'android.permission.READ_CONTACTS'\n  | 'android.permission.WRITE_CONTACTS'\n  | 'android.permission.GET_ACCOUNTS'\n  | 'android.permission.ACCESS_BACKGROUND_LOCATION'\n  | 'android.permission.ACCESS_FINE_LOCATION'\n  | 'android.permission.ACCESS_COARSE_LOCATION'\n  | 'android.permission.RECORD_AUDIO'\n  | 'android.permission.READ_PHONE_STATE'\n  | 'android.permission.CALL_PHONE'\n  | 'android.permission.READ_CALL_LOG'\n  | 'android.permission.WRITE_CALL_LOG'\n  | 'com.android.voicemail.permission.ADD_VOICEMAIL'\n  | 'android.permission.USE_SIP'\n  | 'android.permission.PROCESS_OUTGOING_CALLS'\n  | 'android.permission.BODY_SENSORS'\n  | 'android.permission.SEND_SMS'\n  | 'android.permission.RECEIVE_SMS'\n  | 'android.permission.READ_SMS'\n  | 'android.permission.RECEIVE_WAP_PUSH'\n  | 'android.permission.RECEIVE_MMS'\n  | 'android.permission.READ_EXTERNAL_STORAGE'\n  | 'android.permission.WRITE_EXTERNAL_STORAGE';\n*/\n\nexport interface Spec extends TurboModule {\n  +checkPermission: (permission: PermissionType) => Promise<boolean>;\n  +requestPermission: (permission: PermissionType) => Promise<PermissionStatus>;\n  +shouldShowRequestPermissionRationale: (\n    permission: string,\n  ) => Promise<boolean>;\n  +requestMultiplePermissions: (\n    permissions: Array<PermissionType>,\n  ) => Promise<{[permission: PermissionType]: PermissionStatus, ...}>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('PermissionsAndroid'): ?Spec);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport NativeEventEmitter from '../EventEmitter/NativeEventEmitter';\nimport NativePushNotificationManagerIOS from './NativePushNotificationManagerIOS';\nimport invariant from 'invariant';\n\nconst PushNotificationEmitter = new NativeEventEmitter(\n  NativePushNotificationManagerIOS,\n);\n\nconst _notifHandlers = new Map();\n\nconst DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';\nconst NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';\nconst NOTIF_REGISTRATION_ERROR_EVENT = 'remoteNotificationRegistrationError';\nconst DEVICE_LOCAL_NOTIF_EVENT = 'localNotificationReceived';\n\nexport type ContentAvailable = 1 | null | void;\n\nexport type FetchResult = {\n  NewData: string,\n  NoData: string,\n  ResultFailed: string,\n  ...\n};\n\n/**\n * An event emitted by PushNotificationIOS.\n */\nexport type PushNotificationEventName = $Keys<{\n  /**\n   * Fired when a remote notification is received. The handler will be invoked\n   * with an instance of `PushNotificationIOS`.\n   */\n  notification: string,\n  /**\n   * Fired when a local notification is received. The handler will be invoked\n   * with an instance of `PushNotificationIOS`.\n   */\n  localNotification: string,\n  /**\n   * Fired when the user registers for remote notifications. The handler will be\n   * invoked with a hex string representing the deviceToken.\n   */\n  register: string,\n  /**\n   * Fired when the user fails to register for remote notifications. Typically\n   * occurs when APNS is having issues, or the device is a simulator. The\n   * handler will be invoked with {message: string, code: number, details: any}.\n   */\n  registrationError: string,\n  ...\n}>;\n\n/**\n *\n * Handle push notifications for your app, including permission handling and\n * icon badge number.\n *\n * See https://reactnative.dev/docs/pushnotificationios.html\n */\nclass PushNotificationIOS {\n  _data: Object;\n  _alert: string | Object;\n  _sound: string;\n  _category: string;\n  _contentAvailable: ContentAvailable;\n  _badgeCount: number;\n  _notificationId: string;\n  _isRemote: boolean;\n  _remoteNotificationCompleteCallbackCalled: boolean;\n  _threadID: string;\n\n  static FetchResult: FetchResult = {\n    NewData: 'UIBackgroundFetchResultNewData',\n    NoData: 'UIBackgroundFetchResultNoData',\n    ResultFailed: 'UIBackgroundFetchResultFailed',\n  };\n\n  /**\n   * Schedules the localNotification for immediate presentation.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#presentlocalnotification\n   */\n  static presentLocalNotification(details: Object) {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.presentLocalNotification(details);\n  }\n\n  /**\n   * Schedules the localNotification for future presentation.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#schedulelocalnotification\n   */\n  static scheduleLocalNotification(details: Object) {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.scheduleLocalNotification(details);\n  }\n\n  /**\n   * Cancels all scheduled localNotifications.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#cancelalllocalnotifications\n   */\n  static cancelAllLocalNotifications() {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.cancelAllLocalNotifications();\n  }\n\n  /**\n   * Remove all delivered notifications from Notification Center.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#removealldeliverednotifications\n   */\n  static removeAllDeliveredNotifications(): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.removeAllDeliveredNotifications();\n  }\n\n  /**\n   * Provides you with a list of the app’s notifications that are still displayed in Notification Center.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getdeliverednotifications\n   */\n  static getDeliveredNotifications(\n    callback: (notifications: Array<Object>) => void,\n  ): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.getDeliveredNotifications(callback);\n  }\n\n  /**\n   * Removes the specified notifications from Notification Center\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#removedeliverednotifications\n   */\n  static removeDeliveredNotifications(identifiers: Array<string>): void {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.removeDeliveredNotifications(identifiers);\n  }\n\n  /**\n   * Sets the badge number for the app icon on the home screen.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#setapplicationiconbadgenumber\n   */\n  static setApplicationIconBadgeNumber(number: number) {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.setApplicationIconBadgeNumber(number);\n  }\n\n  /**\n   * Gets the current badge number for the app icon on the home screen.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getapplicationiconbadgenumber\n   */\n  static getApplicationIconBadgeNumber(callback: Function) {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.getApplicationIconBadgeNumber(callback);\n  }\n\n  /**\n   * Cancel local notifications.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#cancellocalnotification\n   */\n  static cancelLocalNotifications(userInfo: Object) {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.cancelLocalNotifications(userInfo);\n  }\n\n  /**\n   * Gets the local notifications that are currently scheduled.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getscheduledlocalnotifications\n   */\n  static getScheduledLocalNotifications(callback: Function) {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.getScheduledLocalNotifications(callback);\n  }\n\n  /**\n   * Attaches a listener to remote or local notification events while the app\n   * is running in the foreground or the background.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#addeventlistener\n   */\n  static addEventListener(type: PushNotificationEventName, handler: Function) {\n    invariant(\n      type === 'notification' ||\n        type === 'register' ||\n        type === 'registrationError' ||\n        type === 'localNotification',\n      'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events',\n    );\n    let listener;\n    if (type === 'notification') {\n      listener = PushNotificationEmitter.addListener(\n        DEVICE_NOTIF_EVENT,\n        notifData => {\n          handler(new PushNotificationIOS(notifData));\n        },\n      );\n    } else if (type === 'localNotification') {\n      listener = PushNotificationEmitter.addListener(\n        DEVICE_LOCAL_NOTIF_EVENT,\n        notifData => {\n          handler(new PushNotificationIOS(notifData));\n        },\n      );\n    } else if (type === 'register') {\n      listener = PushNotificationEmitter.addListener(\n        NOTIF_REGISTER_EVENT,\n        registrationInfo => {\n          handler(registrationInfo.deviceToken);\n        },\n      );\n    } else if (type === 'registrationError') {\n      listener = PushNotificationEmitter.addListener(\n        NOTIF_REGISTRATION_ERROR_EVENT,\n        errorInfo => {\n          handler(errorInfo);\n        },\n      );\n    }\n    _notifHandlers.set(type, listener);\n  }\n\n  /**\n   * Removes the event listener. Do this in `componentWillUnmount` to prevent\n   * memory leaks.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#removeeventlistener\n   */\n  static removeEventListener(\n    type: PushNotificationEventName,\n    handler: Function,\n  ) {\n    invariant(\n      type === 'notification' ||\n        type === 'register' ||\n        type === 'registrationError' ||\n        type === 'localNotification',\n      'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events',\n    );\n    const listener = _notifHandlers.get(type);\n    if (!listener) {\n      return;\n    }\n    listener.remove();\n    _notifHandlers.delete(type);\n  }\n\n  /**\n   * Requests notification permissions from iOS, prompting the user's\n   * dialog box. By default, it will request all notification permissions, but\n   * a subset of these can be requested by passing a map of requested\n   * permissions.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#requestpermissions\n   */\n  static requestPermissions(permissions?: {\n    alert?: boolean,\n    badge?: boolean,\n    sound?: boolean,\n    ...\n  }): Promise<{\n    alert: boolean,\n    badge: boolean,\n    sound: boolean,\n    ...\n  }> {\n    let requestedPermissions = {\n      alert: true,\n      badge: true,\n      sound: true,\n    };\n    if (permissions) {\n      requestedPermissions = {\n        alert: !!permissions.alert,\n        badge: !!permissions.badge,\n        sound: !!permissions.sound,\n      };\n    }\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    return NativePushNotificationManagerIOS.requestPermissions(\n      requestedPermissions,\n    );\n  }\n\n  /**\n   * Unregister for all remote notifications received via Apple Push Notification service.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#abandonpermissions\n   */\n  static abandonPermissions() {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.abandonPermissions();\n  }\n\n  /**\n   * See what push permissions are currently enabled. `callback` will be\n   * invoked with a `permissions` object.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#checkpermissions\n   */\n  static checkPermissions(callback: Function) {\n    invariant(typeof callback === 'function', 'Must provide a valid callback');\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.checkPermissions(callback);\n  }\n\n  /**\n   * This method returns a promise that resolves to either the notification\n   * object if the app was launched by a push notification, or `null` otherwise.\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getinitialnotification\n   */\n  static getInitialNotification(): Promise<?PushNotificationIOS> {\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    return NativePushNotificationManagerIOS.getInitialNotification().then(\n      notification => {\n        return notification && new PushNotificationIOS(notification);\n      },\n    );\n  }\n\n  /**\n   * You will never need to instantiate `PushNotificationIOS` yourself.\n   * Listening to the `notification` event and invoking\n   * `getInitialNotification` is sufficient\n   *\n   */\n  constructor(nativeNotif: Object) {\n    this._data = {};\n    this._remoteNotificationCompleteCallbackCalled = false;\n    this._isRemote = nativeNotif.remote;\n    if (this._isRemote) {\n      this._notificationId = nativeNotif.notificationId;\n    }\n\n    if (nativeNotif.remote) {\n      // Extract data from Apple's `aps` dict as defined:\n      // https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html\n      Object.keys(nativeNotif).forEach(notifKey => {\n        const notifVal = nativeNotif[notifKey];\n        if (notifKey === 'aps') {\n          this._alert = notifVal.alert;\n          this._sound = notifVal.sound;\n          this._badgeCount = notifVal.badge;\n          this._category = notifVal.category;\n          this._contentAvailable = notifVal['content-available'];\n          this._threadID = notifVal['thread-id'];\n        } else {\n          this._data[notifKey] = notifVal;\n        }\n      });\n    } else {\n      // Local notifications aren't being sent down with `aps` dict.\n      this._badgeCount = nativeNotif.applicationIconBadgeNumber;\n      this._sound = nativeNotif.soundName;\n      this._alert = nativeNotif.alertBody;\n      this._data = nativeNotif.userInfo;\n      this._category = nativeNotif.category;\n    }\n  }\n\n  /**\n   * This method is available for remote notifications that have been received via:\n   * `application:didReceiveRemoteNotification:fetchCompletionHandler:`\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#finish\n   */\n  finish(fetchResult: string) {\n    if (\n      !this._isRemote ||\n      !this._notificationId ||\n      this._remoteNotificationCompleteCallbackCalled\n    ) {\n      return;\n    }\n    this._remoteNotificationCompleteCallbackCalled = true;\n\n    invariant(\n      NativePushNotificationManagerIOS,\n      'PushNotificationManager is not available.',\n    );\n    NativePushNotificationManagerIOS.onFinishRemoteNotification(\n      this._notificationId,\n      fetchResult,\n    );\n  }\n\n  /**\n   * An alias for `getAlert` to get the notification's main message string\n   */\n  getMessage(): ?string | ?Object {\n    // alias because \"alert\" is an ambiguous name\n    return this._alert;\n  }\n\n  /**\n   * Gets the sound string from the `aps` object\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getsound\n   */\n  getSound(): ?string {\n    return this._sound;\n  }\n\n  /**\n   * Gets the category string from the `aps` object\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getcategory\n   */\n  getCategory(): ?string {\n    return this._category;\n  }\n\n  /**\n   * Gets the notification's main message from the `aps` object\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getalert\n   */\n  getAlert(): ?string | ?Object {\n    return this._alert;\n  }\n\n  /**\n   * Gets the content-available number from the `aps` object\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getcontentavailable\n   */\n  getContentAvailable(): ContentAvailable {\n    return this._contentAvailable;\n  }\n\n  /**\n   * Gets the badge count number from the `aps` object\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getbadgecount\n   */\n  getBadgeCount(): ?number {\n    return this._badgeCount;\n  }\n\n  /**\n   * Gets the data object on the notif\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getdata\n   */\n  getData(): ?Object {\n    return this._data;\n  }\n\n  /**\n   * Gets the thread ID on the notif\n   *\n   * See https://reactnative.dev/docs/pushnotificationios.html#getthreadid\n   */\n  getThreadID(): ?string {\n    return this._threadID;\n  }\n}\n\nmodule.exports = PushNotificationIOS;\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 * @format\n * @flow\n */\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\ntype Permissions = {|\n  alert: boolean,\n  badge: boolean,\n  sound: boolean,\n|};\n\ntype Notification = {|\n  +alertTitle?: ?string,\n  // Actual type: string | number\n  +fireDate?: ?number,\n  +alertBody?: ?string,\n  +alertAction?: ?string,\n  +userInfo?: ?Object,\n  +category?: ?string,\n  // Actual type: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute'\n  +repeatInterval?: ?string,\n  +applicationIconBadgeNumber?: ?number,\n  +isSilent?: ?boolean,\n|};\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +onFinishRemoteNotification: (\n    notificationId: string,\n    /**\n     * Type:\n     *  'UIBackgroundFetchResultNewData' |\n     *  'UIBackgroundFetchResultNoData' |\n     *  'UIBackgroundFetchResultFailed'\n     */\n    fetchResult: string,\n  ) => void;\n  +setApplicationIconBadgeNumber: (num: number) => void;\n  +getApplicationIconBadgeNumber: (callback: (num: number) => void) => void;\n  +requestPermissions: (permission: {|\n    +alert: boolean,\n    +badge: boolean,\n    +sound: boolean,\n  |}) => Promise<Permissions>;\n  +abandonPermissions: () => void;\n  +checkPermissions: (callback: (permissions: Permissions) => void) => void;\n  +presentLocalNotification: (notification: Notification) => void;\n  +scheduleLocalNotification: (notification: Notification) => void;\n  +cancelAllLocalNotifications: () => void;\n  +cancelLocalNotifications: (userInfo: Object) => void;\n  +getInitialNotification: () => Promise<?Notification>;\n  +getScheduledLocalNotifications: (\n    callback: (notification: Notification) => void,\n  ) => void;\n  +removeAllDeliveredNotifications: () => void;\n  +removeDeliveredNotifications: (identifiers: Array<string>) => void;\n  +getDeliveredNotifications: (\n    callback: (notification: Array<Notification>) => void,\n  ) => void;\n  +addListener: (eventType: string) => void;\n  +removeListeners: (count: number) => void;\n}\n\nexport default (TurboModuleRegistry.get<Spec>(\n  'PushNotificationManager',\n): ?Spec);\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter';\nimport NativeSettingsManager from './NativeSettingsManager';\nimport invariant from 'invariant';\n\nconst subscriptions: Array<{\n  keys: Array<string>,\n  callback: ?Function,\n  ...\n}> = [];\n\nconst Settings = {\n  _settings: (NativeSettingsManager &&\n    NativeSettingsManager.getConstants().settings: any),\n\n  get(key: string): mixed {\n    return this._settings[key];\n  },\n\n  set(settings: Object) {\n    this._settings = Object.assign(this._settings, settings);\n    NativeSettingsManager.setValues(settings);\n  },\n\n  watchKeys(keys: string | Array<string>, callback: Function): number {\n    if (typeof keys === 'string') {\n      keys = [keys];\n    }\n\n    invariant(\n      Array.isArray(keys),\n      'keys should be a string or array of strings',\n    );\n\n    const sid = subscriptions.length;\n    subscriptions.push({keys: keys, callback: callback});\n    return sid;\n  },\n\n  clearWatch(watchId: number) {\n    if (watchId < subscriptions.length) {\n      subscriptions[watchId] = {keys: [], callback: null};\n    }\n  },\n\n  _sendObservations(body: Object) {\n    Object.keys(body).forEach(key => {\n      const newValue = body[key];\n      const didChange = this._settings[key] !== newValue;\n      this._settings[key] = newValue;\n\n      if (didChange) {\n        subscriptions.forEach(sub => {\n          if (sub.keys.indexOf(key) !== -1 && sub.callback) {\n            sub.callback();\n          }\n        });\n      }\n    });\n  },\n};\n\nRCTDeviceEventEmitter.addListener(\n  'settingsUpdated',\n  Settings._sendObservations.bind(Settings),\n);\n\nmodule.exports = Settings;\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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {|\n    settings: Object,\n  |};\n  +setValues: (values: Object) => void;\n  +deleteValues: (values: Array<string>) => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>(\n  'SettingsManager',\n): Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Platform = require('../Utilities/Platform');\n\nconst invariant = require('invariant');\nconst processColor = require('../StyleSheet/processColor');\n\nimport NativeActionSheetManager from '../ActionSheetIOS/NativeActionSheetManager';\nimport NativeShareModule from './NativeShareModule';\n\ntype Content =\n  | {\n      title?: string,\n      message: string,\n      ...\n    }\n  | {\n      title?: string,\n      url: string,\n      ...\n    };\ntype Options = {\n  dialogTitle?: string,\n  excludedActivityTypes?: Array<string>,\n  tintColor?: string,\n  subject?: string,\n  ...\n};\n\nclass Share {\n  /**\n   * Open a dialog to share text content.\n   *\n   * In iOS, Returns a Promise which will be invoked an object containing `action`, `activityType`.\n   * If the user dismissed the dialog, the Promise will still be resolved with action being `Share.dismissedAction`\n   * and all the other keys being undefined.\n   *\n   * In Android, Returns a Promise which always be resolved with action being `Share.sharedAction`.\n   *\n   * ### Content\n   *\n   *  - `message` - a message to share\n   *\n   * #### iOS\n   *\n   *  - `url` - an URL to share\n   *\n   * At least one of URL and message is required.\n   *\n   * #### Android\n   *\n   * - `title` - title of the message\n   *\n   * ### Options\n   *\n   * #### iOS\n   *\n   *  - `subject` - a subject to share via email\n   *  - `excludedActivityTypes`\n   *  - `tintColor`\n   *\n   * #### Android\n   *\n   *  - `dialogTitle`\n   *\n   */\n  static share(\n    content: Content,\n    options: Options = {},\n  ): Promise<{action: string, activityType: ?string}> {\n    invariant(\n      typeof content === 'object' && content !== null,\n      'Content to share must be a valid object',\n    );\n    invariant(\n      typeof content.url === 'string' || typeof content.message === 'string',\n      'At least one of URL and message is required',\n    );\n    invariant(\n      typeof options === 'object' && options !== null,\n      'Options must be a valid object',\n    );\n\n    if (Platform.OS === 'android') {\n      invariant(\n        NativeShareModule,\n        'ShareModule should be registered on Android.',\n      );\n      invariant(\n        content.title == null || typeof content.title === 'string',\n        'Invalid title: title should be a string.',\n      );\n\n      const newContent = {\n        title: content.title,\n        message:\n          typeof content.message === 'string' ? content.message : undefined,\n      };\n\n      return NativeShareModule.share(newContent, options.dialogTitle).then(\n        result => ({\n          activityType: null,\n          ...result,\n        }),\n      );\n    } else if (Platform.OS === 'ios') {\n      return new Promise((resolve, reject) => {\n        const tintColor = processColor(options.tintColor);\n\n        invariant(\n          tintColor == null || typeof tintColor === 'number',\n          'Unexpected color given for options.tintColor',\n        );\n\n        invariant(\n          NativeActionSheetManager,\n          'NativeActionSheetManager is not registered on iOS, but it should be.',\n        );\n\n        NativeActionSheetManager.showShareActionSheetWithOptions(\n          {\n            message:\n              typeof content.message === 'string' ? content.message : undefined,\n            url: typeof content.url === 'string' ? content.url : undefined,\n            subject: options.subject,\n            tintColor: typeof tintColor === 'number' ? tintColor : undefined,\n            excludedActivityTypes: options.excludedActivityTypes,\n          },\n          error => reject(error),\n          (success, activityType) => {\n            if (success) {\n              resolve({\n                action: 'sharedAction',\n                activityType: activityType,\n              });\n            } else {\n              resolve({\n                action: 'dismissedAction',\n                activityType: null,\n              });\n            }\n          },\n        );\n      });\n    } else {\n      return Promise.reject(new Error('Unsupported platform'));\n    }\n  }\n\n  /**\n   * The content was successfully shared.\n   */\n  static sharedAction: 'sharedAction' = 'sharedAction';\n\n  /**\n   * The dialog has been dismissed.\n   * @platform ios\n   */\n  static dismissedAction: 'dismissedAction' = 'dismissedAction';\n}\n\nmodule.exports = Share;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +share: (\n    content: {|title?: string, message?: string|},\n    dialogTitle?: string,\n  ) => Promise<{|action: string|}>;\n}\n\nexport default (TurboModuleRegistry.get<Spec>('ShareModule'): ?Spec);\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport NativeEventEmitter from '../../EventEmitter/NativeEventEmitter';\nimport NativeStatusBarManagerIOS from './NativeStatusBarManagerIOS';\n\n/**\n * Use `StatusBar` for mutating the status bar.\n */\nclass StatusBarIOS extends NativeEventEmitter {}\n\nmodule.exports = (new StatusBarIOS(NativeStatusBarManagerIOS): StatusBarIOS);\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 * @format\n * @noflow\n */\n\n'use strict';\n\nconst ToastAndroid = {\n  show: function(message: string, duration: number): void {\n    console.warn('ToastAndroid is not supported on this platform.');\n  },\n\n  showWithGravity: function(\n    message: string,\n    duration: number,\n    gravity: number,\n  ): void {\n    console.warn('ToastAndroid is not supported on this platform.');\n  },\n\n  showWithGravityAndOffset: function(\n    message: string,\n    duration: number,\n    gravity: number,\n    xOffset: number,\n    yOffset: number,\n  ): void {\n    console.warn('ToastAndroid is not supported on this platform.');\n  },\n};\n\nmodule.exports = ToastAndroid;\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport {useMemo} from 'react';\nimport {useSubscription} from 'use-subscription';\nimport Appearance from './Appearance';\nimport type {ColorSchemeName} from './NativeAppearance';\n\nexport default function useColorScheme(): ?ColorSchemeName {\n  const subscription = useMemo(\n    () => ({\n      getCurrentValue: () => Appearance.getColorScheme(),\n      subscribe: callback => {\n        Appearance.addChangeListener(callback);\n        return () => Appearance.removeChangeListener(callback);\n      },\n    }),\n    [],\n  );\n\n  return useSubscription(subscription);\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/use-subscription.production.min.js');\n} else {\n  module.exports = require('./cjs/use-subscription.development.js');\n}\n","/** @license React vundefined\n * use-subscription.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(\"object-assign\"),g=require(\"react\");\nexports.useSubscription=function(a){var c=a.getCurrentValue,d=a.subscribe,b=g.useState(function(){return{getCurrentValue:c,subscribe:d,value:c()}});a=b[0];var f=b[1];b=a.value;if(a.getCurrentValue!==c||a.subscribe!==d)b=c(),f({getCurrentValue:c,subscribe:d,value:b});g.useDebugValue(b);g.useEffect(function(){function b(){if(!a){var b=c();f(function(a){return a.getCurrentValue!==c||a.subscribe!==d||a.value===b?a:e({},a,{value:b})})}}var a=!1,h=d(b);b();return function(){a=!0;h()}},[c,d]);return b};\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport Dimensions from './Dimensions';\nimport {type DisplayMetrics} from './NativeDeviceInfo';\nimport {useEffect, useState} from 'react';\n\nexport default function useWindowDimensions(): DisplayMetrics {\n  const [dimensions, setDimensions] = useState(() => Dimensions.get('window'));\n  useEffect(() => {\n    function handleChange({window}) {\n      if (\n        dimensions.width !== window.width ||\n        dimensions.height !== window.height ||\n        dimensions.scale !== window.scale ||\n        dimensions.fontScale !== window.fontScale\n      ) {\n        setDimensions(window);\n      }\n    }\n    Dimensions.addEventListener('change', handleChange);\n    // We might have missed an update between calling `get` in render and\n    // `addEventListener` in this handler, so we set it here. If there was\n    // no change, React will filter out this update as a no-op.\n    handleChange({window: Dimensions.get('window')});\n    return () => {\n      Dimensions.removeEventListener('change', handleChange);\n    };\n  }, [dimensions]);\n  return dimensions;\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst deepFreezeAndThrowOnMutationInDev = require('./Utilities/deepFreezeAndThrowOnMutationInDev');\n\n/**\n * A collection of Unicode sequences for various characters and emoji.\n *\n *  - More explicit than using the sequences directly in code.\n *  - Source code should be limitted to ASCII.\n *  - Less chance of typos.\n */\nconst UTFSequence: {|\n  BOM: string,\n  BULLET: string,\n  BULLET_SP: string,\n  MDASH: string,\n  MDASH_SP: string,\n  MIDDOT: string,\n  MIDDOT_KATAKANA: string,\n  MIDDOT_SP: string,\n  NBSP: string,\n  NDASH: string,\n  NDASH_SP: string,\n  PIZZA: string,\n  TRIANGLE_LEFT: string,\n  TRIANGLE_RIGHT: string,\n|} = deepFreezeAndThrowOnMutationInDev({\n  BOM: '\\ufeff', // byte order mark\n  BULLET: '\\u2022', // bullet: &#8226;\n  BULLET_SP: '\\u00A0\\u2022\\u00A0', // &nbsp;&#8226;&nbsp;\n  MIDDOT: '\\u00B7', // normal middle dot: &middot;\n  MIDDOT_SP: '\\u00A0\\u00B7\\u00A0', // &nbsp;&middot;&nbsp;\n  MIDDOT_KATAKANA: '\\u30FB', // katakana middle dot\n  MDASH: '\\u2014', // em dash: &mdash;\n  MDASH_SP: '\\u00A0\\u2014\\u00A0', // &nbsp;&mdash;&nbsp;\n  NDASH: '\\u2013', // en dash: &ndash;\n  NDASH_SP: '\\u00A0\\u2013\\u00A0', // &nbsp;&ndash;&nbsp;\n  NBSP: '\\u00A0', // non-breaking space: &nbsp;\n  PIZZA: '\\uD83C\\uDF55',\n  TRIANGLE_LEFT: '\\u25c0', // black left-pointing triangle\n  TRIANGLE_RIGHT: '\\u25b6', // black right-pointing triangle\n});\n\nmodule.exports = UTFSequence;\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 * @format\n * @flow strict\n * @jsdoc\n */\n\n'use strict';\n\nimport NativeVibration from './NativeVibration';\nconst Platform = require('../Utilities/Platform');\n\n/**\n * Vibration API\n *\n * See https://reactnative.dev/docs/vibration.html\n */\n\nlet _vibrating: boolean = false;\nlet _id: number = 0; // _id is necessary to prevent race condition.\nconst _default_vibration_length = 400;\n\nfunction vibrateByPattern(pattern: Array<number>, repeat: boolean = false) {\n  if (_vibrating) {\n    return;\n  }\n  _vibrating = true;\n  if (pattern[0] === 0) {\n    NativeVibration.vibrate(_default_vibration_length);\n    // $FlowFixMe[reassign-const]\n    pattern = pattern.slice(1);\n  }\n  if (pattern.length === 0) {\n    _vibrating = false;\n    return;\n  }\n  setTimeout(() => vibrateScheduler(++_id, pattern, repeat, 1), pattern[0]);\n}\n\nfunction vibrateScheduler(\n  id,\n  pattern: Array<number>,\n  repeat: boolean,\n  nextIndex: number,\n) {\n  if (!_vibrating || id !== _id) {\n    return;\n  }\n  NativeVibration.vibrate(_default_vibration_length);\n  if (nextIndex >= pattern.length) {\n    if (repeat) {\n      // $FlowFixMe[reassign-const]\n      nextIndex = 0;\n    } else {\n      _vibrating = false;\n      return;\n    }\n  }\n  setTimeout(\n    () => vibrateScheduler(id, pattern, repeat, nextIndex + 1),\n    pattern[nextIndex],\n  );\n}\n\nconst Vibration = {\n  /**\n   * Trigger a vibration with specified `pattern`.\n   *\n   * See https://reactnative.dev/docs/vibration.html#vibrate\n   */\n  vibrate: function(\n    pattern: number | Array<number> = _default_vibration_length,\n    repeat: boolean = false,\n  ) {\n    if (Platform.OS === 'android') {\n      if (typeof pattern === 'number') {\n        NativeVibration.vibrate(pattern);\n      } else if (Array.isArray(pattern)) {\n        NativeVibration.vibrateByPattern(pattern, repeat ? 0 : -1);\n      } else {\n        throw new Error('Vibration pattern should be a number or array');\n      }\n    } else {\n      if (_vibrating) {\n        return;\n      }\n      if (typeof pattern === 'number') {\n        NativeVibration.vibrate(pattern);\n      } else if (Array.isArray(pattern)) {\n        vibrateByPattern(pattern, repeat);\n      } else {\n        throw new Error('Vibration pattern should be a number or array');\n      }\n    }\n  },\n  /**\n   * Stop vibration\n   *\n   * See https://reactnative.dev/docs/vibration.html#cancel\n   */\n  cancel: function() {\n    if (Platform.OS === 'ios') {\n      _vibrating = false;\n    } else {\n      NativeVibration.cancel();\n    }\n  },\n};\n\nmodule.exports = Vibration;\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nimport type {TurboModule} from '../TurboModule/RCTExport';\nimport * as TurboModuleRegistry from '../TurboModule/TurboModuleRegistry';\n\nexport interface Spec extends TurboModule {\n  +getConstants: () => {||};\n  +vibrate: (pattern: number) => void;\n\n  // Android only\n  +vibrateByPattern: (pattern: Array<number>, repeat: number) => void;\n  +cancel: () => void;\n}\n\nexport default (TurboModuleRegistry.getEnforcing<Spec>('Vibration'): Spec);\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 * @flow\n * @format\n */\n\n'use strict';\n\nconst React = require('react');\n\nconst LogBox = require('../LogBox/LogBox');\n\nimport type {IgnorePattern} from '../LogBox/Data/LogBoxData';\n\ntype Props = $ReadOnly<{||}>;\n\nlet YellowBox;\nif (__DEV__) {\n  YellowBox = class extends React.Component<Props> {\n    static ignoreWarnings(patterns: $ReadOnlyArray<IgnorePattern>): void {\n      console.warn(\n        'YellowBox has been replaced with LogBox. Please call LogBox.ignoreLogs() instead.',\n      );\n\n      LogBox.ignoreLogs(patterns);\n    }\n\n    static install(): void {\n      console.warn(\n        'YellowBox has been replaced with LogBox. Please call LogBox.install() instead.',\n      );\n      LogBox.install();\n    }\n\n    static uninstall(): void {\n      console.warn(\n        'YellowBox has been replaced with LogBox. Please call LogBox.uninstall() instead.',\n      );\n      LogBox.uninstall();\n    }\n\n    render(): React.Node {\n      return null;\n    }\n  };\n} else {\n  YellowBox = class extends React.Component<Props> {\n    static ignoreWarnings(patterns: $ReadOnlyArray<IgnorePattern>): void {\n      // Do nothing.\n    }\n\n    static install(): void {\n      // Do nothing.\n    }\n\n    static uninstall(): void {\n      // Do nothing.\n    }\n\n    render(): React.Node {\n      return null;\n    }\n  };\n}\n\nmodule.exports = (YellowBox: Class<React.Component<Props>> & {\n  ignoreWarnings($ReadOnlyArray<IgnorePattern>): void,\n  install(): void,\n  uninstall(): void,\n  ...\n});\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {ColorValue} from './StyleSheet';\nimport {DynamicColorIOSPrivate} from './PlatformColorValueTypes';\n\nexport type DynamicColorIOSTuple = {\n  light: ColorValue,\n  dark: ColorValue,\n};\n\nexport const DynamicColorIOS = (tuple: DynamicColorIOSTuple): ColorValue => {\n  return DynamicColorIOSPrivate({light: tuple.light, dark: tuple.dark});\n};\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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst PropTypes = require('prop-types');\n\nconst PointPropType: React$PropType$Primitive<{\n  x?: number,\n  y?: number,\n  ...\n}> = PropTypes.shape({\n  x: PropTypes.number,\n  y: PropTypes.number,\n});\n\nmodule.exports = PointPropType;\n","export { createPageConfig, startPullDownRefresh, stopPullDownRefresh, pageScrollTo, setBackgroundColor, setBackgroundTextStyle, getCurrentPages } from './page';\nexport { createReactNativeApp, getApp } from './app';\nexport { Current, getCurrentInstance } from './current';\nexport * from './hooks';\nexport * from './emmiter';\nexport { navigateTo, redirectTo, navigateBack, switchTab, reLaunch, showTabBar, hideTabBar, showTabBarRedDot, hideTabBarRedDot, setTabBarBadge, removeTabBarBadge, setTabBarItem, setNavigationBarTitle, setNavigationBarColor, showNavigationBarLoading, hideNavigationBarLoading, setTabBarStyle } from '@tarojs/router-rn';\nexport { pxTransform } from './compute';\n//# sourceMappingURL=index.js.map","import * as React from 'react';\nimport { ScrollView, RefreshControl, AppState, View, Dimensions } from 'react-native';\nimport { camelCase } from 'lodash';\nimport { PageProvider, getCurrentRoute } from '@tarojs/router-rn';\nimport { isFunction, EMPTY_OBJ, isArray, incrementId, successHandler, errorHandler } from './utils';\nimport { isClassComponent } from './app';\nimport { Current } from './current';\nimport { eventCenter } from './emmiter';\nimport EventChannel from './EventChannel';\nconst compId = incrementId();\n// 页面实例\nconst instances = new Map();\n// 对标小程序的实例\nconst pagesObj = new Map();\nfunction setPageObject(inst, id) {\n    pagesObj.set(id, inst);\n}\nfunction getPageObject(id) {\n    return pagesObj.get(id);\n}\nexport function injectPageInstance(inst, id) {\n    instances.set(id, inst);\n}\nexport function getPageInstance(id) {\n    return instances.get(id);\n}\nfunction getLifecyle(instance, lifecyle) {\n    return instance[lifecyle];\n}\nfunction safeExecute(path, lifecycle, ...args) {\n    const instance = instances.get(path);\n    if (instance == null) {\n        return;\n    }\n    const func = getLifecyle(instance, lifecycle);\n    if (isArray(func)) {\n        const res = func.map(fn => fn.apply(instance, args));\n        return res[0];\n    }\n    if (!isFunction(func)) {\n        return;\n    }\n    return func.apply(instance, args);\n}\nconst globalAny = global;\n// eslint-disable-next-line import/no-mutable-exports\nexport let PageContext = EMPTY_OBJ;\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createPageConfig(Page, pageConfig) {\n    var _a;\n    const h = React.createElement;\n    const pagePath = pageConfig.pagePath || '';\n    const pageId = (_a = camelCase(pagePath)) !== null && _a !== void 0 ? _a : `taro_page_${compId}`;\n    const isReactComponent = isClassComponent(Page);\n    if (PageContext === EMPTY_OBJ) {\n        PageContext = React.createContext('');\n    }\n    let ScreenPage = Page;\n    if (!isReactComponent) {\n        // eslint-disable-next-line react/display-name\n        ScreenPage = React.forwardRef((props, ref) => {\n            const newProps = Object.assign({}, props);\n            newProps.ref = ref;\n            return h(View, Object.assign({ style: {\n                    minHeight: '100%'\n                } }, newProps), h(Page, Object.assign({}, props), null));\n        });\n    }\n    // 注入的页面实例\n    injectPageInstance(Page, pageId);\n    const WrapScreen = (Screen) => {\n        return class PageScreen extends React.Component {\n            constructor(props) {\n                var _a;\n                super(props);\n                const refreshStyle = (_a = globalAny === null || globalAny === void 0 ? void 0 : globalAny.__taroRefreshStyle) !== null && _a !== void 0 ? _a : {};\n                this.state = {\n                    refreshing: false,\n                    appState: AppState.currentState,\n                    textColor: refreshStyle.textColor || '#ffffff',\n                    backgroundColor: refreshStyle.backgroundColor || '#ffffff'\n                };\n                this.screenRef = React.createRef();\n                this.pageScrollView = React.createRef();\n                this.setPageInstance();\n            }\n            componentDidMount() {\n                const { navigation } = this.props;\n                // 退到后台的触发对应的生命周期函数\n                AppState.addEventListener('change', (nextAppState) => this.onAppStateChange(nextAppState));\n                // 屏幕宽高发送变化\n                Dimensions.addEventListener('change', ({ window }) => this.onResize({ window }));\n                if (navigation) {\n                    this.unSubscribleTabPress = navigation.addListener('tabPress', () => this.onTabItemTap());\n                    this.unSubscribleFocus = navigation.addListener('focus', () => this.onFocusChange());\n                    this.unSubscribleBlur = navigation.addListener('blur', () => this.onBlurChange());\n                }\n                eventCenter.on('__taroPullDownRefresh', ({ path, refresh }) => this.pullDownRefresh(path, refresh), this);\n                eventCenter.on('__taroPageScrollTo', ({ path, scrollTop }) => this.pageToScroll({ path, scrollTop }), this);\n                eventCenter.on('__taroSetRefreshStyle', () => this.setRefreshStyle(), this);\n            }\n            componentWillUnmount() {\n                const { navigation } = this.props;\n                AppState.removeEventListener('change', () => this.onAppStateChange);\n                Dimensions.removeEventListener('change', ({ window }) => this.onResize({ window }));\n                eventCenter.off('__taroPullDownRefresh', ({ path, refresh }) => this.pullDownRefresh(path, refresh), this);\n                eventCenter.off('__taroPageScrollTo', ({ path, scrollTop }) => this.pageToScroll({ path, scrollTop }), this);\n                eventCenter.off('__taroSetRefreshStyle', () => this.setRefreshStyle(), this);\n                if (navigation) {\n                    this.unSubscribleTabPress();\n                    this.unSubscribleBlur();\n                    this.unSubscribleFocus();\n                }\n            }\n            setPageInstance() {\n                const pageRef = this.screenRef;\n                const { params = {}, key = '' } = this.props.route;\n                // 和小程序的page实例保持一致\n                const inst = {\n                    config: pageConfig,\n                    route: pagePath,\n                    options: params,\n                    onReady() {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.componentDidMount)) {\n                            page.componentDidMount && page.componentDidMount();\n                        }\n                        else {\n                            safeExecute(pageId, 'onReady');\n                        }\n                    },\n                    onShow() {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.componentDidShow)) {\n                            page.componentDidShow && page.componentDidShow();\n                        }\n                        else {\n                            safeExecute(pageId, 'componentDidShow');\n                        }\n                    },\n                    onHide() {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.componentDidHide)) {\n                            page.componentDidHide && page.componentDidHide();\n                        }\n                        else {\n                            safeExecute(pageId, 'componentDidHide');\n                        }\n                    },\n                    onPullDownRefresh() {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.onPullDownRefresh)) {\n                            page.onPullDownRefresh && page.onPullDownRefresh();\n                        }\n                        else {\n                            safeExecute(pageId, 'onPullDownRefresh');\n                        }\n                    },\n                    onReachBottom() {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.onReachBottom)) {\n                            page.onReachBottom && page.onReachBottom();\n                        }\n                        else {\n                            safeExecute(pageId, 'onReachBottom');\n                        }\n                    },\n                    onPageScroll(options) {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.onReachBottom)) {\n                            page.onPageScroll && page.onPageScroll(options);\n                        }\n                        else {\n                            safeExecute(pageId, 'onPageScroll', options);\n                        }\n                    },\n                    onResize(options) {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.onResize)) {\n                            page.onResize && page.onResize(options);\n                        }\n                        else {\n                            safeExecute(pageId, 'onResize', options);\n                        }\n                    },\n                    onTabItemTap(options) {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.onTabItemTap)) {\n                            page.onTabItemTap && page.onTabItemTap(options);\n                        }\n                        else {\n                            safeExecute(pageId, 'onTabItemTap', options);\n                        }\n                    },\n                    onUnload() {\n                        const page = pageRef.current;\n                        if (page != null && isFunction(page.componentWillUnmount)) {\n                            page.componentWillUnmount && page.componentWillUnmount();\n                        }\n                        else {\n                            safeExecute(pageId, 'onUnload');\n                        }\n                    },\n                    getOpenerEventChannel() {\n                        return EventChannel.pageChannel;\n                    }\n                };\n                // 存储对应小程序的实例\n                setPageObject(inst, key);\n                Current.router = {\n                    params: params,\n                    path: pagePath\n                };\n                Current.page = inst;\n            }\n            pullDownRefresh(path, refresh) {\n                if (path === pagePath) {\n                    this.setState({ refreshing: refresh });\n                }\n            }\n            setRefreshStyle() {\n                var _a;\n                const refreshStyle = (_a = globalAny === null || globalAny === void 0 ? void 0 : globalAny.__taroRefreshStyle) !== null && _a !== void 0 ? _a : {};\n                this.setState({\n                    textColor: refreshStyle.textColor || '#ffffff',\n                    backgroundColor: refreshStyle.backgroundColor || '#ffffff'\n                });\n            }\n            pageToScroll({ path = '', scrollTop = 0 }) {\n                var _a, _b;\n                if (path === pagePath) {\n                    (_b = (_a = this.pageScrollView) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.scrollTo({ x: 0, y: scrollTop, animated: true });\n                }\n            }\n            onFocusChange() {\n                var _a, _b, _c, _d;\n                // 页面切换,当前instance重新赋值\n                this.setPageInstance();\n                try {\n                    this.handleHooksEvent('componentDidShow');\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.componentDidShow) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.componentDidShow();\n                    }\n                }\n                catch (err) {\n                    throw new Error(err);\n                }\n            }\n            onBlurChange() {\n                var _a, _b, _c, _d;\n                try {\n                    this.handleHooksEvent('componentDidHide');\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.componentDidHide) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.componentDidHide();\n                    }\n                }\n                catch (err) {\n                    throw new Error(err);\n                }\n            }\n            onAppStateChange(nextAppState) {\n                var _a, _b, _c, _d, _e, _f, _g, _h;\n                const { appState } = this.state;\n                if (appState.match(/inactive|background/) && nextAppState === 'active') {\n                    this.handleHooksEvent('componentDidShow');\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.componentDidShow) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.componentDidShow();\n                    }\n                }\n                else {\n                    this.handleHooksEvent('componentDidHide');\n                    if ((_f = (_e = this.screenRef) === null || _e === void 0 ? void 0 : _e.current) === null || _f === void 0 ? void 0 : _f.componentDidHide) {\n                        (_h = (_g = this.screenRef) === null || _g === void 0 ? void 0 : _g.current) === null || _h === void 0 ? void 0 : _h.componentDidHide();\n                    }\n                }\n                this.setState({ appState: nextAppState });\n            }\n            onPageScroll(e) {\n                var _a, _b, _c, _d;\n                const { contentOffset } = e.nativeEvent;\n                const scrollTop = contentOffset.y;\n                if (scrollTop < 0)\n                    return;\n                try {\n                    this.handleHooksEvent('onPageScroll', { scrollTop });\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.onPageScroll) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.onPageScroll({ scrollTop });\n                    }\n                }\n                catch (err) {\n                    throw new Error(err);\n                }\n            }\n            onResize({ window }) {\n                var _a, _b, _c, _d;\n                try {\n                    this.handleHooksEvent('onResize', { size: window });\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.onResize) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.onResize({ size: window });\n                    }\n                }\n                catch (err) {\n                    throw new Error(err);\n                }\n            }\n            // 监听的onMomentumScrollEnd\n            onReachBottom(e) {\n                var _a, _b, _c, _d;\n                const { onReachBottomDistance = 50 } = pageConfig;\n                const { layoutMeasurement, contentSize, contentOffset } = e.nativeEvent;\n                if ((contentOffset === null || contentOffset === void 0 ? void 0 : contentOffset.y) + (layoutMeasurement === null || layoutMeasurement === void 0 ? void 0 : layoutMeasurement.height) + onReachBottomDistance >= contentSize.height) {\n                    try {\n                        this.handleHooksEvent('onReachBottom');\n                        if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.onReachBottom) {\n                            (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.onReachBottom();\n                        }\n                    }\n                    catch (err) {\n                        throw new Error(err);\n                    }\n                }\n            }\n            // 下拉刷新\n            onPullDownRefresh() {\n                var _a, _b, _c, _d;\n                this.setState({ refreshing: true });\n                try {\n                    this.handleHooksEvent('onPullDownRefresh');\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.onPullDownRefresh) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.onPullDownRefresh();\n                    }\n                }\n                catch (e) {\n                    throw new Error(e);\n                }\n                finally {\n                    this.setState({ refreshing: false });\n                }\n            }\n            onTabItemTap() {\n                var _a, _b, _c, _d;\n                try {\n                    const item = this.getTabItem(pagePath);\n                    this.handleHooksEvent('onTabItemTap', Object.assign({}, item));\n                    if ((_b = (_a = this.screenRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.onTabItemTap) {\n                        (_d = (_c = this.screenRef) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.onTabItemTap(item);\n                    }\n                }\n                catch (error) {\n                    throw new Error(error);\n                }\n            }\n            handleHooksEvent(method, options = {}) {\n                if (!isReactComponent) {\n                    return safeExecute(pageId, method, options);\n                }\n            }\n            getTabItem(itemPath) {\n                var _a, _b;\n                const tabBar = ((_b = (_a = globalAny.__taroAppConfig) === null || _a === void 0 ? void 0 : _a.appConfig) === null || _b === void 0 ? void 0 : _b.tabBar) || {};\n                if (!tabBar)\n                    return '';\n                let result = {};\n                for (let i = 0; i < tabBar.list.length; i++) {\n                    const item = tabBar.list[i];\n                    const path = item.pagePath.startsWith('/') ? item.pagePath : `/${item.pagePath}`;\n                    if (path === itemPath) {\n                        result = {\n                            index: i,\n                            pagePath: path,\n                            text: item.text\n                        };\n                    }\n                }\n                return result;\n            }\n            isEnablePullDown() {\n                var _a, _b;\n                const windowOptions = ((_b = (_a = globalAny.__taroAppConfig) === null || _a === void 0 ? void 0 : _a.appConfig) === null || _b === void 0 ? void 0 : _b.window) || {};\n                const { enablePullDownRefresh = false } = windowOptions;\n                return (pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig.enablePullDownRefresh) || enablePullDownRefresh;\n            }\n            refreshPullDown() {\n                const { refreshing, textColor, backgroundColor } = this.state;\n                return React.createElement(RefreshControl, {\n                    refreshing: refreshing,\n                    enabled: true,\n                    titleColor: textColor,\n                    tintColor: textColor,\n                    colors: [backgroundColor],\n                    onRefresh: () => this.onPullDownRefresh()\n                }, null);\n            }\n            createPage() {\n                return h(PageProvider, Object.assign({ currentPath: pagePath, pageConfig }, this.props), h(PageContext.Provider, { value: pageId }, h(Screen, Object.assign(Object.assign({}, this.props), { ref: this.screenRef }))));\n            }\n            createScrollPage() {\n                var _a, _b;\n                let bgColor = pageConfig.backgroundColor ? pageConfig.backgroundColor : '';\n                const windowOptions = ((_b = (_a = globalAny.__taroAppConfig) === null || _a === void 0 ? void 0 : _a.appConfig) === null || _b === void 0 ? void 0 : _b.window) || {};\n                if (!bgColor && (windowOptions === null || windowOptions === void 0 ? void 0 : windowOptions.backgroundColor)) {\n                    bgColor = windowOptions === null || windowOptions === void 0 ? void 0 : windowOptions.backgroundColor;\n                }\n                const refresh = this.isEnablePullDown() ? { refreshControl: this.refreshPullDown() } : {};\n                return h(ScrollView, Object.assign(Object.assign({ style: [{ flex: 1 }, (bgColor ? { backgroundColor: bgColor } : {})], contentContainerStyle: { minHeight: '100%' }, ref: this.pageScrollView, scrollEventThrottle: 8 }, refresh), { onScroll: (e) => this.onPageScroll(e), onMomentumScrollEnd: (e) => this.onReachBottom(e) }), this.createPage());\n            }\n            render() {\n                const { disableScroll = false } = pageConfig;\n                return (!disableScroll ? this.createScrollPage() : this.createPage());\n            }\n        };\n    };\n    const pageComponet = WrapScreen(ScreenPage);\n    return pageComponet;\n}\nexport function startPullDownRefresh(options = {}) {\n    const currentPage = Current.page;\n    const path = currentPage === null || currentPage === void 0 ? void 0 : currentPage.route;\n    const { success, fail, complete } = options;\n    let errMsg = 'startPullDownRefresh:ok';\n    try {\n        eventCenter.trigger('__taroPullDownRefresh', { path, refresh: true });\n        success === null || success === void 0 ? void 0 : success({ errMsg });\n        complete === null || complete === void 0 ? void 0 : complete({ errMsg });\n        return Promise.resolve({ errMsg });\n    }\n    catch (error) {\n        errMsg = 'startPullDownRefresh:fail';\n        fail === null || fail === void 0 ? void 0 : fail({ errMsg });\n        complete === null || complete === void 0 ? void 0 : complete({ errMsg });\n        return Promise.reject(error);\n    }\n}\nexport function stopPullDownRefresh(options = {}) {\n    const currentPage = Current.page;\n    const path = currentPage === null || currentPage === void 0 ? void 0 : currentPage.route;\n    const { success, fail, complete } = options;\n    let errMsg = 'stopPullDownRefresh:ok';\n    try {\n        eventCenter.trigger('__taroPullDownRefresh', { path, refresh: false });\n        success === null || success === void 0 ? void 0 : success({ errMsg });\n        complete === null || complete === void 0 ? void 0 : complete({ errMsg });\n        return Promise.resolve({ errMsg });\n    }\n    catch (error) {\n        errMsg = 'stopPullDownRefresh:fail';\n        fail === null || fail === void 0 ? void 0 : fail({ errMsg });\n        complete === null || complete === void 0 ? void 0 : complete({ errMsg });\n        return Promise.reject(error);\n    }\n}\nexport function pageScrollTo(options = {}) {\n    const currentPage = Current.page;\n    const path = currentPage === null || currentPage === void 0 ? void 0 : currentPage.route;\n    const { success, fail, complete, scrollTop = 0 } = options;\n    let errMsg = 'pageScrollTo:ok';\n    try {\n        eventCenter.trigger('__taroPageScrollTo', { path, scrollTop });\n        success === null || success === void 0 ? void 0 : success({ errMsg });\n        complete === null || complete === void 0 ? void 0 : complete({ errMsg });\n        return Promise.resolve({ errMsg });\n    }\n    catch (error) {\n        errMsg = 'pageScrollTo:fail';\n        fail === null || fail === void 0 ? void 0 : fail({ errMsg });\n        complete === null || complete === void 0 ? void 0 : complete({ errMsg });\n        return Promise.reject(error);\n    }\n}\n// 仅支持android\nexport function setBackgroundColor(options) {\n    const { backgroundColor, success, fail, complete } = options;\n    const errMsg = ' setBackgroundColor: ok';\n    const refreshStyle = globalAny.__taroRefreshStyle || {};\n    try {\n        refreshStyle.backgroundColor = backgroundColor;\n        globalAny.__taroRefreshStyle = refreshStyle;\n        eventCenter.trigger('__taroSetRefreshStyle');\n        return successHandler(success, complete)({ errMsg });\n    }\n    catch (error) {\n        const errMsg = ' setBackgroundColor: error';\n        return errorHandler(fail, complete)({ errMsg });\n    }\n}\n// 仅支持ios\nexport function setBackgroundTextStyle(options) {\n    const { textStyle, success, fail, complete } = options;\n    const textColor = textStyle === 'dark' ? '#000000' : '#ffffff';\n    const errMsg = ' setBackgroundTextStyle: ok';\n    const refreshStyle = globalAny.__taroRefreshStyle || {};\n    try {\n        refreshStyle.textColor = textColor;\n        globalAny.__taroRefreshStyle = refreshStyle;\n        eventCenter.trigger('__taroSetRefreshStyle');\n        return successHandler(success, complete)({ errMsg });\n    }\n    catch (error) {\n        const errMsg = ' setBackgroundTextStyle: error';\n        return errorHandler(fail, complete)({ errMsg });\n    }\n}\nexport function getCurrentPages() {\n    const pages = [];\n    const routes = getCurrentRoute();\n    if (routes && routes.length > 0) {\n        routes.forEach(item => {\n            const inst = getPageObject(item);\n            inst && pages.push(inst);\n        });\n    }\n    else { // 第一次初始化时,getCurrentRoute会为空\n        const inst = Current.page;\n        inst && pages.push(inst);\n    }\n    return pages;\n}\n//# sourceMappingURL=page.js.map","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            }\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n","export * from './router';\nexport * from './provider';\nexport * from './rootNavigation';\nexport * from './tabBar';\nexport * from './navigationBar';\n//# sourceMappingURL=index.js.map","/* eslint-disable react/no-children-prop */\nimport * as React from 'react';\nimport { camelCase } from 'lodash';\nimport { NavigationContainer } from '@react-navigation/native';\nimport { createStackNavigator, CardStyleInterpolators } from '@react-navigation/stack';\nimport { createBottomTabNavigator } from '@react-navigation/bottom-tabs';\nimport { navigationRef } from './rootNavigation';\nimport CustomTabBar from './view/TabBar';\nimport HeadTitle from './view/HeadTitle';\nimport BackButton from './view/BackButton';\nimport { getTabItemConfig, getTabVisible, setTabConfig, getTabInitRoute, handleUrl } from './utils/index';\nexport function createRouter(config) {\n    var _a, _b;\n    if ((_b = (_a = config === null || config === void 0 ? void 0 : config.tabBar) === null || _a === void 0 ? void 0 : _a.list) === null || _b === void 0 ? void 0 : _b.length) {\n        return createTabNavigate(config);\n    }\n    else {\n        return createStackNavigate(config);\n    }\n}\nfunction getTabNames(config) {\n    let tabNames = [];\n    const tabBar = config === null || config === void 0 ? void 0 : config.tabBar;\n    if (!tabBar)\n        return tabNames;\n    tabNames = tabBar.list.map(item => {\n        const pagePath = item.pagePath.startsWith('/') ? item.pagePath : `/${item.pagePath}`;\n        return camelCase(pagePath);\n    });\n    return tabNames;\n}\nfunction getPageList(config) {\n    // pageList 去除tabbar的页面\n    const tabBar = config.tabBar;\n    const pageList = config.pages;\n    if (!tabBar)\n        return pageList;\n    const tabNames = getTabNames(config);\n    return pageList.filter(item => tabNames.indexOf(item.name) === -1);\n}\nfunction getTabItemOptions(item, index) {\n    return {\n        tabBarLabel: getTabItemConfig(index, 'tabBarLabel') || item.text,\n        tabBarBadge: getTabItemConfig(index, 'tabBarBadge'),\n        tabBarVisible: getTabVisible(),\n        tabBarTestID: `tabbar-${index}`\n    };\n}\nfunction getHeaderView(title, color, props) {\n    return React.createElement(HeadTitle, { label: title, color, headerProps: props }, null);\n}\n// screen配置的内容\nfunction getStackOptions(config) {\n    const windowOptions = config.window || {};\n    const title = '';\n    const headColor = windowOptions.navigationBarTextStyle || 'white';\n    const bgColor = windowOptions.navigationBarBackgroundColor || '#000000';\n    const headerTitleAlign = 'center';\n    const defaultOptions = {\n        title: title,\n        headerShown: windowOptions.navigationStyle !== 'custom',\n        headerTitle: (props) => getHeaderView(title, headColor, props),\n        headerStyle: {\n            backgroundColor: bgColor,\n            shadowOffset: { width: 0, height: 0 },\n            borderWidth: 0,\n            elevation: 0,\n            shadowOpacity: 1,\n            borderBottomWidth: 0\n        },\n        headerTintColor: headColor,\n        cardStyleInterpolator: CardStyleInterpolators.forHorizontalIOS,\n        headerBackTitleVisible: false,\n        headerPressColorAndroid: 'rgba(255,255,255,0)',\n        headerTitleAlign,\n        // eslint-disable-next-line react/display-name\n        headerBackImage: ({ tintColor }) => {\n            return React.createElement(BackButton, { tintColor }, null);\n        }\n    };\n    const rnConfig = config.rnConfig || {};\n    const screenOptions = (rnConfig === null || rnConfig === void 0 ? void 0 : rnConfig.screenOptions) || {};\n    return Object.assign({}, defaultOptions, screenOptions);\n}\nfunction getTabItem(config, tabName) {\n    const tabBar = config.tabBar;\n    const pageList = config.pages;\n    if (!tabBar)\n        return pageList;\n    let tabItem = {\n        name: '',\n        component: {},\n        pagePath: ''\n    };\n    pageList.forEach(item => {\n        if (item.name === tabName) {\n            tabItem = item;\n        }\n    });\n    return tabItem;\n}\nfunction getInitRouteName(config) {\n    let initRoute = '';\n    const initPath = config.initPath || '';\n    const rn = config.rnConfig || {};\n    if (initPath) {\n        initRoute = handleUrl(initPath).pageName;\n    }\n    else if (rn === null || rn === void 0 ? void 0 : rn.initialRouteName) {\n        initRoute = camelCase(rn.initialRouteName);\n    }\n    else {\n        initRoute = config.pages[0].name;\n    }\n    return initRoute;\n}\nfunction getInitTabRoute(config) {\n    const pageList = config.pages;\n    const tabNames = getTabNames(config);\n    const initPath = config.initPath || '';\n    let initTabName = '';\n    if (initPath) { // 优先原生传入的路由\n        const route = handleUrl(initPath).pageName;\n        for (let i = 0; i < tabNames.length; i++) {\n            if (route === tabNames[i]) {\n                initTabName = tabNames[i];\n                break;\n            }\n        }\n    }\n    if (!initTabName) {\n        for (let i = 0; i < pageList.length; i++) {\n            const item = pageList[i];\n            if (tabNames.indexOf(item.name) !== -1) {\n                initTabName = item.name;\n                break;\n            }\n        }\n    }\n    return initTabName;\n}\nfunction getInitParams(config, pageName) {\n    let params = {};\n    const initRouteName = getInitRouteName(config);\n    if (initRouteName === pageName) {\n        const initPath = config.initPath || '';\n        params = handleUrl(initPath).params;\n        params = Object.assign({}, params, config.initParams);\n    }\n    return params;\n}\nfunction createTabStack(config, parentProps) {\n    var _a;\n    const Tab = createBottomTabNavigator();\n    const tabBar = config.tabBar;\n    const rnConfig = config.rnConfig;\n    const tabList = [];\n    const userOptions = (rnConfig === null || rnConfig === void 0 ? void 0 : rnConfig.options) || {};\n    tabBar === null || tabBar === void 0 ? void 0 : tabBar.list.forEach((item, index) => {\n        var _a;\n        const defaultOptions = Object.assign({}, { tabBarVisible: ((_a = config.tabBar) === null || _a === void 0 ? void 0 : _a.custom) ? false : getTabVisible() }, getTabItemOptions(item, index));\n        const tabItemOptions = Object.assign({}, defaultOptions, userOptions);\n        setTabConfig('tabBarVisible', tabItemOptions.tabBarVisible);\n        const path = item.pagePath.startsWith('/') ? item.pagePath : `/${item.pagePath}`;\n        const tabName = camelCase(path);\n        const tabPage = getTabItem(config, tabName);\n        const initParams = getInitParams(config, tabName);\n        const tabNode = React.createElement(Tab.Screen, Object.assign({ key: `tab${tabName}`, name: `${tabPage.name}`, options: tabItemOptions, component: tabPage.component, initialParams: initParams }, parentProps));\n        tabList.push(tabNode);\n    });\n    const userTabBarOptions = (rnConfig === null || rnConfig === void 0 ? void 0 : rnConfig.tabBarOptions) || {};\n    // tabbarOptions\n    const tabBarOptions = Object.assign({\n        backBehavior: 'none',\n        activeTintColor: (tabBar === null || tabBar === void 0 ? void 0 : tabBar.selectedColor) || '#3cc51f',\n        inactiveTintColor: (tabBar === null || tabBar === void 0 ? void 0 : tabBar.color) || '#7A7E83',\n        activeBackgroundColor: (tabBar === null || tabBar === void 0 ? void 0 : tabBar.backgroundColor) || '#ffffff',\n        inactiveBackgroundColor: (tabBar === null || tabBar === void 0 ? void 0 : tabBar.backgroundColor) || '#ffffff',\n        style: (tabBar === null || tabBar === void 0 ? void 0 : tabBar.borderStyle) ? {\n            backgroundColor: tabBar === null || tabBar === void 0 ? void 0 : tabBar.backgroundColor,\n            borderTopColor: ((tabBar === null || tabBar === void 0 ? void 0 : tabBar.borderStyle) === 'black' ? '#000000' : '#ffffff')\n        } : {}\n    }, userTabBarOptions);\n    const tabNames = getTabNames(config);\n    const tabProps = ((_a = config.rnConfig) === null || _a === void 0 ? void 0 : _a.tabProps) || {};\n    const tabInitRouteName = getTabInitRoute() || getInitTabRoute(config) || tabNames[0];\n    return React.createElement(Tab.Navigator, Object.assign(Object.assign({}, tabProps), { tabBarOptions: tabBarOptions, tabBar: (props) => createTabBar(props, userOptions), initialRouteName: tabInitRouteName, children: tabList }), tabList);\n}\nfunction createTabBar(props, userOptions) {\n    return React.createElement(CustomTabBar, Object.assign(Object.assign({}, props), { userOptions }));\n}\nfunction getLinkingConfig(config) {\n    var _a, _b;\n    const prefixes = ((_a = config === null || config === void 0 ? void 0 : config.rnConfig) === null || _a === void 0 ? void 0 : _a.linking) || config.linkPrefix || [];\n    const screens = {};\n    const pageList = getPageList(config);\n    pageList.forEach(item => {\n        const path = item.pagePath.startsWith('/') ? item.pagePath.substr(1) : item.pagePath;\n        screens[`${item.name}`] = path;\n    });\n    let tabScreen = {};\n    if (config.tabBar) {\n        const tabs = {};\n        const tabBarList = ((_b = config.tabBar) === null || _b === void 0 ? void 0 : _b.list) || [];\n        tabBarList.forEach((item) => {\n            const tabPath = item.pagePath.startsWith('/') ? item.pagePath : `/${item.pagePath}`;\n            const tabName = camelCase(tabPath);\n            tabs[`${tabName}`] = tabPath;\n        });\n        tabScreen = {\n            tabNav: {\n                path: '',\n                screens: tabs\n            }\n        };\n    }\n    return {\n        prefixes: prefixes,\n        config: {\n            screens: Object.assign(Object.assign({}, tabScreen), screens)\n        }\n    };\n}\nfunction createTabNavigate(config) {\n    var _a;\n    const screeList = [];\n    const Stack = createStackNavigator();\n    // 第一个页面是tabbar的\n    const tabScreen = React.createElement(Stack.Screen, {\n        name: 'tabNav',\n        key: 'tabScreen',\n        children: (props) => createTabStack(config, props)\n    }, (props) => createTabStack(config, props));\n    screeList.push(tabScreen);\n    const pageList = getPageList(config);\n    pageList.forEach(item => {\n        const initParams = getInitParams(config, item.name);\n        const screenNode = React.createElement(Stack.Screen, {\n            key: `${item.name}`,\n            name: `${item.name}`,\n            component: item.component,\n            initialParams: initParams\n        }, null);\n        screeList.push(screenNode);\n    });\n    const linking = getLinkingConfig(config);\n    const stackProps = (_a = config.rnConfig) === null || _a === void 0 ? void 0 : _a.stackProps;\n    const tabStack = React.createElement(Stack.Navigator, Object.assign(Object.assign({}, stackProps), { screenOptions: () => {\n            const options = getCurrentOptions();\n            const defaultOptions = getStackOptions(config);\n            return Object.assign({}, defaultOptions, options);\n        }, initialRouteName: getInitRouteName(config), children: screeList }), screeList);\n    return React.createElement(NavigationContainer, { ref: navigationRef, linking: linking, children: tabStack }, tabStack);\n}\nfunction createStackNavigate(config) {\n    var _a;\n    const Stack = createStackNavigator();\n    const pageList = getPageList(config);\n    if (pageList.length <= 0)\n        return null;\n    const screenChild = [];\n    pageList.forEach(item => {\n        const initParams = getInitParams(config, item.name);\n        const screenNode = React.createElement(Stack.Screen, {\n            key: `${item.name}`,\n            name: `${item.name}`,\n            component: item.component,\n            initialParams: initParams\n        }, null);\n        screenChild.push(screenNode);\n    });\n    const linking = getLinkingConfig(config);\n    const stackProps = (_a = config.rnConfig) === null || _a === void 0 ? void 0 : _a.stackProps;\n    const stackNav = React.createElement(Stack.Navigator, Object.assign(Object.assign({}, stackProps), { screenOptions: getStackOptions(config), children: screenChild, initialRouteName: getInitRouteName(config) }), screenChild);\n    return React.createElement(NavigationContainer, { ref: navigationRef, linking: linking, children: stackNav }, stackNav);\n}\nfunction getCurrentOptions() {\n    var _a, _b, _c;\n    const options = ((_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.getCurrentOptions()) || {};\n    const params = ((_c = (_b = navigationRef.current) === null || _b === void 0 ? void 0 : _b.getCurrentRoute()) === null || _c === void 0 ? void 0 : _c.params) || {};\n    const navParams = (params === null || params === void 0 ? void 0 : params.navigateConfig) || {};\n    return Object.assign({}, options, navParams);\n}\n//# sourceMappingURL=router.js.map","export * from '@react-navigation/core';\n\nexport { default as NavigationContainer } from './NavigationContainer';\n\nexport { default as useBackButton } from './useBackButton';\nexport { default as useScrollToTop } from './useScrollToTop';\n\nexport { default as DefaultTheme } from './theming/DefaultTheme';\nexport { default as DarkTheme } from './theming/DarkTheme';\nexport { default as ThemeProvider } from './theming/ThemeProvider';\nexport { default as useTheme } from './theming/useTheme';\n\nexport { default as Link } from './Link';\nexport { default as useLinking } from './useLinking';\nexport { default as useLinkTo } from './useLinkTo';\nexport { default as useLinkProps } from './useLinkProps';\nexport { default as useLinkBuilder } from './useLinkBuilder';\n\nexport { default as ServerContainer } from './ServerContainer';\n\nexport * from './types';\n","export * from '@react-navigation/routers';\n\nexport { default as BaseNavigationContainer } from './BaseNavigationContainer';\nexport { default as createNavigatorFactory } from './createNavigatorFactory';\n\nexport { default as NavigationHelpersContext } from './NavigationHelpersContext';\nexport { default as NavigationContext } from './NavigationContext';\nexport { default as NavigationRouteContext } from './NavigationRouteContext';\n\nexport { default as CurrentRenderContext } from './CurrentRenderContext';\n\nexport { default as useNavigationBuilder } from './useNavigationBuilder';\nexport { default as useNavigation } from './useNavigation';\nexport { default as useRoute } from './useRoute';\nexport { default as useFocusEffect } from './useFocusEffect';\nexport { default as useIsFocused } from './useIsFocused';\nexport { default as useNavigationState } from './useNavigationState';\n\nexport { default as getStateFromPath } from './getStateFromPath';\nexport { default as getPathFromState } from './getPathFromState';\nexport { default as getActionFromState } from './getActionFromState';\n\nexport { default as getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';\n\nexport * from './types';\n","import * as CommonActions from './CommonActions';\n\nexport { CommonActions };\n\nexport { default as BaseRouter } from './BaseRouter';\n\nexport { default as StackRouter, StackActions } from './StackRouter';\n\nexport type {\n  StackActionHelpers,\n  StackActionType,\n  StackRouterOptions,\n  StackNavigationState,\n} from './StackRouter';\n\nexport { default as TabRouter, TabActions } from './TabRouter';\n\nexport type {\n  TabActionHelpers,\n  TabActionType,\n  TabRouterOptions,\n  TabNavigationState,\n} from './TabRouter';\n\nexport { default as DrawerRouter, DrawerActions } from './DrawerRouter';\n\nexport type {\n  DrawerActionHelpers,\n  DrawerActionType,\n  DrawerRouterOptions,\n  DrawerNavigationState,\n} from './DrawerRouter';\n\nexport * from './types';\n","import type { NavigationState, PartialState, Route } from './types';\n\ntype ResetState =\n  | PartialState<NavigationState>\n  | NavigationState\n  | (Omit<NavigationState, 'routes'> & {\n      routes: Omit<Route<string>, 'key'>[];\n    });\n\nexport type Action =\n  | {\n      type: 'GO_BACK';\n      source?: string;\n      target?: string;\n    }\n  | {\n      type: 'NAVIGATE';\n      payload:\n        | { key: string; name?: undefined; params?: object; merge?: boolean }\n        | { name: string; key?: string; params?: object; merge?: boolean };\n      source?: string;\n      target?: string;\n    }\n  | {\n      type: 'RESET';\n      payload: ResetState | undefined;\n      source?: string;\n      target?: string;\n    }\n  | {\n      type: 'SET_PARAMS';\n      payload: { params?: object };\n      source?: string;\n      target?: string;\n    };\n\nexport function goBack(): Action {\n  return { type: 'GO_BACK' };\n}\n\nexport function navigate(\n  route:\n    | { key: string; params?: object }\n    | { name: string; key?: string; params?: object }\n): Action;\n// eslint-disable-next-line no-redeclare\nexport function navigate(name: string, params?: object): Action;\n// eslint-disable-next-line no-redeclare\nexport function navigate(...args: any): Action {\n  if (typeof args[0] === 'string') {\n    return { type: 'NAVIGATE', payload: { name: args[0], params: args[1] } };\n  } else {\n    const payload = args[0] || {};\n\n    if (!payload.hasOwnProperty('key') && !payload.hasOwnProperty('name')) {\n      throw new Error(\n        'You need to specify name or key when calling navigate with an object as the argument. See https://reactnavigation.org/docs/5.x/navigation-actions#navigate for usage.'\n      );\n    }\n\n    return { type: 'NAVIGATE', payload };\n  }\n}\n\nexport function reset(state: ResetState | undefined): Action {\n  return { type: 'RESET', payload: state };\n}\n\nexport function setParams(params: object): Action {\n  return { type: 'SET_PARAMS', payload: { params } };\n}\n","import { nanoid } from 'nanoid/non-secure';\nimport type {\n  CommonNavigationAction,\n  NavigationState,\n  PartialState,\n} from './types';\n\n/**\n * Base router object that can be used when writing custom routers.\n * This provides few helper methods to handle common actions such as `RESET`.\n */\nconst BaseRouter = {\n  getStateForAction<State extends NavigationState>(\n    state: State,\n    action: CommonNavigationAction\n  ): State | PartialState<State> | null {\n    switch (action.type) {\n      case 'SET_PARAMS': {\n        const index = action.source\n          ? state.routes.findIndex((r) => r.key === action.source)\n          : state.index;\n\n        if (index === -1) {\n          return null;\n        }\n\n        return {\n          ...state,\n          routes: state.routes.map((r, i) =>\n            i === index\n              ? { ...r, params: { ...r.params, ...action.payload.params } }\n              : r\n          ),\n        };\n      }\n\n      case 'RESET': {\n        const nextState = action.payload as State | PartialState<State>;\n\n        if (\n          nextState.routes.length === 0 ||\n          nextState.routes.some(\n            (route: { name: string }) => !state.routeNames.includes(route.name)\n          )\n        ) {\n          return null;\n        }\n\n        if (nextState.stale === false) {\n          if (\n            state.routeNames.length !== nextState.routeNames.length ||\n            nextState.routeNames.some(\n              (name) => !state.routeNames.includes(name)\n            )\n          ) {\n            return null;\n          }\n\n          return {\n            ...nextState,\n            routes: nextState.routes.map((route) =>\n              route.key ? route : { ...route, key: `${route.name}-${nanoid()}` }\n            ),\n          };\n        }\n\n        return nextState;\n      }\n\n      default:\n        return null;\n    }\n  },\n\n  shouldActionChangeFocus(action: CommonNavigationAction) {\n    return action.type === 'NAVIGATE';\n  },\n};\n\nexport default BaseRouter;\n","// This alphabet uses `A-Za-z0-9_-` symbols. The genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nlet urlAlphabet =\n  'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\n\nlet customAlphabet = (alphabet, size) => {\n  return () => {\n    let id = ''\n    // A compact alternative for `for (var i = 0; i < step; i++)`.\n    let i = size\n    while (i--) {\n      // `| 0` is more compact and faster than `Math.floor()`.\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\n\nlet nanoid = (size = 21) => {\n  let id = ''\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\n\nexport { nanoid, customAlphabet }\n","import { nanoid } from 'nanoid/non-secure';\nimport BaseRouter from './BaseRouter';\nimport type {\n  NavigationState,\n  CommonNavigationAction,\n  Router,\n  DefaultRouterOptions,\n  Route,\n  ParamListBase,\n} from './types';\n\nexport type StackActionType =\n  | {\n      type: 'REPLACE';\n      payload: { name: string; key?: string | undefined; params?: object };\n      source?: string;\n      target?: string;\n    }\n  | {\n      type: 'PUSH';\n      payload: { name: string; key?: string | undefined; params?: object };\n      source?: string;\n      target?: string;\n    }\n  | {\n      type: 'POP';\n      payload: { count: number };\n      source?: string;\n      target?: string;\n    }\n  | {\n      type: 'POP_TO_TOP';\n      source?: string;\n      target?: string;\n    };\n\nexport type StackRouterOptions = DefaultRouterOptions;\n\nexport type StackNavigationState<\n  ParamList extends ParamListBase\n> = NavigationState<ParamList> & {\n  /**\n   * Type of the router, in this case, it's stack.\n   */\n  type: 'stack';\n};\n\nexport type StackActionHelpers<ParamList extends ParamListBase> = {\n  /**\n   * Replace the current route with a new one.\n   *\n   * @param name Route name of the new route.\n   * @param [params] Params object for the new route.\n   */\n  replace<RouteName extends keyof ParamList>(\n    ...args: undefined extends ParamList[RouteName]\n      ? [RouteName] | [RouteName, ParamList[RouteName]]\n      : [RouteName, ParamList[RouteName]]\n  ): void;\n\n  /**\n   * Push a new screen onto the stack.\n   *\n   * @param name Name of the route for the tab.\n   * @param [params] Params object for the route.\n   */\n  push<RouteName extends keyof ParamList>(\n    ...args: undefined extends ParamList[RouteName]\n      ? [RouteName] | [RouteName, ParamList[RouteName]]\n      : [RouteName, ParamList[RouteName]]\n  ): void;\n\n  /**\n   * Pop a screen from the stack.\n   */\n  pop(count?: number): void;\n\n  /**\n   * Pop to the first route in the stack, dismissing all other screens.\n   */\n  popToTop(): void;\n};\n\nexport const StackActions = {\n  replace(name: string, params?: object): StackActionType {\n    return { type: 'REPLACE', payload: { name, params } };\n  },\n  push(name: string, params?: object): StackActionType {\n    return { type: 'PUSH', payload: { name, params } };\n  },\n  pop(count: number = 1): StackActionType {\n    return { type: 'POP', payload: { count } };\n  },\n  popToTop(): StackActionType {\n    return { type: 'POP_TO_TOP' };\n  },\n};\n\nexport default function StackRouter(options: StackRouterOptions) {\n  const router: Router<\n    StackNavigationState<ParamListBase>,\n    CommonNavigationAction | StackActionType\n  > = {\n    ...BaseRouter,\n\n    type: 'stack',\n\n    getInitialState({ routeNames, routeParamList }) {\n      const initialRouteName =\n        options.initialRouteName !== undefined &&\n        routeNames.includes(options.initialRouteName)\n          ? options.initialRouteName\n          : routeNames[0];\n\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: 0,\n        routeNames,\n        routes: [\n          {\n            key: `${initialRouteName}-${nanoid()}`,\n            name: initialRouteName,\n            params: routeParamList[initialRouteName],\n          },\n        ],\n      };\n    },\n\n    getRehydratedState(partialState, { routeNames, routeParamList }) {\n      let state = partialState;\n\n      if (state.stale === false) {\n        return state;\n      }\n\n      const routes = state.routes\n        .filter((route) => routeNames.includes(route.name))\n        .map(\n          (route) =>\n            ({\n              ...route,\n              key: route.key || `${route.name}-${nanoid()}`,\n              params:\n                routeParamList[route.name] !== undefined\n                  ? {\n                      ...routeParamList[route.name],\n                      ...route.params,\n                    }\n                  : route.params,\n            } as Route<string>)\n        );\n\n      if (routes.length === 0) {\n        const initialRouteName =\n          options.initialRouteName !== undefined\n            ? options.initialRouteName\n            : routeNames[0];\n\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName],\n        });\n      }\n\n      return {\n        stale: false,\n        type: 'stack',\n        key: `stack-${nanoid()}`,\n        index: routes.length - 1,\n        routeNames,\n        routes,\n      };\n    },\n\n    getStateForRouteNamesChange(state, { routeNames, routeParamList }) {\n      const routes = state.routes.filter((route) =>\n        routeNames.includes(route.name)\n      );\n\n      if (routes.length === 0) {\n        const initialRouteName =\n          options.initialRouteName !== undefined &&\n          routeNames.includes(options.initialRouteName)\n            ? options.initialRouteName\n            : routeNames[0];\n\n        routes.push({\n          key: `${initialRouteName}-${nanoid()}`,\n          name: initialRouteName,\n          params: routeParamList[initialRouteName],\n        });\n      }\n\n      return {\n        ...state,\n        routeNames,\n        routes,\n        index: Math.min(state.index, routes.length - 1),\n      };\n    },\n\n    getStateForRouteFocus(state, key) {\n      const index = state.routes.findIndex((r) => r.key === key);\n\n      if (index === -1 || index === state.index) {\n        return state;\n      }\n\n      return {\n        ...state,\n        index,\n        routes: state.routes.slice(0, index + 1),\n      };\n    },\n\n    getStateForAction(state, action, options) {\n      const { routeParamList } = options;\n\n      switch (action.type) {\n        case 'REPLACE': {\n          const index =\n            action.target === state.key && action.source\n              ? state.routes.findIndex((r) => r.key === action.source)\n              : state.index;\n\n          if (index === -1) {\n            return null;\n          }\n\n          const { name, key, params } = action.payload;\n\n          if (!state.routeNames.includes(name)) {\n            return null;\n          }\n\n          return {\n            ...state,\n            routes: state.routes.map((route, i) =>\n              i === index\n                ? {\n                    key: key !== undefined ? key : `${name}-${nanoid()}`,\n                    name,\n                    params:\n                      routeParamList[name] !== undefined\n                        ? {\n                            ...routeParamList[name],\n                            ...params,\n                          }\n                        : params,\n                  }\n                : route\n            ),\n          };\n        }\n\n        case 'PUSH':\n          if (state.routeNames.includes(action.payload.name)) {\n            const getId = options.routeGetIdList[action.payload.name];\n            const id = getId?.({ params: action.payload.params });\n\n            const route =\n              action.payload.name && action.payload.key\n                ? state.routes.find(\n                    (route) =>\n                      route.name === action.payload.name &&\n                      route.key === action.payload.key\n                  )\n                : id\n                ? state.routes.find(\n                    (route) =>\n                      route.name === action.payload.name &&\n                      id === getId?.({ params: route.params })\n                  )\n                : undefined;\n\n            let routes: Route<string>[];\n\n            if (route) {\n              routes = state.routes.filter((r) => r.key !== route.key);\n              routes.push({\n                ...route,\n                params:\n                  action.payload.params !== undefined\n                    ? {\n                        ...route.params,\n                        ...action.payload.params,\n                      }\n                    : route.params,\n              });\n            } else {\n              routes = [\n                ...state.routes,\n                {\n                  key:\n                    action.payload.key ?? `${action.payload.name}-${nanoid()}`,\n                  name: action.payload.name,\n                  params:\n                    routeParamList[action.payload.name] !== undefined\n                      ? {\n                          ...routeParamList[action.payload.name],\n                          ...action.payload.params,\n                        }\n                      : action.payload.params,\n                },\n              ];\n            }\n\n            return {\n              ...state,\n              index: routes.length - 1,\n              routes,\n            };\n          }\n\n          return null;\n\n        case 'POP': {\n          const index =\n            action.target === state.key && action.source\n              ? state.routes.findIndex((r) => r.key === action.source)\n              : state.index;\n\n          if (index > 0) {\n            const count = Math.max(index - action.payload.count + 1, 1);\n            const routes = state.routes\n              .slice(0, count)\n              .concat(state.routes.slice(index + 1));\n\n            return {\n              ...state,\n              index: routes.length - 1,\n              routes,\n            };\n          }\n\n          return null;\n        }\n\n        case 'POP_TO_TOP':\n          return router.getStateForAction(\n            state,\n            {\n              type: 'POP',\n              payload: { count: state.routes.length - 1 },\n            },\n            options\n          );\n\n        case 'NAVIGATE':\n          if (\n            action.payload.name !== undefined &&\n            !state.routeNames.includes(action.payload.name)\n          ) {\n            return null;\n          }\n\n          if (action.payload.key || action.payload.name) {\n            // If the route already exists, navigate to that\n            let index = -1;\n\n            const getId =\n              // `getId` and `key` can't be used together\n              action.payload.key === undefined &&\n              action.payload.name !== undefined\n                ? options.routeGetIdList[action.payload.name]\n                : undefined;\n            const id = getId?.({ params: action.payload.params });\n\n            if (id) {\n              index = state.routes.findIndex(\n                (route) =>\n                  route.name === action.payload.name &&\n                  id === getId?.({ params: route.params })\n              );\n            } else if (\n              (state.routes[state.index].name === action.payload.name &&\n                action.payload.key === undefined) ||\n              state.routes[state.index].key === action.payload.key\n            ) {\n              index = state.index;\n            } else {\n              for (let i = state.routes.length - 1; i >= 0; i--) {\n                if (\n                  (state.routes[i].name === action.payload.name &&\n                    action.payload.key === undefined) ||\n                  state.routes[i].key === action.payload.key\n                ) {\n                  index = i;\n                  break;\n                }\n              }\n            }\n\n            if (\n              index === -1 &&\n              action.payload.key &&\n              action.payload.name === undefined\n            ) {\n              return null;\n            }\n\n            if (index === -1 && action.payload.name !== undefined) {\n              const routes = [\n                ...state.routes,\n                {\n                  key:\n                    action.payload.key ?? `${action.payload.name}-${nanoid()}`,\n                  name: action.payload.name,\n                  params:\n                    routeParamList[action.payload.name] !== undefined\n                      ? {\n                          ...routeParamList[action.payload.name],\n                          ...action.payload.params,\n                        }\n                      : action.payload.params,\n                },\n              ];\n\n              return {\n                ...state,\n                routes,\n                index: routes.length - 1,\n              };\n            }\n\n            const route = state.routes[index];\n\n            let params;\n\n            if (action.payload.merge === false) {\n              params =\n                routeParamList[route.name] !== undefined\n                  ? {\n                      ...routeParamList[route.name],\n                      ...action.payload.params,\n                    }\n                  : action.payload.params;\n            } else {\n              params = action.payload.params\n                ? {\n                    ...route.params,\n                    ...action.payload.params,\n                  }\n                : route.params;\n            }\n\n            return {\n              ...state,\n              index,\n              routes: [\n                ...state.routes.slice(0, index),\n                params !== route.params\n                  ? { ...route, params }\n                  : state.routes[index],\n              ],\n            };\n          }\n\n          return null;\n\n        case 'GO_BACK':\n          if (state.index > 0) {\n            return router.getStateForAction(\n              state,\n              {\n                type: 'POP',\n                payload: { count: 1 },\n                target: action.target,\n                source: action.source,\n              },\n              options\n            );\n          }\n\n          return null;\n\n        default:\n          return BaseRouter.getStateForAction(state, action);\n      }\n    },\n\n    actionCreators: StackActions,\n  };\n\n  return router;\n}\n","import { nanoid } from 'nanoid/non-secure';\nimport BaseRouter from './BaseRouter';\nimport type {\n  NavigationState,\n  PartialState,\n  CommonNavigationAction,\n  Router,\n  DefaultRouterOptions,\n  Route,\n  ParamListBase,\n} from './types';\n\nexport type TabActionType = {\n  type: 'JUMP_TO';\n  payload: { name: string; params?: object };\n  source?: string;\n  target?: string;\n};\n\nexport type BackBehavior =\n  | 'initialRoute'\n  | 'firstRoute'\n  | 'history'\n  | 'order'\n  | 'none';\n\nexport type TabRouterOptions = DefaultRouterOptions & {\n  backBehavior?: BackBehavior;\n};\n\nexport type TabNavigationState<ParamList extends ParamListBase> = Omit<\n  NavigationState<ParamList>,\n  'history'\n> & {\n  /**\n   * Type of the router, in this case, it's tab.\n   */\n  type: 'tab';\n  /**\n   * List of previously visited route keys.\n   */\n  history: { type: 'route'; key: string }[];\n};\n\nexport type TabActionHelpers<ParamList extends ParamListBase> = {\n  /**\n   * Jump to an existing tab.\n   *\n   * @param name Name of the route for the tab.\n   * @param [params] Params object for the route.\n   */\n  jumpTo<RouteName extends Extract<keyof ParamList, string>>(\n    ...args: undefined extends ParamList[RouteName]\n      ? [RouteName] | [RouteName, ParamList[RouteName]]\n      : [RouteName, ParamList[RouteName]]\n  ): void;\n};\n\nconst TYPE_ROUTE = 'route' as const;\n\nexport const TabActions = {\n  jumpTo(name: string, params?: object): TabActionType {\n    return { type: 'JUMP_TO', payload: { name, params } };\n  },\n};\n\nconst getRouteHistory = (\n  routes: Route<string>[],\n  index: number,\n  backBehavior: BackBehavior,\n  initialRouteName: string | undefined\n) => {\n  const history = [{ type: TYPE_ROUTE, key: routes[index].key }];\n  let initialRouteIndex;\n\n  switch (backBehavior) {\n    case 'order':\n      for (let i = index; i > 0; i--) {\n        history.unshift({ type: TYPE_ROUTE, key: routes[i - 1].key });\n      }\n      break;\n    case 'firstRoute':\n      if (index !== 0) {\n        history.unshift({\n          type: TYPE_ROUTE,\n          key: routes[0].key,\n        });\n      }\n      break;\n    case 'initialRoute':\n      initialRouteIndex = routes.findIndex(\n        (route) => route.name === initialRouteName\n      );\n      initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;\n\n      if (index !== initialRouteIndex) {\n        history.unshift({\n          type: TYPE_ROUTE,\n          key: routes[initialRouteIndex].key,\n        });\n      }\n      break;\n    case 'history':\n      // The history will fill up on navigation\n      break;\n  }\n\n  return history;\n};\n\nconst changeIndex = (\n  state: TabNavigationState<ParamListBase>,\n  index: number,\n  backBehavior: BackBehavior,\n  initialRouteName: string | undefined\n) => {\n  let history;\n\n  if (backBehavior === 'history') {\n    const currentKey = state.routes[index].key;\n\n    history = state.history\n      .filter((it) => (it.type === 'route' ? it.key !== currentKey : false))\n      .concat({ type: TYPE_ROUTE, key: currentKey });\n  } else {\n    history = getRouteHistory(\n      state.routes,\n      index,\n      backBehavior,\n      initialRouteName\n    );\n  }\n\n  return {\n    ...state,\n    index,\n    history,\n  };\n};\n\nexport default function TabRouter({\n  initialRouteName,\n  backBehavior = 'history',\n}: TabRouterOptions) {\n  const router: Router<\n    TabNavigationState<ParamListBase>,\n    TabActionType | CommonNavigationAction\n  > = {\n    ...BaseRouter,\n\n    type: 'tab',\n\n    getInitialState({ routeNames, routeParamList }) {\n      const index =\n        initialRouteName !== undefined && routeNames.includes(initialRouteName)\n          ? routeNames.indexOf(initialRouteName)\n          : 0;\n\n      const routes = routeNames.map((name) => ({\n        name,\n        key: `${name}-${nanoid()}`,\n        params: routeParamList[name],\n      }));\n\n      const history = getRouteHistory(\n        routes,\n        index,\n        backBehavior,\n        initialRouteName\n      );\n\n      return {\n        stale: false,\n        type: 'tab',\n        key: `tab-${nanoid()}`,\n        index,\n        routeNames,\n        history,\n        routes,\n      };\n    },\n\n    getRehydratedState(partialState, { routeNames, routeParamList }) {\n      let state = partialState;\n\n      if (state.stale === false) {\n        return state;\n      }\n\n      const routes = routeNames.map((name) => {\n        const route = (state as PartialState<\n          TabNavigationState<ParamListBase>\n        >).routes.find((r) => r.name === name);\n\n        return {\n          ...route,\n          name,\n          key:\n            route && route.name === name && route.key\n              ? route.key\n              : `${name}-${nanoid()}`,\n          params:\n            routeParamList[name] !== undefined\n              ? {\n                  ...routeParamList[name],\n                  ...(route ? route.params : undefined),\n                }\n              : route\n              ? route.params\n              : undefined,\n        } as Route<string>;\n      });\n\n      const index = Math.min(\n        Math.max(routeNames.indexOf(state.routes[state?.index ?? 0]?.name), 0),\n        routes.length - 1\n      );\n\n      const history =\n        state.history?.filter((it) => routes.find((r) => r.key === it.key)) ??\n        [];\n\n      return changeIndex(\n        {\n          stale: false,\n          type: 'tab',\n          key: `tab-${nanoid()}`,\n          index,\n          routeNames,\n          history,\n          routes,\n        },\n        index,\n        backBehavior,\n        initialRouteName\n      );\n    },\n\n    getStateForRouteNamesChange(state, { routeNames, routeParamList }) {\n      const routes = routeNames.map(\n        (name) =>\n          state.routes.find((r) => r.name === name) || {\n            name,\n            key: `${name}-${nanoid()}`,\n            params: routeParamList[name],\n          }\n      );\n\n      const index = Math.max(\n        0,\n        routeNames.indexOf(state.routes[state.index].name)\n      );\n\n      let history = state.history.filter(\n        // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)\n        (it) => it.type !== 'route' || routes.find((r) => r.key === it.key)\n      );\n\n      if (!history.length) {\n        history = getRouteHistory(\n          routes,\n          index,\n          backBehavior,\n          initialRouteName\n        );\n      }\n\n      return {\n        ...state,\n        history,\n        routeNames,\n        routes,\n        index,\n      };\n    },\n\n    getStateForRouteFocus(state, key) {\n      const index = state.routes.findIndex((r) => r.key === key);\n\n      if (index === -1 || index === state.index) {\n        return state;\n      }\n\n      return changeIndex(state, index, backBehavior, initialRouteName);\n    },\n\n    getStateForAction(state, action, { routeParamList }) {\n      switch (action.type) {\n        case 'JUMP_TO':\n        case 'NAVIGATE': {\n          let index = -1;\n\n          if (action.type === 'NAVIGATE' && action.payload.key) {\n            index = state.routes.findIndex(\n              (route) => route.key === action.payload.key\n            );\n          } else {\n            index = state.routes.findIndex(\n              (route) => route.name === action.payload.name\n            );\n          }\n\n          if (index === -1) {\n            return null;\n          }\n\n          return changeIndex(\n            {\n              ...state,\n              routes:\n                action.payload.params !== undefined\n                  ? state.routes.map((route, i) => {\n                      if (i !== index) {\n                        return route;\n                      }\n\n                      let params;\n\n                      if (\n                        action.type === 'NAVIGATE' &&\n                        action.payload.merge === false\n                      ) {\n                        params =\n                          routeParamList[route.name] !== undefined\n                            ? {\n                                ...routeParamList[route.name],\n                                ...action.payload.params,\n                              }\n                            : action.payload.params;\n                      } else {\n                        params = action.payload.params\n                          ? {\n                              ...route.params,\n                              ...action.payload.params,\n                            }\n                          : route.params;\n                      }\n\n                      return params !== route.params\n                        ? { ...route, params }\n                        : route;\n                    })\n                  : state.routes,\n            },\n            index,\n            backBehavior,\n            initialRouteName\n          );\n        }\n\n        case 'GO_BACK': {\n          if (state.history.length === 1) {\n            return null;\n          }\n\n          const previousKey = state.history[state.history.length - 2].key;\n          const index = state.routes.findIndex(\n            (route) => route.key === previousKey\n          );\n\n          if (index === -1) {\n            return null;\n          }\n\n          return {\n            ...state,\n            history: state.history.slice(0, -1),\n            index,\n          };\n        }\n\n        default:\n          return BaseRouter.getStateForAction(state, action);\n      }\n    },\n\n    shouldActionChangeFocus(action) {\n      return action.type === 'NAVIGATE';\n    },\n\n    actionCreators: TabActions,\n  };\n\n  return router;\n}\n","import { nanoid } from 'nanoid/non-secure';\nimport type {\n  PartialState,\n  CommonNavigationAction,\n  Router,\n  ParamListBase,\n} from './types';\nimport TabRouter, {\n  TabActions,\n  TabActionType,\n  TabRouterOptions,\n  TabNavigationState,\n  TabActionHelpers,\n} from './TabRouter';\n\nexport type DrawerActionType =\n  | TabActionType\n  | {\n      type: 'OPEN_DRAWER' | 'CLOSE_DRAWER' | 'TOGGLE_DRAWER';\n      source?: string;\n      target?: string;\n    };\n\nexport type DrawerRouterOptions = TabRouterOptions & {\n  openByDefault?: boolean;\n};\n\nexport type DrawerNavigationState<ParamList extends ParamListBase> = Omit<\n  TabNavigationState<ParamList>,\n  'type' | 'history'\n> & {\n  /**\n   * Type of the router, in this case, it's drawer.\n   */\n  type: 'drawer';\n  /**\n   * List of previously visited route keys and drawer open status.\n   */\n  history: ({ type: 'route'; key: string } | { type: 'drawer' })[];\n};\n\nexport type DrawerActionHelpers<\n  ParamList extends ParamListBase\n> = TabActionHelpers<ParamList> & {\n  /**\n   * Open the drawer sidebar.\n   */\n  openDrawer(): void;\n\n  /**\n   * Close the drawer sidebar.\n   */\n  closeDrawer(): void;\n\n  /**\n   * Open the drawer sidebar if closed, or close if opened.\n   */\n  toggleDrawer(): void;\n};\n\nexport const DrawerActions = {\n  ...TabActions,\n  openDrawer(): DrawerActionType {\n    return { type: 'OPEN_DRAWER' };\n  },\n  closeDrawer(): DrawerActionType {\n    return { type: 'CLOSE_DRAWER' };\n  },\n  toggleDrawer(): DrawerActionType {\n    return { type: 'TOGGLE_DRAWER' };\n  },\n};\n\nconst isDrawerOpen = (\n  state:\n    | DrawerNavigationState<ParamListBase>\n    | PartialState<DrawerNavigationState<ParamListBase>>\n) => Boolean(state.history?.some((it) => it.type === 'drawer'));\n\nconst openDrawer = (\n  state: DrawerNavigationState<ParamListBase>\n): DrawerNavigationState<ParamListBase> => {\n  if (isDrawerOpen(state)) {\n    return state;\n  }\n\n  return {\n    ...state,\n    history: [...state.history, { type: 'drawer' }],\n  };\n};\n\nconst closeDrawer = (\n  state: DrawerNavigationState<ParamListBase>\n): DrawerNavigationState<ParamListBase> => {\n  if (!isDrawerOpen(state)) {\n    return state;\n  }\n\n  return {\n    ...state,\n    history: state.history.filter((it) => it.type !== 'drawer'),\n  };\n};\n\nexport default function DrawerRouter({\n  openByDefault,\n  ...rest\n}: DrawerRouterOptions): Router<\n  DrawerNavigationState<ParamListBase>,\n  DrawerActionType | CommonNavigationAction\n> {\n  const router = (TabRouter(rest) as unknown) as Router<\n    DrawerNavigationState<ParamListBase>,\n    TabActionType | CommonNavigationAction\n  >;\n\n  return {\n    ...router,\n\n    type: 'drawer',\n\n    getInitialState({ routeNames, routeParamList, routeGetIdList }) {\n      let state = router.getInitialState({\n        routeNames,\n        routeParamList,\n        routeGetIdList,\n      });\n\n      if (openByDefault) {\n        state = openDrawer(state);\n      }\n\n      return {\n        ...state,\n        stale: false,\n        type: 'drawer',\n        key: `drawer-${nanoid()}`,\n      };\n    },\n\n    getRehydratedState(\n      partialState,\n      { routeNames, routeParamList, routeGetIdList }\n    ) {\n      if (partialState.stale === false) {\n        return partialState;\n      }\n\n      let state = router.getRehydratedState(partialState, {\n        routeNames,\n        routeParamList,\n        routeGetIdList,\n      });\n\n      if (partialState.history ? isDrawerOpen(partialState) : openByDefault) {\n        state = openDrawer(state);\n      }\n\n      return {\n        ...state,\n        type: 'drawer',\n        key: `drawer-${nanoid()}`,\n      };\n    },\n\n    getStateForRouteFocus(state, key) {\n      const result = router.getStateForRouteFocus(state, key);\n\n      if (openByDefault) {\n        return openDrawer(result);\n      }\n\n      return closeDrawer(result);\n    },\n\n    getStateForAction(state, action, options) {\n      switch (action.type) {\n        case 'OPEN_DRAWER':\n          return openDrawer(state);\n\n        case 'CLOSE_DRAWER':\n          return closeDrawer(state);\n\n        case 'TOGGLE_DRAWER':\n          if (isDrawerOpen(state)) {\n            return closeDrawer(state);\n          }\n\n          return openDrawer(state);\n\n        case 'GO_BACK':\n          if (openByDefault) {\n            if (!isDrawerOpen(state)) {\n              return openDrawer(state);\n            }\n          } else {\n            if (isDrawerOpen(state)) {\n              return closeDrawer(state);\n            }\n          }\n\n          return router.getStateForAction(state, action, options);\n\n        default:\n          return router.getStateForAction(state, action, options);\n      }\n    },\n\n    actionCreators: DrawerActions,\n  };\n}\n","import type * as CommonActions from './CommonActions';\n\nexport type CommonNavigationAction = CommonActions.Action;\n\ntype NavigationRoute<\n  ParamList extends ParamListBase,\n  RouteName extends keyof ParamList\n> = Route<Extract<RouteName, string>, ParamList[RouteName]> & {\n  state?: NavigationState | PartialState<NavigationState>;\n};\n\nexport type NavigationState<\n  ParamList extends ParamListBase = ParamListBase\n> = Readonly<{\n  /**\n   * Unique key for the navigation state.\n   */\n  key: string;\n  /**\n   * Index of the currently focused route.\n   */\n  index: number;\n  /**\n   * List of valid route names as defined in the screen components.\n   */\n  routeNames: Extract<keyof ParamList, string>[];\n  /**\n   * Alternative entries for history.\n   */\n  history?: unknown[];\n  /**\n   * List of rendered routes.\n   */\n  routes: NavigationRoute<ParamList, keyof ParamList>[];\n  /**\n   * Custom type for the state, whether it's for tab, stack, drawer etc.\n   * During rehydration, the state will be discarded if type doesn't match with router type.\n   * It can also be used to detect the type of the navigator we're dealing with.\n   */\n  type: string;\n  /**\n   * Whether the navigation state has been rehydrated.\n   */\n  stale: false;\n}>;\n\nexport type InitialState = Readonly<\n  Partial<Omit<NavigationState, 'stale' | 'routes'>> & {\n    routes: (Omit<Route<string>, 'key'> & { state?: InitialState })[];\n  }\n>;\n\nexport type PartialRoute<R extends Route<string>> = Omit<R, 'key'> & {\n  key?: string;\n  state?: PartialState<NavigationState>;\n};\n\nexport type PartialState<State extends NavigationState> = Partial<\n  Omit<State, 'stale' | 'routes'>\n> &\n  Readonly<{\n    stale?: true;\n    routes: PartialRoute<Route<State['routeNames'][number]>>[];\n  }>;\n\nexport type Route<\n  RouteName extends string,\n  Params extends object | undefined = object | undefined\n> = Readonly<{\n  /**\n   * Unique key for the route.\n   */\n  key: string;\n  /**\n   * User-provided name for the route.\n   */\n  name: RouteName;\n}> &\n  (undefined extends Params\n    ? Readonly<{\n        /**\n         * Params for this route\n         */\n        params?: Readonly<Params>;\n      }>\n    : Readonly<{\n        /**\n         * Params for this route\n         */\n        params: Readonly<Params>;\n      }>);\n\nexport type ParamListBase = Record<string, object | undefined>;\n\nexport type NavigationAction = Readonly<{\n  /**\n   * Type of the action (e.g. `NAVIGATE`)\n   */\n  type: string;\n  /**\n   * Additional data for the action\n   */\n  payload?: object;\n  /**\n   * Key of the route which dispatched this action.\n   */\n  source?: string;\n  /**\n   * Key of the navigator which should handle this action.\n   */\n  target?: string;\n}>;\n\nexport type ActionCreators<Action extends NavigationAction> = {\n  [key: string]: (...args: any) => Action;\n};\n\nexport type DefaultRouterOptions<RouteName extends string = string> = {\n  /**\n   * Name of the route to focus by on initial render.\n   * If not specified, usually the first route is used.\n   */\n  initialRouteName?: RouteName;\n};\n\nexport type RouterFactory<\n  State extends NavigationState,\n  Action extends NavigationAction,\n  RouterOptions extends DefaultRouterOptions\n> = (options: RouterOptions) => Router<State, Action>;\n\nexport type RouterConfigOptions = {\n  routeNames: string[];\n  routeParamList: ParamListBase;\n  routeGetIdList: Record<\n    string,\n    | ((options: { params?: Record<string, any> }) => string | undefined)\n    | undefined\n  >;\n};\n\nexport type Router<\n  State extends NavigationState,\n  Action extends NavigationAction\n> = {\n  /**\n   * Type of the router. Should match the `type` property in state.\n   * If the type doesn't match, the state will be discarded during rehydration.\n   */\n  type: State['type'];\n\n  /**\n   * Initialize the navigation state.\n   *\n   * @param options.routeNames List of valid route names as defined in the screen components.\n   * @param options.routeParamsList Object containing params for each route.\n   */\n  getInitialState(options: RouterConfigOptions): State;\n\n  /**\n   * Rehydrate the full navigation state from a given partial state.\n   *\n   * @param partialState Navigation state to rehydrate from.\n   * @param options.routeNames List of valid route names as defined in the screen components.\n   * @param options.routeParamsList Object containing params for each route.\n   */\n  getRehydratedState(\n    partialState: PartialState<State> | State,\n    options: RouterConfigOptions\n  ): State;\n\n  /**\n   * Take the current state and updated list of route names, and return a new state.\n   *\n   * @param state State object to update.\n   * @param options.routeNames New list of route names.\n   * @param options.routeParamsList Object containing params for each route.\n   */\n  getStateForRouteNamesChange(\n    state: State,\n    options: RouterConfigOptions\n  ): State;\n\n  /**\n   * Take the current state and key of a route, and return a new state with the route focused\n   *\n   * @param state State object to apply the action on.\n   * @param key Key of the route to focus.\n   */\n  getStateForRouteFocus(state: State, key: string): State;\n\n  /**\n   * Take the current state and action, and return a new state.\n   * If the action cannot be handled, return `null`.\n   *\n   * @param state State object to apply the action on.\n   * @param action Action object to apply.\n   * @param options.routeNames List of valid route names as defined in the screen components.\n   * @param options.routeParamsList Object containing params for each route.\n   */\n  getStateForAction(\n    state: State,\n    action: Action,\n    options: RouterConfigOptions\n  ): State | PartialState<State> | null;\n\n  /**\n   * Whether the action should also change focus in parent navigator\n   *\n   * @param action Action object to check.\n   */\n  shouldActionChangeFocus(action: NavigationAction): boolean;\n\n  /**\n   * Action creators for the router.\n   */\n  actionCreators?: ActionCreators<Action>;\n};\n","import * as React from 'react';\nimport {\n  CommonActions,\n  Route,\n  NavigationState,\n  InitialState,\n  PartialState,\n  NavigationAction,\n} from '@react-navigation/routers';\nimport EnsureSingleNavigator from './EnsureSingleNavigator';\nimport UnhandledActionContext from './UnhandledActionContext';\nimport NavigationBuilderContext from './NavigationBuilderContext';\nimport NavigationStateContext from './NavigationStateContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport NavigationContext from './NavigationContext';\nimport { ScheduleUpdateContext } from './useScheduleUpdate';\nimport useChildListeners from './useChildListeners';\nimport useKeyedChildListeners from './useKeyedChildListeners';\nimport useOptionsGetters from './useOptionsGetters';\nimport useEventEmitter from './useEventEmitter';\nimport useSyncState from './useSyncState';\nimport checkSerializable from './checkSerializable';\nimport type {\n  NavigationContainerEventMap,\n  NavigationContainerRef,\n  NavigationContainerProps,\n} from './types';\n\ntype State = NavigationState | PartialState<NavigationState> | undefined;\n\nconst NOT_INITIALIZED_ERROR =\n  \"The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/5.x/navigating-without-navigation-prop#handling-initialization for more details.\";\n\nconst serializableWarnings: string[] = [];\n\ntry {\n  /**\n   * Migration instructions for removal of devtools from core\n   */\n  Object.defineProperty(\n    global,\n    'REACT_NAVIGATION_REDUX_DEVTOOLS_EXTENSION_INTEGRATION_ENABLED',\n    {\n      set(_) {\n        console.warn(\n          \"Redux devtools extension integration can be enabled with the '@react-navigation/devtools' package. For more details, see https://reactnavigation.org/docs/5.x/devtools\"\n        );\n      },\n    }\n  );\n} catch (e) {\n  // Ignore\n}\n\n/**\n * Remove `key` and `routeNames` from the state objects recursively to get partial state.\n *\n * @param state Initial state object.\n */\nconst getPartialState = (\n  state: InitialState | undefined\n): PartialState<NavigationState> | undefined => {\n  if (state === undefined) {\n    return;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const { key, routeNames, ...partialState } = state;\n\n  return {\n    ...partialState,\n    stale: true,\n    routes: state.routes.map((route) => {\n      if (route.state === undefined) {\n        return route as Route<string> & {\n          state?: PartialState<NavigationState>;\n        };\n      }\n\n      return { ...route, state: getPartialState(route.state) };\n    }),\n  };\n};\n\n/**\n * Container component which holds the navigation state.\n * This should be rendered at the root wrapping the whole app.\n *\n * @param props.initialState Initial state object for the navigation tree.\n * @param props.onStateChange Callback which is called with the latest navigation state when it changes.\n * @param props.children Child elements to render the content.\n * @param props.ref Ref object which refers to the navigation object containing helper methods.\n */\nconst BaseNavigationContainer = React.forwardRef(\n  function BaseNavigationContainer(\n    {\n      initialState,\n      onStateChange,\n      onUnhandledAction,\n      independent,\n      children,\n    }: NavigationContainerProps,\n    ref?: React.Ref<NavigationContainerRef>\n  ) {\n    const parent = React.useContext(NavigationStateContext);\n\n    if (!parent.isDefault && !independent) {\n      throw new Error(\n        \"Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitely. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.\"\n      );\n    }\n\n    const [\n      state,\n      getState,\n      setState,\n      scheduleUpdate,\n      flushUpdates,\n    ] = useSyncState<State>(() =>\n      getPartialState(initialState == null ? undefined : initialState)\n    );\n\n    const isFirstMountRef = React.useRef<boolean>(true);\n\n    const navigatorKeyRef = React.useRef<string | undefined>();\n\n    const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n\n    const setKey = React.useCallback((key: string) => {\n      navigatorKeyRef.current = key;\n    }, []);\n\n    const { listeners, addListener } = useChildListeners();\n\n    const { keyedListeners, addKeyedListener } = useKeyedChildListeners();\n\n    const dispatch = (\n      action: NavigationAction | ((state: NavigationState) => NavigationAction)\n    ) => {\n      if (listeners.focus[0] == null) {\n        throw new Error(NOT_INITIALIZED_ERROR);\n      }\n\n      listeners.focus[0]((navigation) => navigation.dispatch(action));\n    };\n\n    const canGoBack = () => {\n      if (listeners.focus[0] == null) {\n        return false;\n      }\n\n      const { result, handled } = listeners.focus[0]((navigation) =>\n        navigation.canGoBack()\n      );\n\n      if (handled) {\n        return result;\n      } else {\n        return false;\n      }\n    };\n\n    const resetRoot = React.useCallback(\n      (state?: PartialState<NavigationState> | NavigationState) => {\n        const target = state?.key ?? keyedListeners.getState.root?.().key;\n\n        if (target == null) {\n          throw new Error(NOT_INITIALIZED_ERROR);\n        }\n\n        listeners.focus[0]((navigation) =>\n          navigation.dispatch({\n            ...CommonActions.reset(state),\n            target,\n          })\n        );\n      },\n      [keyedListeners.getState, listeners.focus]\n    );\n\n    const getRootState = React.useCallback(() => {\n      return keyedListeners.getState.root?.();\n    }, [keyedListeners.getState]);\n\n    const getCurrentRoute = React.useCallback(() => {\n      let state = getRootState();\n      if (state === undefined) {\n        return undefined;\n      }\n      while (state.routes[state.index].state !== undefined) {\n        state = state.routes[state.index].state as NavigationState;\n      }\n      return state.routes[state.index];\n    }, [getRootState]);\n\n    const emitter = useEventEmitter<NavigationContainerEventMap>();\n\n    const { addOptionsGetter, getCurrentOptions } = useOptionsGetters({});\n\n    React.useImperativeHandle(ref, () => ({\n      ...(Object.keys(CommonActions) as (keyof typeof CommonActions)[]).reduce<\n        any\n      >((acc, name) => {\n        acc[name] = (...args: any[]) =>\n          dispatch(\n            CommonActions[name](\n              // @ts-expect-error: we can't know the type statically\n              ...args\n            )\n          );\n        return acc;\n      }, {}),\n      ...emitter.create('root'),\n      resetRoot,\n      dispatch,\n      canGoBack,\n      getRootState,\n      getState: () => state,\n      getParent: () => undefined,\n      dangerouslyGetState: () => state,\n      dangerouslyGetParent: () => undefined,\n      getCurrentRoute,\n      getCurrentOptions,\n    }));\n\n    const onDispatchAction = React.useCallback(\n      (action: NavigationAction, noop: boolean) => {\n        emitter.emit({ type: '__unsafe_action__', data: { action, noop } });\n      },\n      [emitter]\n    );\n\n    const lastEmittedOptionsRef = React.useRef<object | undefined>();\n\n    const onOptionsChange = React.useCallback(\n      (options) => {\n        if (lastEmittedOptionsRef.current === options) {\n          return;\n        }\n\n        lastEmittedOptionsRef.current = options;\n\n        emitter.emit({\n          type: 'options',\n          data: { options },\n        });\n      },\n      [emitter]\n    );\n\n    const builderContext = React.useMemo(\n      () => ({\n        addListener,\n        addKeyedListener,\n        onDispatchAction,\n        onOptionsChange,\n      }),\n      [addListener, addKeyedListener, onDispatchAction, onOptionsChange]\n    );\n\n    const scheduleContext = React.useMemo(\n      () => ({ scheduleUpdate, flushUpdates }),\n      [scheduleUpdate, flushUpdates]\n    );\n\n    const isInitialRef = React.useRef(true);\n\n    const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n\n    const context = React.useMemo(\n      () => ({\n        state,\n        getState,\n        setState,\n        getKey,\n        setKey,\n        getIsInitial,\n        addOptionsGetter,\n      }),\n      [\n        state,\n        getState,\n        setState,\n        getKey,\n        setKey,\n        getIsInitial,\n        addOptionsGetter,\n      ]\n    );\n\n    const onStateChangeRef = React.useRef(onStateChange);\n\n    React.useEffect(() => {\n      isInitialRef.current = false;\n      onStateChangeRef.current = onStateChange;\n    });\n\n    React.useEffect(() => {\n      if (process.env.NODE_ENV !== 'production') {\n        if (state !== undefined) {\n          const result = checkSerializable(state);\n\n          if (!result.serializable) {\n            const { location, reason } = result;\n\n            let path = '';\n            let pointer: Record<any, any> = state;\n            let params = false;\n\n            for (let i = 0; i < location.length; i++) {\n              const curr = location[i];\n              const prev = location[i - 1];\n\n              pointer = pointer[curr];\n\n              if (!params && curr === 'state') {\n                continue;\n              } else if (!params && curr === 'routes') {\n                if (path) {\n                  path += ' > ';\n                }\n              } else if (\n                !params &&\n                typeof curr === 'number' &&\n                prev === 'routes'\n              ) {\n                path += pointer?.name;\n              } else if (!params) {\n                path += ` > ${curr}`;\n                params = true;\n              } else {\n                if (typeof curr === 'number' || /^[0-9]+$/.test(curr)) {\n                  path += `[${curr}]`;\n                } else if (/^[a-z$_]+$/i.test(curr)) {\n                  path += `.${curr}`;\n                } else {\n                  path += `[${JSON.stringify(curr)}]`;\n                }\n              }\n            }\n\n            const message = `Non-serializable values were found in the navigation state. Check:\\n\\n${path} (${reason})\\n\\nThis can break usage such as persisting and restoring state. This might happen if you passed non-serializable values such as function, class instances etc. in params. If you need to use components with callbacks in your options, you can use 'navigation.setOptions' instead. See https://reactnavigation.org/docs/5.x/troubleshooting#i-get-the-warning-non-serializable-values-were-found-in-the-navigation-state for more details.`;\n\n            if (!serializableWarnings.includes(message)) {\n              serializableWarnings.push(message);\n              console.warn(message);\n            }\n          }\n        }\n      }\n\n      emitter.emit({ type: 'state', data: { state } });\n\n      if (!isFirstMountRef.current && onStateChangeRef.current) {\n        onStateChangeRef.current(getRootState());\n      }\n\n      isFirstMountRef.current = false;\n    }, [getRootState, emitter, state]);\n\n    const defaultOnUnhandledAction = React.useCallback(\n      (action: NavigationAction) => {\n        if (process.env.NODE_ENV === 'production') {\n          return;\n        }\n\n        const payload: Record<string, any> | undefined = action.payload;\n\n        let message = `The action '${action.type}'${\n          payload ? ` with payload ${JSON.stringify(action.payload)}` : ''\n        } was not handled by any navigator.`;\n\n        switch (action.type) {\n          case 'NAVIGATE':\n          case 'PUSH':\n          case 'REPLACE':\n          case 'JUMP_TO':\n            if (payload?.name) {\n              message += `\\n\\nDo you have a screen named '${payload.name}'?\\n\\nIf you're trying to navigate to a screen in a nested navigator, see https://reactnavigation.org/docs/5.x/nesting-navigators#navigating-to-a-screen-in-a-nested-navigator.`;\n            } else {\n              message += `\\n\\nYou need to pass the name of the screen to navigate to.\\n\\nSee https://reactnavigation.org/docs/5.x/navigation-actions for usage.`;\n            }\n\n            break;\n          case 'GO_BACK':\n          case 'POP':\n          case 'POP_TO_TOP':\n            message += `\\n\\nIs there any screen to go back to?`;\n            break;\n          case 'OPEN_DRAWER':\n          case 'CLOSE_DRAWER':\n          case 'TOGGLE_DRAWER':\n            message += `\\n\\nIs your screen inside a Drawer navigator?`;\n            break;\n        }\n\n        message += `\\n\\nThis is a development-only warning and won't be shown in production.`;\n\n        console.error(message);\n      },\n      []\n    );\n\n    let element = (\n      <ScheduleUpdateContext.Provider value={scheduleContext}>\n        <NavigationBuilderContext.Provider value={builderContext}>\n          <NavigationStateContext.Provider value={context}>\n            <UnhandledActionContext.Provider\n              value={onUnhandledAction ?? defaultOnUnhandledAction}\n            >\n              <EnsureSingleNavigator>{children}</EnsureSingleNavigator>\n            </UnhandledActionContext.Provider>\n          </NavigationStateContext.Provider>\n        </NavigationBuilderContext.Provider>\n      </ScheduleUpdateContext.Provider>\n    );\n\n    if (independent) {\n      // We need to clear any existing contexts for nested independent container to work correctly\n      element = (\n        <NavigationRouteContext.Provider value={undefined}>\n          <NavigationContext.Provider value={undefined}>\n            {element}\n          </NavigationContext.Provider>\n        </NavigationRouteContext.Provider>\n      );\n    }\n\n    return element;\n  }\n);\n\nexport default BaseNavigationContainer;\n","import * as React from 'react';\n\ntype Props = {\n  children: React.ReactNode;\n};\n\nconst MULTIPLE_NAVIGATOR_ERROR = `Another navigator is already registered for this container. You likely have multiple navigators under a single \"NavigationContainer\" or \"Screen\". Make sure each navigator is under a separate \"Screen\" container. See https://reactnavigation.org/docs/5.x/nesting-navigators for a guide on nesting.`;\n\nexport const SingleNavigatorContext = React.createContext<\n  | {\n      register(key: string): void;\n      unregister(key: string): void;\n    }\n  | undefined\n>(undefined);\n\n/**\n * Component which ensures that there's only one navigator nested under it.\n */\nexport default function EnsureSingleNavigator({ children }: Props) {\n  const navigatorKeyRef = React.useRef<string | undefined>();\n\n  const value = React.useMemo(\n    () => ({\n      register(key: string) {\n        const currentKey = navigatorKeyRef.current;\n\n        if (currentKey !== undefined && key !== currentKey) {\n          throw new Error(MULTIPLE_NAVIGATOR_ERROR);\n        }\n\n        navigatorKeyRef.current = key;\n      },\n      unregister(key: string) {\n        const currentKey = navigatorKeyRef.current;\n\n        if (key !== currentKey) {\n          return;\n        }\n\n        navigatorKeyRef.current = undefined;\n      },\n    }),\n    []\n  );\n\n  return (\n    <SingleNavigatorContext.Provider value={value}>\n      {children}\n    </SingleNavigatorContext.Provider>\n  );\n}\n","import * as React from 'react';\nimport type { NavigationAction } from '@react-navigation/routers';\n\nconst UnhandledActionContext = React.createContext<\n  ((action: NavigationAction) => void) | undefined\n>(undefined);\n\nexport default UnhandledActionContext;\n","import * as React from 'react';\nimport type {\n  NavigationAction,\n  NavigationState,\n  ParamListBase,\n} from '@react-navigation/routers';\nimport type { NavigationHelpers } from './types';\n\nexport type ListenerMap = {\n  action: ChildActionListener;\n  focus: FocusedNavigationListener;\n};\n\nexport type KeyedListenerMap = {\n  getState: GetStateListener;\n  beforeRemove: ChildBeforeRemoveListener;\n};\n\nexport type AddListener = <T extends keyof ListenerMap>(\n  type: T,\n  listener: ListenerMap[T]\n) => void;\n\nexport type AddKeyedListener = <T extends keyof KeyedListenerMap>(\n  type: T,\n  key: string,\n  listener: KeyedListenerMap[T]\n) => void;\n\nexport type ChildActionListener = (\n  action: NavigationAction,\n  visitedNavigators?: Set<string>\n) => boolean;\n\nexport type FocusedNavigationCallback<T> = (\n  navigation: NavigationHelpers<ParamListBase>\n) => T;\n\nexport type FocusedNavigationListener = <T>(\n  callback: FocusedNavigationCallback<T>\n) => { handled: boolean; result: T };\n\nexport type GetStateListener = () => NavigationState;\n\nexport type ChildBeforeRemoveListener = (action: NavigationAction) => boolean;\n\n/**\n * Context which holds the required helpers needed to build nested navigators.\n */\nconst NavigationBuilderContext = React.createContext<{\n  onAction?: (\n    action: NavigationAction,\n    visitedNavigators?: Set<string>\n  ) => boolean;\n  addListener?: AddListener;\n  addKeyedListener?: AddKeyedListener;\n  onRouteFocus?: (key: string) => void;\n  onDispatchAction: (action: NavigationAction, noop: boolean) => void;\n  onOptionsChange: (options: object) => void;\n}>({\n  onDispatchAction: () => undefined,\n  onOptionsChange: () => undefined,\n});\n\nexport default NavigationBuilderContext;\n","import * as React from 'react';\nimport type { NavigationState, PartialState } from '@react-navigation/routers';\n\nconst MISSING_CONTEXT_ERROR =\n  \"Couldn't find a navigation context. Have you wrapped your app with 'NavigationContainer'? See https://reactnavigation.org/docs/5.x/getting-started for setup instructions.\";\n\nexport default React.createContext<{\n  isDefault?: true;\n  state?: NavigationState | PartialState<NavigationState>;\n  getKey: () => string | undefined;\n  setKey: (key: string) => void;\n  getState: () => NavigationState | PartialState<NavigationState> | undefined;\n  setState: (\n    state: NavigationState | PartialState<NavigationState> | undefined\n  ) => void;\n  getIsInitial: () => boolean;\n  addOptionsGetter?: (\n    key: string,\n    getter: () => object | undefined | null\n  ) => void;\n}>({\n  isDefault: true,\n\n  get getKey(): any {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get setKey(): any {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get getState(): any {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get setState(): any {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  get getIsInitial(): any {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n});\n","import * as React from 'react';\nimport type { Route } from '@react-navigation/routers';\n\n/**\n * Context which holds the route prop for a screen.\n */\nconst NavigationContext = React.createContext<Route<string> | undefined>(\n  undefined\n);\n\nexport default NavigationContext;\n","import * as React from 'react';\nimport type { ParamListBase } from '@react-navigation/routers';\nimport type { NavigationProp } from './types';\n\n/**\n * Context which holds the navigation prop for a screen.\n */\nconst NavigationContext = React.createContext<\n  NavigationProp<ParamListBase, string, any, any> | undefined\n>(undefined);\n\nexport default NavigationContext;\n","import * as React from 'react';\n\nconst MISSING_CONTEXT_ERROR = \"Couldn't find a schedule context.\";\n\nexport const ScheduleUpdateContext = React.createContext<{\n  scheduleUpdate: (callback: () => void) => void;\n  flushUpdates: () => void;\n}>({\n  scheduleUpdate() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n  flushUpdates() {\n    throw new Error(MISSING_CONTEXT_ERROR);\n  },\n});\n\n/**\n * When screen config changes, we want to update the navigator in the same update phase.\n * However, navigation state is in the root component and React won't let us update it from a child.\n * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.\n * It lets all subsequent updates access the latest state so it stays correct.\n * Then we call setState during after the component updates.\n */\nexport default function useScheduleUpdate(callback: () => void) {\n  const { scheduleUpdate, flushUpdates } = React.useContext(\n    ScheduleUpdateContext\n  );\n\n  scheduleUpdate(callback);\n\n  React.useEffect(flushUpdates);\n}\n","import * as React from 'react';\nimport type { ListenerMap } from './NavigationBuilderContext';\n\n/**\n * Hook which lets child navigators add action listeners.\n */\nexport default function useChildListeners() {\n  const { current: listeners } = React.useRef<\n    {\n      [K in keyof ListenerMap]: ListenerMap[K][];\n    }\n  >({\n    action: [],\n    focus: [],\n  });\n\n  const addListener = React.useCallback(\n    <T extends keyof ListenerMap>(type: T, listener: ListenerMap[T]) => {\n      // @ts-expect-error: listener should be correct type according to `type`\n      listeners[type].push(listener);\n\n      return () => {\n        // @ts-expect-error: listener should be correct type according to `type`\n        const index = listeners[type].indexOf(listener);\n\n        listeners[type].splice(index, 1);\n      };\n    },\n    [listeners]\n  );\n\n  return {\n    listeners,\n    addListener,\n  };\n}\n","import * as React from 'react';\nimport type { KeyedListenerMap } from './NavigationBuilderContext';\n\n/**\n * Hook which lets child navigators add getters to be called for obtaining rehydrated state.\n */\n\nexport default function useKeyedChildListeners() {\n  const { current: keyedListeners } = React.useRef<\n    {\n      [K in keyof KeyedListenerMap]: Record<\n        string,\n        KeyedListenerMap[K] | undefined\n      >;\n    }\n  >({\n    getState: {},\n    beforeRemove: {},\n  });\n\n  const addKeyedListener = React.useCallback(\n    <T extends keyof KeyedListenerMap>(\n      type: T,\n      key: string,\n      listener: KeyedListenerMap[T]\n    ) => {\n      // @ts-expect-error: listener should be correct type according to `type`\n      keyedListeners[type][key] = listener;\n\n      return () => {\n        // @ts-expect-error: listener should be correct type according to `type`\n        keyedListeners[type][key] = undefined;\n      };\n    },\n    [keyedListeners]\n  );\n\n  return {\n    keyedListeners,\n    addKeyedListener,\n  };\n}\n","import * as React from 'react';\nimport type { ParamListBase, NavigationState } from '@react-navigation/routers';\nimport NavigationStateContext from './NavigationStateContext';\nimport NavigationBuilderContext from './NavigationBuilderContext';\nimport type { NavigationProp } from './types';\n\ntype Options = {\n  key?: string;\n  navigation?: NavigationProp<ParamListBase, string, NavigationState, object>;\n  options?: object | undefined;\n};\n\nexport default function useOptionsGetters({\n  key,\n  options,\n  navigation,\n}: Options) {\n  const optionsRef = React.useRef<object | undefined>(options);\n  const optionsGettersFromChildRef = React.useRef<\n    Record<string, () => object | undefined | null>\n  >({});\n\n  const { onOptionsChange } = React.useContext(NavigationBuilderContext);\n  const { addOptionsGetter: parentAddOptionsGetter } = React.useContext(\n    NavigationStateContext\n  );\n\n  const optionsChangeListener = React.useCallback(() => {\n    const isFocused = navigation?.isFocused() ?? true;\n    const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;\n\n    if (isFocused && !hasChildren) {\n      onOptionsChange(optionsRef.current ?? {});\n    }\n  }, [navigation, onOptionsChange]);\n\n  React.useEffect(() => {\n    optionsRef.current = options;\n    optionsChangeListener();\n\n    return navigation?.addListener('focus', optionsChangeListener);\n  }, [navigation, options, optionsChangeListener]);\n\n  const getOptionsFromListener = React.useCallback(() => {\n    for (let key in optionsGettersFromChildRef.current) {\n      if (optionsGettersFromChildRef.current.hasOwnProperty(key)) {\n        const result = optionsGettersFromChildRef.current[key]?.();\n\n        // null means unfocused route\n        if (result !== null) {\n          return result;\n        }\n      }\n    }\n\n    return null;\n  }, []);\n\n  const getCurrentOptions = React.useCallback(() => {\n    const isFocused = navigation?.isFocused() ?? true;\n\n    if (!isFocused) {\n      return null;\n    }\n\n    const optionsFromListener = getOptionsFromListener();\n\n    if (optionsFromListener !== null) {\n      return optionsFromListener;\n    }\n\n    return optionsRef.current;\n  }, [navigation, getOptionsFromListener]);\n\n  React.useEffect(() => {\n    return parentAddOptionsGetter?.(key!, getCurrentOptions);\n  }, [getCurrentOptions, parentAddOptionsGetter, key]);\n\n  const addOptionsGetter = React.useCallback(\n    (key: string, getter: () => object | undefined | null) => {\n      optionsGettersFromChildRef.current[key] = getter;\n      optionsChangeListener();\n\n      return () => {\n        // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n        delete optionsGettersFromChildRef.current[key];\n        optionsChangeListener();\n      };\n    },\n    [optionsChangeListener]\n  );\n\n  return {\n    addOptionsGetter,\n    getCurrentOptions,\n  };\n}\n","import * as React from 'react';\nimport type { EventEmitter, EventConsumer, EventArg } from './types';\n\nexport type NavigationEventEmitter<\n  T extends Record<string, any>\n> = EventEmitter<T> & {\n  create: (target: string) => EventConsumer<T>;\n};\n\ntype Listeners = ((e: any) => void)[];\n\n/**\n * Hook to manage the event system used by the navigator to notify screens of various events.\n */\nexport default function useEventEmitter<T extends Record<string, any>>(\n  listen?: (e: any) => void\n): NavigationEventEmitter<T> {\n  const listenRef = React.useRef(listen);\n\n  React.useEffect(() => {\n    listenRef.current = listen;\n  });\n\n  const listeners = React.useRef<Record<string, Record<string, Listeners>>>({});\n\n  const create = React.useCallback((target: string) => {\n    const removeListener = (type: string, callback: (data: any) => void) => {\n      const callbacks = listeners.current[type]\n        ? listeners.current[type][target]\n        : undefined;\n\n      if (!callbacks) {\n        return;\n      }\n\n      const index = callbacks.indexOf(callback);\n\n      callbacks.splice(index, 1);\n    };\n\n    const addListener = (type: string, callback: (data: any) => void) => {\n      listeners.current[type] = listeners.current[type] || {};\n      listeners.current[type][target] = listeners.current[type][target] || [];\n      listeners.current[type][target].push(callback);\n\n      return () => removeListener(type, callback);\n    };\n\n    return {\n      addListener,\n      removeListener,\n    };\n  }, []);\n\n  const emit = React.useCallback(\n    ({\n      type,\n      data,\n      target,\n      canPreventDefault,\n    }: {\n      type: string;\n      data?: any;\n      target?: string;\n      canPreventDefault?: boolean;\n    }) => {\n      const items = listeners.current[type] || {};\n\n      // Copy the current list of callbacks in case they are mutated during execution\n      const callbacks =\n        target !== undefined\n          ? items[target]?.slice()\n          : ([] as Listeners)\n              .concat(...Object.keys(items).map((t) => items[t]))\n              .filter((cb, i, self) => self.lastIndexOf(cb) === i);\n\n      const event: EventArg<any, any, any> = {\n        get type() {\n          return type;\n        },\n      };\n\n      if (target !== undefined) {\n        Object.defineProperty(event, 'target', {\n          enumerable: true,\n          get() {\n            return target;\n          },\n        });\n      }\n\n      if (data !== undefined) {\n        Object.defineProperty(event, 'data', {\n          enumerable: true,\n          get() {\n            return data;\n          },\n        });\n      }\n\n      if (canPreventDefault) {\n        let defaultPrevented = false;\n\n        Object.defineProperties(event, {\n          defaultPrevented: {\n            enumerable: true,\n            get() {\n              return defaultPrevented;\n            },\n          },\n          preventDefault: {\n            enumerable: true,\n            value() {\n              defaultPrevented = true;\n            },\n          },\n        });\n      }\n\n      listenRef.current?.(event);\n\n      callbacks?.forEach((cb) => cb(event));\n\n      return event as any;\n    },\n    []\n  );\n\n  return React.useMemo(() => ({ create, emit }), [create, emit]);\n}\n","import * as React from 'react';\n\nconst UNINTIALIZED_STATE = {};\n\n/**\n * This is definitely not compatible with concurrent mode, but we don't have a solution for sync state yet.\n */\nexport default function useSyncState<T>(initialState?: (() => T) | T) {\n  const stateRef = React.useRef<T>(UNINTIALIZED_STATE as any);\n  const isSchedulingRef = React.useRef(false);\n  const isMountedRef = React.useRef(true);\n\n  React.useEffect(() => {\n    isMountedRef.current = true;\n\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n\n  if (stateRef.current === UNINTIALIZED_STATE) {\n    stateRef.current =\n      // @ts-expect-error: initialState is a function, but TypeScript doesn't think so\n      typeof initialState === 'function' ? initialState() : initialState;\n  }\n\n  const [trackingState, setTrackingState] = React.useState(stateRef.current);\n\n  const getState = React.useCallback(() => stateRef.current, []);\n\n  const setState = React.useCallback((state: T) => {\n    if (state === stateRef.current || !isMountedRef.current) {\n      return;\n    }\n\n    stateRef.current = state;\n\n    if (!isSchedulingRef.current) {\n      setTrackingState(state);\n    }\n  }, []);\n\n  const scheduleUpdate = React.useCallback((callback: () => void) => {\n    isSchedulingRef.current = true;\n\n    try {\n      callback();\n    } finally {\n      isSchedulingRef.current = false;\n    }\n  }, []);\n\n  const flushUpdates = React.useCallback(() => {\n    if (!isMountedRef.current) {\n      return;\n    }\n\n    // Make sure that the tracking state is up-to-date.\n    // We call it unconditionally, but React should skip the update if state is unchanged.\n    setTrackingState(stateRef.current);\n  }, []);\n\n  // If we're rendering and the tracking state is out of date, update it immediately\n  // This will make sure that our updates are applied as early as possible.\n  if (trackingState !== stateRef.current) {\n    setTrackingState(stateRef.current);\n  }\n\n  const state = stateRef.current;\n\n  React.useDebugValue(state);\n\n  return [state, getState, setState, scheduleUpdate, flushUpdates] as const;\n}\n","const checkSerializableWithoutCircularReference = (\n  o: { [key: string]: any },\n  seen: Set<any>,\n  location: (string | number)[]\n):\n  | { serializable: true }\n  | {\n      serializable: false;\n      location: (string | number)[];\n      reason: string;\n    } => {\n  if (\n    o === undefined ||\n    o === null ||\n    typeof o === 'boolean' ||\n    typeof o === 'number' ||\n    typeof o === 'string'\n  ) {\n    return { serializable: true };\n  }\n\n  if (\n    Object.prototype.toString.call(o) !== '[object Object]' &&\n    !Array.isArray(o)\n  ) {\n    return {\n      serializable: false,\n      location,\n      reason: typeof o === 'function' ? 'Function' : String(o),\n    };\n  }\n\n  if (seen.has(o)) {\n    return {\n      serializable: false,\n      reason: 'Circular reference',\n      location,\n    };\n  }\n\n  seen.add(o);\n\n  if (Array.isArray(o)) {\n    for (let i = 0; i < o.length; i++) {\n      const childResult = checkSerializableWithoutCircularReference(\n        o[i],\n        new Set<any>(seen),\n        [...location, i]\n      );\n\n      if (!childResult.serializable) {\n        return childResult;\n      }\n    }\n  } else {\n    for (const key in o) {\n      const childResult = checkSerializableWithoutCircularReference(\n        o[key],\n        new Set<any>(seen),\n        [...location, key]\n      );\n\n      if (!childResult.serializable) {\n        return childResult;\n      }\n    }\n  }\n\n  return { serializable: true };\n};\n\nexport default function checkSerializable(o: { [key: string]: any }) {\n  return checkSerializableWithoutCircularReference(o, new Set<any>(), []);\n}\n","import type * as React from 'react';\nimport type { ParamListBase, NavigationState } from '@react-navigation/routers';\nimport Screen from './Screen';\nimport type { TypedNavigator, EventMapBase } from './types';\n\n/**\n * Higher order component to create a `Navigator` and `Screen` pair.\n * Custom navigators should wrap the navigator component in `createNavigator` before exporting.\n *\n * @param Navigator The navigtor component to wrap.\n * @returns Factory method to create a `Navigator` and `Screen` pair.\n */\nexport default function createNavigatorFactory<\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase,\n  NavigatorComponent extends React.ComponentType<any>\n>(Navigator: NavigatorComponent) {\n  return function <ParamList extends ParamListBase>(): TypedNavigator<\n    ParamList,\n    State,\n    ScreenOptions,\n    EventMap,\n    typeof Navigator\n  > {\n    if (arguments[0] !== undefined) {\n      throw new Error(\n        \"Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API with React Navigation 5? See https://reactnavigation.org/docs/5.x/upgrading-from-4.x for migration guide.\"\n      );\n    }\n\n    return {\n      Navigator,\n      Screen,\n    };\n  };\n}\n","import type { ParamListBase, NavigationState } from '@react-navigation/routers';\nimport type { RouteConfig, EventMapBase } from './types';\n\n/**\n * Empty component used for specifying route configuration.\n */\nexport default function Screen<\n  ParamList extends ParamListBase,\n  RouteName extends keyof ParamList,\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n>(_: RouteConfig<ParamList, RouteName, State, ScreenOptions, EventMap>) {\n  /* istanbul ignore next */\n  return null;\n}\n","import * as React from 'react';\nimport type { ParamListBase } from '@react-navigation/routers';\nimport type { NavigationHelpers } from './types';\n\n/**\n * Context which holds the navigation helpers of the parent navigator.\n * Navigators should use this context in their view component.\n */\nconst NavigationHelpersContext = React.createContext<\n  NavigationHelpers<ParamListBase> | undefined\n>(undefined);\n\nexport default NavigationHelpersContext;\n","import * as React from 'react';\n\n/**\n * Context which holds the values for the current navigation tree.\n * Intended for use in SSR. This is not safe to use on the client.\n */\nconst CurrentRenderContext = React.createContext<\n  { options?: object } | undefined\n>(undefined);\n\nexport default CurrentRenderContext;\n","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\nimport {\n  CommonActions,\n  DefaultRouterOptions,\n  NavigationState,\n  ParamListBase,\n  Router,\n  RouterFactory,\n  RouterConfigOptions,\n  PartialState,\n  NavigationAction,\n  Route,\n} from '@react-navigation/routers';\nimport NavigationStateContext from './NavigationStateContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport NavigationHelpersContext from './NavigationHelpersContext';\nimport Screen from './Screen';\nimport useComponent from './useComponent';\nimport useEventEmitter from './useEventEmitter';\nimport useRegisterNavigator from './useRegisterNavigator';\nimport useDescriptors from './useDescriptors';\nimport useNavigationHelpers from './useNavigationHelpers';\nimport useOnAction from './useOnAction';\nimport useFocusEvents from './useFocusEvents';\nimport useOnRouteFocus from './useOnRouteFocus';\nimport useChildListeners from './useChildListeners';\nimport useFocusedListenersChildrenAdapter from './useFocusedListenersChildrenAdapter';\nimport useKeyedChildListeners from './useKeyedChildListeners';\nimport useOnGetState from './useOnGetState';\nimport useScheduleUpdate from './useScheduleUpdate';\nimport useCurrentRender from './useCurrentRender';\nimport isArrayEqual from './isArrayEqual';\nimport {\n  DefaultNavigatorOptions,\n  RouteConfig,\n  PrivateValueStore,\n  EventMapBase,\n  EventMapCore,\n  NavigatorScreenParams,\n} from './types';\n\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line babel/no-unused-expressions\nPrivateValueStore;\n\ntype NavigatorRoute<State extends NavigationState> = {\n  key: string;\n  params?: NavigatorScreenParams<ParamListBase, State>;\n};\n\n/**\n * Extract route config object from React children elements.\n *\n * @param children React Elements to extract the config from.\n */\nconst getRouteConfigsFromChildren = <\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n>(\n  children: React.ReactNode\n) => {\n  const configs = React.Children.toArray(children).reduce<\n    RouteConfig<ParamListBase, string, State, ScreenOptions, EventMap>[]\n  >((acc, child) => {\n    if (React.isValidElement(child)) {\n      if (child.type === Screen) {\n        // We can only extract the config from `Screen` elements\n        // If something else was rendered, it's probably a bug\n        acc.push(\n          child.props as RouteConfig<\n            ParamListBase,\n            string,\n            State,\n            ScreenOptions,\n            EventMap\n          >\n        );\n        return acc;\n      }\n\n      if (child.type === React.Fragment) {\n        // When we encounter a fragment, we need to dive into its children to extract the configs\n        // This is handy to conditionally define a group of screens\n        acc.push(\n          ...getRouteConfigsFromChildren<State, ScreenOptions, EventMap>(\n            child.props.children\n          )\n        );\n        return acc;\n      }\n    }\n\n    throw new Error(\n      `A navigator can only contain 'Screen' components as its direct children (found ${\n        React.isValidElement(child)\n          ? `'${\n              typeof child.type === 'string' ? child.type : child.type?.name\n            }'${\n              child.props?.name ? ` for the screen '${child.props.name}'` : ''\n            }`\n          : typeof child === 'object'\n          ? JSON.stringify(child)\n          : `'${String(child)}'`\n      }). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`\n    );\n  }, []);\n\n  if (process.env.NODE_ENV !== 'production') {\n    configs.forEach((config) => {\n      const { name, children, component, getComponent } = config;\n\n      if (typeof name !== 'string' || !name) {\n        throw new Error(\n          `Got an invalid name (${JSON.stringify(\n            name\n          )}) for the screen. It must be a non-empty string.`\n        );\n      }\n\n      if (\n        children != null ||\n        component !== undefined ||\n        getComponent !== undefined\n      ) {\n        if (children != null && component !== undefined) {\n          throw new Error(\n            `Got both 'component' and 'children' props for the screen '${name}'. You must pass only one of them.`\n          );\n        }\n\n        if (children != null && getComponent !== undefined) {\n          throw new Error(\n            `Got both 'getComponent' and 'children' props for the screen '${name}'. You must pass only one of them.`\n          );\n        }\n\n        if (component !== undefined && getComponent !== undefined) {\n          throw new Error(\n            `Got both 'component' and 'getComponent' props for the screen '${name}'. You must pass only one of them.`\n          );\n        }\n\n        if (children != null && typeof children !== 'function') {\n          throw new Error(\n            `Got an invalid value for 'children' prop for the screen '${name}'. It must be a function returning a React Element.`\n          );\n        }\n\n        if (component !== undefined && !isValidElementType(component)) {\n          throw new Error(\n            `Got an invalid value for 'component' prop for the screen '${name}'. It must be a valid React Component.`\n          );\n        }\n\n        if (getComponent !== undefined && typeof getComponent !== 'function') {\n          throw new Error(\n            `Got an invalid value for 'getComponent' prop for the screen '${name}'. It must be a function returning a React Component.`\n          );\n        }\n\n        if (typeof component === 'function' && component.name === 'component') {\n          // Inline anonymous functions passed in the `component` prop will have the name of the prop\n          // It's relatively safe to assume that it's not a component since it should also have PascalCase name\n          // We won't catch all scenarios here, but this should catch a good chunk of incorrect use.\n          console.warn(\n            `Looks like you're passing an inline function for 'component' prop for the screen '${name}' (e.g. component={() => <SomeComponent />}). Passing an inline function will cause the component state to be lost on re-render and cause perf issues since it's re-created every render. You can pass the function as children to 'Screen' instead to achieve the desired behaviour.`\n          );\n        }\n      } else {\n        throw new Error(\n          `Couldn't find a 'component', 'getComponent' or 'children' prop for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`\n        );\n      }\n    });\n  }\n\n  return configs;\n};\n\n/**\n * Hook for building navigators.\n *\n * @param createRouter Factory method which returns router object.\n * @param options Options object containing `children` and additional options for the router.\n * @returns An object containing `state`, `navigation`, `descriptors` objects.\n */\nexport default function useNavigationBuilder<\n  State extends NavigationState,\n  RouterOptions extends DefaultRouterOptions,\n  ActionHelpers extends Record<string, () => void>,\n  ScreenOptions extends {},\n  EventMap extends Record<string, any>\n>(\n  createRouter: RouterFactory<State, any, RouterOptions>,\n  options: DefaultNavigatorOptions<ScreenOptions> & RouterOptions\n) {\n  const navigatorKey = useRegisterNavigator();\n\n  const route = React.useContext(NavigationRouteContext) as\n    | NavigatorRoute<State>\n    | undefined;\n\n  const { children, ...rest } = options;\n  const { current: router } = React.useRef<Router<State, any>>(\n    createRouter({\n      ...((rest as unknown) as RouterOptions),\n      ...(route?.params &&\n      route.params.state == null &&\n      route.params.initial !== false &&\n      typeof route.params.screen === 'string'\n        ? { initialRouteName: route.params.screen }\n        : null),\n    })\n  );\n\n  const routeConfigs = getRouteConfigsFromChildren<\n    State,\n    ScreenOptions,\n    EventMap\n  >(children);\n\n  const screens = routeConfigs.reduce<\n    Record<\n      string,\n      RouteConfig<ParamListBase, string, State, ScreenOptions, EventMap>\n    >\n  >((acc, config) => {\n    if (config.name in acc) {\n      throw new Error(\n        `A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${config.name}')`\n      );\n    }\n\n    acc[config.name] = config;\n    return acc;\n  }, {});\n\n  const routeNames = routeConfigs.map((config) => config.name);\n  const routeParamList = routeNames.reduce<Record<string, object | undefined>>(\n    (acc, curr) => {\n      const { initialParams } = screens[curr];\n      const initialParamsFromParams =\n        route?.params?.state == null &&\n        route?.params?.initial !== false &&\n        route?.params?.screen === curr\n          ? route.params.params\n          : undefined;\n\n      acc[curr] =\n        initialParams !== undefined || initialParamsFromParams !== undefined\n          ? {\n              ...initialParams,\n              ...initialParamsFromParams,\n            }\n          : undefined;\n\n      return acc;\n    },\n    {}\n  );\n  const routeGetIdList = routeNames.reduce<\n    RouterConfigOptions['routeGetIdList']\n  >(\n    (acc, curr) =>\n      Object.assign(acc, {\n        [curr]: screens[curr].getId,\n      }),\n    {}\n  );\n\n  if (!routeNames.length) {\n    throw new Error(\n      \"Couldn't find any screens for the navigator. Have you defined any screens as its children?\"\n    );\n  }\n\n  const isStateValid = React.useCallback(\n    (state) => state.type === undefined || state.type === router.type,\n    [router.type]\n  );\n\n  const isStateInitialized = React.useCallback(\n    (state) =>\n      state !== undefined && state.stale === false && isStateValid(state),\n    [isStateValid]\n  );\n\n  const {\n    state: currentState,\n    getState: getCurrentState,\n    setState,\n    setKey,\n    getKey,\n    getIsInitial,\n  } = React.useContext(NavigationStateContext);\n\n  const [initializedState, isFirstStateInitialization] = React.useMemo(() => {\n    // If the current state isn't initialized on first render, we initialize it\n    // We also need to re-initialize it if the state passed from parent was changed (maybe due to reset)\n    // Otherwise assume that the state was provided as initial state\n    // So we need to rehydrate it to make it usable\n    if (\n      (currentState === undefined || !isStateValid(currentState)) &&\n      route?.params?.state == null\n    ) {\n      return [\n        router.getInitialState({\n          routeNames,\n          routeParamList,\n          routeGetIdList,\n        }),\n        true,\n      ];\n    } else {\n      return [\n        router.getRehydratedState(\n          route?.params?.state ?? (currentState as PartialState<State>),\n          {\n            routeNames,\n            routeParamList,\n            routeGetIdList,\n          }\n        ),\n        false,\n      ];\n    }\n    // We explicitly don't include routeNames/routeParamList in the dep list\n    // below. We want to avoid forcing a new state to be calculated in cases\n    // where routeConfigs change without affecting routeNames/routeParamList.\n    // Instead, we handle changes to these in the nextState code below. Note\n    // that some changes to routeConfigs are explicitly ignored, such as changes\n    // to initialParams\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [currentState, router, isStateValid]);\n\n  let state =\n    // If the state isn't initialized, or stale, use the state we initialized instead\n    // The state won't update until there's a change needed in the state we have initalized locally\n    // So it'll be `undefined` or stale until the first navigation event happens\n    isStateInitialized(currentState)\n      ? (currentState as State)\n      : (initializedState as State);\n\n  let nextState: State = state;\n\n  if (!isArrayEqual(state.routeNames, routeNames)) {\n    // When the list of route names change, the router should handle it to remove invalid routes\n    nextState = router.getStateForRouteNamesChange(state, {\n      routeNames,\n      routeParamList,\n      routeGetIdList,\n    });\n  }\n\n  const previousNestedParamsRef = React.useRef(route?.params);\n\n  React.useEffect(() => {\n    previousNestedParamsRef.current = route?.params;\n  }, [route?.params]);\n\n  if (route?.params) {\n    const previousParams = previousNestedParamsRef.current;\n\n    let action: CommonActions.Action | undefined;\n\n    if (\n      typeof route.params.state === 'object' &&\n      route.params.state != null &&\n      route.params.state !== previousParams?.state\n    ) {\n      // If the route was updated with new state, we should reset to it\n      action = CommonActions.reset(route.params.state);\n    } else if (\n      typeof route.params.screen === 'string' &&\n      ((route.params.initial === false && isFirstStateInitialization) ||\n        route.params !== previousParams)\n    ) {\n      // FIXME: Since params are merged, `route.params.params` might contain params from an older route\n      // If the route was updated with new screen name and/or params, we should navigate there\n      action = CommonActions.navigate(route.params.screen, route.params.params);\n    }\n\n    // The update should be limited to current navigator only, so we call the router manually\n    const updatedState = action\n      ? router.getStateForAction(nextState, action, {\n          routeNames,\n          routeParamList,\n          routeGetIdList,\n        })\n      : null;\n\n    nextState =\n      updatedState !== null\n        ? router.getRehydratedState(updatedState, {\n            routeNames,\n            routeParamList,\n            routeGetIdList,\n          })\n        : nextState;\n  }\n\n  const shouldUpdate = state !== nextState;\n\n  useScheduleUpdate(() => {\n    if (shouldUpdate) {\n      // If the state needs to be updated, we'll schedule an update\n      setState(nextState);\n    }\n  });\n\n  // The up-to-date state will come in next render, but we don't need to wait for it\n  // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config\n  // So we override the state object we return to use the latest state as soon as possible\n  state = nextState;\n\n  React.useEffect(() => {\n    setKey(navigatorKey);\n\n    if (!getIsInitial()) {\n      // If it's not initial render, we need to update the state\n      // This will make sure that our container gets notifier of state changes due to new mounts\n      // This is necessary for proper screen tracking, URL updates etc.\n      setState(nextState);\n    }\n\n    return () => {\n      // We need to clean up state for this navigator on unmount\n      // We do it in a timeout because we need to detect if another navigator mounted in the meantime\n      // For example, if another navigator has started rendering, we should skip cleanup\n      // Otherwise, our cleanup step will cleanup state for the other navigator and re-initialize it\n      setTimeout(() => {\n        if (getCurrentState() !== undefined && getKey() === navigatorKey) {\n          setState(undefined);\n        }\n      }, 0);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  // We initialize this ref here to avoid a new getState getting initialized\n  // whenever initializedState changes. We want getState to have access to the\n  // latest initializedState, but don't need it to change when that happens\n  const initializedStateRef = React.useRef<State>();\n  initializedStateRef.current = initializedState;\n\n  const getState = React.useCallback((): State => {\n    const currentState = getCurrentState();\n\n    return isStateInitialized(currentState)\n      ? (currentState as State)\n      : (initializedStateRef.current as State);\n  }, [getCurrentState, isStateInitialized]);\n\n  const emitter = useEventEmitter<EventMapCore<State>>((e) => {\n    let routeNames = [];\n\n    let route: Route<string> | undefined;\n\n    if (e.target) {\n      route = state.routes.find((route) => route.key === e.target);\n\n      if (route?.name) {\n        routeNames.push(route.name);\n      }\n    } else {\n      route = state.routes[state.index];\n      routeNames.push(\n        ...Object.keys(screens).filter((name) => route?.name === name)\n      );\n    }\n\n    if (route == null) {\n      return;\n    }\n\n    const navigation = descriptors[route.key].navigation;\n\n    const listeners = ([] as (((e: any) => void) | undefined)[])\n      .concat(\n        ...routeNames.map((name) => {\n          const { listeners } = screens[name];\n          const map =\n            typeof listeners === 'function'\n              ? listeners({ route: route as any, navigation })\n              : listeners;\n\n          return map\n            ? Object.keys(map)\n                .filter((type) => type === e.type)\n                .map((type) => map?.[type])\n            : undefined;\n        })\n      )\n      .filter((cb, i, self) => cb && self.lastIndexOf(cb) === i);\n\n    listeners.forEach((listener) => listener?.(e));\n  });\n\n  useFocusEvents({ state, emitter });\n\n  React.useEffect(() => {\n    emitter.emit({ type: 'state', data: { state } });\n  }, [emitter, state]);\n\n  const { listeners: childListeners, addListener } = useChildListeners();\n\n  const { keyedListeners, addKeyedListener } = useKeyedChildListeners();\n\n  const onAction = useOnAction({\n    router,\n    getState,\n    setState,\n    key: route?.key,\n    actionListeners: childListeners.action,\n    beforeRemoveListeners: keyedListeners.beforeRemove,\n    routerConfigOptions: {\n      routeNames,\n      routeParamList,\n      routeGetIdList,\n    },\n    emitter,\n  });\n\n  const onRouteFocus = useOnRouteFocus({\n    router,\n    key: route?.key,\n    getState,\n    setState,\n  });\n\n  const navigation = useNavigationHelpers<\n    State,\n    ActionHelpers,\n    NavigationAction,\n    EventMap\n  >({\n    onAction,\n    getState,\n    emitter,\n    router,\n  });\n\n  useFocusedListenersChildrenAdapter({\n    navigation,\n    focusedListeners: childListeners.focus,\n  });\n\n  useOnGetState({\n    getState,\n    getStateListeners: keyedListeners.getState,\n  });\n\n  const descriptors = useDescriptors<State, ScreenOptions, EventMap>({\n    state,\n    screens,\n    navigation,\n    screenOptions: options.screenOptions,\n    defaultScreenOptions: options.defaultScreenOptions,\n    onAction,\n    getState,\n    setState,\n    onRouteFocus,\n    addListener,\n    addKeyedListener,\n    router,\n    emitter,\n  });\n\n  useCurrentRender({\n    state,\n    navigation,\n    descriptors,\n  });\n\n  const NavigationContent = useComponent(NavigationHelpersContext.Provider, {\n    value: navigation,\n  });\n\n  return {\n    state,\n    navigation,\n    descriptors,\n    NavigationContent,\n  };\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","import * as React from 'react';\n\nexport default function useComponent<\n  T extends React.ComponentType<any>,\n  P extends {}\n>(Component: T, props: P) {\n  const propsRef = React.useRef<P | null>(props);\n\n  // Normally refs shouldn't be mutated in render\n  // But we return a component which will be rendered\n  // So it's just for immediate consumption\n  propsRef.current = props;\n\n  React.useEffect(() => {\n    propsRef.current = null;\n  });\n\n  return React.useRef((rest: Omit<React.ComponentProps<T>, keyof P>) => {\n    const props = propsRef.current;\n\n    if (props === null) {\n      throw new Error(\n        'The returned component must be rendered in the same render phase as the hook.'\n      );\n    }\n\n    // @ts-expect-error: the props should be fine here\n    return <Component {...props} {...rest} />;\n  }).current;\n}\n","import * as React from 'react';\nimport { nanoid } from 'nanoid/non-secure';\nimport { SingleNavigatorContext } from './EnsureSingleNavigator';\n\n/**\n * Register a navigator in the parent context (either a navigation container or a screen).\n * This is used to prevent multiple navigators under a single container or screen.\n */\nexport default function useRegisterNavigator() {\n  const [key] = React.useState(() => nanoid());\n  const container = React.useContext(SingleNavigatorContext);\n\n  if (container === undefined) {\n    throw new Error(\n      \"Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\"\n    );\n  }\n\n  React.useEffect(() => {\n    const { register, unregister } = container;\n\n    register(key);\n\n    return () => unregister(key);\n  }, [container, key]);\n\n  return key;\n}\n","import * as React from 'react';\nimport type {\n  NavigationAction,\n  NavigationState,\n  ParamListBase,\n  Router,\n} from '@react-navigation/routers';\nimport SceneView from './SceneView';\nimport NavigationBuilderContext, {\n  AddListener,\n  AddKeyedListener,\n} from './NavigationBuilderContext';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport useNavigationCache from './useNavigationCache';\nimport useRouteCache from './useRouteCache';\nimport NavigationContext from './NavigationContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport type {\n  Descriptor,\n  NavigationHelpers,\n  RouteConfig,\n  RouteProp,\n  EventMapBase,\n} from './types';\n\ntype Options<\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n> = {\n  state: State;\n  screens: Record<\n    string,\n    RouteConfig<ParamListBase, string, State, ScreenOptions, EventMap>\n  >;\n  navigation: NavigationHelpers<ParamListBase>;\n  screenOptions?:\n    | ScreenOptions\n    | ((props: {\n        route: RouteProp<ParamListBase, string>;\n        navigation: any;\n      }) => ScreenOptions);\n  defaultScreenOptions?:\n    | ScreenOptions\n    | ((props: {\n        route: RouteProp<ParamListBase, string>;\n        navigation: any;\n        options: ScreenOptions;\n      }) => ScreenOptions);\n  onAction: (action: NavigationAction) => boolean;\n  getState: () => State;\n  setState: (state: State) => void;\n  addListener: AddListener;\n  addKeyedListener: AddKeyedListener;\n  onRouteFocus: (key: string) => void;\n  router: Router<State, NavigationAction>;\n  emitter: NavigationEventEmitter<any>;\n};\n\n/**\n * Hook to create descriptor objects for the child routes.\n *\n * A descriptor object provides 3 things:\n * - Helper method to render a screen\n * - Options specified by the screen for the navigator\n * - Navigation object intended for the route\n */\nexport default function useDescriptors<\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n>({\n  state,\n  screens,\n  navigation,\n  screenOptions,\n  defaultScreenOptions,\n  onAction,\n  getState,\n  setState,\n  addListener,\n  addKeyedListener,\n  onRouteFocus,\n  router,\n  emitter,\n}: Options<State, ScreenOptions, EventMap>) {\n  const [options, setOptions] = React.useState<Record<string, object>>({});\n  const { onDispatchAction, onOptionsChange } = React.useContext(\n    NavigationBuilderContext\n  );\n\n  const context = React.useMemo(\n    () => ({\n      navigation,\n      onAction,\n      addListener,\n      addKeyedListener,\n      onRouteFocus,\n      onDispatchAction,\n      onOptionsChange,\n    }),\n    [\n      navigation,\n      onAction,\n      addListener,\n      addKeyedListener,\n      onRouteFocus,\n      onDispatchAction,\n      onOptionsChange,\n    ]\n  );\n\n  const navigations = useNavigationCache<State, ScreenOptions>({\n    state,\n    getState,\n    navigation,\n    setOptions,\n    router,\n    emitter,\n  });\n\n  const routes = useRouteCache(state.routes);\n\n  return routes.reduce<\n    Record<string, Descriptor<ParamListBase, string, State, ScreenOptions>>\n  >((acc, route, i) => {\n    const screen = screens[route.name];\n    const navigation = navigations[route.key];\n\n    const routeOptions = {\n      // The default `screenOptions` passed to the navigator\n      ...(typeof screenOptions === 'object' || screenOptions == null\n        ? screenOptions\n        : // @ts-expect-error: this is a function, but typescript doesn't think so\n          screenOptions({\n            route,\n            navigation,\n          })),\n      // The `options` prop passed to `Screen` elements\n      ...(typeof screen.options === 'object' || screen.options == null\n        ? screen.options\n        : // @ts-expect-error: this is a function, but typescript doesn't think so\n          screen.options({\n            route,\n            navigation,\n          })),\n      // The options set via `navigation.setOptions`\n      ...options[route.key],\n    };\n\n    const mergedOptions = {\n      ...(typeof defaultScreenOptions === 'function'\n        ? // @ts-expect-error: ts gives incorrect error here\n          defaultScreenOptions({\n            route,\n            navigation,\n            options: routeOptions,\n          })\n        : defaultScreenOptions),\n      ...routeOptions,\n    };\n\n    const clearOptions = () =>\n      setOptions((o) => {\n        if (route.key in o) {\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          const { [route.key]: _, ...rest } = o;\n          return rest;\n        }\n\n        return o;\n      });\n\n    acc[route.key] = {\n      navigation,\n      render() {\n        return (\n          <NavigationBuilderContext.Provider key={route.key} value={context}>\n            <NavigationContext.Provider value={navigation}>\n              <NavigationRouteContext.Provider value={route}>\n                <SceneView\n                  navigation={navigation}\n                  route={route}\n                  screen={screen}\n                  routeState={state.routes[i].state}\n                  getState={getState}\n                  setState={setState}\n                  options={mergedOptions}\n                  clearOptions={clearOptions}\n                />\n              </NavigationRouteContext.Provider>\n            </NavigationContext.Provider>\n          </NavigationBuilderContext.Provider>\n        );\n      },\n      options: mergedOptions as ScreenOptions,\n    };\n\n    return acc;\n  }, {});\n}\n","import * as React from 'react';\nimport type {\n  Route,\n  ParamListBase,\n  NavigationState,\n  PartialState,\n} from '@react-navigation/routers';\nimport NavigationStateContext from './NavigationStateContext';\nimport StaticContainer from './StaticContainer';\nimport EnsureSingleNavigator from './EnsureSingleNavigator';\nimport useOptionsGetters from './useOptionsGetters';\nimport type { NavigationProp, RouteConfig, EventMapBase } from './types';\n\ntype Props<\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n> = {\n  screen: RouteConfig<ParamListBase, string, State, ScreenOptions, EventMap>;\n  navigation: NavigationProp<ParamListBase, string, State, ScreenOptions>;\n  route: Route<string>;\n  routeState: NavigationState | PartialState<NavigationState> | undefined;\n  getState: () => State;\n  setState: (state: State) => void;\n  options: object;\n  clearOptions: () => void;\n};\n\n/**\n * Component which takes care of rendering the screen for a route.\n * It provides all required contexts and applies optimizations when applicable.\n */\nexport default function SceneView<\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n>({\n  screen,\n  route,\n  navigation,\n  routeState,\n  getState,\n  setState,\n  options,\n  clearOptions,\n}: Props<State, ScreenOptions, EventMap>) {\n  const navigatorKeyRef = React.useRef<string | undefined>();\n  const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n\n  const { addOptionsGetter } = useOptionsGetters({\n    key: route.key,\n    options,\n    navigation,\n  });\n\n  const setKey = React.useCallback((key: string) => {\n    navigatorKeyRef.current = key;\n  }, []);\n\n  const getCurrentState = React.useCallback(() => {\n    const state = getState();\n    const currentRoute = state.routes.find((r) => r.key === route.key);\n\n    return currentRoute ? currentRoute.state : undefined;\n  }, [getState, route.key]);\n\n  const setCurrentState = React.useCallback(\n    (child: NavigationState | PartialState<NavigationState> | undefined) => {\n      const state = getState();\n\n      setState({\n        ...state,\n        routes: state.routes.map((r) =>\n          r.key === route.key ? { ...r, state: child } : r\n        ),\n      });\n    },\n    [getState, route.key, setState]\n  );\n\n  const isInitialRef = React.useRef(true);\n\n  React.useEffect(() => {\n    isInitialRef.current = false;\n  });\n\n  // Clear options set by this screen when it is unmounted\n  React.useEffect(() => {\n    return clearOptions;\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n\n  const context = React.useMemo(\n    () => ({\n      state: routeState,\n      getState: getCurrentState,\n      setState: setCurrentState,\n      getKey,\n      setKey,\n      getIsInitial,\n      addOptionsGetter,\n    }),\n    [\n      routeState,\n      getCurrentState,\n      setCurrentState,\n      getKey,\n      setKey,\n      getIsInitial,\n      addOptionsGetter,\n    ]\n  );\n\n  const ScreenComponent = screen.getComponent\n    ? screen.getComponent()\n    : screen.component;\n\n  return (\n    <NavigationStateContext.Provider value={context}>\n      <EnsureSingleNavigator>\n        <StaticContainer\n          name={screen.name}\n          render={ScreenComponent || screen.children}\n          navigation={navigation}\n          route={route}\n        >\n          {ScreenComponent !== undefined ? (\n            <ScreenComponent navigation={navigation} route={route} />\n          ) : screen.children !== undefined ? (\n            screen.children({ navigation, route })\n          ) : null}\n        </StaticContainer>\n      </EnsureSingleNavigator>\n    </NavigationStateContext.Provider>\n  );\n}\n","import * as React from 'react';\n\n/**\n * Component which prevents updates for children if no props changed\n */\nfunction StaticContainer(props: any) {\n  return props.children;\n}\n\nexport default React.memo(StaticContainer, (prevProps: any, nextProps: any) => {\n  const prevPropKeys = Object.keys(prevProps);\n  const nextPropKeys = Object.keys(nextProps);\n\n  if (prevPropKeys.length !== nextPropKeys.length) {\n    return false;\n  }\n\n  for (const key of prevPropKeys) {\n    if (key === 'children') {\n      continue;\n    }\n\n    if (prevProps[key] !== nextProps[key]) {\n      return false;\n    }\n  }\n\n  return true;\n});\n","import * as React from 'react';\nimport {\n  CommonActions,\n  NavigationAction,\n  ParamListBase,\n  NavigationState,\n  Router,\n} from '@react-navigation/routers';\nimport type { NavigationEventEmitter } from './useEventEmitter';\n\nimport type { EventMapBase, NavigationHelpers, NavigationProp } from './types';\n\ntype Options<State extends NavigationState> = {\n  state: State;\n  getState: () => State;\n  navigation: NavigationHelpers<ParamListBase> &\n    Partial<NavigationProp<ParamListBase, string, any, any, any>>;\n  setOptions: (\n    cb: (options: Record<string, object>) => Record<string, object>\n  ) => void;\n  router: Router<State, NavigationAction>;\n  emitter: NavigationEventEmitter<EventMapBase>;\n};\n\ntype NavigationCache<\n  State extends NavigationState,\n  ScreenOptions extends {}\n> = {\n  [key: string]: NavigationProp<ParamListBase, string, State, ScreenOptions>;\n};\n\n/**\n * Hook to cache navigation objects for each screen in the navigator.\n * It's important to cache them to make sure navigation objects don't change between renders.\n * This lets us apply optimizations like `React.memo` to minimize re-rendering screens.\n */\nexport default function useNavigationCache<\n  State extends NavigationState,\n  ScreenOptions extends {}\n>({\n  state,\n  getState,\n  navigation,\n  setOptions,\n  router,\n  emitter,\n}: Options<State>) {\n  // Cache object which holds navigation objects for each screen\n  // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change\n  // In reality, these deps will rarely change, if ever\n  const cache = React.useMemo(\n    () => ({ current: {} as NavigationCache<State, ScreenOptions> }),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [getState, navigation, setOptions, router, emitter]\n  );\n\n  const actions = {\n    ...router.actionCreators,\n    ...CommonActions,\n  };\n\n  cache.current = state.routes.reduce<NavigationCache<State, ScreenOptions>>(\n    (acc, route) => {\n      const previous = cache.current[route.key];\n\n      if (previous) {\n        // If a cached navigation object already exists, reuse it\n        acc[route.key] = previous;\n      } else {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { emit, ...rest } = navigation;\n\n        const dispatch = (\n          action: NavigationAction | ((state: State) => NavigationAction)\n        ) => {\n          const payload =\n            typeof action === 'function' ? action(getState()) : action;\n\n          navigation.dispatch(\n            typeof payload === 'object' && payload != null\n              ? { source: route.key, ...payload }\n              : payload\n          );\n        };\n\n        const helpers = Object.keys(actions).reduce<Record<string, () => void>>(\n          (acc, name) => {\n            // @ts-expect-error: name is a valid key, but TypeScript is dumb\n            acc[name] = (...args: any) => dispatch(actions[name](...args));\n            return acc;\n          },\n          {}\n        );\n\n        acc[route.key] = {\n          ...rest,\n          ...helpers,\n          ...emitter.create(route.key),\n          dispatch,\n          setOptions: (options: object) =>\n            setOptions((o) => ({\n              ...o,\n              [route.key]: { ...o[route.key], ...options },\n            })),\n          isFocused: () => {\n            const state = getState();\n\n            if (state.routes[state.index].key !== route.key) {\n              return false;\n            }\n\n            // If the current screen is focused, we also need to check if parent navigator is focused\n            // This makes sure that we return the focus state in the whole tree, not just this navigator\n            return navigation ? navigation.isFocused() : true;\n          },\n        };\n      }\n\n      return acc;\n    },\n    {}\n  );\n\n  return cache.current;\n}\n","import * as React from 'react';\nimport type {\n  ParamListBase,\n  NavigationState,\n  Route,\n} from '@react-navigation/routers';\nimport type { RouteProp } from './types';\n\ntype RouteCache = Map<Route<string>, RouteProp<ParamListBase, string>>;\n\n/**\n * Utilites such as `getFocusedRouteNameFromRoute` need to access state.\n * So we need a way to suppress the warning for those use cases.\n * This is fine since they are internal utilities and this is not public API.\n */\nexport const SUPPRESS_STATE_ACCESS_WARNING = { value: false };\n\n/**\n * Hook to cache route props for each screen in the navigator.\n * This lets add warnings and modifications to the route object but keep references between renders.\n */\nexport default function useRouteCache<State extends NavigationState>(\n  routes: State['routes']\n) {\n  // Cache object which holds route objects for each screen\n  const cache = React.useMemo(() => ({ current: new Map() as RouteCache }), []);\n\n  if (process.env.NODE_ENV === 'production') {\n    // We don't want the overhead of creating extra maps every render in prod\n    return routes;\n  }\n\n  cache.current = routes.reduce((acc, route) => {\n    const previous = cache.current.get(route);\n\n    if (previous) {\n      // If a cached route object already exists, reuse it\n      acc.set(route, previous);\n    } else {\n      const proxy = { ...route };\n\n      Object.defineProperty(proxy, 'state', {\n        get() {\n          if (!SUPPRESS_STATE_ACCESS_WARNING.value) {\n            console.warn(\n              \"Accessing the 'state' property of the 'route' object is not supported. If you want to get the focused route name, use the 'getFocusedRouteNameFromRoute' helper instead: https://reactnavigation.org/docs/5.x/screen-options-resolution/#setting-parent-screen-options-based-on-child-navigators-state\"\n            );\n          }\n\n          return route.state;\n        },\n      });\n\n      acc.set(route, proxy);\n    }\n\n    return acc;\n  }, new Map() as RouteCache);\n\n  return Array.from(cache.current.values());\n}\n","import * as React from 'react';\nimport {\n  CommonActions,\n  NavigationAction,\n  NavigationState,\n  ParamListBase,\n  Router,\n} from '@react-navigation/routers';\nimport NavigationContext from './NavigationContext';\nimport UnhandledActionContext from './UnhandledActionContext';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport { NavigationHelpers, NavigationProp, PrivateValueStore } from './types';\n\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line babel/no-unused-expressions\nPrivateValueStore;\n\ntype Options<State extends NavigationState, Action extends NavigationAction> = {\n  onAction: (\n    action: NavigationAction,\n    visitedNavigators?: Set<string>\n  ) => boolean;\n  getState: () => State;\n  emitter: NavigationEventEmitter<any>;\n  router: Router<State, Action>;\n};\n\n/**\n * Navigation object with helper methods to be used by a navigator.\n * This object includes methods for common actions as well as methods the parent screen's navigation object.\n */\nexport default function useNavigationHelpers<\n  State extends NavigationState,\n  ActionHelpers extends Record<string, () => void>,\n  Action extends NavigationAction,\n  EventMap extends Record<string, any>\n>({ onAction, getState, emitter, router }: Options<State, Action>) {\n  const onUnhandledAction = React.useContext(UnhandledActionContext);\n  const parentNavigationHelpers = React.useContext(NavigationContext);\n\n  return React.useMemo(() => {\n    const dispatch = (op: Action | ((state: State) => Action)) => {\n      const action = typeof op === 'function' ? op(getState()) : op;\n\n      const handled = onAction(action);\n\n      if (!handled) {\n        onUnhandledAction?.(action);\n      }\n    };\n\n    const actions = {\n      ...router.actionCreators,\n      ...CommonActions,\n    };\n\n    const helpers = Object.keys(actions).reduce<Record<string, () => void>>(\n      (acc, name) => {\n        // @ts-expect-error: name is a valid key, but TypeScript is dumb\n        acc[name] = (...args: any) => dispatch(actions[name](...args));\n        return acc;\n      },\n      {}\n    );\n\n    return {\n      ...parentNavigationHelpers,\n      ...helpers,\n      dispatch,\n      emit: emitter.emit,\n      isFocused: parentNavigationHelpers\n        ? parentNavigationHelpers.isFocused\n        : () => true,\n      canGoBack: () => {\n        const state = getState();\n\n        return (\n          router.getStateForAction(state, CommonActions.goBack() as Action, {\n            routeNames: state.routeNames,\n            routeParamList: {},\n            routeGetIdList: {},\n          }) !== null ||\n          parentNavigationHelpers?.canGoBack() ||\n          false\n        );\n      },\n      getParent: () => parentNavigationHelpers as any,\n      getState,\n      dangerouslyGetParent: () => parentNavigationHelpers as any,\n      dangerouslyGetState: getState,\n    } as NavigationHelpers<ParamListBase, EventMap> &\n      (NavigationProp<ParamListBase, string, any, any, any> | undefined) &\n      ActionHelpers;\n  }, [\n    emitter.emit,\n    getState,\n    onAction,\n    onUnhandledAction,\n    parentNavigationHelpers,\n    router,\n  ]);\n}\n","import type * as React from 'react';\nimport type {\n  DefaultRouterOptions,\n  NavigationState,\n  NavigationAction,\n  InitialState,\n  PartialState,\n  Route,\n  ParamListBase,\n} from '@react-navigation/routers';\n\nexport type DefaultNavigatorOptions<\n  ScreenOptions extends {},\n  ParamList extends ParamListBase = ParamListBase\n> = DefaultRouterOptions<Extract<keyof ParamList, string>> & {\n  /**\n   * Children React Elements to extract the route configuration from.\n   * Only `Screen` components are supported as children.\n   */\n  children: React.ReactNode;\n  /**\n   * Default options for all screens under this navigator.\n   */\n  screenOptions?:\n    | ScreenOptions\n    | ((props: {\n        route: RouteProp<ParamList, keyof ParamList>;\n        navigation: any;\n      }) => ScreenOptions);\n  /**\n   * Default options specified by the navigator.\n   * It receives the custom options in the arguments if a function is specified.\n   */\n  defaultScreenOptions?:\n    | ScreenOptions\n    | ((props: {\n        route: RouteProp<ParamList, keyof ParamList>;\n        navigation: any;\n        options: ScreenOptions;\n      }) => ScreenOptions);\n};\n\nexport type EventMapBase = Record<\n  string,\n  { data?: any; canPreventDefault?: boolean }\n>;\n\nexport type EventMapCore<State extends NavigationState> = {\n  focus: { data: undefined };\n  blur: { data: undefined };\n  state: { data: { state: State } };\n  beforeRemove: { data: { action: NavigationAction }; canPreventDefault: true };\n};\n\nexport type EventArg<\n  EventName extends string,\n  CanPreventDefault extends boolean | undefined = false,\n  Data = undefined\n> = {\n  /**\n   * Type of the event (e.g. `focus`, `blur`)\n   */\n  readonly type: EventName;\n  readonly target?: string;\n} & (CanPreventDefault extends true\n  ? {\n      /**\n       * Whether `event.preventDefault()` was called on this event object.\n       */\n      readonly defaultPrevented: boolean;\n      /**\n       * Prevent the default action which happens on this event.\n       */\n      preventDefault(): void;\n    }\n  : {}) &\n  (undefined extends Data\n    ? { readonly data?: Readonly<Data> }\n    : { readonly data: Readonly<Data> });\n\nexport type EventListenerCallback<\n  EventMap extends EventMapBase,\n  EventName extends keyof EventMap\n> = (\n  e: EventArg<\n    Extract<EventName, string>,\n    EventMap[EventName]['canPreventDefault'],\n    EventMap[EventName]['data']\n  >\n) => void;\n\nexport type EventConsumer<EventMap extends EventMapBase> = {\n  /**\n   * Subscribe to events from the parent navigator.\n   *\n   * @param type Type of the event (e.g. `focus`, `blur`)\n   * @param callback Callback listener which is executed upon receiving the event.\n   */\n  addListener<EventName extends Extract<keyof EventMap, string>>(\n    type: EventName,\n    callback: EventListenerCallback<EventMap, EventName>\n  ): () => void;\n  removeListener<EventName extends Extract<keyof EventMap, string>>(\n    type: EventName,\n    callback: EventListenerCallback<EventMap, EventName>\n  ): void;\n};\n\nexport type EventEmitter<EventMap extends EventMapBase> = {\n  /**\n   * Emit an event to child screens.\n   *\n   * @param options.type Type of the event (e.g. `focus`, `blur`)\n   * @param [options.data] Optional information regarding the event.\n   * @param [options.target] Key of the target route which should receive the event.\n   * If not specified, all routes receive the event.\n   */\n  emit<EventName extends Extract<keyof EventMap, string>>(\n    options: {\n      type: EventName;\n      target?: string;\n    } & (EventMap[EventName]['canPreventDefault'] extends true\n      ? { canPreventDefault: true }\n      : {}) &\n      (undefined extends EventMap[EventName]['data']\n        ? { data?: EventMap[EventName]['data'] }\n        : { data: EventMap[EventName]['data'] })\n  ): EventArg<\n    EventName,\n    EventMap[EventName]['canPreventDefault'],\n    EventMap[EventName]['data']\n  >;\n};\n\nexport class PrivateValueStore<A, B, C> {\n  /**\n   * UGLY HACK! DO NOT USE THE TYPE!!!\n   *\n   * TypeScript requires a type to be used to be able to infer it.\n   * The type should exist as its own without any operations such as union.\n   * So we need to figure out a way to store this type in a property.\n   * The problem with a normal property is that it shows up in intelliSense.\n   * Adding private keyword works, but the annotation is stripped away in declaration.\n   * Turns out if we use an empty string, it doesn't show up in intelliSense.\n   */\n  protected ''?: { a: A; b: B; c: C };\n}\n\ntype NavigationHelpersCommon<\n  ParamList extends ParamListBase,\n  State extends NavigationState = NavigationState\n> = {\n  /**\n   * Dispatch an action or an update function to the router.\n   * The update function will receive the current state,\n   *\n   * @param action Action object or update function.\n   */\n  dispatch(\n    action: NavigationAction | ((state: State) => NavigationAction)\n  ): void;\n\n  /**\n   * Navigate to a route in current navigation tree.\n   *\n   * @param name Name of the route to navigate to.\n   * @param [params] Params object for the route.\n   */\n  navigate<RouteName extends keyof ParamList>(\n    ...args: undefined extends ParamList[RouteName]\n      ? [RouteName] | [RouteName, ParamList[RouteName]]\n      : [RouteName, ParamList[RouteName]]\n  ): void;\n\n  /**\n   * Navigate to a route in current navigation tree.\n   *\n   * @param route Object with `key` or `name` for the route to navigate to, and a `params` object.\n   */\n  navigate<RouteName extends keyof ParamList>(\n    route:\n      | { key: string; params?: ParamList[RouteName] }\n      | { name: RouteName; key?: string; params: ParamList[RouteName] }\n  ): void;\n\n  /**\n   * Reset the navigation state to the provided state.\n   *\n   * @param state Navigation state object.\n   */\n  reset(state: PartialState<State> | State): void;\n\n  /**\n   * Go back to the previous route in history.\n   */\n  goBack(): void;\n\n  /**\n   * Check if the screen is focused. The method returns `true` if focused, `false` otherwise.\n   * Note that this method doesn't re-render screen when the focus changes. So don't use it in `render`.\n   * To get notified of focus changes, use `addListener('focus', cb)` and `addListener('blur', cb)`.\n   * To conditionally render content based on focus state, use the `useIsFocused` hook.\n   */\n  isFocused(): boolean;\n\n  /**\n   * Check if dispatching back action will be handled by navigation.\n   * Note that this method doesn't re-render screen when the result changes. So don't use it in `render`.\n   */\n  canGoBack(): boolean;\n\n  /**\n   * Returns the parent navigator, if any. Reason why the function is called\n   * of parent and other hard-to-follow patterns.\n   */\n  getParent<T = NavigationProp<ParamListBase> | undefined>(): T;\n\n  /**\n   * Returns the navigator's state. Reason why the function is called\n   * Note that this method doesn't re-render screen when the result changes. So don't use it in `render`.\n   */\n  getState(): State;\n\n  /**\n   * An alias to getParent().\n   *\n   * @deprecated\n   */\n  dangerouslyGetParent<T = NavigationProp<ParamListBase> | undefined>(): T;\n\n  /**\n   * An alias to getState().\n   *\n   * @deprecated\n   */\n  dangerouslyGetState(): State;\n} & PrivateValueStore<ParamList, keyof ParamList, {}>;\n\nexport type NavigationHelpers<\n  ParamList extends ParamListBase,\n  EventMap extends EventMapBase = {}\n> = NavigationHelpersCommon<ParamList> &\n  EventEmitter<EventMap> & {\n    /**\n     * Update the param object for the route.\n     * The new params will be shallow merged with the old one.\n     *\n     * @param params Params object for the current route.\n     */\n    setParams<RouteName extends keyof ParamList>(\n      params: Partial<ParamList[RouteName]>\n    ): void;\n  };\n\nexport type NavigationContainerProps = {\n  /**\n   * Initial navigation state for the child navigators.\n   */\n  initialState?: InitialState;\n  /**\n   * Callback which is called with the latest navigation state when it changes.\n   */\n  onStateChange?: (state: NavigationState | undefined) => void;\n  /**\n   * Callback which is called when an action is not handled.\n   */\n  onUnhandledAction?: (action: NavigationAction) => void;\n  /**\n   * Whether this navigation container should be independent of parent containers.\n   * If this is not set to `true`, this container cannot be nested inside another container.\n   * Setting it to `true` disconnects any children navigators from parent container.\n   */\n  independent?: boolean;\n  /**\n   * Children elements to render.\n   */\n  children: React.ReactNode;\n};\n\nexport type NavigationProp<\n  ParamList extends ParamListBase,\n  RouteName extends keyof ParamList = string,\n  State extends NavigationState = NavigationState<ParamList>,\n  ScreenOptions extends {} = {},\n  EventMap extends EventMapBase = {}\n> = NavigationHelpersCommon<ParamList, State> & {\n  /**\n   * Update the param object for the route.\n   * The new params will be shallow merged with the old one.\n   *\n   * @param params Params object for the current route.\n   */\n  setParams(params: Partial<ParamList[RouteName]>): void;\n\n  /**\n   * Update the options for the route.\n   * The options object will be shallow merged with default options object.\n   *\n   * @param options Options object for the route.\n   */\n  setOptions(options: Partial<ScreenOptions>): void;\n} & EventConsumer<EventMap & EventMapCore<State>> &\n  PrivateValueStore<ParamList, RouteName, EventMap>;\n\nexport type RouteProp<\n  ParamList extends ParamListBase,\n  RouteName extends keyof ParamList\n> = Route<Extract<RouteName, string>, ParamList[RouteName]>;\n\nexport type CompositeNavigationProp<\n  A extends NavigationProp<ParamListBase, string, any, any>,\n  B extends NavigationHelpersCommon<ParamListBase, any>\n> = Omit<A & B, keyof NavigationProp<any>> &\n  NavigationProp<\n    /**\n     * Param list from both navigation objects needs to be combined\n     * For example, we should be able to navigate to screens in both A and B\n     */\n    (A extends NavigationHelpersCommon<infer T> ? T : never) &\n      (B extends NavigationHelpersCommon<infer U> ? U : never),\n    /**\n     * The route name should refer to the route name specified in the first type\n     * Ideally it should work for any of them, but it's not possible to infer that way\n     */\n    A extends NavigationProp<any, infer R> ? R : string,\n    /**\n     * The type of state should refer to the state specified in the first type\n     */\n    A extends NavigationProp<any, any, infer S> ? S : NavigationState,\n    /**\n     * Screen options from both navigation objects needs to be combined\n     * This allows typechecking `setOptions`\n     */\n    (A extends NavigationProp<any, any, any, infer O> ? O : {}) &\n      (B extends NavigationProp<any, any, any, infer P> ? P : {}),\n    /**\n     * Event consumer config should refer to the config specified in the first type\n     * This allows typechecking `addListener`/`removeListener`\n     */\n    A extends NavigationProp<any, any, any, any, infer E> ? E : {}\n  >;\n\nexport type Descriptor<\n  ParamList extends ParamListBase,\n  RouteName extends keyof ParamList = string,\n  State extends NavigationState = NavigationState,\n  ScreenOptions extends {} = {},\n  EventMap extends EventMapBase = {}\n> = {\n  /**\n   * Render the component associated with this route.\n   */\n  render(): JSX.Element;\n\n  /**\n   * Options for the route.\n   */\n  options: ScreenOptions;\n\n  /**\n   * Navigation object for the screen\n   */\n  navigation: NavigationProp<\n    ParamList,\n    RouteName,\n    State,\n    ScreenOptions,\n    EventMap\n  >;\n};\n\nexport type ScreenListeners<\n  State extends NavigationState,\n  EventMap extends EventMapBase\n> = Partial<\n  {\n    [EventName in keyof (EventMap &\n      EventMapCore<State>)]: EventListenerCallback<EventMap, EventName>;\n  }\n>;\n\nexport type RouteConfig<\n  ParamList extends ParamListBase,\n  RouteName extends keyof ParamList,\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase\n> = {\n  /**\n   * Route name of this screen.\n   */\n  name: RouteName;\n\n  /**\n   * Navigator options for this screen.\n   */\n  options?:\n    | ScreenOptions\n    | ((props: {\n        route: RouteProp<ParamList, RouteName>;\n        navigation: any;\n      }) => ScreenOptions);\n\n  /**\n   * Event listeners for this screen.\n   */\n  listeners?:\n    | ScreenListeners<State, EventMap>\n    | ((props: {\n        route: RouteProp<ParamList, RouteName>;\n        navigation: any;\n      }) => ScreenListeners<State, EventMap>);\n\n  /**\n   * Function to return an unique ID for this screen.\n   * Receives an object with the route params.\n   * For a given screen name, there will always be only one screen corresponding to an ID.\n   * If `undefined` is returned, it acts same as no `getId` being specified.\n   */\n  getId?: ({ params }: { params: ParamList[RouteName] }) => string | undefined;\n\n  /**\n   * Initial params object for the route.\n   */\n  initialParams?: Partial<ParamList[RouteName]>;\n} & (\n  | {\n      /**\n       * React component to render for this screen.\n       */\n      component: React.ComponentType<any>;\n      getComponent?: never;\n      children?: never;\n    }\n  | {\n      /**\n       * Lazily get a React component to render for this screen.\n       */\n      getComponent: () => React.ComponentType<any>;\n      component?: never;\n      children?: never;\n    }\n  | {\n      /**\n       * Render callback to render content of this screen.\n       */\n      children: (props: {\n        route: RouteProp<ParamList, RouteName>;\n        navigation: any;\n      }) => React.ReactNode;\n      component?: never;\n      getComponent?: never;\n    }\n);\n\nexport type NavigationContainerEventMap = {\n  /**\n   * Event which fires when the navigation state changes.\n   */\n  state: {\n    data: {\n      /**\n       * The updated state object after the state change.\n       */\n      state: NavigationState | PartialState<NavigationState> | undefined;\n    };\n  };\n  /**\n   * Event which fires when current options changes.\n   */\n  options: { data: { options: object } };\n  /**\n   * Event which fires when an action is dispatched.\n   * Only intended for debugging purposes, don't use it for app logic.\n   * This event will be emitted before state changes have been applied.\n   */\n  __unsafe_action__: {\n    data: {\n      /**\n       * The action object which was dispatched.\n       */\n      action: NavigationAction;\n      /**\n       * Whether the action was a no-op, i.e. resulted any state changes.\n       */\n      noop: boolean;\n    };\n  };\n};\n\nexport type NavigationContainerRef = NavigationHelpers<ParamListBase> &\n  EventConsumer<NavigationContainerEventMap> & {\n    /**\n     * Reset the navigation state of the root navigator to the provided state.\n     *\n     * @param state Navigation state object.\n     */\n    resetRoot(state?: PartialState<NavigationState> | NavigationState): void;\n    /**\n     * Get the rehydrated navigation state of the navigation tree.\n     */\n    getRootState(): NavigationState;\n    /**\n     * Get the currently focused navigation route.\n     */\n    getCurrentRoute(): Route<string> | undefined;\n    /**\n     * Get the currently focused route's options.\n     */\n    getCurrentOptions(): object | undefined;\n  };\n\nexport type TypedNavigator<\n  ParamList extends ParamListBase,\n  State extends NavigationState,\n  ScreenOptions extends {},\n  EventMap extends EventMapBase,\n  Navigator extends React.ComponentType<any>\n> = {\n  /**\n   * Navigator component which manages the child screens.\n   */\n  Navigator: React.ComponentType<\n    Omit<\n      React.ComponentProps<Navigator>,\n      keyof DefaultNavigatorOptions<any, any>\n    > &\n      DefaultNavigatorOptions<ScreenOptions, ParamList>\n  >;\n  /**\n   * Component used for specifying route configuration.\n   */\n  Screen: <RouteName extends keyof ParamList>(\n    _: RouteConfig<ParamList, RouteName, State, ScreenOptions, EventMap>\n  ) => null;\n};\n\nexport type NavigatorScreenParams<\n  ParamList,\n  State extends NavigationState = NavigationState\n> =\n  | {\n      screen?: never;\n      params?: never;\n      initial?: never;\n      state: PartialState<State> | State | undefined;\n    }\n  | {\n      [RouteName in keyof ParamList]: undefined extends ParamList[RouteName]\n        ? {\n            screen: RouteName;\n            params?: ParamList[RouteName];\n            initial?: boolean;\n            state?: never;\n          }\n        : {\n            screen: RouteName;\n            params: ParamList[RouteName];\n            initial?: boolean;\n            state?: never;\n          };\n    }[keyof ParamList];\n\nexport type PathConfig = {\n  path?: string;\n  exact?: boolean;\n  parse?: Record<string, (value: string) => any>;\n  stringify?: Record<string, (value: any) => string>;\n  screens?: PathConfigMap;\n  initialRouteName?: string;\n};\n\nexport type PathConfigMap = {\n  [routeName: string]: string | PathConfig;\n};\n","import * as React from 'react';\nimport type {\n  NavigationAction,\n  NavigationState,\n  PartialState,\n  Router,\n  RouterConfigOptions,\n} from '@react-navigation/routers';\nimport NavigationBuilderContext, {\n  ChildActionListener,\n  ChildBeforeRemoveListener,\n} from './NavigationBuilderContext';\nimport useOnPreventRemove, { shouldPreventRemove } from './useOnPreventRemove';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport type { EventMapCore } from './types';\n\ntype Options = {\n  router: Router<NavigationState, NavigationAction>;\n  key?: string;\n  getState: () => NavigationState;\n  setState: (state: NavigationState | PartialState<NavigationState>) => void;\n  actionListeners: ChildActionListener[];\n  beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;\n  routerConfigOptions: RouterConfigOptions;\n  emitter: NavigationEventEmitter<EventMapCore<any>>;\n};\n\n/**\n * Hook to handle actions for a navigator, including state updates and bubbling.\n *\n * Bubbling an action is achieved in 2 ways:\n * 1. To bubble action to parent, we expose the action handler in context and then access the parent context\n * 2. To bubble action to child, child adds event listeners subscribing to actions from parent\n *\n * When the action handler handles as action, it returns `true`, otherwise `false`.\n */\nexport default function useOnAction({\n  router,\n  getState,\n  setState,\n  key,\n  actionListeners,\n  beforeRemoveListeners,\n  routerConfigOptions,\n  emitter,\n}: Options) {\n  const {\n    onAction: onActionParent,\n    onRouteFocus: onRouteFocusParent,\n    addListener: addListenerParent,\n    onDispatchAction,\n  } = React.useContext(NavigationBuilderContext);\n\n  const routerConfigOptionsRef = React.useRef<RouterConfigOptions>(\n    routerConfigOptions\n  );\n\n  React.useEffect(() => {\n    routerConfigOptionsRef.current = routerConfigOptions;\n  });\n\n  const onAction = React.useCallback(\n    (\n      action: NavigationAction,\n      visitedNavigators: Set<string> = new Set<string>()\n    ) => {\n      const state = getState();\n\n      // Since actions can bubble both up and down, they could come to the same navigator again\n      // We keep track of navigators which have already tried to handle the action and return if it's already visited\n      if (visitedNavigators.has(state.key)) {\n        return false;\n      }\n\n      visitedNavigators.add(state.key);\n\n      if (typeof action.target !== 'string' || action.target === state.key) {\n        let result = router.getStateForAction(\n          state,\n          action,\n          routerConfigOptionsRef.current\n        );\n\n        // If a target is specified and set to current navigator, the action shouldn't bubble\n        // So instead of `null`, we use the state object for such cases to signal that action was handled\n        result =\n          result === null && action.target === state.key ? state : result;\n\n        if (result !== null) {\n          onDispatchAction(action, state === result);\n\n          if (state !== result) {\n            const isPrevented = shouldPreventRemove(\n              emitter,\n              beforeRemoveListeners,\n              state.routes,\n              result.routes,\n              action\n            );\n\n            if (isPrevented) {\n              return true;\n            }\n\n            setState(result);\n          }\n\n          if (onRouteFocusParent !== undefined) {\n            // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree\n            // This means we need to focus all of the parent navigators of this navigator as well\n            const shouldFocus = router.shouldActionChangeFocus(action);\n\n            if (shouldFocus && key !== undefined) {\n              onRouteFocusParent(key);\n            }\n          }\n\n          return true;\n        }\n      }\n\n      if (onActionParent !== undefined) {\n        // Bubble action to the parent if the current navigator didn't handle it\n        if (onActionParent(action, visitedNavigators)) {\n          return true;\n        }\n      }\n\n      // If the action wasn't handled by current navigator or a parent navigator, let children handle it\n      for (let i = actionListeners.length - 1; i >= 0; i--) {\n        const listener = actionListeners[i];\n\n        if (listener(action, visitedNavigators)) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n    [\n      actionListeners,\n      beforeRemoveListeners,\n      emitter,\n      getState,\n      key,\n      onActionParent,\n      onDispatchAction,\n      onRouteFocusParent,\n      router,\n      setState,\n    ]\n  );\n\n  useOnPreventRemove({\n    getState,\n    emitter,\n    beforeRemoveListeners,\n  });\n\n  React.useEffect(() => addListenerParent?.('action', onAction), [\n    addListenerParent,\n    onAction,\n  ]);\n\n  return onAction;\n}\n","import * as React from 'react';\nimport type {\n  NavigationState,\n  NavigationAction,\n} from '@react-navigation/routers';\nimport NavigationBuilderContext, {\n  ChildBeforeRemoveListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport type { EventMapCore } from './types';\n\ntype Options = {\n  getState: () => NavigationState;\n  emitter: NavigationEventEmitter<EventMapCore<any>>;\n  beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;\n};\n\nconst VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');\n\nexport const shouldPreventRemove = (\n  emitter: NavigationEventEmitter<EventMapCore<any>>,\n  beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>,\n  currentRoutes: { key: string }[],\n  nextRoutes: { key?: string | undefined }[],\n  action: NavigationAction\n) => {\n  const nextRouteKeys = nextRoutes.map((route) => route.key);\n\n  // Call these in reverse order so last screens handle the event first\n  const removedRoutes = currentRoutes\n    .filter((route) => !nextRouteKeys.includes(route.key))\n    .reverse();\n\n  const visitedRouteKeys: Set<string> =\n    // @ts-expect-error: add this property to mark that we've already emitted this action\n    action[VISITED_ROUTE_KEYS] ?? new Set<string>();\n\n  const beforeRemoveAction = {\n    ...action,\n    [VISITED_ROUTE_KEYS]: visitedRouteKeys,\n  };\n\n  for (const route of removedRoutes) {\n    if (visitedRouteKeys.has(route.key)) {\n      // Skip if we've already emitted this action for this screen\n      continue;\n    }\n\n    // First, we need to check if any child screens want to prevent it\n    const isPrevented = beforeRemoveListeners[route.key]?.(beforeRemoveAction);\n\n    if (isPrevented) {\n      return true;\n    }\n\n    visitedRouteKeys.add(route.key);\n\n    const event = emitter.emit({\n      type: 'beforeRemove',\n      target: route.key,\n      data: { action: beforeRemoveAction },\n      canPreventDefault: true,\n    });\n\n    if (event.defaultPrevented) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nexport default function useOnPreventRemove({\n  getState,\n  emitter,\n  beforeRemoveListeners,\n}: Options) {\n  const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n  const route = React.useContext(NavigationRouteContext);\n  const routeKey = route?.key;\n\n  React.useEffect(() => {\n    if (routeKey) {\n      return addKeyedListener?.('beforeRemove', routeKey, (action) => {\n        const state = getState();\n\n        return shouldPreventRemove(\n          emitter,\n          beforeRemoveListeners,\n          state.routes,\n          [],\n          action\n        );\n      });\n    }\n  }, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);\n}\n","import * as React from 'react';\nimport type { NavigationState } from '@react-navigation/routers';\nimport NavigationContext from './NavigationContext';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport type { EventMapCore } from './types';\n\ntype Options<State extends NavigationState> = {\n  state: State;\n  emitter: NavigationEventEmitter<EventMapCore<State>>;\n};\n\n/**\n * Hook to take care of emitting `focus` and `blur` events.\n */\nexport default function useFocusEvents<State extends NavigationState>({\n  state,\n  emitter,\n}: Options<State>) {\n  const navigation = React.useContext(NavigationContext);\n  const lastFocusedKeyRef = React.useRef<string | undefined>();\n\n  const currentFocusedKey = state.routes[state.index].key;\n\n  // When the parent screen changes its focus state, we also need to change child's focus\n  // Coz the child screen can't be focused if the parent screen is out of focus\n  React.useEffect(\n    () =>\n      navigation?.addListener('focus', () => {\n        lastFocusedKeyRef.current = currentFocusedKey;\n        emitter.emit({ type: 'focus', target: currentFocusedKey });\n      }),\n    [currentFocusedKey, emitter, navigation]\n  );\n\n  React.useEffect(\n    () =>\n      navigation?.addListener('blur', () => {\n        lastFocusedKeyRef.current = undefined;\n        emitter.emit({ type: 'blur', target: currentFocusedKey });\n      }),\n    [currentFocusedKey, emitter, navigation]\n  );\n\n  React.useEffect(() => {\n    const lastFocusedKey = lastFocusedKeyRef.current;\n\n    lastFocusedKeyRef.current = currentFocusedKey;\n\n    // We wouldn't have `lastFocusedKey` on initial mount\n    // Fire focus event for the current route on mount if there's no parent navigator\n    if (lastFocusedKey === undefined && !navigation) {\n      emitter.emit({ type: 'focus', target: currentFocusedKey });\n    }\n\n    // We should only emit events when the focused key changed and navigator is focused\n    // When navigator is not focused, screens inside shouldn't receive focused status either\n    if (\n      lastFocusedKey === currentFocusedKey ||\n      !(navigation ? navigation.isFocused() : true)\n    ) {\n      return;\n    }\n\n    if (lastFocusedKey === undefined) {\n      // Only fire events after initial mount\n      return;\n    }\n\n    emitter.emit({ type: 'blur', target: lastFocusedKey });\n    emitter.emit({ type: 'focus', target: currentFocusedKey });\n  }, [currentFocusedKey, emitter, navigation]);\n}\n","import * as React from 'react';\nimport type {\n  NavigationAction,\n  NavigationState,\n  Router,\n} from '@react-navigation/routers';\nimport NavigationBuilderContext from './NavigationBuilderContext';\n\ntype Options<Action extends NavigationAction> = {\n  router: Router<NavigationState, Action>;\n  getState: () => NavigationState;\n  setState: (state: NavigationState) => void;\n  key?: string;\n};\n\n/**\n * Hook to handle focus actions for a route.\n * Focus action needs to be treated specially, coz when a nested route is focused,\n * the parent navigators also needs to be focused.\n */\nexport default function useOnRouteFocus<Action extends NavigationAction>({\n  router,\n  getState,\n  key: sourceRouteKey,\n  setState,\n}: Options<Action>) {\n  const { onRouteFocus: onRouteFocusParent } = React.useContext(\n    NavigationBuilderContext\n  );\n\n  return React.useCallback(\n    (key: string) => {\n      const state = getState();\n      const result = router.getStateForRouteFocus(state, key);\n\n      if (result !== state) {\n        setState(result);\n      }\n\n      if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {\n        onRouteFocusParent(sourceRouteKey);\n      }\n    },\n    [getState, onRouteFocusParent, router, setState, sourceRouteKey]\n  );\n}\n","import * as React from 'react';\nimport type { ParamListBase } from '@react-navigation/routers';\nimport NavigationBuilderContext, {\n  FocusedNavigationCallback,\n  FocusedNavigationListener,\n} from './NavigationBuilderContext';\nimport type { NavigationHelpers } from './types';\n\ntype Options = {\n  navigation: NavigationHelpers<ParamListBase>;\n  focusedListeners: FocusedNavigationListener[];\n};\n\n/**\n * Hook for passing focus callback to children\n */\nexport default function useFocusedListenersChildrenAdapter({\n  navigation,\n  focusedListeners,\n}: Options) {\n  const { addListener } = React.useContext(NavigationBuilderContext);\n\n  const listener = React.useCallback(\n    (callback: FocusedNavigationCallback<any>) => {\n      if (navigation.isFocused()) {\n        for (const listener of focusedListeners) {\n          const { handled, result } = listener(callback);\n\n          if (handled) {\n            return { handled, result };\n          }\n        }\n\n        return { handled: true, result: callback(navigation) };\n      } else {\n        return { handled: false, result: null };\n      }\n    },\n    [focusedListeners, navigation]\n  );\n\n  React.useEffect(() => addListener?.('focus', listener), [\n    addListener,\n    listener,\n  ]);\n}\n","import * as React from 'react';\nimport type { NavigationState } from '@react-navigation/routers';\nimport NavigationBuilderContext, {\n  GetStateListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport isArrayEqual from './isArrayEqual';\n\ntype Options = {\n  getState: () => NavigationState;\n  getStateListeners: Record<string, GetStateListener | undefined>;\n};\n\nexport default function useOnGetState({\n  getState,\n  getStateListeners,\n}: Options) {\n  const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n  const route = React.useContext(NavigationRouteContext);\n  const key = route ? route.key : 'root';\n\n  const getRehydratedState = React.useCallback(() => {\n    const state = getState();\n\n    // Avoid returning new route objects if we don't need to\n    const routes = state.routes.map((route) => {\n      const childState = getStateListeners[route.key]?.();\n\n      if (route.state === childState) {\n        return route;\n      }\n\n      return { ...route, state: childState };\n    });\n\n    if (isArrayEqual(state.routes, routes)) {\n      return state;\n    }\n\n    return { ...state, routes };\n  }, [getState, getStateListeners]);\n\n  React.useEffect(() => {\n    return addKeyedListener?.('getState', key, getRehydratedState);\n  }, [addKeyedListener, getRehydratedState, key]);\n}\n","/**\n * Compare two arrays with primitive values as the content.\n * We need to make sure that both values and order match.\n */\nexport default function isArrayEqual(a: any[], b: any[]) {\n  return a.length === b.length && a.every((it, index) => it === b[index]);\n}\n","import * as React from 'react';\nimport type { NavigationState, ParamListBase } from '@react-navigation/routers';\nimport CurrentRenderContext from './CurrentRenderContext';\nimport type { Descriptor, NavigationHelpers } from './types';\n\ntype Options = {\n  state: NavigationState;\n  navigation: NavigationHelpers<ParamListBase>;\n  descriptors: {\n    [key: string]: Descriptor<ParamListBase, string, NavigationState, object>;\n  };\n};\n\n/**\n * Write the current options, so that server renderer can get current values\n * Mutating values like this is not safe in async mode, but it doesn't apply to SSR\n */\nexport default function useCurrentRender({\n  state,\n  navigation,\n  descriptors,\n}: Options) {\n  const current = React.useContext(CurrentRenderContext);\n\n  if (current && navigation.isFocused()) {\n    current.options = descriptors[state.routes[state.index].key].options;\n  }\n}\n","import * as React from 'react';\nimport type { ParamListBase } from '@react-navigation/routers';\nimport NavigationContext from './NavigationContext';\nimport type { NavigationProp } from './types';\n\n/**\n * Hook to access the navigation prop of the parent screen anywhere.\n *\n * @returns Navigation prop of the parent screen.\n */\nexport default function useNavigation<\n  T extends NavigationProp<ParamListBase>\n>(): T {\n  const navigation = React.useContext(NavigationContext);\n\n  if (navigation === undefined) {\n    throw new Error(\n      \"Couldn't find a navigation object. Is your component inside a screen in a navigator?\"\n    );\n  }\n\n  return navigation as T;\n}\n","import * as React from 'react';\nimport type { ParamListBase } from '@react-navigation/routers';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport type { RouteProp } from './types';\n\n/**\n * Hook to access the route prop of the parent screen anywhere.\n *\n * @returns Route prop of the parent screen.\n */\nexport default function useRoute<\n  T extends RouteProp<ParamListBase, string>\n>(): T {\n  const route = React.useContext(NavigationRouteContext);\n\n  if (route === undefined) {\n    throw new Error(\n      \"Couldn't find a route object. Is your component inside a screen in a navigator?\"\n    );\n  }\n\n  return route as T;\n}\n","import * as React from 'react';\nimport useNavigation from './useNavigation';\n\ntype EffectCallback = () => undefined | void | (() => void);\n\n/**\n * Hook to run an effect in a focused screen, similar to `React.useEffect`.\n * This can be used to perform side-effects such as fetching data or subscribing to events.\n * The passed callback should be wrapped in `React.useCallback` to avoid running the effect too often.\n *\n * @param callback Memoized callback containing the effect, should optionally return a cleanup function.\n */\nexport default function useFocusEffect(effect: EffectCallback) {\n  const navigation = useNavigation();\n\n  if (arguments[1] !== undefined) {\n    const message =\n      \"You passed a second argument to 'useFocusEffect', but it only accepts one argument. \" +\n      \"If you want to pass a dependency array, you can use 'React.useCallback':\\n\\n\" +\n      'useFocusEffect(\\n' +\n      '  React.useCallback(() => {\\n' +\n      '    // Your code here\\n' +\n      '  }, [depA, depB])\\n' +\n      ');\\n\\n' +\n      'See usage guide: https://reactnavigation.org/docs/5.x/use-focus-effect';\n\n    console.error(message);\n  }\n\n  React.useEffect(() => {\n    let isFocused = false;\n    let cleanup: undefined | void | (() => void);\n\n    const callback = () => {\n      const destroy = effect();\n\n      if (destroy === undefined || typeof destroy === 'function') {\n        return destroy;\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        let message =\n          'An effect function must not return anything besides a function, which is used for clean-up.';\n\n        if (destroy === null) {\n          message +=\n            \" You returned 'null'. If your effect does not require clean-up, return 'undefined' (or nothing).\";\n        } else if (typeof (destroy as any).then === 'function') {\n          message +=\n            \"\\n\\nIt looks like you wrote 'useFocusEffect(async () => ...)' or returned a Promise. \" +\n            'Instead, write the async function inside your effect ' +\n            'and call it immediately:\\n\\n' +\n            'useFocusEffect(\\n' +\n            '  React.useCallback() => {\\n' +\n            '    async function fetchData() {\\n' +\n            '      // You can await here\\n' +\n            '      const response = await MyAPI.getData(someId);\\n' +\n            '      // ...\\n' +\n            '    }\\n\\n' +\n            '    fetchData();\\n' +\n            '  }, [someId])\\n' +\n            ');\\n\\n' +\n            'See usage guide: https://reactnavigation.org/docs/5.x/use-focus-effect';\n        } else {\n          message += ` You returned '${JSON.stringify(destroy)}'.`;\n        }\n\n        console.error(message);\n      }\n    };\n\n    // We need to run the effect on intial render/dep changes if the screen is focused\n    if (navigation.isFocused()) {\n      cleanup = callback();\n      isFocused = true;\n    }\n\n    const unsubscribeFocus = navigation.addListener('focus', () => {\n      // If callback was already called for focus, avoid calling it again\n      // The focus event may also fire on intial render, so we guard against runing the effect twice\n      if (isFocused) {\n        return;\n      }\n\n      if (cleanup !== undefined) {\n        cleanup();\n      }\n\n      cleanup = callback();\n      isFocused = true;\n    });\n\n    const unsubscribeBlur = navigation.addListener('blur', () => {\n      if (cleanup !== undefined) {\n        cleanup();\n      }\n\n      cleanup = undefined;\n      isFocused = false;\n    });\n\n    return () => {\n      if (cleanup !== undefined) {\n        cleanup();\n      }\n\n      unsubscribeFocus();\n      unsubscribeBlur();\n    };\n  }, [effect, navigation]);\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport useNavigation from './useNavigation';\n\n/**\n * Hook to get the current focus state of the screen. Returns a `true` if screen is focused, otherwise `false`.\n * This can be used if a component needs to render something based on the focus state.\n */\nexport default function useIsFocused(): boolean {\n  const navigation = useNavigation();\n  const [isFocused, setIsFocused] = useState(navigation.isFocused);\n\n  const valueToReturn = navigation.isFocused();\n\n  if (isFocused !== valueToReturn) {\n    // If the value has changed since the last render, we need to update it.\n    // This could happen if we missed an update from the event listeners during re-render.\n    // React will process this update immediately, so the old subscription value won't be committed.\n    // It is still nice to avoid returning a mismatched value though, so let's override the return value.\n    // This is the same logic as in https://github.com/facebook/react/tree/master/packages/use-subscription\n    setIsFocused(valueToReturn);\n  }\n\n  React.useEffect(() => {\n    const unsubscribeFocus = navigation.addListener('focus', () =>\n      setIsFocused(true)\n    );\n\n    const unsubscribeBlur = navigation.addListener('blur', () =>\n      setIsFocused(false)\n    );\n\n    return () => {\n      unsubscribeFocus();\n      unsubscribeBlur();\n    };\n  }, [navigation]);\n\n  React.useDebugValue(valueToReturn);\n\n  return valueToReturn;\n}\n","import * as React from 'react';\nimport type { NavigationState } from '@react-navigation/routers';\nimport useNavigation from './useNavigation';\n\ntype Selector<T> = (state: NavigationState) => T;\n\n/**\n * Hook to get a value from the current navigation state using a selector.\n *\n * @param selector Selector function to get a value from the state.\n */\nexport default function useNavigationState<T>(selector: Selector<T>): T {\n  const navigation = useNavigation();\n\n  // We don't care about the state value, we run the selector again at the end\n  // The state is only to make sure that there's a re-render when we have a new value\n  const [, setResult] = React.useState(() => selector(navigation.getState()));\n\n  // We store the selector in a ref to avoid re-subscribing listeners every render\n  const selectorRef = React.useRef(selector);\n\n  React.useEffect(() => {\n    selectorRef.current = selector;\n  });\n\n  React.useEffect(() => {\n    const unsubscribe = navigation.addListener('state', (e) => {\n      setResult(selectorRef.current(e.data.state));\n    });\n\n    return unsubscribe;\n  }, [navigation]);\n\n  return selector(navigation.getState());\n}\n","import escape from 'escape-string-regexp';\nimport * as queryString from 'query-string';\nimport type {\n  NavigationState,\n  PartialState,\n  InitialState,\n} from '@react-navigation/routers';\nimport checkLegacyPathConfig from './checkLegacyPathConfig';\nimport type { PathConfigMap } from './types';\n\ntype Options = {\n  initialRouteName?: string;\n  screens: PathConfigMap;\n};\n\ntype ParseConfig = Record<string, (value: string) => any>;\n\ntype RouteConfig = {\n  screen: string;\n  regex?: RegExp;\n  path: string;\n  pattern: string;\n  routeNames: string[];\n  parse?: ParseConfig;\n};\n\ntype InitialRouteConfig = {\n  initialRouteName: string;\n  parentScreens: string[];\n};\n\ntype ResultState = PartialState<NavigationState> & {\n  state?: ResultState;\n};\n\ntype ParsedRoute = {\n  name: string;\n  params?: Record<string, any> | undefined;\n};\n\n/**\n * Utility to parse a path string to initial state object accepted by the container.\n * This is useful for deep linking when we need to handle the incoming URL.\n *\n * @example\n * ```js\n * getStateFromPath(\n *   '/chat/jane/42',\n *   {\n *     screens: {\n *       Chat: {\n *         path: 'chat/:author/:id',\n *         parse: { id: Number }\n *       }\n *     }\n *   }\n * )\n * ```\n * @param path Path string to parse and convert, e.g. /foo/bar?count=42.\n * @param options Extra options to fine-tune how to parse the path.\n */\nexport default function getStateFromPath(\n  path: string,\n  options?: Options\n): ResultState | undefined {\n  const [legacy, compatOptions] = checkLegacyPathConfig(options);\n\n  let initialRoutes: InitialRouteConfig[] = [];\n\n  if (compatOptions?.initialRouteName) {\n    initialRoutes.push({\n      initialRouteName: compatOptions.initialRouteName,\n      parentScreens: [],\n    });\n  }\n\n  const screens = compatOptions?.screens;\n\n  let remaining = path\n    .replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n    .replace(/^\\//, '') // Remove extra leading slash\n    .replace(/\\?.*$/, ''); // Remove query params which we will handle later\n\n  // Make sure there is a trailing slash\n  remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;\n\n  if (screens === undefined) {\n    // When no config is specified, use the path segments as route names\n    const routes = remaining\n      .split('/')\n      .filter(Boolean)\n      .map((segment, i, self) => {\n        const name = decodeURIComponent(segment);\n\n        if (i === self.length - 1) {\n          return { name, params: parseQueryParams(path) };\n        }\n\n        return { name };\n      });\n\n    if (routes.length) {\n      return createNestedStateObject(routes, initialRoutes);\n    }\n\n    return undefined;\n  }\n\n  // Create a normalized configs array which will be easier to use\n  const configs = ([] as RouteConfig[])\n    .concat(\n      ...Object.keys(screens).map((key) =>\n        createNormalizedConfigs(\n          legacy,\n          key,\n          screens as PathConfigMap,\n          [],\n          initialRoutes,\n          []\n        )\n      )\n    )\n    .sort((a, b) => {\n      // Sort config so that:\n      // - the most exhaustive ones are always at the beginning\n      // - patterns with wildcard are always at the end\n\n      // If 2 patterns are same, move the one with less route names up\n      // This is an error state, so it's only useful for consistent error messages\n      if (a.pattern === b.pattern) {\n        return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));\n      }\n\n      // If one of the patterns starts with the other, it's more exhaustive\n      // So move it up\n      if (a.pattern.startsWith(b.pattern)) {\n        return -1;\n      }\n\n      if (b.pattern.startsWith(a.pattern)) {\n        return 1;\n      }\n\n      const aParts = a.pattern.split('/');\n      const bParts = b.pattern.split('/');\n\n      const aWildcardIndex = aParts.indexOf('*');\n      const bWildcardIndex = bParts.indexOf('*');\n\n      // If only one of the patterns has a wildcard, move it down in the list\n      if (aWildcardIndex === -1 && bWildcardIndex !== -1) {\n        return -1;\n      }\n\n      if (aWildcardIndex !== -1 && bWildcardIndex === -1) {\n        return 1;\n      }\n\n      if (aWildcardIndex === bWildcardIndex) {\n        // If `b` has more `/`, it's more exhaustive\n        // So we move it up in the list\n        return bParts.length - aParts.length;\n      }\n\n      // If the wildcard appears later in the pattern (has higher index), it's more specific\n      // So we move it up in the list\n      return bWildcardIndex - aWildcardIndex;\n    });\n\n  // Check for duplicate patterns in the config\n  configs.reduce<Record<string, RouteConfig>>((acc, config) => {\n    if (acc[config.pattern]) {\n      const a = acc[config.pattern].routeNames;\n      const b = config.routeNames;\n\n      // It's not a problem if the path string omitted from a inner most screen\n      // For example, it's ok if a path resolves to `A > B > C` or `A > B`\n      const intersects =\n        a.length > b.length\n          ? b.every((it, i) => a[i] === it)\n          : a.every((it, i) => b[i] === it);\n\n      if (!intersects) {\n        throw new Error(\n          `Found conflicting screens with the same pattern. The pattern '${\n            config.pattern\n          }' resolves to both '${a.join(' > ')}' and '${b.join(\n            ' > '\n          )}'. Patterns must be unique and cannot resolve to more than one screen.`\n        );\n      }\n    }\n\n    return Object.assign(acc, {\n      [config.pattern]: config,\n    });\n  }, {});\n\n  if (remaining === '/') {\n    // We need to add special handling of empty path so navigation to empty path also works\n    // When handling empty path, we should only look at the root level config\n    const match = configs.find(\n      (config) =>\n        config.path === '' &&\n        config.routeNames.every(\n          // Make sure that none of the parent configs have a non-empty path defined\n          (name) => !configs.find((c) => c.screen === name)?.path\n        )\n    );\n\n    if (match) {\n      return createNestedStateObject(\n        match.routeNames.map((name, i, self) => {\n          if (i === self.length - 1) {\n            return { name, params: parseQueryParams(path, match.parse) };\n          }\n\n          return { name };\n        }),\n        initialRoutes\n      );\n    }\n\n    return undefined;\n  }\n\n  let result: PartialState<NavigationState> | undefined;\n  let current: PartialState<NavigationState> | undefined;\n\n  if (legacy === false) {\n    // If we're not in legacy mode,, we match the whole path against the regex instead of segments\n    // This makes sure matches such as wildcard will catch any unmatched routes, even if nested\n    const { routes, remainingPath } = matchAgainstConfigs(\n      remaining,\n      configs.map((c) => ({\n        ...c,\n        // Add `$` to the regex to make sure it matches till end of the path and not just beginning\n        regex: c.regex ? new RegExp(c.regex.source + '$') : undefined,\n      }))\n    );\n\n    if (routes !== undefined) {\n      // This will always be empty if full path matched\n      current = createNestedStateObject(routes, initialRoutes);\n      remaining = remainingPath;\n      result = current;\n    }\n  } else {\n    // In legacy mode, we divide the path into segments and match piece by piece\n    // This preserves the legacy behaviour, but we should remove it in next major\n    while (remaining) {\n      let { routes, remainingPath } = matchAgainstConfigs(remaining, configs);\n\n      remaining = remainingPath;\n\n      // If we hadn't matched any segments earlier, use the path as route name\n      if (routes === undefined) {\n        const segments = remaining.split('/');\n\n        routes = [{ name: decodeURIComponent(segments[0]) }];\n        segments.shift();\n        remaining = segments.join('/');\n      }\n\n      const state = createNestedStateObject(routes, initialRoutes);\n\n      if (current) {\n        // The state should be nested inside the deepest route we parsed before\n        while (current?.routes[current.index || 0].state) {\n          current = current.routes[current.index || 0].state;\n        }\n\n        (current as PartialState<NavigationState>).routes[\n          current?.index || 0\n        ].state = state;\n      } else {\n        result = state;\n      }\n\n      current = state;\n    }\n  }\n\n  if (current == null || result == null) {\n    return undefined;\n  }\n\n  const route = findFocusedRoute(current);\n  const params = parseQueryParams(\n    path,\n    findParseConfigForRoute(route.name, configs)\n  );\n\n  if (params) {\n    // @ts-expect-error: params should be treated as read-only, but we're creating the state here so it doesn't matter\n    route.params = { ...route.params, ...params };\n  }\n\n  return result;\n}\n\nconst joinPaths = (...paths: string[]): string =>\n  ([] as string[])\n    .concat(...paths.map((p) => p.split('/')))\n    .filter(Boolean)\n    .join('/');\n\nconst matchAgainstConfigs = (remaining: string, configs: RouteConfig[]) => {\n  let routes: ParsedRoute[] | undefined;\n  let remainingPath = remaining;\n\n  // Go through all configs, and see if the next path segment matches our regex\n  for (const config of configs) {\n    if (!config.regex) {\n      continue;\n    }\n\n    const match = remainingPath.match(config.regex);\n\n    // If our regex matches, we need to extract params from the path\n    if (match) {\n      const matchedParams = config.pattern\n        ?.split('/')\n        .filter((p) => p.startsWith(':'))\n        .reduce<Record<string, any>>(\n          (acc, p, i) =>\n            Object.assign(acc, {\n              // The param segments appear every second item starting from 2 in the regex match result\n              [p]: match![(i + 1) * 2].replace(/\\//, ''),\n            }),\n          {}\n        );\n\n      routes = config.routeNames.map((name) => {\n        const config = configs.find((c) => c.screen === name);\n        const params = config?.path\n          ?.split('/')\n          .filter((p) => p.startsWith(':'))\n          .reduce<Record<string, any>>((acc, p) => {\n            const value = matchedParams[p];\n\n            if (value) {\n              const key = p.replace(/^:/, '').replace(/\\?$/, '');\n              acc[key] = config.parse?.[key] ? config.parse[key](value) : value;\n            }\n\n            return acc;\n          }, {});\n\n        if (params && Object.keys(params).length) {\n          return { name, params };\n        }\n\n        return { name };\n      });\n\n      remainingPath = remainingPath.replace(match[1], '');\n\n      break;\n    }\n  }\n\n  return { routes, remainingPath };\n};\n\nconst createNormalizedConfigs = (\n  legacy: boolean,\n  screen: string,\n  routeConfig: PathConfigMap,\n  routeNames: string[] = [],\n  initials: InitialRouteConfig[],\n  parentScreens: string[],\n  parentPattern?: string\n): RouteConfig[] => {\n  const configs: RouteConfig[] = [];\n\n  routeNames.push(screen);\n\n  parentScreens.push(screen);\n\n  const config = routeConfig[screen];\n\n  if (typeof config === 'string') {\n    // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n    const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n    configs.push(createConfigItem(legacy, screen, routeNames, pattern, config));\n  } else if (typeof config === 'object') {\n    let pattern: string | undefined;\n\n    // if an object is specified as the value (e.g. Foo: { ... }),\n    // it can have `path` property and\n    // it could have `screens` prop which has nested configs\n    if (typeof config.path === 'string') {\n      if (legacy) {\n        pattern =\n          config.exact !== true && parentPattern\n            ? joinPaths(parentPattern, config.path)\n            : config.path;\n      } else {\n        if (config.exact && config.path === undefined) {\n          throw new Error(\n            \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n          );\n        }\n\n        pattern =\n          config.exact !== true\n            ? joinPaths(parentPattern || '', config.path || '')\n            : config.path || '';\n      }\n\n      configs.push(\n        createConfigItem(\n          legacy,\n          screen,\n          routeNames,\n          pattern,\n          config.path,\n          config.parse\n        )\n      );\n    }\n\n    if (config.screens) {\n      // property `initialRouteName` without `screens` has no purpose\n      if (config.initialRouteName) {\n        initials.push({\n          initialRouteName: config.initialRouteName,\n          parentScreens,\n        });\n      }\n\n      Object.keys(config.screens).forEach((nestedConfig) => {\n        const result = createNormalizedConfigs(\n          legacy,\n          nestedConfig,\n          config.screens as PathConfigMap,\n          routeNames,\n          initials,\n          [...parentScreens],\n          pattern ?? parentPattern\n        );\n\n        configs.push(...result);\n      });\n    }\n  }\n\n  routeNames.pop();\n\n  return configs;\n};\n\nconst createConfigItem = (\n  legacy: boolean,\n  screen: string,\n  routeNames: string[],\n  pattern: string,\n  path: string,\n  parse?: ParseConfig\n): RouteConfig => {\n  // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n  pattern = pattern.split('/').filter(Boolean).join('/');\n\n  const regex = pattern\n    ? new RegExp(\n        `^(${pattern\n          .split('/')\n          .map((it) => {\n            if (legacy && it === '*') {\n              throw new Error(\n                \"Please update your config to the new format to use wildcard pattern ('*'). https://reactnavigation.org/docs/5.x/configuring-links/#updating-config\"\n              );\n            }\n\n            if (it.startsWith(':')) {\n              return `(([^/]+\\\\/)${it.endsWith('?') ? '?' : ''})`;\n            }\n\n            return `${it === '*' ? '.*' : escape(it)}\\\\/`;\n          })\n          .join('')})`\n      )\n    : undefined;\n\n  return {\n    screen,\n    regex,\n    pattern,\n    path,\n    // The routeNames array is mutated, so copy it to keep the current state\n    routeNames: [...routeNames],\n    parse,\n  };\n};\n\nconst findParseConfigForRoute = (\n  routeName: string,\n  flatConfig: RouteConfig[]\n): ParseConfig | undefined => {\n  for (const config of flatConfig) {\n    if (routeName === config.routeNames[config.routeNames.length - 1]) {\n      return config.parse;\n    }\n  }\n\n  return undefined;\n};\n\n// Try to find an initial route connected with the one passed\nconst findInitialRoute = (\n  routeName: string,\n  parentScreens: string[],\n  initialRoutes: InitialRouteConfig[]\n): string | undefined => {\n  for (const config of initialRoutes) {\n    if (parentScreens.length === config.parentScreens.length) {\n      let sameParents = true;\n      for (let i = 0; i < parentScreens.length; i++) {\n        if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {\n          sameParents = false;\n          break;\n        }\n      }\n      if (sameParents) {\n        return routeName !== config.initialRouteName\n          ? config.initialRouteName\n          : undefined;\n      }\n    }\n  }\n  return undefined;\n};\n\n// returns state object with values depending on whether\n// it is the end of state and if there is initialRoute for this level\nconst createStateObject = (\n  initialRoute: string | undefined,\n  route: ParsedRoute,\n  isEmpty: boolean\n): InitialState => {\n  if (isEmpty) {\n    if (initialRoute) {\n      return {\n        index: 1,\n        routes: [{ name: initialRoute }, route],\n      };\n    } else {\n      return {\n        routes: [route],\n      };\n    }\n  } else {\n    if (initialRoute) {\n      return {\n        index: 1,\n        routes: [{ name: initialRoute }, { ...route, state: { routes: [] } }],\n      };\n    } else {\n      return {\n        routes: [{ ...route, state: { routes: [] } }],\n      };\n    }\n  }\n};\n\nconst createNestedStateObject = (\n  routes: ParsedRoute[],\n  initialRoutes: InitialRouteConfig[]\n) => {\n  let state: InitialState;\n  let route = routes.shift() as ParsedRoute;\n  const parentScreens: string[] = [];\n\n  let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n  parentScreens.push(route.name);\n\n  state = createStateObject(initialRoute, route, routes.length === 0);\n\n  if (routes.length > 0) {\n    let nestedState = state;\n\n    while ((route = routes.shift() as ParsedRoute)) {\n      initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n      const nestedStateIndex =\n        nestedState.index || nestedState.routes.length - 1;\n\n      nestedState.routes[nestedStateIndex].state = createStateObject(\n        initialRoute,\n        route,\n        routes.length === 0\n      );\n\n      if (routes.length > 0) {\n        nestedState = nestedState.routes[nestedStateIndex]\n          .state as InitialState;\n      }\n\n      parentScreens.push(route.name);\n    }\n  }\n\n  return state;\n};\n\nconst findFocusedRoute = (state: InitialState) => {\n  let current: InitialState | undefined = state;\n\n  while (current?.routes[current.index || 0].state) {\n    // The query params apply to the deepest route\n    current = current.routes[current.index || 0].state;\n  }\n\n  const route = (current as PartialState<NavigationState>).routes[\n    current?.index || 0\n  ];\n\n  return route;\n};\n\nconst parseQueryParams = (\n  path: string,\n  parseConfig?: Record<string, (value: string) => any>\n) => {\n  const query = path.split('?')[1];\n  const params = queryString.parse(query);\n\n  if (parseConfig) {\n    Object.keys(params).forEach((name) => {\n      if (parseConfig[name] && typeof params[name] === 'string') {\n        params[name] = parseConfig[name](params[name] as string);\n      }\n    });\n  }\n\n  return Object.keys(params).length ? params : undefined;\n};\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import type { PathConfigMap } from './types';\n\ntype Options = {\n  initialRouteName?: string;\n  screens: PathConfigMap;\n};\n\nexport default function checkLegacyPathConfig(\n  config?: Options\n): [boolean, Options | undefined] {\n  let legacy = false;\n\n  if (config) {\n    // Assume legacy configuration if config has any other keys except `screens` and `initialRouteName`\n    legacy = Object.keys(config).some(\n      (key) => key !== 'screens' && key !== 'initialRouteName'\n    );\n\n    if (\n      legacy &&\n      (config.hasOwnProperty('screens') ||\n        config.hasOwnProperty('initialRouteName'))\n    ) {\n      throw new Error(\n        'Found invalid keys in the configuration object. See https://reactnavigation.org/docs/5.x/configuring-links/ for more details on the shape of the configuration object.'\n      );\n    }\n  }\n\n  if (legacy) {\n    // @ts-expect-error: we have incorrect type for config since we don't type legacy config\n    return [legacy, { screens: config }];\n  }\n\n  return [legacy, config];\n}\n","import * as queryString from 'query-string';\nimport type {\n  NavigationState,\n  PartialState,\n  Route,\n} from '@react-navigation/routers';\nimport checkLegacyPathConfig from './checkLegacyPathConfig';\nimport type { PathConfig, PathConfigMap } from './types';\n\ntype Options = { initialRouteName?: string; screens: PathConfigMap };\n\ntype State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\ntype StringifyConfig = Record<string, (value: any) => string>;\n\ntype ConfigItem = {\n  pattern?: string;\n  stringify?: StringifyConfig;\n  screens?: Record<string, ConfigItem>;\n};\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n  const route =\n    typeof state.index === 'number'\n      ? state.routes[state.index]\n      : state.routes[state.routes.length - 1];\n\n  if (route.state) {\n    return getActiveRoute(route.state);\n  }\n\n  return route;\n};\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n *   {\n *     routes: [\n *       {\n *         name: 'Chat',\n *         params: { author: 'Jane', id: 42 },\n *       },\n *     ],\n *   },\n *   {\n *     screens: {\n *       Chat: {\n *         path: 'chat/:author/:id',\n *         stringify: { author: author => author.toLowerCase() }\n *       }\n *     }\n *   }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport default function getPathFromState(\n  state: State,\n  options?: Options\n): string {\n  if (state == null) {\n    throw Error(\n      \"Got 'undefined' for the navigation state. You must pass a valid state object.\"\n    );\n  }\n\n  const [legacy, compatOptions] = checkLegacyPathConfig(options);\n\n  // Create a normalized configs object which will be easier to use\n  const configs: Record<string, ConfigItem> = compatOptions\n    ? createNormalizedConfigs(legacy, compatOptions.screens)\n    : {};\n\n  let path = '/';\n  let current: State | undefined = state;\n\n  const allParams: Record<string, any> = {};\n\n  while (current) {\n    let index = typeof current.index === 'number' ? current.index : 0;\n    let route = current.routes[index] as Route<string> & {\n      state?: State;\n    };\n\n    let pattern: string | undefined;\n\n    let focusedParams: Record<string, any> | undefined;\n    let focusedRoute = getActiveRoute(state);\n    let currentOptions = configs;\n\n    // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n    let nestedRouteNames = [];\n\n    let hasNext = true;\n\n    while (route.name in currentOptions && hasNext) {\n      pattern = currentOptions[route.name].pattern;\n\n      nestedRouteNames.push(route.name);\n\n      if (route.params) {\n        const stringify = currentOptions[route.name]?.stringify;\n\n        const currentParams = fromEntries(\n          Object.entries(route.params).map(([key, value]) => [\n            key,\n            stringify?.[key] ? stringify[key](value) : String(value),\n          ])\n        );\n\n        if (pattern) {\n          Object.assign(allParams, currentParams);\n        }\n\n        if (focusedRoute === route) {\n          // If this is the focused route, keep the params for later use\n          // We save it here since it's been stringified already\n          focusedParams = { ...currentParams };\n\n          pattern\n            ?.split('/')\n            .filter((p) => p.startsWith(':'))\n            // eslint-disable-next-line no-loop-func\n            .forEach((p) => {\n              const name = getParamName(p);\n\n              // Remove the params present in the pattern since we'll only use the rest for query string\n              if (focusedParams) {\n                // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                delete focusedParams[name];\n              }\n            });\n        }\n      }\n\n      // If there is no `screens` property or no nested state, we return pattern\n      if (!currentOptions[route.name].screens || route.state === undefined) {\n        hasNext = false;\n      } else {\n        index =\n          typeof route.state.index === 'number'\n            ? route.state.index\n            : route.state.routes.length - 1;\n\n        const nextRoute = route.state.routes[index];\n        const nestedConfig = currentOptions[route.name].screens;\n\n        // if there is config for next route name, we go deeper\n        if (nestedConfig && nextRoute.name in nestedConfig) {\n          route = nextRoute as Route<string> & { state?: State };\n          currentOptions = nestedConfig;\n        } else {\n          // If not, there is no sense in going deeper in config\n          hasNext = false;\n        }\n      }\n    }\n\n    if (pattern === undefined) {\n      pattern = nestedRouteNames.join('/');\n    }\n\n    if (currentOptions[route.name] !== undefined) {\n      path += pattern\n        .split('/')\n        .map((p) => {\n          const name = getParamName(p);\n\n          // We don't know what to show for wildcard patterns\n          // Showing the route name seems ok, though whatever we show here will be incorrect\n          // Since the page doesn't actually exist\n          if (p === '*') {\n            if (legacy) {\n              throw new Error(\n                \"Please update your config to the new format to use wildcard pattern ('*'). https://reactnavigation.org/docs/5.x/configuring-links/#updating-config\"\n              );\n            }\n\n            return route.name;\n          }\n\n          // If the path has a pattern for a param, put the param in the path\n          if (p.startsWith(':')) {\n            const value = allParams[name];\n\n            if (value === undefined && p.endsWith('?')) {\n              // Optional params without value assigned in route.params should be ignored\n              return '';\n            }\n\n            return encodeURIComponent(value);\n          }\n\n          return encodeURIComponent(p);\n        })\n        .join('/');\n    } else {\n      path += encodeURIComponent(route.name);\n    }\n\n    if (!focusedParams) {\n      focusedParams = focusedRoute.params;\n    }\n\n    if (route.state) {\n      path += '/';\n    } else if (focusedParams) {\n      for (let param in focusedParams) {\n        if (focusedParams[param] === 'undefined') {\n          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n          delete focusedParams[param];\n        }\n      }\n\n      const query = queryString.stringify(focusedParams);\n\n      if (query) {\n        path += `?${query}`;\n      }\n    }\n\n    current = route.state;\n  }\n\n  // Remove multiple as well as trailing slashes\n  path = path.replace(/\\/+/g, '/');\n  path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n  return path;\n}\n\n// Object.fromEntries is not available in older iOS versions\nconst fromEntries = <K extends string, V>(entries: (readonly [K, V])[]) =>\n  entries.reduce((acc, [k, v]) => {\n    if (acc.hasOwnProperty(k)) {\n      throw new Error(`A value for key '${k}' already exists in the object.`);\n    }\n\n    acc[k] = v;\n    return acc;\n  }, {} as Record<K, V>);\n\nconst getParamName = (pattern: string) =>\n  pattern.replace(/^:/, '').replace(/\\?$/, '');\n\nconst joinPaths = (...paths: string[]): string =>\n  ([] as string[])\n    .concat(...paths.map((p) => p.split('/')))\n    .filter(Boolean)\n    .join('/');\n\nconst createConfigItem = (\n  legacy: boolean,\n  config: PathConfig | string,\n  parentPattern?: string\n): ConfigItem => {\n  if (typeof config === 'string') {\n    // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n    const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n    return { pattern };\n  }\n\n  // If an object is specified as the value (e.g. Foo: { ... }),\n  // It can have `path` property and `screens` prop which has nested configs\n  let pattern: string | undefined;\n\n  if (legacy) {\n    pattern =\n      config.exact !== true && parentPattern && config.path\n        ? joinPaths(parentPattern, config.path)\n        : config.path;\n  } else {\n    if (config.exact && config.path === undefined) {\n      throw new Error(\n        \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n      );\n    }\n\n    pattern =\n      config.exact !== true\n        ? joinPaths(parentPattern || '', config.path || '')\n        : config.path || '';\n  }\n\n  const screens = config.screens\n    ? createNormalizedConfigs(legacy, config.screens, pattern)\n    : undefined;\n\n  return {\n    // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n    pattern: pattern?.split('/').filter(Boolean).join('/'),\n    stringify: config.stringify,\n    screens,\n  };\n};\n\nconst createNormalizedConfigs = (\n  legacy: boolean,\n  options: PathConfigMap,\n  pattern?: string\n): Record<string, ConfigItem> =>\n  fromEntries(\n    Object.entries(options).map(([name, c]) => {\n      const result = createConfigItem(legacy, c, pattern);\n\n      return [name, result];\n    })\n  );\n","import type {\n  Route,\n  PartialRoute,\n  ParamListBase,\n  NavigationState,\n  PartialState,\n  CommonActions,\n} from '@react-navigation/routers';\nimport type { PathConfig, PathConfigMap, NavigatorScreenParams } from './types';\n\ntype ConfigItem = {\n  initialRouteName?: string;\n  screens?: Record<string, ConfigItem>;\n};\n\ntype Options = { initialRouteName?: string; screens: PathConfigMap };\n\ntype NavigateAction<State extends NavigationState> = {\n  type: 'NAVIGATE';\n  payload: {\n    name: string;\n    params?: NavigatorScreenParams<State>;\n  };\n};\n\nexport default function getActionFromState(\n  state: PartialState<NavigationState>,\n  options?: Options\n): NavigateAction<NavigationState> | CommonActions.Action | undefined {\n  // Create a normalized configs object which will be easier to use\n  const normalizedConfig = options ? createNormalizedConfigItem(options) : {};\n\n  const routes =\n    state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;\n\n  if (routes.length === 0) {\n    return undefined;\n  }\n\n  if (\n    !(\n      (routes.length === 1 && routes[0].key === undefined) ||\n      (routes.length === 2 &&\n        routes[0].key === undefined &&\n        routes[0].name === normalizedConfig?.initialRouteName &&\n        routes[1].key === undefined)\n    )\n  ) {\n    return {\n      type: 'RESET',\n      payload: state,\n    };\n  }\n\n  const route = state.routes[state.index ?? state.routes.length - 1];\n\n  let current: PartialState<NavigationState> | undefined = route?.state;\n  let config: ConfigItem | undefined = normalizedConfig?.screens?.[route?.name];\n  let params = { ...route.params } as NavigatorScreenParams<\n    ParamListBase,\n    NavigationState\n  >;\n\n  let payload = route ? { name: route.name, params } : undefined;\n\n  while (current) {\n    if (current.routes.length === 0) {\n      return undefined;\n    }\n\n    const routes =\n      current.index != null\n        ? current.routes.slice(0, current.index + 1)\n        : current.routes;\n\n    const route: Route<string> | PartialRoute<Route<string>> =\n      routes[routes.length - 1];\n\n    // Explicitly set to override existing value when merging params\n    Object.assign(params, {\n      initial: undefined,\n      screen: undefined,\n      params: undefined,\n      state: undefined,\n    });\n\n    if (routes.length === 1 && routes[0].key === undefined) {\n      params.initial = true;\n      params.screen = route.name;\n    } else if (\n      routes.length === 2 &&\n      routes[0].key === undefined &&\n      routes[0].name === config?.initialRouteName &&\n      routes[1].key === undefined\n    ) {\n      params.initial = false;\n      params.screen = route.name;\n    } else {\n      params.state = current;\n      break;\n    }\n\n    if (route.state) {\n      params.params = { ...route.params };\n      params = params.params as NavigatorScreenParams<\n        ParamListBase,\n        NavigationState\n      >;\n    } else {\n      params.params = route.params;\n    }\n\n    current = route.state;\n    config = config?.screens?.[route.name];\n  }\n\n  if (!payload) {\n    return;\n  }\n\n  // Try to construct payload for a `NAVIGATE` action from the state\n  // This lets us preserve the navigation state and not lose it\n  return {\n    type: 'NAVIGATE',\n    payload,\n  };\n}\n\nconst createNormalizedConfigItem = (config: PathConfig | string) =>\n  typeof config === 'object' && config != null\n    ? {\n        initialRouteName: config.initialRouteName,\n        screens:\n          config.screens != null\n            ? createNormalizedConfigs(config.screens)\n            : undefined,\n      }\n    : {};\n\nconst createNormalizedConfigs = (options: PathConfigMap) =>\n  Object.entries(options).reduce<Record<string, ConfigItem>>((acc, [k, v]) => {\n    acc[k] = createNormalizedConfigItem(v);\n    return acc;\n  }, {});\n","import type {\n  Route,\n  PartialState,\n  NavigationState,\n} from '@react-navigation/routers';\nimport { SUPPRESS_STATE_ACCESS_WARNING } from './useRouteCache';\n\nexport default function getFocusedRouteNameFromRoute(\n  route: Partial<Route<string>> & { state?: PartialState<NavigationState> }\n): string | undefined {\n  SUPPRESS_STATE_ACCESS_WARNING.value = true;\n\n  const state = route.state;\n\n  SUPPRESS_STATE_ACCESS_WARNING.value = false;\n\n  const params = route.params as { screen?: unknown } | undefined;\n\n  const routeName = state\n    ? // Get the currently active route name in the nested navigator\n      state.routes[\n        // If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack\n        // The type property will only exist for rehydrated state and not for state from deep link\n        state.index ??\n          (typeof state.type === 'string' && state.type !== 'stack'\n            ? 0\n            : state.routes.length - 1)\n      ].name\n    : // If state doesn't exist, we need to default to `screen` param if available\n    typeof params?.screen === 'string'\n    ? params.screen\n    : undefined;\n\n  return routeName;\n}\n","import * as React from 'react';\nimport {\n  BaseNavigationContainer,\n  NavigationContainerProps,\n  NavigationContainerRef,\n} from '@react-navigation/core';\nimport ThemeProvider from './theming/ThemeProvider';\nimport DefaultTheme from './theming/DefaultTheme';\nimport LinkingContext from './LinkingContext';\nimport useThenable from './useThenable';\nimport useLinking from './useLinking';\nimport useDocumentTitle from './useDocumentTitle';\nimport useBackButton from './useBackButton';\nimport type { Theme, LinkingOptions, DocumentTitleOptions } from './types';\n\ntype Props = NavigationContainerProps & {\n  theme?: Theme;\n  linking?: LinkingOptions;\n  fallback?: React.ReactNode;\n  documentTitle?: DocumentTitleOptions;\n  onReady?: () => void;\n};\n\n/**\n * Container component which holds the navigation state designed for React Native apps.\n * This should be rendered at the root wrapping the whole app.\n *\n * @param props.initialState Initial state object for the navigation tree. When deep link handling is enabled, this will override deep links when specified. Make sure that you don't specify an `initialState` when there's a deep link (`Linking.getInitialURL()`).\n * @param props.onReady Callback which is called after the navigation tree mounts.\n * @param props.onStateChange Callback which is called with the latest navigation state when it changes.\n * @param props.theme Theme object for the navigators.\n * @param props.linking Options for deep linking. Deep link handling is enabled when this prop is provided, unless `linking.enabled` is `false`.\n * @param props.fallback Fallback component to render until we have finished getting initial state when linking is enabled. Defaults to `null`.\n * @param props.documentTitle Options to configure the document title on Web. Updating document title is handled by default unless `documentTitle.enabled` is `false`.\n * @param props.children Child elements to render the content.\n * @param props.ref Ref object which refers to the navigation object containing helper methods.\n */\nconst NavigationContainer = React.forwardRef(function NavigationContainer(\n  {\n    theme = DefaultTheme,\n    linking,\n    fallback = null,\n    documentTitle,\n    onReady,\n    ...rest\n  }: Props,\n  ref?: React.Ref<NavigationContainerRef | null>\n) {\n  const isLinkingEnabled = linking ? linking.enabled !== false : false;\n\n  const refContainer = React.useRef<NavigationContainerRef>(null);\n\n  useBackButton(refContainer);\n  useDocumentTitle(refContainer, documentTitle);\n\n  const { getInitialState } = useLinking(refContainer, {\n    enabled: isLinkingEnabled,\n    prefixes: [],\n    ...linking,\n  });\n\n  const [isResolved, initialState] = useThenable(getInitialState);\n\n  React.useImperativeHandle(ref, () => refContainer.current);\n\n  const linkingContext = React.useMemo(() => ({ options: linking }), [linking]);\n\n  const isReady = rest.initialState != null || !isLinkingEnabled || isResolved;\n\n  const onReadyRef = React.useRef(onReady);\n\n  React.useEffect(() => {\n    onReadyRef.current = onReady;\n  });\n\n  React.useEffect(() => {\n    if (isReady) {\n      onReadyRef.current?.();\n    }\n  }, [isReady]);\n\n  if (!isReady) {\n    // This is temporary until we have Suspense for data-fetching\n    // Then the fallback will be handled by a parent `Suspense` component\n    return fallback as React.ReactElement;\n  }\n\n  return (\n    <LinkingContext.Provider value={linkingContext}>\n      <ThemeProvider value={theme}>\n        <BaseNavigationContainer\n          {...rest}\n          initialState={\n            rest.initialState == null ? initialState : rest.initialState\n          }\n          ref={refContainer}\n        />\n      </ThemeProvider>\n    </LinkingContext.Provider>\n  );\n});\n\nexport default NavigationContainer;\n","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nimport type { Theme } from '../types';\n\ntype Props = {\n  value: Theme;\n  children: React.ReactNode;\n};\n\nexport default function ThemeProvider({ value, children }: Props) {\n  return (\n    <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n  );\n}\n","import * as React from 'react';\nimport DefaultTheme from './DefaultTheme';\nimport type { Theme } from '../types';\n\nconst ThemeContext = React.createContext<Theme>(DefaultTheme);\n\nThemeContext.displayName = 'ThemeContext';\n\nexport default ThemeContext;\n","import type { Theme } from '../types';\n\nconst DefaultTheme: Theme = {\n  dark: false,\n  colors: {\n    primary: 'rgb(0, 122, 255)',\n    background: 'rgb(242, 242, 242)',\n    card: 'rgb(255, 255, 255)',\n    text: 'rgb(28, 28, 30)',\n    border: 'rgb(216, 216, 216)',\n    notification: 'rgb(255, 59, 48)',\n  },\n};\n\nexport default DefaultTheme;\n","import * as React from 'react';\nimport type { LinkingOptions } from './types';\n\nconst LinkingContext = React.createContext<{\n  options: LinkingOptions | undefined;\n}>({ options: undefined });\n\nLinkingContext.displayName = 'LinkingContext';\n\nexport default LinkingContext;\n","import * as React from 'react';\n\nexport default function useThenable<T>(create: () => PromiseLike<T>) {\n  const [promise] = React.useState(create);\n\n  let initialState: [boolean, T | undefined] = [false, undefined];\n\n  // Check if our thenable is synchronous\n  promise.then((result) => {\n    initialState = [true, result];\n  });\n\n  const [state, setState] = React.useState(initialState);\n  const [resolved] = state;\n\n  React.useEffect(() => {\n    let cancelled = false;\n\n    const resolve = async () => {\n      let result;\n\n      try {\n        result = await promise;\n      } finally {\n        if (!cancelled) {\n          setState([true, result]);\n        }\n      }\n    };\n\n    if (!resolved) {\n      resolve();\n    }\n\n    return () => {\n      cancelled = true;\n    };\n  }, [promise, resolved]);\n\n  return state;\n}\n","import * as React from 'react';\nimport { Linking, Platform } from 'react-native';\nimport {\n  getActionFromState as getActionFromStateDefault,\n  getStateFromPath as getStateFromPathDefault,\n  NavigationContainerRef,\n} from '@react-navigation/core';\nimport extractPathFromURL from './extractPathFromURL';\nimport type { LinkingOptions } from './types';\n\ntype ResultState = ReturnType<typeof getStateFromPathDefault>;\n\nlet isUsingLinking = false;\n\nexport default function useLinking(\n  ref: React.RefObject<NavigationContainerRef>,\n  {\n    enabled = true,\n    prefixes,\n    config,\n    getInitialURL = () =>\n      Promise.race([\n        Linking.getInitialURL(),\n        new Promise<undefined>((resolve) =>\n          // Timeout in 150ms if `getInitialState` doesn't resolve\n          // Workaround for https://github.com/facebook/react-native/issues/25675\n          setTimeout(resolve, 150)\n        ),\n      ]),\n    subscribe = (listener) => {\n      const callback = ({ url }: { url: string }) => listener(url);\n\n      const subscription = Linking.addEventListener('url', callback) as\n        | { remove(): void }\n        | undefined;\n\n      return () => {\n        // https://github.com/facebook/react-native/commit/6d1aca806cee86ad76de771ed3a1cc62982ebcd7\n        if (subscription?.remove) {\n          subscription.remove();\n        } else {\n          Linking.removeEventListener('url', callback);\n        }\n      };\n    },\n    getStateFromPath = getStateFromPathDefault,\n    getActionFromState = getActionFromStateDefault,\n  }: LinkingOptions\n) {\n  React.useEffect(() => {\n    if (enabled !== false && isUsingLinking) {\n      throw new Error(\n        [\n          'Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:',\n          \"- You are not using both 'linking' prop and 'useLinking'\",\n          \"- You don't have 'useLinking' in multiple components\",\n          Platform.OS === 'android'\n            ? \"- You have set 'android:launchMode=singleTask' in the '<activity />' section of the 'AndroidManifest.xml' file to avoid launching multiple instances\"\n            : '',\n        ]\n          .join('\\n')\n          .trim()\n      );\n    } else {\n      isUsingLinking = enabled !== false;\n    }\n\n    return () => {\n      isUsingLinking = false;\n    };\n  });\n\n  // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners\n  // This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`\n  // Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect\n  const enabledRef = React.useRef(enabled);\n  const prefixesRef = React.useRef(prefixes);\n  const configRef = React.useRef(config);\n  const getInitialURLRef = React.useRef(getInitialURL);\n  const getStateFromPathRef = React.useRef(getStateFromPath);\n  const getActionFromStateRef = React.useRef(getActionFromState);\n\n  React.useEffect(() => {\n    enabledRef.current = enabled;\n    prefixesRef.current = prefixes;\n    configRef.current = config;\n    getInitialURLRef.current = getInitialURL;\n    getStateFromPathRef.current = getStateFromPath;\n    getActionFromStateRef.current = getActionFromState;\n  });\n\n  const getInitialState = React.useCallback(() => {\n    let state: ResultState | undefined;\n\n    if (enabledRef.current) {\n      const url = getInitialURLRef.current();\n\n      if (url != null && typeof url !== 'string') {\n        return url.then((url) => {\n          const path = url\n            ? extractPathFromURL(prefixesRef.current, url)\n            : null;\n\n          return path\n            ? getStateFromPathRef.current(path, configRef.current)\n            : undefined;\n        });\n      }\n\n      const path = url ? extractPathFromURL(prefixesRef.current, url) : null;\n\n      state = path\n        ? getStateFromPathRef.current(path, configRef.current)\n        : undefined;\n    }\n\n    const thenable = {\n      then(onfulfilled?: (state: ResultState | undefined) => void) {\n        return Promise.resolve(onfulfilled ? onfulfilled(state) : state);\n      },\n      catch() {\n        return thenable;\n      },\n    };\n\n    return thenable as PromiseLike<ResultState | undefined>;\n  }, []);\n\n  React.useEffect(() => {\n    const listener = (url: string) => {\n      if (!enabled) {\n        return;\n      }\n\n      const path = extractPathFromURL(prefixesRef.current, url);\n      const navigation = ref.current;\n\n      if (navigation && path) {\n        const state = getStateFromPathRef.current(path, configRef.current);\n\n        if (state) {\n          // Make sure that the routes in the state exist in the root navigator\n          // Otherwise there's an error in the linking configuration\n          const rootState = navigation.getRootState();\n\n          if (\n            state.routes.some((r) => !rootState?.routeNames.includes(r.name))\n          ) {\n            console.warn(\n              \"The navigation state parsed from the URL contains routes not present in the root navigator. This usually means that the linking configuration doesn't match the navigation structure. See https://reactnavigation.org/docs/5.x/configuring-links for more details on how to specify a linking configuration.\"\n            );\n            return;\n          }\n\n          const action = getActionFromStateRef.current(\n            state,\n            configRef.current\n          );\n\n          if (action !== undefined) {\n            try {\n              navigation.dispatch(action);\n            } catch (e) {\n              // Ignore any errors from deep linking.\n              // This could happen in case of malformed links, navigation object not being initialized etc.\n              console.warn(\n                `An error occurred when trying to handle the link '${path}': ${e.message}`\n              );\n            }\n          } else {\n            navigation.resetRoot(state);\n          }\n        }\n      }\n    };\n\n    return subscribe(listener);\n  }, [enabled, ref, subscribe]);\n\n  return {\n    getInitialState,\n  };\n}\n","import escapeStringRegexp from 'escape-string-regexp';\n\nexport default function extractPathFromURL(prefixes: string[], url: string) {\n  for (const prefix of prefixes) {\n    const protocol = prefix.match(/^[^:]+:/)?.[0] ?? '';\n    const host = prefix\n      .replace(new RegExp(`^${escapeStringRegexp(protocol)}`), '')\n      .replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n      .replace(/^\\//, ''); // Remove extra leading slash\n\n    const prefixRegex = new RegExp(\n      `^${escapeStringRegexp(protocol)}(/)*${host\n        .split('.')\n        .map((it) => (it === '*' ? '[^/]+' : escapeStringRegexp(it)))\n        .join('\\\\.')}`\n    );\n\n    const normalizedURL = url.replace(/\\/+/g, '/');\n\n    if (prefixRegex.test(normalizedURL)) {\n      return normalizedURL.replace(prefixRegex, '');\n    }\n  }\n\n  return undefined;\n}\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","export default function useDocumentTitle() {\n  // Noop for React Native\n}\n","import * as React from 'react';\nimport { BackHandler } from 'react-native';\nimport type { NavigationContainerRef } from '@react-navigation/core';\n\nexport default function useBackButton(\n  ref: React.RefObject<NavigationContainerRef>\n) {\n  React.useEffect(() => {\n    const subscription = BackHandler.addEventListener(\n      'hardwareBackPress',\n      () => {\n        const navigation = ref.current;\n\n        if (navigation == null) {\n          return false;\n        }\n\n        if (navigation.canGoBack()) {\n          navigation.goBack();\n\n          return true;\n        }\n\n        return false;\n      }\n    );\n\n    return () => subscription.remove();\n  }, [ref]);\n}\n","import * as React from 'react';\nimport { useNavigation, useRoute, EventArg } from '@react-navigation/core';\n\ntype ScrollOptions = { y?: number; animated?: boolean };\n\ntype ScrollableView =\n  | { scrollToTop(): void }\n  | { scrollTo(options: ScrollOptions): void }\n  | { scrollToOffset(options: { offset?: number; animated?: boolean }): void }\n  | { scrollResponderScrollTo(options: ScrollOptions): void };\n\ntype ScrollableWrapper =\n  | { getScrollResponder(): React.ReactNode }\n  | { getNode(): ScrollableView }\n  | ScrollableView;\n\nfunction getScrollableNode(ref: React.RefObject<ScrollableWrapper>) {\n  if (ref.current == null) {\n    return null;\n  }\n\n  if (\n    'scrollToTop' in ref.current ||\n    'scrollTo' in ref.current ||\n    'scrollToOffset' in ref.current ||\n    'scrollResponderScrollTo' in ref.current\n  ) {\n    // This is already a scrollable node.\n    return ref.current;\n  } else if ('getScrollResponder' in ref.current) {\n    // If the view is a wrapper like FlatList, SectionList etc.\n    // We need to use `getScrollResponder` to get access to the scroll responder\n    return ref.current.getScrollResponder();\n  } else if ('getNode' in ref.current) {\n    // When a `ScrollView` is wraped in `Animated.createAnimatedComponent`\n    // we need to use `getNode` to get the ref to the actual scrollview.\n    // Note that `getNode` is deprecated in newer versions of react-native\n    // this is why we check if we already have a scrollable node above.\n    return ref.current.getNode();\n  } else {\n    return ref.current;\n  }\n}\n\nexport default function useScrollToTop(\n  ref: React.RefObject<ScrollableWrapper>\n) {\n  const navigation = useNavigation();\n  const route = useRoute();\n\n  React.useEffect(() => {\n    let current = navigation;\n\n    // The screen might be inside another navigator such as stack nested in tabs\n    // We need to find the closest tab navigator and add the listener there\n    while (current && current.getState().type !== 'tab') {\n      current = current.getParent();\n    }\n\n    if (!current) {\n      return;\n    }\n\n    const unsubscribe = current.addListener(\n      // We don't wanna import tab types here to avoid extra deps\n      // in addition, there are multiple tab implementations\n      // @ts-expect-error\n      'tabPress',\n      (e: EventArg<'tabPress', true>) => {\n        // We should scroll to top only when the screen is focused\n        const isFocused = navigation.isFocused();\n\n        // In a nested stack navigator, tab press resets the stack to first screen\n        // So we should scroll to top only when we are on first screen\n        const isFirst =\n          navigation === current ||\n          navigation.getState().routes[0].key === route.key;\n\n        // Run the operation in the next frame so we're sure all listeners have been run\n        // This is necessary to know if preventDefault() has been called\n        requestAnimationFrame(() => {\n          const scrollable = getScrollableNode(ref) as ScrollableWrapper;\n\n          if (isFocused && isFirst && scrollable && !e.defaultPrevented) {\n            if ('scrollToTop' in scrollable) {\n              scrollable.scrollToTop();\n            } else if ('scrollTo' in scrollable) {\n              scrollable.scrollTo({ y: 0, animated: true });\n            } else if ('scrollToOffset' in scrollable) {\n              scrollable.scrollToOffset({ offset: 0, animated: true });\n            } else if ('scrollResponderScrollTo' in scrollable) {\n              scrollable.scrollResponderScrollTo({ y: 0, animated: true });\n            }\n          }\n        });\n      }\n    );\n\n    return unsubscribe;\n  }, [navigation, ref, route.key]);\n}\n","import type { Theme } from '../types';\n\nconst DarkTheme: Theme = {\n  dark: true,\n  colors: {\n    primary: 'rgb(10, 132, 255)',\n    background: 'rgb(1, 1, 1)',\n    card: 'rgb(18, 18, 18)',\n    text: 'rgb(229, 229, 231)',\n    border: 'rgb(39, 39, 41)',\n    notification: 'rgb(255, 69, 58)',\n  },\n};\n\nexport default DarkTheme;\n","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\n\nexport default function useTheme() {\n  const theme = React.useContext(ThemeContext);\n\n  return theme;\n}\n","import * as React from 'react';\nimport { Text, TextProps, GestureResponderEvent, Platform } from 'react-native';\nimport type { NavigationAction } from '@react-navigation/core';\nimport useLinkProps from './useLinkProps';\n\ntype Props = {\n  to: string;\n  action?: NavigationAction;\n  target?: string;\n  onPress?: (\n    e: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent\n  ) => void;\n} & (TextProps & { children: React.ReactNode });\n\n/**\n * Component to render link to another screen using a path.\n * Uses an anchor tag on the web.\n *\n * @param props.to Absolute path to screen (e.g. `/feeds/hot`).\n * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.\n * @param props.children Child elements to render the content.\n */\nexport default function Link({ to, action, ...rest }: Props) {\n  const props = useLinkProps({ to, action });\n\n  const onPress = (\n    e: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent\n  ) => {\n    if ('onPress' in rest) {\n      rest.onPress?.(e);\n    }\n\n    props.onPress(e);\n  };\n\n  return React.createElement(Text, {\n    ...props,\n    ...rest,\n    ...Platform.select({\n      web: { onClick: onPress } as any,\n      default: { onPress },\n    }),\n  });\n}\n","import * as React from 'react';\nimport { Platform, GestureResponderEvent } from 'react-native';\nimport {\n  NavigationAction,\n  NavigationHelpersContext,\n} from '@react-navigation/core';\nimport useLinkTo from './useLinkTo';\n\ntype Props = {\n  to: string;\n  action?: NavigationAction;\n};\n\n/**\n * Hook to get props for an anchor tag so it can work with in page navigation.\n *\n * @param props.to Absolute path to screen (e.g. `/feeds/hot`).\n * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.\n */\nexport default function useLinkProps({ to, action }: Props) {\n  const navigation = React.useContext(NavigationHelpersContext);\n  const linkTo = useLinkTo();\n\n  const onPress = (\n    e?: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent\n  ) => {\n    let shouldHandle = false;\n\n    if (Platform.OS !== 'web' || !e) {\n      shouldHandle = e ? !e.defaultPrevented : true;\n    } else if (\n      !e.defaultPrevented && // onPress prevented default\n      // @ts-expect-error: these properties exist on web, but not in React Native\n      !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n      // @ts-expect-error: these properties exist on web, but not in React Native\n      (e.button == null || e.button === 0) && // ignore everything but left clicks\n      // @ts-expect-error: these properties exist on web, but not in React Native\n      [undefined, null, '', 'self'].includes(e.currentTarget?.target) // let browser handle \"target=_blank\" etc.\n    ) {\n      e.preventDefault();\n      shouldHandle = true;\n    }\n\n    if (shouldHandle) {\n      if (action) {\n        if (navigation) {\n          navigation.dispatch(action);\n        } else {\n          throw new Error(\"Couldn't find a navigation object.\");\n        }\n      } else {\n        if (typeof to !== 'string') {\n          throw new Error(\n            `To 'to' option is invalid (found '${String(\n              to\n            )}'. It must be a valid string for navigation.`\n          );\n        }\n\n        linkTo(to);\n      }\n    }\n  };\n\n  return {\n    href: to,\n    accessibilityRole: 'link' as const,\n    onPress,\n  };\n}\n","import * as React from 'react';\nimport {\n  getStateFromPath,\n  getActionFromState,\n  NavigationContext,\n} from '@react-navigation/core';\nimport LinkingContext from './LinkingContext';\n\nexport default function useLinkTo() {\n  const navigation = React.useContext(NavigationContext);\n  const linking = React.useContext(LinkingContext);\n\n  const linkTo = React.useCallback(\n    (path: string) => {\n      if (!path.startsWith('/')) {\n        throw new Error(`The path must start with '/' (${path}).`);\n      }\n\n      if (navigation === undefined) {\n        throw new Error(\n          \"Couldn't find a navigation object. Is your component inside a screen in a navigator?\"\n        );\n      }\n\n      const { options } = linking;\n\n      const state = options?.getStateFromPath\n        ? options.getStateFromPath(path, options.config)\n        : getStateFromPath(path, options?.config);\n\n      if (state) {\n        let root = navigation;\n        let current;\n\n        // Traverse up to get the root navigation\n        while ((current = root.getParent())) {\n          root = current;\n        }\n\n        const action = getActionFromState(state, options?.config);\n\n        if (action !== undefined) {\n          root.dispatch(action);\n        } else {\n          root.reset(state);\n        }\n      } else {\n        throw new Error('Failed to parse the path to a navigation state.');\n      }\n    },\n    [linking, navigation]\n  );\n\n  return linkTo;\n}\n","import * as React from 'react';\nimport {\n  NavigationHelpers,\n  NavigationHelpersContext,\n  NavigationProp,\n  ParamListBase,\n  getPathFromState,\n} from '@react-navigation/core';\nimport LinkingContext from './LinkingContext';\n\ntype NavigationObject =\n  | NavigationHelpers<ParamListBase>\n  | NavigationProp<ParamListBase>;\n\ntype MinimalState = {\n  index: number;\n  routes: { name: string; params?: object; state?: MinimalState }[];\n};\n\nconst getRootStateForNavigate = (\n  navigation: NavigationObject,\n  state: MinimalState\n): MinimalState => {\n  const parent = navigation.getParent();\n\n  if (parent) {\n    const parentState = parent.getState();\n\n    return getRootStateForNavigate(parent, {\n      index: 0,\n      routes: [\n        {\n          ...parentState.routes[parentState.index],\n          state: state,\n        },\n      ],\n    });\n  }\n\n  return state;\n};\n\n/**\n * Build destination link for a navigate action.\n * Useful for showing anchor tags on the web for buttons that perform navigation.\n */\nexport default function useLinkBuilder() {\n  const navigation = React.useContext(NavigationHelpersContext);\n  const linking = React.useContext(LinkingContext);\n\n  const buildLink = React.useCallback(\n    (name: string, params?: object) => {\n      const { options } = linking;\n\n      if (options?.enabled === false) {\n        return undefined;\n      }\n\n      const state = navigation\n        ? getRootStateForNavigate(navigation, {\n            index: 0,\n            routes: [{ name, params }],\n          })\n        : // If we couldn't find a navigation object in context, we're at root\n          // So we'll construct a basic state object to use\n          {\n            index: 0,\n            routes: [{ name, params }],\n          };\n\n      const path = options?.getPathFromState\n        ? options.getPathFromState(state, options?.config)\n        : getPathFromState(state, options?.config);\n\n      return path;\n    },\n    [linking, navigation]\n  );\n\n  return buildLink;\n}\n","import * as React from 'react';\nimport { CurrentRenderContext } from '@react-navigation/core';\nimport ServerContext, { ServerContextType } from './ServerContext';\nimport type { ServerContainerRef } from './types';\n\ntype Props = ServerContextType & {\n  children: React.ReactNode;\n};\n\n/**\n * Container component for server rendering.\n *\n * @param props.location Location object to base the initial URL for SSR.\n * @param props.children Child elements to render the content.\n * @param props.ref Ref object which contains helper methods.\n */\nexport default React.forwardRef(function ServerContainer(\n  { children, location }: Props,\n  ref: React.Ref<ServerContainerRef>\n) {\n  React.useEffect(() => {\n    console.error(\n      \"'ServerContainer' should only be used on the server with 'react-dom/server' for SSR.\"\n    );\n  }, []);\n\n  const current: { options?: object } = {};\n\n  if (ref) {\n    const value = {\n      getCurrentOptions() {\n        return current.options;\n      },\n    };\n\n    // We write to the `ref` during render instead of `React.useImperativeHandle`\n    // This is because `useImperativeHandle` will update the ref after 'commit',\n    // and there's no 'commit' phase during SSR.\n    // Mutating ref during render is unsafe in concurrent mode, but we don't care about it for SSR.\n    if (typeof ref === 'function') {\n      ref(value);\n    } else {\n      // @ts-expect-error: the TS types are incorrect and say that ref.current is readonly\n      ref.current = value;\n    }\n  }\n\n  return (\n    <ServerContext.Provider value={{ location }}>\n      <CurrentRenderContext.Provider value={current}>\n        {children}\n      </CurrentRenderContext.Provider>\n    </ServerContext.Provider>\n  );\n});\n","import * as React from 'react';\n\nexport type ServerContextType = {\n  location?: {\n    pathname: string;\n    search: string;\n  };\n};\n\nconst ServerContext = React.createContext<ServerContextType | undefined>(\n  undefined\n);\n\nexport default ServerContext;\n","import type {\n  getStateFromPath as getStateFromPathDefault,\n  getPathFromState as getPathFromStateDefault,\n  getActionFromState as getActionFromStateDefault,\n  PathConfigMap,\n  Route,\n} from '@react-navigation/core';\n\nexport type Theme = {\n  dark: boolean;\n  colors: {\n    primary: string;\n    background: string;\n    card: string;\n    text: string;\n    border: string;\n    notification: string;\n  };\n};\n\nexport type LinkingOptions = {\n  /**\n   * Whether deep link handling should be enabled.\n   * Defaults to true.\n   */\n  enabled?: boolean;\n  /**\n   * The prefixes are stripped from the URL before parsing them.\n   * Usually they are the `scheme` + `host` (e.g. `myapp://chat?user=jane`)\n   * Only applicable on Android and iOS.\n   *\n   * @example\n   * ```js\n   * {\n   *    prefixes: [\n   *      \"myapp://\", // App-specific scheme\n   *      \"https://example.com\", // Prefix for universal links\n   *      \"https://*.example.com\" // Prefix which matches any subdomain\n   *    ]\n   * }\n   * ```\n   */\n  prefixes: string[];\n  /**\n   * Config to fine-tune how to parse the path.\n   *\n   * @example\n   * ```js\n   * {\n   *   Chat: {\n   *     path: 'chat/:author/:id',\n   *     parse: { id: Number }\n   *   }\n   * }\n   * ```\n   */\n  config?: { initialRouteName?: string; screens: PathConfigMap };\n  /**\n   * Custom function to get the initial URL used for linking.\n   * Uses `Linking.getInitialURL()` by default.\n   * Not supported on Web.\n   *\n   * @example\n   * ```js\n   * {\n   *    getInitialURL () => Linking.getInitialURL(),\n   * }\n   * ```\n   */\n  getInitialURL?: () =>\n    | string\n    | null\n    | undefined\n    | Promise<string | null | undefined>;\n  /**\n   * Custom function to get subscribe to URL updates.\n   * Uses `Linking.addEventListener('url', callback)` by default.\n   * Not supported on Web.\n   *\n   * @example\n   * ```js\n   * {\n   *    subscribe: (listener) => {\n   *      const onReceiveURL = ({ url }) => listener(url);\n   *\n   *      Linking.addEventListener('url', onReceiveURL);\n   *\n   *      return () => Linking.removeEventListener('url', onReceiveURL);\n   *   }\n   * }\n   * ```\n   */\n  subscribe?: (\n    listener: (url: string) => void\n  ) => undefined | void | (() => void);\n  /**\n   * Custom function to parse the URL to a valid navigation state (advanced).\n   * This state object will be passed as `initialState` for initial URL,\n   * and converted to an action object to `dispatch` for subsequent URLs.\n   */\n  getStateFromPath?: typeof getStateFromPathDefault;\n  /**\n   * Custom function to convert the state object to an action to dispatch (advanced).\n   * By default, the state is converted to a `NAVIGATE` action.\n   */\n  getActionFromState?: typeof getActionFromStateDefault;\n  /**\n   * Custom function to convert the state object to a valid URL (advanced).\n   * Used for creating links for navigation, primarily useful on Web.\n   */\n  getPathFromState?: typeof getPathFromStateDefault;\n};\n\nexport type DocumentTitleOptions = {\n  enabled?: boolean;\n  formatter?: (\n    options: Record<string, any> | undefined,\n    route: Route<string> | undefined\n  ) => string;\n};\n\nexport type ServerContainerRef = {\n  getCurrentOptions(): Record<string, any> | undefined;\n};\n","import * as CardStyleInterpolators from './TransitionConfigs/CardStyleInterpolators';\nimport * as HeaderStyleInterpolators from './TransitionConfigs/HeaderStyleInterpolators';\nimport * as TransitionSpecs from './TransitionConfigs/TransitionSpecs';\nimport * as TransitionPresets from './TransitionConfigs/TransitionPresets';\n\n/**\n * Navigators\n */\nexport { default as createStackNavigator } from './navigators/createStackNavigator';\n\nexport const Assets = [\n  // eslint-disable-next-line import/no-commonjs\n  require('./views/assets/back-icon.png'),\n  // eslint-disable-next-line import/no-commonjs\n  require('./views/assets/back-icon-mask.png'),\n];\n\n/**\n * Views\n */\nexport { default as StackView } from './views/Stack/StackView';\nexport { default as Header } from './views/Header/Header';\nexport { default as HeaderTitle } from './views/Header/HeaderTitle';\nexport { default as HeaderBackButton } from './views/Header/HeaderBackButton';\nexport { default as HeaderBackground } from './views/Header/HeaderBackground';\n\n/**\n * Transition presets\n */\nexport {\n  CardStyleInterpolators,\n  HeaderStyleInterpolators,\n  TransitionSpecs,\n  TransitionPresets,\n};\n\n/**\n * Utilities\n */\nexport { default as CardAnimationContext } from './utils/CardAnimationContext';\nexport { default as HeaderHeightContext } from './utils/HeaderHeightContext';\nexport { default as GestureHandlerRefContext } from './utils/GestureHandlerRefContext';\n\nexport { default as useCardAnimation } from './utils/useCardAnimation';\nexport { default as useHeaderHeight } from './utils/useHeaderHeight';\nexport { default as useGestureHandlerRef } from './utils/useGestureHandlerRef';\n\n/**\n * Types\n */\nexport type {\n  StackNavigationOptions,\n  StackNavigationProp,\n  StackScreenProps,\n  StackHeaderProps,\n  StackHeaderLeftButtonProps,\n  StackHeaderTitleProps,\n  StackCardInterpolatedStyle,\n  StackCardInterpolationProps,\n  StackCardStyleInterpolator,\n  StackHeaderInterpolatedStyle,\n  StackHeaderInterpolationProps,\n  StackHeaderStyleInterpolator,\n  TransitionPreset,\n} from './types';\n","import { Animated } from 'react-native';\nimport { isIphoneX } from 'react-native-iphone-x-helper';\nimport conditional from '../utils/conditional';\nimport type {\n  StackCardInterpolationProps,\n  StackCardInterpolatedStyle,\n} from '../types';\n\nconst { add, multiply } = Animated;\n\n/**\n * Standard iOS-style slide in from the right.\n */\nexport function forHorizontalIOS({\n  current,\n  next,\n  inverted,\n  layouts: { screen },\n}: StackCardInterpolationProps): StackCardInterpolatedStyle {\n  const translateFocused = multiply(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [screen.width, 0],\n      extrapolate: 'clamp',\n    }),\n    inverted\n  );\n\n  const translateUnfocused = next\n    ? multiply(\n        next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, screen.width * -0.3],\n          extrapolate: 'clamp',\n        }),\n        inverted\n      )\n    : 0;\n\n  const overlayOpacity = current.progress.interpolate({\n    inputRange: [0, 1],\n    outputRange: [0, 0.07],\n    extrapolate: 'clamp',\n  });\n\n  const shadowOpacity = current.progress.interpolate({\n    inputRange: [0, 1],\n    outputRange: [0, 0.3],\n    extrapolate: 'clamp',\n  });\n\n  return {\n    cardStyle: {\n      transform: [\n        // Translation for the animation of the current card\n        { translateX: translateFocused },\n        // Translation for the animation of the card on top of this\n        { translateX: translateUnfocused },\n      ],\n    },\n    overlayStyle: { opacity: overlayOpacity },\n    shadowStyle: { shadowOpacity },\n  };\n}\n\n/**\n * Standard iOS-style slide in from the bottom (used for modals).\n */\nexport function forVerticalIOS({\n  current,\n  inverted,\n  layouts: { screen },\n}: StackCardInterpolationProps): StackCardInterpolatedStyle {\n  const translateY = multiply(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [screen.height, 0],\n      extrapolate: 'clamp',\n    }),\n    inverted\n  );\n\n  return {\n    cardStyle: {\n      transform: [\n        // Translation for the animation of the current card\n        { translateY },\n      ],\n    },\n  };\n}\n\n/**\n * Standard iOS-style modal animation in iOS 13.\n */\nexport function forModalPresentationIOS({\n  index,\n  current,\n  next,\n  inverted,\n  layouts: { screen },\n  insets,\n}: StackCardInterpolationProps): StackCardInterpolatedStyle {\n  const isLandscape = screen.width > screen.height;\n  const topOffset = isLandscape ? 0 : 10;\n  const statusBarHeight = insets.top;\n  const aspectRatio = screen.height / screen.width;\n\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  const translateY = multiply(\n    progress.interpolate({\n      inputRange: [0, 1, 2],\n      outputRange: [\n        screen.height,\n        index === 0 ? 0 : topOffset,\n        (index === 0 ? statusBarHeight : 0) - topOffset * aspectRatio,\n      ],\n    }),\n    inverted\n  );\n\n  const overlayOpacity = progress.interpolate({\n    inputRange: [0, 1, 1.0001, 2],\n    outputRange: [0, 0.3, 1, 1],\n  });\n\n  const scale = isLandscape\n    ? 1\n    : progress.interpolate({\n        inputRange: [0, 1, 2],\n        outputRange: [\n          1,\n          1,\n          screen.width ? 1 - (topOffset * 2) / screen.width : 1,\n        ],\n      });\n\n  const borderRadius = isLandscape\n    ? 0\n    : index === 0\n    ? progress.interpolate({\n        inputRange: [0, 1, 1.0001, 2],\n        outputRange: [0, 0, isIphoneX() ? 38 : 0, 10],\n      })\n    : 10;\n\n  return {\n    cardStyle: {\n      overflow: 'hidden',\n      borderTopLeftRadius: borderRadius,\n      borderTopRightRadius: borderRadius,\n      marginTop: index === 0 ? 0 : statusBarHeight,\n      marginBottom: index === 0 ? 0 : topOffset,\n      transform: [{ translateY }, { scale }],\n    },\n    overlayStyle: { opacity: overlayOpacity },\n  };\n}\n\n/**\n * Standard Android-style fade in from the bottom for Android Oreo.\n */\nexport function forFadeFromBottomAndroid({\n  current,\n  inverted,\n  layouts: { screen },\n  closing,\n}: StackCardInterpolationProps): StackCardInterpolatedStyle {\n  const translateY = multiply(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [screen.height * 0.08, 0],\n      extrapolate: 'clamp',\n    }),\n    inverted\n  );\n\n  const opacity = conditional(\n    closing,\n    current.progress,\n    current.progress.interpolate({\n      inputRange: [0, 0.5, 0.9, 1],\n      outputRange: [0, 0.25, 0.7, 1],\n    })\n  );\n\n  return {\n    cardStyle: {\n      opacity,\n      transform: [{ translateY }],\n    },\n  };\n}\n\n/**\n * Standard Android-style reveal from the bottom for Android Pie.\n */\nexport function forRevealFromBottomAndroid({\n  current,\n  next,\n  inverted,\n  layouts: { screen },\n}: StackCardInterpolationProps): StackCardInterpolatedStyle {\n  const containerTranslateY = multiply(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [screen.height, 0],\n      extrapolate: 'clamp',\n    }),\n    inverted\n  );\n\n  const cardTranslateYFocused = multiply(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [screen.height * (95.9 / 100) * -1, 0],\n      extrapolate: 'clamp',\n    }),\n    inverted\n  );\n\n  const cardTranslateYUnfocused = next\n    ? multiply(\n        next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, screen.height * (2 / 100) * -1],\n          extrapolate: 'clamp',\n        }),\n        inverted\n      )\n    : 0;\n\n  const overlayOpacity = current.progress.interpolate({\n    inputRange: [0, 0.36, 1],\n    outputRange: [0, 0.1, 0.1],\n    extrapolate: 'clamp',\n  });\n\n  return {\n    containerStyle: {\n      overflow: 'hidden',\n      transform: [{ translateY: containerTranslateY }],\n    },\n    cardStyle: {\n      transform: [\n        { translateY: cardTranslateYFocused },\n        { translateY: cardTranslateYUnfocused },\n      ],\n    },\n    overlayStyle: { opacity: overlayOpacity },\n  };\n}\n\n/**\n * Standard Android-style reveal from the bottom for Android Q.\n */\nexport function forScaleFromCenterAndroid({\n  current,\n  next,\n  closing,\n}: StackCardInterpolationProps): StackCardInterpolatedStyle {\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  const opacity = progress.interpolate({\n    inputRange: [0, 0.75, 0.875, 1, 1.0825, 1.2075, 2],\n    outputRange: [0, 0, 1, 1, 1, 1, 0],\n  });\n\n  const scale = conditional(\n    closing,\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0.9, 1],\n      extrapolate: 'clamp',\n    }),\n    progress.interpolate({\n      inputRange: [0, 1, 2],\n      outputRange: [0.85, 1, 1.1],\n    })\n  );\n\n  return {\n    containerStyle: {\n      opacity,\n      transform: [{ scale }],\n    },\n  };\n}\n\nexport function forNoAnimation(): StackCardInterpolatedStyle {\n  return {};\n}\n","import { Dimensions, Platform, StatusBar } from 'react-native';\n\nexport function isIphoneX() {\n    const dimen = Dimensions.get('window');\n    return (\n        Platform.OS === 'ios' &&\n        !Platform.isPad &&\n        !Platform.isTVOS &&\n        ((dimen.height === 780 || dimen.width === 780)\n          || (dimen.height === 812 || dimen.width === 812)\n          || (dimen.height === 844 || dimen.width === 844)\n          || (dimen.height === 896 || dimen.width === 896)\n          || (dimen.height === 926 || dimen.width === 926))\n    );\n}\n\nexport function ifIphoneX(iphoneXStyle, regularStyle) {\n    if (isIphoneX()) {\n        return iphoneXStyle;\n    }\n    return regularStyle;\n}\n\nexport function getStatusBarHeight(safe) {\n    return Platform.select({\n        ios: ifIphoneX(safe ? 44 : 30, 20),\n        android: StatusBar.currentHeight,\n        default: 0\n    });\n}\n\nexport function getBottomSpace() {\n    return isIphoneX() ? 34 : 0;\n}\n","import { Animated } from 'react-native';\n\nconst { add, multiply } = Animated;\n\n/**\n * Use an Animated Node based on a condition. Similar to Reanimated's `cond`.\n *\n * @param condition Animated Node representing the condition, must be 0 or 1, 1 means `true`, 0 means `false`\n * @param main Animated Node to use if the condition is `true`\n * @param fallback Animated Node to use if the condition is `false`\n */\nexport default function conditional(\n  condition: Animated.AnimatedInterpolation,\n  main: Animated.AnimatedInterpolation,\n  fallback: Animated.AnimatedInterpolation\n) {\n  // To implement this behavior, we multiply the main node with the condition.\n  // So if condition is 0, result will be 0, and if condition is 1, result will be main node.\n  // Then we multiple reverse of the condition (0 if condition is 1) with the fallback.\n  // So if condition is 0, result will be fallback node, and if condition is 1, result will be 0,\n  // This way, one of them will always be 0, and other one will be the value we need.\n  // In the end we add them both together, 0 + value we need = value we need\n  return add(\n    multiply(condition, main),\n    multiply(\n      condition.interpolate({\n        inputRange: [0, 1],\n        outputRange: [1, 0],\n      }),\n      fallback\n    )\n  );\n}\n","import { Animated, I18nManager } from 'react-native';\nimport type {\n  StackHeaderInterpolationProps,\n  StackHeaderInterpolatedStyle,\n} from '../types';\n\nconst { add } = Animated;\n\n/**\n * Standard UIKit style animation for the header where the title fades into the back button label.\n */\nexport function forUIKit({\n  current,\n  next,\n  layouts,\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n  const defaultOffset = 100;\n  const leftSpacing = 27;\n\n  // The title and back button title should cross-fade to each other\n  // When screen is fully open, the title should be in center, and back title should be on left\n  // When screen is closing, the previous title will animate to back title's position\n  // And back title will animate to title's position\n  // We achieve this by calculating the offsets needed to translate title to back title's position and vice-versa\n  const leftLabelOffset = layouts.leftLabel\n    ? (layouts.screen.width - layouts.leftLabel.width) / 2 - leftSpacing\n    : defaultOffset;\n  const titleLeftOffset = layouts.title\n    ? (layouts.screen.width - layouts.title.width) / 2 - leftSpacing\n    : defaultOffset;\n\n  // When the current title is animating to right, it is centered in the right half of screen in middle of transition\n  // The back title also animates in from this position\n  const rightOffset = layouts.screen.width / 4;\n\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  return {\n    leftButtonStyle: {\n      opacity: progress.interpolate({\n        inputRange: [0.3, 1, 1.5],\n        outputRange: [0, 1, 0],\n      }),\n    },\n    leftLabelStyle: {\n      transform: [\n        {\n          translateX: progress.interpolate({\n            inputRange: [0, 1, 2],\n            outputRange: I18nManager.isRTL\n              ? [-rightOffset, 0, leftLabelOffset]\n              : [leftLabelOffset, 0, -rightOffset],\n          }),\n        },\n      ],\n    },\n    rightButtonStyle: {\n      opacity: progress.interpolate({\n        inputRange: [0.3, 1, 1.5],\n        outputRange: [0, 1, 0],\n      }),\n    },\n    titleStyle: {\n      opacity: progress.interpolate({\n        inputRange: [0, 0.4, 1, 1.5],\n        outputRange: [0, 0.1, 1, 0],\n      }),\n      transform: [\n        {\n          translateX: progress.interpolate({\n            inputRange: [0.5, 1, 2],\n            outputRange: I18nManager.isRTL\n              ? [-titleLeftOffset, 0, rightOffset]\n              : [rightOffset, 0, -titleLeftOffset],\n          }),\n        },\n      ],\n    },\n    backgroundStyle: {\n      transform: [\n        {\n          translateX: progress.interpolate({\n            inputRange: [0, 1, 2],\n            outputRange: I18nManager.isRTL\n              ? [-layouts.screen.width, 0, layouts.screen.width]\n              : [layouts.screen.width, 0, -layouts.screen.width],\n          }),\n        },\n      ],\n    },\n  };\n}\n\n/**\n * Simple fade animation for the header elements.\n */\nexport function forFade({\n  current,\n  next,\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  const opacity = progress.interpolate({\n    inputRange: [0, 1, 2],\n    outputRange: [0, 1, 0],\n  });\n\n  return {\n    leftButtonStyle: { opacity },\n    rightButtonStyle: { opacity },\n    titleStyle: { opacity },\n    backgroundStyle: {\n      opacity: progress.interpolate({\n        inputRange: [0, 1, 1.9, 2],\n        outputRange: [0, 1, 1, 0],\n      }),\n    },\n  };\n}\n\n/**\n * Simple translate animation to translate the header to left.\n */\nexport function forSlideLeft({\n  current,\n  next,\n  layouts: { screen },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  const translateX = progress.interpolate({\n    inputRange: [0, 1, 2],\n    outputRange: I18nManager.isRTL\n      ? [-screen.width, 0, screen.width]\n      : [screen.width, 0, -screen.width],\n  });\n\n  const transform = [{ translateX }];\n\n  return {\n    leftButtonStyle: { transform },\n    rightButtonStyle: { transform },\n    titleStyle: { transform },\n    backgroundStyle: { transform },\n  };\n}\n\n/**\n * Simple translate animation to translate the header to right.\n */\nexport function forSlideRight({\n  current,\n  next,\n  layouts: { screen },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  const translateX = progress.interpolate({\n    inputRange: [0, 1, 2],\n    outputRange: I18nManager.isRTL\n      ? [screen.width, 0, -screen.width]\n      : [-screen.width, 0, screen.width],\n  });\n\n  const transform = [{ translateX }];\n\n  return {\n    leftButtonStyle: { transform },\n    rightButtonStyle: { transform },\n    titleStyle: { transform },\n    backgroundStyle: { transform },\n  };\n}\n\n/**\n * Simple translate animation to translate the header to slide up.\n */\nexport function forSlideUp({\n  current,\n  next,\n  layouts: { header },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n  const progress = add(\n    current.progress.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    }),\n    next\n      ? next.progress.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0, 1],\n          extrapolate: 'clamp',\n        })\n      : 0\n  );\n\n  const translateY = progress.interpolate({\n    inputRange: [0, 1, 2],\n    outputRange: [-header.height, 0, -header.height],\n  });\n\n  const transform = [{ translateY }];\n\n  return {\n    leftButtonStyle: { transform },\n    rightButtonStyle: { transform },\n    titleStyle: { transform },\n    backgroundStyle: { transform },\n  };\n}\n\nexport function forNoAnimation(): StackHeaderInterpolatedStyle {\n  return {};\n}\n","import { Easing } from 'react-native';\nimport type { TransitionSpec } from '../types';\n\n/**\n * Exact values from UINavigationController's animation configuration.\n */\nexport const TransitionIOSSpec: TransitionSpec = {\n  animation: 'spring',\n  config: {\n    stiffness: 1000,\n    damping: 500,\n    mass: 3,\n    overshootClamping: true,\n    restDisplacementThreshold: 10,\n    restSpeedThreshold: 10,\n  },\n};\n\n/**\n * Configuration for activity open animation from Android Nougat.\n * See http://aosp.opersys.com/xref/android-7.1.2_r37/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml\n */\nexport const FadeInFromBottomAndroidSpec: TransitionSpec = {\n  animation: 'timing',\n  config: {\n    duration: 350,\n    easing: Easing.out(Easing.poly(5)),\n  },\n};\n\n/**\n * Configuration for activity close animation from Android Nougat.\n * See http://aosp.opersys.com/xref/android-7.1.2_r37/xref/frameworks/base/core/res/res/anim/activity_close_exit.xml\n */\nexport const FadeOutToBottomAndroidSpec: TransitionSpec = {\n  animation: 'timing',\n  config: {\n    duration: 150,\n    easing: Easing.in(Easing.linear),\n  },\n};\n\n/**\n * Approximate configuration for activity open animation from Android Pie.\n * See http://aosp.opersys.com/xref/android-9.0.0_r47/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml\n */\nexport const RevealFromBottomAndroidSpec: TransitionSpec = {\n  animation: 'timing',\n  config: {\n    duration: 425,\n    // This is super rough approximation of the path used for the curve by android\n    // See http://aosp.opersys.com/xref/android-9.0.0_r47/xref/frameworks/base/core/res/res/interpolator/fast_out_extra_slow_in.xml\n    easing: Easing.bezier(0.35, 0.45, 0, 1),\n  },\n};\n\n/**\n * Approximate configuration for activity open animation from Android Q.\n * See http://aosp.opersys.com/xref/android-10.0.0_r2/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml\n */\nexport const ScaleFromCenterAndroidSpec: TransitionSpec = {\n  animation: 'timing',\n  config: {\n    duration: 400,\n    // This is super rough approximation of the path used for the curve by android\n    // See http://aosp.opersys.com/xref/android-10.0.0_r2/xref/frameworks/base/core/res/res/interpolator/fast_out_extra_slow_in.xml\n    easing: Easing.bezier(0.35, 0.45, 0, 1),\n  },\n};\n","import { Platform } from 'react-native';\nimport {\n  forHorizontalIOS,\n  forVerticalIOS,\n  forScaleFromCenterAndroid,\n  forRevealFromBottomAndroid,\n  forFadeFromBottomAndroid,\n  forModalPresentationIOS,\n} from './CardStyleInterpolators';\nimport { forFade } from './HeaderStyleInterpolators';\nimport {\n  TransitionIOSSpec,\n  ScaleFromCenterAndroidSpec,\n  RevealFromBottomAndroidSpec,\n  FadeOutToBottomAndroidSpec,\n  FadeInFromBottomAndroidSpec,\n} from './TransitionSpecs';\nimport type { TransitionPreset } from '../types';\n\nconst ANDROID_VERSION_PIE = 28;\nconst ANDROID_VERSION_10 = 29;\n\n/**\n * Standard iOS navigation transition.\n */\nexport const SlideFromRightIOS: TransitionPreset = {\n  gestureDirection: 'horizontal',\n  transitionSpec: {\n    open: TransitionIOSSpec,\n    close: TransitionIOSSpec,\n  },\n  cardStyleInterpolator: forHorizontalIOS,\n  headerStyleInterpolator: forFade,\n};\n\n/**\n * Standard iOS navigation transition for modals.\n */\nexport const ModalSlideFromBottomIOS: TransitionPreset = {\n  gestureDirection: 'vertical',\n  transitionSpec: {\n    open: TransitionIOSSpec,\n    close: TransitionIOSSpec,\n  },\n  cardStyleInterpolator: forVerticalIOS,\n  headerStyleInterpolator: forFade,\n};\n\n/**\n * Standard iOS modal presentation style (introduced in iOS 13).\n */\nexport const ModalPresentationIOS: TransitionPreset = {\n  gestureDirection: 'vertical',\n  transitionSpec: {\n    open: TransitionIOSSpec,\n    close: TransitionIOSSpec,\n  },\n  cardStyleInterpolator: forModalPresentationIOS,\n  headerStyleInterpolator: forFade,\n};\n\n/**\n * Standard Android navigation transition when opening or closing an Activity on Android < 9 (Oreo).\n */\nexport const FadeFromBottomAndroid: TransitionPreset = {\n  gestureDirection: 'vertical',\n  transitionSpec: {\n    open: FadeInFromBottomAndroidSpec,\n    close: FadeOutToBottomAndroidSpec,\n  },\n  cardStyleInterpolator: forFadeFromBottomAndroid,\n  headerStyleInterpolator: forFade,\n};\n\n/**\n * Standard Android navigation transition when opening or closing an Activity on Android 9 (Pie).\n */\nexport const RevealFromBottomAndroid: TransitionPreset = {\n  gestureDirection: 'vertical',\n  transitionSpec: {\n    open: RevealFromBottomAndroidSpec,\n    close: RevealFromBottomAndroidSpec,\n  },\n  cardStyleInterpolator: forRevealFromBottomAndroid,\n  headerStyleInterpolator: forFade,\n};\n\n/**\n * Standard Android navigation transition when opening or closing an Activity on Android 10 (Q).\n */\nexport const ScaleFromCenterAndroid: TransitionPreset = {\n  gestureDirection: 'horizontal',\n  transitionSpec: {\n    open: ScaleFromCenterAndroidSpec,\n    close: ScaleFromCenterAndroidSpec,\n  },\n  cardStyleInterpolator: forScaleFromCenterAndroid,\n  headerStyleInterpolator: forFade,\n};\n\n/**\n * Default navigation transition for the current platform.\n */\nexport const DefaultTransition = Platform.select({\n  ios: SlideFromRightIOS,\n  android:\n    Platform.Version >= ANDROID_VERSION_10\n      ? ScaleFromCenterAndroid\n      : Platform.Version >= ANDROID_VERSION_PIE\n      ? RevealFromBottomAndroid\n      : FadeFromBottomAndroid,\n  default: ScaleFromCenterAndroid,\n});\n\n/**\n * Default modal transition for the current platform.\n */\nexport const ModalTransition = Platform.select({\n  ios: ModalSlideFromBottomIOS,\n  default: DefaultTransition,\n});\n","import * as React from 'react';\nimport { Platform } from 'react-native';\nimport {\n  useNavigationBuilder,\n  createNavigatorFactory,\n  DefaultNavigatorOptions,\n  EventArg,\n  StackRouter,\n  StackRouterOptions,\n  StackNavigationState,\n  StackActions,\n  ParamListBase,\n  StackActionHelpers,\n} from '@react-navigation/native';\nimport StackView from '../views/Stack/StackView';\nimport type {\n  StackNavigationConfig,\n  StackNavigationOptions,\n  StackNavigationEventMap,\n} from '../types';\n\ntype Props = DefaultNavigatorOptions<StackNavigationOptions> &\n  StackRouterOptions &\n  StackNavigationConfig;\n\nfunction StackNavigator({\n  initialRouteName,\n  children,\n  screenOptions,\n  ...rest\n}: Props) {\n  const defaultOptions = {\n    gestureEnabled: Platform.OS === 'ios',\n    animationEnabled:\n      Platform.OS !== 'web' &&\n      Platform.OS !== 'windows' &&\n      Platform.OS !== 'macos',\n  };\n\n  const { state, descriptors, navigation } = useNavigationBuilder<\n    StackNavigationState<ParamListBase>,\n    StackRouterOptions,\n    StackActionHelpers<ParamListBase>,\n    StackNavigationOptions,\n    StackNavigationEventMap\n  >(StackRouter, {\n    initialRouteName,\n    children,\n    screenOptions:\n      typeof screenOptions === 'function'\n        ? (...args) => ({\n            ...defaultOptions,\n            ...screenOptions(...args),\n          })\n        : {\n            ...defaultOptions,\n            ...screenOptions,\n          },\n  });\n\n  React.useEffect(\n    () =>\n      navigation.addListener?.('tabPress', (e) => {\n        const isFocused = navigation.isFocused();\n\n        // Run the operation in the next frame so we're sure all listeners have been run\n        // This is necessary to know if preventDefault() has been called\n        requestAnimationFrame(() => {\n          if (\n            state.index > 0 &&\n            isFocused &&\n            !(e as EventArg<'tabPress', true>).defaultPrevented\n          ) {\n            // When user taps on already focused tab and we're inside the tab,\n            // reset the stack to replicate native behaviour\n            navigation.dispatch({\n              ...StackActions.popToTop(),\n              target: state.key,\n            });\n          }\n        });\n      }),\n    [navigation, state.index, state.key]\n  );\n\n  return (\n    <StackView\n      {...rest}\n      state={state}\n      descriptors={descriptors}\n      navigation={navigation}\n    />\n  );\n}\n\nexport default createNavigatorFactory<\n  StackNavigationState<ParamListBase>,\n  StackNavigationOptions,\n  StackNavigationEventMap,\n  typeof StackNavigator\n>(StackNavigator);\n","import * as React from 'react';\nimport { View, Platform, StyleSheet } from 'react-native';\nimport { SafeAreaConsumer, EdgeInsets } from 'react-native-safe-area-context';\nimport {\n  NavigationHelpersContext,\n  StackActions,\n  StackNavigationState,\n  Route,\n  ParamListBase,\n} from '@react-navigation/native';\n\nimport { GestureHandlerRootView } from '../GestureHandler';\nimport CardStack from './CardStack';\nimport KeyboardManager from '../KeyboardManager';\nimport HeaderContainer, {\n  Props as HeaderContainerProps,\n} from '../Header/HeaderContainer';\nimport SafeAreaProviderCompat from '../SafeAreaProviderCompat';\nimport type {\n  StackNavigationHelpers,\n  StackNavigationConfig,\n  StackDescriptorMap,\n} from '../../types';\nimport HeaderShownContext from '../../utils/HeaderShownContext';\n\ntype Props = StackNavigationConfig & {\n  state: StackNavigationState<ParamListBase>;\n  navigation: StackNavigationHelpers;\n  descriptors: StackDescriptorMap;\n};\n\ntype State = {\n  // Local copy of the routes which are actually rendered\n  routes: Route<string>[];\n  // Previous routes, to compare whether routes have changed or not\n  previousRoutes: Route<string>[];\n  // Previous descriptors, to compare whether descriptors have changed or not\n  previousDescriptors: StackDescriptorMap;\n  // List of routes being opened, we need to animate pushing of these new routes\n  openingRouteKeys: string[];\n  // List of routes being closed, we need to animate popping of these routes\n  closingRouteKeys: string[];\n  // List of routes being replaced, we need to keep a copy until the new route animates in\n  replacingRouteKeys: string[];\n  // Since the local routes can vary from the routes from props, we need to keep the descriptors for old routes\n  // Otherwise we won't be able to access the options for routes that were removed\n  descriptors: StackDescriptorMap;\n};\n\nconst GestureHandlerWrapper = GestureHandlerRootView ?? View;\n\n/**\n * Compare two arrays with primitive values as the content.\n * We need to make sure that both values and order match.\n */\nconst isArrayEqual = (a: any[], b: any[]) =>\n  a.length === b.length && a.every((it, index) => it === b[index]);\n\nexport default class StackView extends React.Component<Props, State> {\n  static getDerivedStateFromProps(\n    props: Readonly<Props>,\n    state: Readonly<State>\n  ) {\n    // If there was no change in routes, we don't need to compute anything\n    if (\n      (props.state.routes === state.previousRoutes ||\n        isArrayEqual(\n          props.state.routes.map((r) => r.key),\n          state.previousRoutes.map((r) => r.key)\n        )) &&\n      state.routes.length\n    ) {\n      let routes = state.routes;\n      let previousRoutes = state.previousRoutes;\n      let descriptors = props.descriptors;\n      let previousDescriptors = state.previousDescriptors;\n\n      if (props.descriptors !== state.previousDescriptors) {\n        descriptors = state.routes.reduce<StackDescriptorMap>((acc, route) => {\n          acc[route.key] =\n            props.descriptors[route.key] || state.descriptors[route.key];\n\n          return acc;\n        }, {});\n\n        previousDescriptors = props.descriptors;\n      }\n\n      if (props.state.routes !== state.previousRoutes) {\n        // if any route objects have changed, we should update them\n        const map = props.state.routes.reduce<Record<string, Route<string>>>(\n          (acc, route) => {\n            acc[route.key] = route;\n            return acc;\n          },\n          {}\n        );\n\n        routes = state.routes.map((route) => map[route.key] || route);\n        previousRoutes = props.state.routes;\n      }\n\n      return {\n        routes,\n        previousRoutes,\n        descriptors,\n        previousDescriptors,\n      };\n    }\n\n    // Here we determine which routes were added or removed to animate them\n    // We keep a copy of the route being removed in local state to be able to animate it\n\n    let routes =\n      props.state.index < props.state.routes.length - 1\n        ? // Remove any extra routes from the state\n          // The last visible route should be the focused route, i.e. at current index\n          props.state.routes.slice(0, props.state.index + 1)\n        : props.state.routes;\n\n    // Now we need to determine which routes were added and removed\n    let {\n      openingRouteKeys,\n      closingRouteKeys,\n      replacingRouteKeys,\n      previousRoutes,\n    } = state;\n\n    const previousFocusedRoute = previousRoutes[previousRoutes.length - 1] as\n      | Route<string>\n      | undefined;\n    const nextFocusedRoute = routes[routes.length - 1];\n\n    const isAnimationEnabled = (key: string) => {\n      const descriptor = props.descriptors[key] || state.descriptors[key];\n\n      return descriptor ? descriptor.options.animationEnabled !== false : true;\n    };\n\n    const getAnimationTypeForReplace = (key: string) => {\n      const descriptor = props.descriptors[key] || state.descriptors[key];\n\n      return descriptor.options.animationTypeForReplace ?? 'push';\n    };\n\n    if (\n      previousFocusedRoute &&\n      previousFocusedRoute.key !== nextFocusedRoute.key\n    ) {\n      // We only need to animate routes if the focused route changed\n      // Animating previous routes won't be visible coz the focused route is on top of everything\n\n      if (!previousRoutes.some((r) => r.key === nextFocusedRoute.key)) {\n        // A new route has come to the focus, we treat this as a push\n        // A replace can also trigger this, the animation should look like push\n\n        if (\n          isAnimationEnabled(nextFocusedRoute.key) &&\n          !openingRouteKeys.includes(nextFocusedRoute.key)\n        ) {\n          // In this case, we need to animate pushing the focused route\n          // We don't care about animating any other added routes because they won't be visible\n          openingRouteKeys = [...openingRouteKeys, nextFocusedRoute.key];\n\n          closingRouteKeys = closingRouteKeys.filter(\n            (key) => key !== nextFocusedRoute.key\n          );\n          replacingRouteKeys = replacingRouteKeys.filter(\n            (key) => key !== nextFocusedRoute.key\n          );\n\n          if (!routes.some((r) => r.key === previousFocusedRoute.key)) {\n            // The previous focused route isn't present in state, we treat this as a replace\n\n            openingRouteKeys = openingRouteKeys.filter(\n              (key) => key !== previousFocusedRoute.key\n            );\n\n            if (getAnimationTypeForReplace(nextFocusedRoute.key) === 'pop') {\n              closingRouteKeys = [\n                ...closingRouteKeys,\n                previousFocusedRoute.key,\n              ];\n\n              // By default, new routes have a push animation, so we add it to `openingRouteKeys` before\n              // But since user configured it to animate the old screen like a pop, we need to add this without animation\n              // So remove it from `openingRouteKeys` which will remove the animation\n              openingRouteKeys = openingRouteKeys.filter(\n                (key) => key !== nextFocusedRoute.key\n              );\n\n              // Keep the route being removed at the end to animate it out\n              routes = [...routes, previousFocusedRoute];\n            } else {\n              replacingRouteKeys = [\n                ...replacingRouteKeys,\n                previousFocusedRoute.key,\n              ];\n\n              closingRouteKeys = closingRouteKeys.filter(\n                (key) => key !== previousFocusedRoute.key\n              );\n\n              // Keep the old route in the state because it's visible under the new route, and removing it will feel abrupt\n              // We need to insert it just before the focused one (the route being pushed)\n              // After the push animation is completed, routes being replaced will be removed completely\n              routes = routes.slice();\n              routes.splice(routes.length - 1, 0, previousFocusedRoute);\n            }\n          }\n        }\n      } else if (!routes.some((r) => r.key === previousFocusedRoute.key)) {\n        // The previously focused route was removed, we treat this as a pop\n\n        if (\n          isAnimationEnabled(previousFocusedRoute.key) &&\n          !closingRouteKeys.includes(previousFocusedRoute.key)\n        ) {\n          closingRouteKeys = [...closingRouteKeys, previousFocusedRoute.key];\n\n          // Sometimes a route can be closed before the opening animation finishes\n          // So we also need to remove it from the opening list\n          openingRouteKeys = openingRouteKeys.filter(\n            (key) => key !== previousFocusedRoute.key\n          );\n          replacingRouteKeys = replacingRouteKeys.filter(\n            (key) => key !== previousFocusedRoute.key\n          );\n\n          // Keep a copy of route being removed in the state to be able to animate it\n          routes = [...routes, previousFocusedRoute];\n        }\n      } else {\n        // Looks like some routes were re-arranged and no focused routes were added/removed\n        // i.e. the currently focused route already existed and the previously focused route still exists\n        // We don't know how to animate this\n      }\n    } else if (replacingRouteKeys.length || closingRouteKeys.length) {\n      // Keep the routes we are closing or replacing if animation is enabled for them\n      routes = routes.slice();\n      routes.splice(\n        routes.length - 1,\n        0,\n        ...state.routes.filter(({ key }) =>\n          isAnimationEnabled(key)\n            ? replacingRouteKeys.includes(key) || closingRouteKeys.includes(key)\n            : false\n        )\n      );\n    }\n\n    if (!routes.length) {\n      throw new Error(\n        'There should always be at least one route in the navigation state.'\n      );\n    }\n\n    const descriptors = routes.reduce<StackDescriptorMap>((acc, route) => {\n      acc[route.key] =\n        props.descriptors[route.key] || state.descriptors[route.key];\n\n      return acc;\n    }, {});\n\n    return {\n      routes,\n      previousRoutes: props.state.routes,\n      previousDescriptors: props.descriptors,\n      openingRouteKeys,\n      closingRouteKeys,\n      replacingRouteKeys,\n      descriptors,\n    };\n  }\n\n  state: State = {\n    routes: [],\n    previousRoutes: [],\n    previousDescriptors: {},\n    openingRouteKeys: [],\n    closingRouteKeys: [],\n    replacingRouteKeys: [],\n    descriptors: {},\n  };\n\n  private getGesturesEnabled = ({ route }: { route: Route<string> }) => {\n    const descriptor = this.state.descriptors[route.key];\n\n    if (descriptor) {\n      const { gestureEnabled, animationEnabled } = descriptor.options;\n\n      if (animationEnabled === false) {\n        // When animation is disabled, also disable gestures\n        // The gesture to dismiss a route will look weird when not animated\n        return false;\n      }\n\n      return gestureEnabled !== false;\n    }\n\n    return false;\n  };\n\n  private getPreviousRoute = ({ route }: { route: Route<string> }) => {\n    const { closingRouteKeys, replacingRouteKeys } = this.state;\n    const routes = this.state.routes.filter(\n      (r) =>\n        r.key === route.key ||\n        (!closingRouteKeys.includes(r.key) &&\n          !replacingRouteKeys.includes(r.key))\n    );\n\n    const index = routes.findIndex((r) => r.key === route.key);\n\n    return routes[index - 1];\n  };\n\n  private renderScene = ({ route }: { route: Route<string> }) => {\n    const descriptor =\n      this.state.descriptors[route.key] || this.props.descriptors[route.key];\n\n    if (!descriptor) {\n      return null;\n    }\n\n    return descriptor.render();\n  };\n\n  private renderHeader = (props: HeaderContainerProps) => {\n    return <HeaderContainer {...props} />;\n  };\n\n  private handleOpenRoute = ({ route }: { route: Route<string> }) => {\n    const { state, navigation } = this.props;\n    const { closingRouteKeys, replacingRouteKeys } = this.state;\n\n    if (\n      closingRouteKeys.some((key) => key === route.key) &&\n      replacingRouteKeys.every((key) => key !== route.key) &&\n      state.routeNames.includes(route.name) &&\n      !state.routes.some((r) => r.key === route.key)\n    ) {\n      // If route isn't present in current state, but was closing, assume that a close animation was cancelled\n      // So we need to add this route back to the state\n      navigation.navigate(route);\n    } else {\n      this.setState((state) => ({\n        routes: state.replacingRouteKeys.length\n          ? state.routes.filter(\n              (r) => !state.replacingRouteKeys.includes(r.key)\n            )\n          : state.routes,\n        openingRouteKeys: state.openingRouteKeys.filter(\n          (key) => key !== route.key\n        ),\n        closingRouteKeys: state.closingRouteKeys.filter(\n          (key) => key !== route.key\n        ),\n        replacingRouteKeys: [],\n      }));\n    }\n  };\n\n  private handleCloseRoute = ({ route }: { route: Route<string> }) => {\n    const { state, navigation } = this.props;\n\n    if (state.routes.some((r) => r.key === route.key)) {\n      // If a route exists in state, trigger a pop\n      // This will happen in when the route was closed from the card component\n      // e.g. When the close animation triggered from a gesture ends\n      navigation.dispatch({\n        ...StackActions.pop(),\n        source: route.key,\n        target: state.key,\n      });\n    } else {\n      // We need to clean up any state tracking the route and pop it immediately\n      this.setState((state) => ({\n        routes: state.routes.filter((r) => r.key !== route.key),\n        openingRouteKeys: state.openingRouteKeys.filter(\n          (key) => key !== route.key\n        ),\n        closingRouteKeys: state.closingRouteKeys.filter(\n          (key) => key !== route.key\n        ),\n      }));\n    }\n  };\n\n  private handleTransitionStart = (\n    { route }: { route: Route<string> },\n    closing: boolean\n  ) =>\n    this.props.navigation.emit({\n      type: 'transitionStart',\n      data: { closing },\n      target: route.key,\n    });\n\n  private handleTransitionEnd = (\n    { route }: { route: Route<string> },\n    closing: boolean\n  ) =>\n    this.props.navigation.emit({\n      type: 'transitionEnd',\n      data: { closing },\n      target: route.key,\n    });\n\n  private handleGestureStart = ({ route }: { route: Route<string> }) => {\n    this.props.navigation.emit({\n      type: 'gestureStart',\n      target: route.key,\n    });\n  };\n\n  private handleGestureEnd = ({ route }: { route: Route<string> }) => {\n    this.props.navigation.emit({\n      type: 'gestureEnd',\n      target: route.key,\n    });\n  };\n\n  private handleGestureCancel = ({ route }: { route: Route<string> }) => {\n    this.props.navigation.emit({\n      type: 'gestureCancel',\n      target: route.key,\n    });\n  };\n\n  render() {\n    const {\n      state,\n      navigation,\n      keyboardHandlingEnabled,\n      mode = 'card',\n      headerMode = mode === 'card' && Platform.OS === 'ios'\n        ? 'float'\n        : 'screen',\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      descriptors: _,\n      ...rest\n    } = this.props;\n\n    const {\n      routes,\n      descriptors,\n      openingRouteKeys,\n      closingRouteKeys,\n    } = this.state;\n\n    return (\n      <NavigationHelpersContext.Provider value={navigation}>\n        <GestureHandlerWrapper style={styles.container}>\n          <SafeAreaProviderCompat>\n            <SafeAreaConsumer>\n              {(insets) => (\n                <KeyboardManager enabled={keyboardHandlingEnabled !== false}>\n                  {(props) => (\n                    <HeaderShownContext.Consumer>\n                      {(isParentHeaderShown) => (\n                        <CardStack\n                          mode={mode}\n                          insets={insets as EdgeInsets}\n                          isParentHeaderShown={isParentHeaderShown}\n                          getPreviousRoute={this.getPreviousRoute}\n                          getGesturesEnabled={this.getGesturesEnabled}\n                          routes={routes}\n                          openingRouteKeys={openingRouteKeys}\n                          closingRouteKeys={closingRouteKeys}\n                          onOpenRoute={this.handleOpenRoute}\n                          onCloseRoute={this.handleCloseRoute}\n                          onTransitionStart={this.handleTransitionStart}\n                          onTransitionEnd={this.handleTransitionEnd}\n                          renderHeader={this.renderHeader}\n                          renderScene={this.renderScene}\n                          headerMode={headerMode}\n                          state={state}\n                          descriptors={descriptors}\n                          onGestureStart={this.handleGestureStart}\n                          onGestureEnd={this.handleGestureEnd}\n                          onGestureCancel={this.handleGestureCancel}\n                          {...rest}\n                          {...props}\n                        />\n                      )}\n                    </HeaderShownContext.Consumer>\n                  )}\n                </KeyboardManager>\n              )}\n            </SafeAreaConsumer>\n          </SafeAreaProviderCompat>\n        </GestureHandlerWrapper>\n      </NavigationHelpersContext.Provider>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n  },\n});\n","export * from './SafeAreaContext';\nexport * from './SafeAreaView';\nexport * from './InitialWindow';\nexport * from './SafeArea.types';\n","import * as React from 'react';\nimport { Dimensions, StyleProp, StyleSheet, ViewStyle } from 'react-native';\nimport NativeSafeAreaProvider from './NativeSafeAreaProvider';\nimport { EdgeInsets, InsetChangedEvent, Metrics, Rect } from './SafeArea.types';\n\nexport const SafeAreaInsetsContext = React.createContext<EdgeInsets | null>(\n  null,\n);\nSafeAreaInsetsContext.displayName = 'SafeAreaInsetsContext';\n\nexport const SafeAreaFrameContext = React.createContext<Rect | null>(null);\nSafeAreaFrameContext.displayName = 'SafeAreaFrameContext';\n\nexport interface SafeAreaViewProps {\n  children?: React.ReactNode;\n  initialMetrics?: Metrics | null;\n  /**\n   * @deprecated\n   */\n  initialSafeAreaInsets?: EdgeInsets | null;\n  style?: StyleProp<ViewStyle>;\n}\n\nexport function SafeAreaProvider({\n  children,\n  initialMetrics,\n  initialSafeAreaInsets,\n  style,\n}: SafeAreaViewProps) {\n  const parentInsets = useParentSafeAreaInsets();\n  const parentFrame = useParentSafeAreaFrame();\n  const [insets, setInsets] = React.useState<EdgeInsets | null>(\n    initialMetrics?.insets ?? initialSafeAreaInsets ?? parentInsets ?? null,\n  );\n  const [frame, setFrame] = React.useState<Rect>(\n    initialMetrics?.frame ??\n      parentFrame ?? {\n        // Backwards compat so we render anyway if we don't have frame.\n        x: 0,\n        y: 0,\n        width: Dimensions.get('window').width,\n        height: Dimensions.get('window').height,\n      },\n  );\n  const onInsetsChange = React.useCallback(\n    (event: InsetChangedEvent) => {\n      const {\n        nativeEvent: { frame: nextFrame, insets: nextInsets },\n      } = event;\n\n      if (\n        // Backwards compat with old native code that won't send frame.\n        nextFrame &&\n        (nextFrame.height !== frame.height ||\n          nextFrame.width !== frame.width ||\n          nextFrame.x !== frame.x ||\n          nextFrame.y !== frame.y)\n      ) {\n        setFrame(nextFrame);\n      }\n\n      if (\n        !insets ||\n        nextInsets.bottom !== insets.bottom ||\n        nextInsets.left !== insets.left ||\n        nextInsets.right !== insets.right ||\n        nextInsets.top !== insets.top\n      ) {\n        setInsets(nextInsets);\n      }\n    },\n    [frame, insets],\n  );\n\n  return (\n    <NativeSafeAreaProvider\n      style={[styles.fill, style]}\n      onInsetsChange={onInsetsChange}\n    >\n      {insets != null ? (\n        <SafeAreaFrameContext.Provider value={frame}>\n          <SafeAreaInsetsContext.Provider value={insets}>\n            {children}\n          </SafeAreaInsetsContext.Provider>\n        </SafeAreaFrameContext.Provider>\n      ) : null}\n    </NativeSafeAreaProvider>\n  );\n}\n\nconst styles = StyleSheet.create({\n  fill: { flex: 1 },\n});\n\nfunction useParentSafeAreaInsets(): EdgeInsets | null {\n  return React.useContext(SafeAreaInsetsContext);\n}\n\nfunction useParentSafeAreaFrame(): Rect | null {\n  return React.useContext(SafeAreaFrameContext);\n}\n\nexport function useSafeAreaInsets(): EdgeInsets {\n  const safeArea = React.useContext(SafeAreaInsetsContext);\n  if (safeArea == null) {\n    throw new Error(\n      'No safe area insets value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.',\n    );\n  }\n  return safeArea;\n}\n\nexport function useSafeAreaFrame(): Rect {\n  const frame = React.useContext(SafeAreaFrameContext);\n  if (frame == null) {\n    throw new Error(\n      'No safe area frame value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.',\n    );\n  }\n  return frame;\n}\n\nexport function withSafeAreaInsets<T>(\n  WrappedComponent: React.ComponentType<T>,\n) {\n  return React.forwardRef((props: T, ref: React.Ref<T>) => (\n    <SafeAreaConsumer>\n      {(insets) => <WrappedComponent {...props} insets={insets} ref={ref} />}\n    </SafeAreaConsumer>\n  ));\n}\n\n/**\n * @deprecated\n */\nexport function useSafeArea(): EdgeInsets {\n  return useSafeAreaInsets();\n}\n\n/**\n * @deprecated\n */\nexport const SafeAreaConsumer = SafeAreaInsetsContext.Consumer;\n\n/**\n * @deprecated\n */\nexport const SafeAreaContext = SafeAreaInsetsContext;\n","import { requireNativeComponent } from 'react-native';\nimport { NativeSafeAreaProviderProps } from './SafeArea.types';\n\nexport default requireNativeComponent<NativeSafeAreaProviderProps>(\n  'RNCSafeAreaProvider',\n);\n","import { requireNativeComponent } from 'react-native';\nimport { NativeSafeAreaViewProps } from './SafeArea.types';\n\nexport const SafeAreaView =\n  requireNativeComponent<NativeSafeAreaViewProps>('RNCSafeAreaView');\n","import { UIManager } from 'react-native';\nimport { Metrics } from './SafeArea.types';\n\nconst RNCSafeAreaProviderConfig = UIManager.getViewManagerConfig(\n  'RNCSafeAreaProvider',\n) as any;\n\nexport const initialWindowMetrics = (\n  RNCSafeAreaProviderConfig != null &&\n  RNCSafeAreaProviderConfig.Constants != null\n    ? RNCSafeAreaProviderConfig.Constants.initialWindowMetrics\n    : null\n) as Metrics | null;\n\n/**\n * @deprecated\n */\nexport const initialWindowSafeAreaInsets = initialWindowMetrics?.insets;\n","import * as React from 'react';\nimport {\n  NativeSyntheticEvent,\n  StyleProp,\n  ViewProps,\n  ViewStyle,\n} from 'react-native';\n\nexport type Edge = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface EdgeInsets {\n  top: number;\n  right: number;\n  bottom: number;\n  left: number;\n}\n\nexport interface Rect {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n}\n\nexport interface Metrics {\n  insets: EdgeInsets;\n  frame: Rect;\n}\n\nexport type InsetChangedEvent = NativeSyntheticEvent<Metrics>;\n\nexport type InsetChangeNativeCallback = (event: InsetChangedEvent) => void;\n\nexport interface NativeSafeAreaProviderProps {\n  children?: React.ReactNode;\n  style?: StyleProp<ViewStyle>;\n  onInsetsChange: InsetChangeNativeCallback;\n}\n\nexport type NativeSafeAreaViewProps = ViewProps & {\n  children?: React.ReactNode;\n  mode?: 'padding' | 'margin';\n  edges?: ReadonlyArray<Edge>;\n};\n","export * from './GestureHandlerNative';\n","import * as React from 'react';\nimport {\n  PanGestureHandler as PanGestureHandlerNative,\n  PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\nimport GestureHandlerRefContext from '../utils/GestureHandlerRefContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n  const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n  return (\n    <GestureHandlerRefContext.Provider value={gestureRef}>\n      <PanGestureHandlerNative {...props} ref={gestureRef} />\n    </GestureHandlerRefContext.Provider>\n  );\n}\n\nexport {\n  GestureHandlerRootView,\n  State as GestureState,\n  PanGestureHandlerGestureEvent,\n} from 'react-native-gesture-handler';\n","export { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './GestureHandlerRootView';\nexport type {\n  // event types\n  GestureEvent,\n  HandlerStateChangeEvent,\n  // event payloads types\n  GestureEventPayload,\n  HandlerStateChangeEventPayload,\n  TapGestureHandlerEventPayload,\n  ForceTouchGestureHandlerEventPayload,\n  LongPressGestureHandlerEventPayload,\n  PanGestureHandlerEventPayload,\n  PinchGestureHandlerEventPayload,\n  RotationGestureHandlerEventPayload,\n  FlingGestureHandlerEventPayload,\n  // gesture handlers props types\n  TapGestureHandlerProps,\n  ForceTouchGestureHandlerProps,\n  LongPressGestureHandlerProps,\n  PanGestureHandlerProps,\n  PinchGestureHandlerProps,\n  RotationGestureHandlerProps,\n  FlingGestureHandlerProps,\n} from './handlers/gestureHandlers';\nexport {\n  TapGestureHandler,\n  ForceTouchGestureHandler,\n  LongPressGestureHandler,\n  PanGestureHandler,\n  PinchGestureHandler,\n  RotationGestureHandler,\n  FlingGestureHandler,\n} from './handlers/gestureHandlers';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n  NativeViewGestureHandlerPayload,\n  NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n  RawButtonProps,\n  BaseButtonProps,\n  RectButtonProps,\n  BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n  RawButton,\n  BaseButton,\n  RectButton,\n  BorderlessButton,\n} from './components/GestureButtons';\nexport {\n  TouchableHighlight,\n  TouchableNativeFeedback,\n  TouchableOpacity,\n  TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n  ScrollView,\n  Switch,\n  TextInput,\n  DrawerLayoutAndroid,\n  FlatList,\n} from './components/GestureComponents';\nexport type {\n  //events\n  GestureHandlerGestureEvent,\n  GestureHandlerStateChangeEvent,\n  //event payloads\n  GestureHandlerGestureEventNativeEvent,\n  GestureHandlerStateChangeNativeEvent,\n  NativeViewGestureHandlerGestureEvent,\n  NativeViewGestureHandlerStateChangeEvent,\n  TapGestureHandlerGestureEvent,\n  TapGestureHandlerStateChangeEvent,\n  ForceTouchGestureHandlerGestureEvent,\n  ForceTouchGestureHandlerStateChangeEvent,\n  LongPressGestureHandlerGestureEvent,\n  LongPressGestureHandlerStateChangeEvent,\n  PanGestureHandlerGestureEvent,\n  PanGestureHandlerStateChangeEvent,\n  PinchGestureHandlerGestureEvent,\n  PinchGestureHandlerStateChangeEvent,\n  RotationGestureHandlerGestureEvent,\n  RotationGestureHandlerStateChangeEvent,\n  FlingGestureHandlerGestureEvent,\n  FlingGestureHandlerStateChangeEvent,\n  // handlers props\n  NativeViewGestureHandlerProperties,\n  TapGestureHandlerProperties,\n  LongPressGestureHandlerProperties,\n  PanGestureHandlerProperties,\n  PinchGestureHandlerProperties,\n  RotationGestureHandlerProperties,\n  FlingGestureHandlerProperties,\n  ForceTouchGestureHandlerProperties,\n  // buttons props\n  RawButtonProperties,\n  BaseButtonProperties,\n  RectButtonProperties,\n  BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n  DrawerLayoutProps,\n  DrawerPosition,\n  DrawerState,\n  DrawerType,\n  DrawerLockMode,\n  DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n","export const Directions = {\n  RIGHT: 1,\n  LEFT: 2,\n  UP: 4,\n  DOWN: 8,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type Directions = typeof Directions[keyof typeof Directions];\n","// TODO use State from RNModule\n\nexport const State = {\n  UNDETERMINED: 0,\n  FAILED: 1,\n  BEGAN: 2,\n  CANCELLED: 3,\n  ACTIVE: 4,\n  END: 5,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type State = typeof State[keyof typeof State];\n","import * as React from 'react';\nimport { StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport GestureHandlerRootView from './GestureHandlerRootView';\n\nexport default function gestureHandlerRootHOC<P>(\n  Component: React.ComponentType<P>,\n  containerStyles?: StyleProp<ViewStyle>\n): React.ComponentType<P> {\n  function Wrapper(props: P) {\n    return (\n      <GestureHandlerRootView style={[styles.container, containerStyles]}>\n        <Component {...props} />\n      </GestureHandlerRootView>\n    );\n  }\n\n  Wrapper.displayName = `gestureHandlerRootHOC(${\n    Component.displayName || Component.name\n  })`;\n\n  hoistNonReactStatics(Wrapper, Component);\n\n  return Wrapper;\n}\n\nconst styles = StyleSheet.create({\n  container: { flex: 1 },\n});\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import { View } from 'react-native';\n\nexport default View;\n","// Previous types exported gesture handlers as classes which creates an interface and variable, both named the same as class.\n// Without those types, we'd introduce breaking change, forcing users to prefix every handler type specification with typeof\n// e.g. React.createRef<TapGestureHandler> -> React.createRef<typeof TapGestureHandler>.\n// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.\nimport * as React from 'react';\n\nimport createHandler from './createHandler';\nimport PlatformConstants from '../PlatformConstants';\nimport { State } from '../State';\nimport { ValueOf } from '../typeUtils';\n\nexport interface GestureEventPayload {\n  handlerTag: number;\n  numberOfPointers: number;\n  state: ValueOf<typeof State>;\n}\n\nexport interface HandlerStateChangeEventPayload {\n  handlerTag: number;\n  numberOfPointers: number;\n  state: ValueOf<typeof State>;\n  oldState: ValueOf<typeof State>;\n}\n\n//TODO(TS) events in handlers\n\nexport interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {\n  nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;\n}\nexport interface HandlerStateChangeEvent<\n  ExtraEventPayloadT = Record<string, unknown>\n> {\n  nativeEvent: Readonly<HandlerStateChangeEventPayload & ExtraEventPayloadT>;\n}\n\n// Events payloads are types instead of interfaces due to TS limitation.\n// See https://github.com/microsoft/TypeScript/issues/15300 for more info.\nexport type BaseGestureHandlerProps<\n  ExtraEventPayloadT extends Record<string, unknown> = Record<string, unknown>\n> = {\n  id?: string;\n  enabled?: boolean;\n  minPointers?: number;\n  waitFor?: React.Ref<unknown> | React.Ref<unknown>[];\n  simultaneousHandlers?: React.Ref<unknown> | React.Ref<unknown>[];\n  shouldCancelWhenOutside?: boolean;\n  hitSlop?:\n    | number\n    // TODO(TS) take into consideration types from GestureHandler#setHitSlop\n    | Partial<\n        Record<\n          'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal',\n          number\n        >\n      >\n    | Record<'width' | 'left', number>\n    | Record<'width' | 'right', number>\n    | Record<'height' | 'top', number>\n    | Record<'height' | 'bottom', number>;\n  // TODO(TS) - fix event types\n  onBegan?: (event: HandlerStateChangeEvent) => void;\n  onFailed?: (event: HandlerStateChangeEvent) => void;\n  onCancelled?: (event: HandlerStateChangeEvent) => void;\n  onActivated?: (event: HandlerStateChangeEvent) => void;\n  onEnded?: (event: HandlerStateChangeEvent) => void;\n\n  //TODO(TS) consider using NativeSyntheticEvent\n  onGestureEvent?: (event: GestureEvent<ExtraEventPayloadT>) => void;\n  onHandlerStateChange?: (\n    event: HandlerStateChangeEvent<ExtraEventPayloadT>\n  ) => void;\n};\n\nexport const baseProps = [\n  'id',\n  'enabled',\n  'minPointers',\n  'waitFor',\n  'simultaneousHandlers',\n  'shouldCancelWhenOutside',\n  'hitSlop',\n  'onBegan',\n  'onFailed',\n  'onCancelled',\n  'onActivated',\n  'onEnded',\n  'onGestureEvent',\n  'onHandlerStateChange',\n] as const;\n\nexport type TapGestureHandlerEventPayload = {\n  x: number;\n  y: number;\n  absoluteX: number;\n  absoluteY: number;\n};\n\nexport interface TapGestureHandlerProps\n  extends BaseGestureHandlerProps<TapGestureHandlerEventPayload> {\n  minPointers?: number;\n  maxDurationMs?: number;\n  maxDelayMs?: number;\n  numberOfTaps?: number;\n  maxDeltaX?: number;\n  maxDeltaY?: number;\n  maxDist?: number;\n}\n\nexport type TapGestureHandler = typeof TapGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const TapGestureHandler = createHandler<\n  TapGestureHandlerProps,\n  TapGestureHandlerEventPayload\n>({\n  name: 'TapGestureHandler',\n  allowedProps: [\n    ...baseProps,\n    'maxDurationMs',\n    'maxDelayMs',\n    'numberOfTaps',\n    'maxDeltaX',\n    'maxDeltaY',\n    'maxDist',\n    'minPointers',\n  ] as const,\n  config: {},\n});\n\nexport type FlingGestureHandlerEventPayload = {\n  x: number;\n  y: number;\n  absoluteX: number;\n  absoluteY: number;\n};\n\nexport interface FlingGestureHandlerProps\n  extends BaseGestureHandlerProps<FlingGestureHandlerEventPayload> {\n  direction?: number;\n  numberOfPointers?: number;\n}\n\nexport type FlingGestureHandler = typeof FlingGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const FlingGestureHandler = createHandler<\n  FlingGestureHandlerProps,\n  FlingGestureHandlerEventPayload\n>({\n  name: 'FlingGestureHandler',\n  allowedProps: [...baseProps, 'numberOfPointers', 'direction'] as const,\n  config: {},\n});\n\nclass ForceTouchFallback extends React.Component {\n  static forceTouchAvailable = false;\n  componentDidMount() {\n    console.warn(\n      'ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase'\n    );\n  }\n  render() {\n    return this.props.children;\n  }\n}\n\nexport type ForceTouchGestureHandlerEventPayload = {\n  x: number;\n  y: number;\n  absoluteX: number;\n  absoluteY: number;\n  force: number;\n};\n\nexport interface ForceTouchGestureHandlerProps\n  extends BaseGestureHandlerProps<ForceTouchGestureHandlerEventPayload> {\n  minForce?: number;\n  maxForce?: number;\n  feedbackOnActivation?: boolean;\n}\n\nexport type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {\n  forceTouchAvailable: boolean;\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const ForceTouchGestureHandler = PlatformConstants?.forceTouchAvailable\n  ? createHandler<\n      ForceTouchGestureHandlerProps,\n      ForceTouchGestureHandlerEventPayload\n    >({\n      name: 'ForceTouchGestureHandler',\n      allowedProps: [\n        ...baseProps,\n        'minForce',\n        'maxForce',\n        'feedbackOnActivation',\n      ] as const,\n      config: {},\n    })\n  : ForceTouchFallback;\n\n(ForceTouchGestureHandler as ForceTouchGestureHandler).forceTouchAvailable =\n  PlatformConstants?.forceTouchAvailable || false;\n\nexport type LongPressGestureHandlerEventPayload = {\n  x: number;\n  y: number;\n  absoluteX: number;\n  absoluteY: number;\n};\n\nexport interface LongPressGestureHandlerProps\n  extends BaseGestureHandlerProps<LongPressGestureHandlerEventPayload> {\n  minDurationMs?: number;\n  maxDist?: number;\n}\n\nexport type LongPressGestureHandler = typeof LongPressGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const LongPressGestureHandler = createHandler<\n  LongPressGestureHandlerProps,\n  LongPressGestureHandlerEventPayload\n>({\n  name: 'LongPressGestureHandler',\n  allowedProps: [...baseProps, 'minDurationMs', 'maxDist'] as const,\n  config: {},\n});\n\nfunction validatePanGestureHandlerProps(props: PanGestureHandlerProps) {\n  if (props.minDeltaX && props.activeOffsetX) {\n    throw new Error(\n      `It's not supported use minDeltaX with activeOffsetXStart or activeOffsetXEnd`\n    );\n  }\n  if (props.maxDeltaX && props.failOffsetX) {\n    throw new Error(\n      `It's not supported use minDeltaX with activeOffsetXStart or activeOffsetXEnd`\n    );\n  }\n  if (props.minDeltaY && props.activeOffsetY) {\n    throw new Error(\n      `It's not supported use minDeltaX with activeOffsetYStart or activeOffsetYEnd`\n    );\n  }\n  if (props.maxDeltaY && props.failOffsetY) {\n    throw new Error(\n      `It's not supported use minDeltaX with activeOffsetYStart or activeOffsetYEnd`\n    );\n  }\n  if (\n    Array.isArray(props.activeOffsetX) &&\n    (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)\n  ) {\n    throw new Error(\n      `First element of activeOffsetX should be negative, a the second one should be positive`\n    );\n  }\n\n  if (\n    Array.isArray(props.activeOffsetY) &&\n    (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)\n  ) {\n    throw new Error(\n      `First element of activeOffsetY should be negative, a the second one should be positive`\n    );\n  }\n\n  if (\n    Array.isArray(props.failOffsetX) &&\n    (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)\n  ) {\n    throw new Error(\n      `First element of failOffsetX should be negative, a the second one should be positive`\n    );\n  }\n\n  if (\n    Array.isArray(props.failOffsetY) &&\n    (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)\n  ) {\n    throw new Error(\n      `First element of failOffsetY should be negative, a the second one should be positive`\n    );\n  }\n}\n\nfunction transformPanGestureHandlerProps(props: PanGestureHandlerProps) {\n  type InternalPanGHKeys =\n    | 'activeOffsetXStart'\n    | 'activeOffsetXEnd'\n    | 'failOffsetXStart'\n    | 'failOffsetXEnd'\n    | 'activeOffsetYStart'\n    | 'activeOffsetYEnd'\n    | 'failOffsetYStart'\n    | 'failOffsetYEnd';\n  type PanGestureHandlerInternalProps = PanGestureHandlerProps &\n    Partial<Record<InternalPanGHKeys, number>>;\n\n  const res: PanGestureHandlerInternalProps = { ...props };\n  if (props.minDeltaX !== undefined) {\n    delete res.minDeltaX;\n    res.activeOffsetXStart = -props.minDeltaX;\n    res.activeOffsetXEnd = props.minDeltaX;\n  }\n  if (props.maxDeltaX !== undefined) {\n    delete res.maxDeltaX;\n    res.failOffsetXStart = -props.maxDeltaX;\n    res.failOffsetXEnd = props.maxDeltaX;\n  }\n  if (props.minOffsetX !== undefined) {\n    delete res.minOffsetX;\n    if (props.minOffsetX < 0) {\n      res.activeOffsetXStart = props.minOffsetX;\n    } else {\n      res.activeOffsetXEnd = props.minOffsetX;\n    }\n  }\n\n  if (props.minDeltaY !== undefined) {\n    delete res.minDeltaY;\n    res.activeOffsetYStart = -props.minDeltaY;\n    res.activeOffsetYEnd = props.minDeltaY;\n  }\n  if (props.maxDeltaY !== undefined) {\n    delete res.maxDeltaY;\n    res.failOffsetYStart = -props.maxDeltaY;\n    res.failOffsetYEnd = props.maxDeltaY;\n  }\n\n  if (props.minOffsetY !== undefined) {\n    delete res.minOffsetY;\n    if (props.minOffsetY < 0) {\n      res.activeOffsetYStart = props.minOffsetY;\n    } else {\n      res.activeOffsetYEnd = props.minOffsetY;\n    }\n  }\n\n  if (props.activeOffsetX !== undefined) {\n    delete res.activeOffsetX;\n    if (Array.isArray(props.activeOffsetX)) {\n      res.activeOffsetXStart = props.activeOffsetX[0];\n      res.activeOffsetXEnd = props.activeOffsetX[1];\n    } else if (props.activeOffsetX < 0) {\n      res.activeOffsetXStart = props.activeOffsetX;\n    } else {\n      res.activeOffsetXEnd = props.activeOffsetX;\n    }\n  }\n\n  if (props.activeOffsetY !== undefined) {\n    delete res.activeOffsetY;\n    if (Array.isArray(props.activeOffsetY)) {\n      res.activeOffsetYStart = props.activeOffsetY[0];\n      res.activeOffsetYEnd = props.activeOffsetY[1];\n    } else if (props.activeOffsetY < 0) {\n      res.activeOffsetYStart = props.activeOffsetY;\n    } else {\n      res.activeOffsetYEnd = props.activeOffsetY;\n    }\n  }\n\n  if (props.failOffsetX !== undefined) {\n    delete res.failOffsetX;\n    if (Array.isArray(props.failOffsetX)) {\n      res.failOffsetXStart = props.failOffsetX[0];\n      res.failOffsetXEnd = props.failOffsetX[1];\n    } else if (props.failOffsetX < 0) {\n      res.failOffsetXStart = props.failOffsetX;\n    } else {\n      res.failOffsetXEnd = props.failOffsetX;\n    }\n  }\n\n  if (props.failOffsetY !== undefined) {\n    delete res.failOffsetY;\n    if (Array.isArray(props.failOffsetY)) {\n      res.failOffsetYStart = props.failOffsetY[0];\n      res.failOffsetYEnd = props.failOffsetY[1];\n    } else if (props.failOffsetY < 0) {\n      res.failOffsetYStart = props.failOffsetY;\n    } else {\n      res.failOffsetYEnd = props.failOffsetY;\n    }\n  }\n\n  return res;\n}\n\nfunction managePanProps(props: PanGestureHandlerProps) {\n  if (__DEV__) {\n    validatePanGestureHandlerProps(props);\n  }\n  return transformPanGestureHandlerProps(props);\n}\n\nexport type PanGestureHandlerEventPayload = {\n  x: number;\n  y: number;\n  absoluteX: number;\n  absoluteY: number;\n  translationX: number;\n  translationY: number;\n  velocityX: number;\n  velocityY: number;\n};\n\nexport interface PanGestureHandlerProps\n  extends BaseGestureHandlerProps<PanGestureHandlerEventPayload> {\n  /** @deprecated  use activeOffsetX*/\n  minDeltaX?: number;\n  /** @deprecated  use activeOffsetY*/\n  minDeltaY?: number;\n  /** @deprecated  use failOffsetX*/\n  maxDeltaX?: number;\n  /** @deprecated  use failOffsetY*/\n  maxDeltaY?: number;\n  /** @deprecated  use activeOffsetX*/\n  minOffsetX?: number;\n  /** @deprecated  use failOffsetY*/\n  minOffsetY?: number;\n  activeOffsetY?: number | number[];\n  activeOffsetX?: number | number[];\n  failOffsetY?: number | number[];\n  failOffsetX?: number | number[];\n  minDist?: number;\n  minVelocity?: number;\n  minVelocityX?: number;\n  minVelocityY?: number;\n  minPointers?: number;\n  maxPointers?: number;\n  avgTouches?: boolean;\n  enableTrackpadTwoFingerGesture?: boolean;\n}\n\nexport type PanGestureHandler = typeof PanGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const PanGestureHandler = createHandler<\n  PanGestureHandlerProps,\n  PanGestureHandlerEventPayload\n>({\n  name: 'PanGestureHandler',\n  allowedProps: [\n    ...baseProps,\n    'activeOffsetY',\n    'activeOffsetX',\n    'failOffsetY',\n    'failOffsetX',\n    'minDist',\n    'minVelocity',\n    'minVelocityX',\n    'minVelocityY',\n    'minPointers',\n    'maxPointers',\n    'avgTouches',\n    'enableTrackpadTwoFingerGesture',\n  ] as const,\n  config: {},\n  transformProps: managePanProps,\n  customNativeProps: [\n    'activeOffsetYStart',\n    'activeOffsetYEnd',\n    'activeOffsetXStart',\n    'activeOffsetXEnd',\n    'failOffsetYStart',\n    'failOffsetYEnd',\n    'failOffsetXStart',\n    'failOffsetXEnd',\n  ],\n});\n\nexport type PinchGestureHandlerEventPayload = {\n  scale: number;\n  focalX: number;\n  focalY: number;\n  velocity: number;\n};\n\nexport interface PinchGestureHandlerProps\n  extends BaseGestureHandlerProps<PinchGestureHandlerEventPayload> {}\n\nexport type PinchGestureHandler = typeof PinchGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const PinchGestureHandler = createHandler<\n  PinchGestureHandlerProps,\n  PinchGestureHandlerEventPayload\n>({\n  name: 'PinchGestureHandler',\n  allowedProps: baseProps,\n  config: {},\n});\n\nexport type RotationGestureHandlerEventPayload = {\n  rotation: number;\n  anchorX: number;\n  anchorY: number;\n  velocity: number;\n};\n\nexport interface RotationGestureHandlerProps\n  extends BaseGestureHandlerProps<RotationGestureHandlerEventPayload> {}\n\nexport type RotationGestureHandler = typeof RotationGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of this file\nexport const RotationGestureHandler = createHandler<\n  RotationGestureHandlerProps,\n  RotationGestureHandlerEventPayload\n>({\n  name: 'RotationGestureHandler',\n  allowedProps: baseProps,\n  config: {},\n});\n","import * as React from 'react';\nimport {\n  findNodeHandle as findNodeHandleRN,\n  NativeModules,\n  Platform,\n  Touchable,\n} from 'react-native';\n// @ts-ignore - it isn't typed by TS & don't have definitelyTyped types\nimport deepEqual from 'fbjs/lib/areEqual';\nimport RNGestureHandlerModule from '../RNGestureHandlerModule';\nimport type RNGestureHandlerModuleWeb from '../RNGestureHandlerModule.web';\nimport { State } from '../State';\n\nimport {\n  BaseGestureHandlerProps,\n  GestureEvent,\n  HandlerStateChangeEvent,\n} from './gestureHandlers';\nimport { ValueOf } from '../typeUtils';\n\nfunction findNodeHandle(\n  node: null | number | React.Component<any, any> | React.ComponentClass<any>\n): null | number | React.Component<any, any> | React.ComponentClass<any> {\n  if (Platform.OS === 'web') return node;\n  return findNodeHandleRN(node);\n}\n\nconst { UIManager = {} } = NativeModules;\n\nconst customGHEventsConfig = {\n  onGestureHandlerEvent: { registrationName: 'onGestureHandlerEvent' },\n  onGestureHandlerStateChange: {\n    registrationName: 'onGestureHandlerStateChange',\n  },\n};\n\n// Add gesture specific events to genericDirectEventTypes object exported from UIManager\n// native module.\n// Once new event types are registered with react it is possible to dispatch these\n// events to all kind of native views.\nUIManager.genericDirectEventTypes = {\n  ...UIManager.genericDirectEventTypes,\n  ...customGHEventsConfig,\n};\n// In newer versions of RN the `genericDirectEventTypes` is located in the object\n// returned by UIManager.getViewManagerConfig('getConstants') or in older RN UIManager.getConstants(), we need to add it there as well to make\n// it compatible with RN 61+\nconst UIManagerConstants =\n  UIManager.getViewManagerConfig?.('getConstants') ??\n  UIManager.getConstants?.();\n\nif (UIManagerConstants) {\n  UIManagerConstants.genericDirectEventTypes = {\n    ...UIManagerConstants.genericDirectEventTypes,\n    ...customGHEventsConfig,\n  };\n}\n\n// Wrap JS responder calls and notify gesture handler manager\nconst {\n  setJSResponder: oldSetJSResponder = () => {\n    //no operation\n  },\n  clearJSResponder: oldClearJSResponder = () => {\n    //no operation\n  },\n} = UIManager;\nUIManager.setJSResponder = (tag: number, blockNativeResponder: boolean) => {\n  RNGestureHandlerModule.handleSetJSResponder(tag, blockNativeResponder);\n  oldSetJSResponder(tag, blockNativeResponder);\n};\nUIManager.clearJSResponder = () => {\n  RNGestureHandlerModule.handleClearJSResponder();\n  oldClearJSResponder();\n};\n\nlet handlerTag = 1;\nconst handlerIDToTag: Record<string, number> = {};\n\nfunction isConfigParam(param: unknown, name: string) {\n  // param !== Object(param) returns false if `param` is a function\n  // or an object and returns true if `param` is null\n  return (\n    param !== undefined &&\n    (param !== Object(param) ||\n      !('__isNative' in (param as Record<string, unknown>))) &&\n    name !== 'onHandlerStateChange' &&\n    name !== 'onGestureEvent'\n  );\n}\n\nfunction filterConfig(\n  props: Record<string, unknown>,\n  validProps: string[],\n  defaults: Record<string, unknown> = {}\n) {\n  const res = { ...defaults };\n  validProps.forEach((key) => {\n    const value = props[key];\n    if (isConfigParam(value, key)) {\n      let value = props[key];\n      if (key === 'simultaneousHandlers' || key === 'waitFor') {\n        value = transformIntoHandlerTags(props[key]);\n      } else if (key === 'hitSlop') {\n        if (typeof value !== 'object') {\n          value = { top: value, left: value, bottom: value, right: value };\n        }\n      }\n      res[key] = value;\n    }\n  });\n  return res;\n}\n\nfunction transformIntoHandlerTags(handlerIDs: any) {\n  if (!Array.isArray(handlerIDs)) {\n    handlerIDs = [handlerIDs];\n  }\n\n  if (Platform.OS === 'web') {\n    return handlerIDs\n      .map(({ current }: { current: any }) => current)\n      .filter((handle: any) => handle);\n  }\n  // converts handler string IDs into their numeric tags\n  return handlerIDs\n    .map(\n      (handlerID: any) =>\n        handlerIDToTag[handlerID] || handlerID.current?.handlerTag || -1\n    )\n    .filter((handlerTag: number) => handlerTag > 0);\n}\n\ntype HandlerProps<T extends Record<string, unknown>> = Readonly<\n  React.PropsWithChildren<BaseGestureHandlerProps<T>>\n>;\nfunction hasUnresolvedRefs<T extends Record<string, unknown>>(\n  props: HandlerProps<T>\n) {\n  // TODO(TS) - add type for extract arg\n  const extract = (refs: any | any[]) => {\n    if (!Array.isArray(refs)) {\n      return refs && refs.current === null;\n    }\n    return refs.some((r) => r && r.current === null);\n  };\n  return extract(props['simultaneousHandlers']) || extract(props['waitFor']);\n}\n\nconst stateToPropMappings = {\n  [State.UNDETERMINED]: undefined,\n  [State.BEGAN]: 'onBegan',\n  [State.FAILED]: 'onFailed',\n  [State.CANCELLED]: 'onCancelled',\n  [State.ACTIVE]: 'onActivated',\n  [State.END]: 'onEnded',\n} as const;\n\ntype CreateHandlerArgs<\n  HandlerPropsT extends Record<string, unknown>\n> = Readonly<{\n  name: string;\n  allowedProps: Readonly<Extract<keyof HandlerPropsT, string>[]>;\n  config: Readonly<Record<string, unknown>>;\n  transformProps?: (props: HandlerPropsT) => HandlerPropsT;\n  customNativeProps?: Readonly<string[]>;\n}>;\n\n// TODO(TS) fix event types\ntype InternalEventHandlers = {\n  onGestureHandlerEvent?: (event: any) => void;\n  onGestureHandlerStateChange?: (event: any) => void;\n};\n\n// TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties.\nexport default function createHandler<\n  T extends BaseGestureHandlerProps<U>,\n  U extends Record<string, unknown>\n>({\n  name,\n  allowedProps = [],\n  config = {},\n  transformProps,\n  customNativeProps = [],\n}: CreateHandlerArgs<T>): React.ComponentType<T & React.RefAttributes<any>> {\n  class Handler extends React.Component<T & InternalEventHandlers> {\n    static displayName = name;\n\n    private handlerTag: number;\n    private config: Record<string, unknown>;\n    private propsRef: React.MutableRefObject<unknown>;\n    private viewNode: any;\n    private viewTag?: number;\n    private updateEnqueued: ReturnType<typeof setImmediate> | null = null;\n\n    constructor(props: T & InternalEventHandlers) {\n      super(props);\n      this.handlerTag = handlerTag++;\n      this.config = {};\n      this.propsRef = React.createRef();\n      if (props.id) {\n        if (handlerIDToTag[props.id] !== undefined) {\n          throw new Error(`Handler with ID \"${props.id}\" already registered`);\n        }\n        handlerIDToTag[props.id] = this.handlerTag;\n      }\n    }\n\n    componentDidMount() {\n      const props: HandlerProps<U> = this.props;\n      if (hasUnresolvedRefs(props)) {\n        // If there are unresolved refs (e.g. \".current\" has not yet been set)\n        // passed as `simultaneousHandlers` or `waitFor`, we enqueue a call to\n        // _update method that will try to update native handler props using\n        // setImmediate. This makes it so _update function gets called after all\n        // react components are mounted and we expect the missing ref object to\n        // be resolved by then.\n        this.updateEnqueued = setImmediate(() => {\n          this.updateEnqueued = null;\n          this.update();\n        });\n      }\n\n      this.createGestureHandler(\n        filterConfig(\n          transformProps ? transformProps(this.props) : this.props,\n          [...allowedProps, ...customNativeProps],\n          config\n        )\n      );\n\n      this.attachGestureHandler(findNodeHandle(this.viewNode) as number); // TODO(TS) - check if this can be null\n    }\n\n    componentDidUpdate() {\n      const viewTag = findNodeHandle(this.viewNode);\n      if (this.viewTag !== viewTag) {\n        this.attachGestureHandler(viewTag as number); // TODO(TS) - check interaction between _viewTag & findNodeHandle\n      }\n      this.update();\n    }\n\n    componentWillUnmount() {\n      RNGestureHandlerModule.dropGestureHandler(this.handlerTag);\n      if (this.updateEnqueued) {\n        clearImmediate(this.updateEnqueued);\n      }\n      // We can't use this.props.id directly due to TS generic type narrowing bug, see https://github.com/microsoft/TypeScript/issues/13995 for more context\n      const handlerID: string | undefined = this.props.id;\n      if (handlerID) {\n        // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n        delete handlerIDToTag[handlerID];\n      }\n    }\n\n    private onGestureHandlerEvent = (event: GestureEvent<U>) => {\n      if (event.nativeEvent.handlerTag === this.handlerTag) {\n        this.props.onGestureEvent?.(event);\n      } else {\n        this.props.onGestureHandlerEvent?.(event);\n      }\n    };\n\n    // TODO(TS) - make sure this is right type for event\n    private onGestureHandlerStateChange = (\n      event: HandlerStateChangeEvent<U>\n    ) => {\n      if (event.nativeEvent.handlerTag === this.handlerTag) {\n        this.props.onHandlerStateChange?.(event);\n\n        const state: ValueOf<typeof State> = event.nativeEvent.state;\n        const stateEventName = stateToPropMappings[state];\n        const eventHandler = stateEventName && this.props[stateEventName];\n        if (eventHandler && typeof eventHandler === 'function') {\n          eventHandler(event);\n        }\n      } else {\n        this.props.onGestureHandlerStateChange?.(event);\n      }\n    };\n\n    private refHandler = (node: any) => {\n      this.viewNode = node;\n\n      const child = React.Children.only(this.props.children);\n      // TODO(TS) fix ref type\n      const { ref }: any = child;\n      if (ref !== null) {\n        if (typeof ref === 'function') {\n          ref(node);\n        } else {\n          ref.current = node;\n        }\n      }\n    };\n\n    private createGestureHandler = (\n      newConfig: Readonly<Record<string, unknown>>\n    ) => {\n      this.config = newConfig;\n\n      RNGestureHandlerModule.createGestureHandler(\n        name,\n        this.handlerTag,\n        newConfig\n      );\n    };\n\n    private attachGestureHandler = (newViewTag: number) => {\n      this.viewTag = newViewTag;\n\n      if (Platform.OS === 'web') {\n        // typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch\n        (RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler)(\n          this.handlerTag,\n          newViewTag,\n          this.propsRef\n        );\n      } else {\n        RNGestureHandlerModule.attachGestureHandler(\n          this.handlerTag,\n          newViewTag\n        );\n      }\n    };\n\n    private updateGestureHandler = (\n      newConfig: Readonly<Record<string, unknown>>\n    ) => {\n      this.config = newConfig;\n\n      RNGestureHandlerModule.updateGestureHandler(this.handlerTag, newConfig);\n    };\n\n    private update() {\n      const newConfig = filterConfig(\n        transformProps ? transformProps(this.props) : this.props,\n        [...allowedProps, ...customNativeProps],\n        config\n      );\n      if (!deepEqual(this.config, newConfig)) {\n        this.updateGestureHandler(newConfig);\n      }\n    }\n\n    setNativeProps(updates: any) {\n      const mergedProps = { ...this.props, ...updates };\n      const newConfig = filterConfig(\n        transformProps ? transformProps(mergedProps) : mergedProps,\n        [...allowedProps, ...customNativeProps],\n        config\n      );\n      this.updateGestureHandler(newConfig);\n    }\n\n    render() {\n      let gestureEventHandler = this.onGestureHandlerEvent;\n      // Another instance of https://github.com/microsoft/TypeScript/issues/13995\n      type OnGestureEventHandlers = {\n        onGestureEvent?: BaseGestureHandlerProps<U>['onGestureEvent'];\n        onGestureHandlerEvent?: InternalEventHandlers['onGestureHandlerEvent'];\n      };\n      const {\n        onGestureEvent,\n        onGestureHandlerEvent,\n      }: OnGestureEventHandlers = this.props;\n      if (onGestureEvent && typeof onGestureEvent !== 'function') {\n        // If it's not a method it should be an native Animated.event\n        // object. We set it directly as the handler for the view\n        // In this case nested handlers are not going to be supported\n        if (onGestureHandlerEvent) {\n          throw new Error(\n            'Nesting touch handlers with native animated driver is not supported yet'\n          );\n        }\n        gestureEventHandler = onGestureEvent;\n      } else {\n        if (\n          onGestureHandlerEvent &&\n          typeof onGestureHandlerEvent !== 'function'\n        ) {\n          throw new Error(\n            'Nesting touch handlers with native animated driver is not supported yet'\n          );\n        }\n      }\n\n      let gestureStateEventHandler = this.onGestureHandlerStateChange;\n      // Another instance of https://github.com/microsoft/TypeScript/issues/13995\n      type OnGestureStateChangeHandlers = {\n        onHandlerStateChange?: BaseGestureHandlerProps<U>['onHandlerStateChange'];\n        onGestureHandlerStateChange?: InternalEventHandlers['onGestureHandlerStateChange'];\n      };\n      const {\n        onHandlerStateChange,\n        onGestureHandlerStateChange,\n      }: OnGestureStateChangeHandlers = this.props;\n      if (onHandlerStateChange && typeof onHandlerStateChange !== 'function') {\n        // If it's not a method it should be an native Animated.event\n        // object. We set it directly as the handler for the view\n        // In this case nested handlers are not going to be supported\n        if (onGestureHandlerStateChange) {\n          throw new Error(\n            'Nesting touch handlers with native animated driver is not supported yet'\n          );\n        }\n        gestureStateEventHandler = onHandlerStateChange;\n      } else {\n        if (\n          onGestureHandlerStateChange &&\n          typeof onGestureHandlerStateChange !== 'function'\n        ) {\n          throw new Error(\n            'Nesting touch handlers with native animated driver is not supported yet'\n          );\n        }\n      }\n      const events = {\n        onGestureHandlerEvent: gestureEventHandler,\n        onGestureHandlerStateChange: gestureStateEventHandler,\n      };\n\n      this.propsRef.current = events;\n\n      const child: any = React.Children.only(this.props.children);\n      let grandChildren = child.props.children;\n      if (\n        Touchable.TOUCH_TARGET_DEBUG &&\n        child.type &&\n        (child.type === 'RNGestureHandlerButton' ||\n          child.type.name === 'View' ||\n          child.type.displayName === 'View')\n      ) {\n        grandChildren = React.Children.toArray(grandChildren);\n        grandChildren.push(\n          Touchable.renderDebugView({\n            color: 'mediumspringgreen',\n            hitSlop: child.props.hitSlop,\n          })\n        );\n      }\n\n      return React.cloneElement(\n        child,\n        {\n          ref: this.refHandler,\n          collapsable: false,\n          ...events,\n        },\n        grandChildren\n      );\n    }\n  }\n  return Handler;\n}\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar aStackPool = [];\nvar bStackPool = [];\n/**\n * Checks if two values are equal. Values may be primitives, arrays, or objects.\n * Returns true if both arguments have the same keys and values.\n *\n * @see http://underscorejs.org\n * @copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\n * @license MIT\n */\n\nfunction areEqual(a, b) {\n  var aStack = aStackPool.length ? aStackPool.pop() : [];\n  var bStack = bStackPool.length ? bStackPool.pop() : [];\n  var result = eq(a, b, aStack, bStack);\n  aStack.length = 0;\n  bStack.length = 0;\n  aStackPool.push(aStack);\n  bStackPool.push(bStack);\n  return result;\n}\n\nfunction eq(a, b, aStack, bStack) {\n  if (a === b) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    return a !== 0 || 1 / a == 1 / b;\n  }\n\n  if (a == null || b == null) {\n    // a or b can be `null` or `undefined`\n    return false;\n  }\n\n  if (typeof a != 'object' || typeof b != 'object') {\n    return false;\n  }\n\n  var objToStr = Object.prototype.toString;\n  var className = objToStr.call(a);\n\n  if (className != objToStr.call(b)) {\n    return false;\n  }\n\n  switch (className) {\n    case '[object String]':\n      return a == String(b);\n\n    case '[object Number]':\n      return isNaN(a) || isNaN(b) ? false : a == Number(b);\n\n    case '[object Date]':\n    case '[object Boolean]':\n      return +a == +b;\n\n    case '[object RegExp]':\n      return a.source == b.source && a.global == b.global && a.multiline == b.multiline && a.ignoreCase == b.ignoreCase;\n  } // Assume equality for cyclic structures.\n\n\n  var length = aStack.length;\n\n  while (length--) {\n    if (aStack[length] == a) {\n      return bStack[length] == b;\n    }\n  }\n\n  aStack.push(a);\n  bStack.push(b);\n  var size = 0; // Recursively compare objects and arrays.\n\n  if (className === '[object Array]') {\n    size = a.length;\n\n    if (size !== b.length) {\n      return false;\n    } // Deep compare the contents, ignoring non-numeric properties.\n\n\n    while (size--) {\n      if (!eq(a[size], b[size], aStack, bStack)) {\n        return false;\n      }\n    }\n  } else {\n    if (a.constructor !== b.constructor) {\n      return false;\n    }\n\n    if (a.hasOwnProperty('valueOf') && b.hasOwnProperty('valueOf')) {\n      return a.valueOf() == b.valueOf();\n    }\n\n    var keys = Object.keys(a);\n\n    if (keys.length != Object.keys(b).length) {\n      return false;\n    }\n\n    for (var i = 0; i < keys.length; i++) {\n      if (!eq(a[keys[i]], b[keys[i]], aStack, bStack)) {\n        return false;\n      }\n    }\n  }\n\n  aStack.pop();\n  bStack.pop();\n  return true;\n}\n\nmodule.exports = areEqual;","import { NativeModules } from 'react-native';\nconst { RNGestureHandlerModule } = NativeModules;\n\nif (RNGestureHandlerModule == null) {\n  console.error(\n    `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).\n\n    For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`\n      .split('\\n')\n      .map((line) => line.trim())\n      .join('\\n')\n  );\n}\n\nexport type RNGestureHandlerModuleProps = {\n  handleSetJSResponder: (tag: number, blockNativeResponder: boolean) => void;\n  handleClearJSResponder: () => void;\n  createGestureHandler: (\n    handlerName: string,\n    handlerTag: number,\n    config: Readonly<Record<string, unknown>>\n  ) => void;\n  attachGestureHandler: (handlerTag: number, newView: number) => void;\n  updateGestureHandler: (\n    handlerTag: number,\n    newConfig: Readonly<Record<string, unknown>>\n  ) => void;\n  dropGestureHandler: (handlerTag: number) => void;\n};\n\nexport default RNGestureHandlerModule as RNGestureHandlerModuleProps;\n","import { NativeModules, Platform } from 'react-native';\n\ntype PlatformConstants = {\n  forceTouchAvailable: boolean;\n};\n\nexport default (NativeModules?.PlatformConstants ??\n  Platform.constants) as PlatformConstants;\n","import * as React from 'react';\nimport { useImperativeHandle, useRef } from 'react';\n\nimport {\n  NativeViewGestureHandler,\n  NativeViewGestureHandlerProps,\n  nativeViewProps,\n} from './NativeViewGestureHandler';\n\n/*\n * This array should consist of:\n *   - All keys in propTypes from NativeGestureHandler\n *     (and all keys in GestureHandlerPropTypes)\n *   - 'onGestureHandlerEvent'\n *   - 'onGestureHandlerStateChange'\n */\nconst NATIVE_WRAPPER_PROPS_FILTER = [\n  ...nativeViewProps,\n  'onGestureHandlerEvent',\n  'onGestureHandlerStateChange',\n] as const;\n\nexport default function createNativeWrapper<P>(\n  Component: React.ComponentType<P>,\n  config: Readonly<NativeViewGestureHandlerProps> = {}\n) {\n  const ComponentWrapper = React.forwardRef<\n    React.ComponentType<any>,\n    P & NativeViewGestureHandlerProps\n  >((props, ref) => {\n    // filter out props that should be passed to gesture handler wrapper\n    const gestureHandlerProps = Object.keys(props).reduce(\n      (res, key) => {\n        // TS being overly protective with it's types, see https://github.com/microsoft/TypeScript/issues/26255#issuecomment-458013731 for more info\n        const allowedKeys: readonly string[] = NATIVE_WRAPPER_PROPS_FILTER;\n        if (allowedKeys.includes(key)) {\n          // @ts-ignore FIXME(TS)\n          res[key] = props[key];\n        }\n        return res;\n      },\n      { ...config } // watch out not to modify config\n    );\n    const _ref = useRef<React.ComponentType<P>>();\n    const _gestureHandlerRef = useRef<React.ComponentType<P>>();\n    useImperativeHandle(\n      ref,\n      // @ts-ignore TODO(TS) decide how nulls work in this context\n      () => {\n        const node = _gestureHandlerRef.current;\n        // add handlerTag for relations config\n        if (_ref.current && node) {\n          // @ts-ignore FIXME(TS) think about createHandler return type\n          _ref.current.handlerTag = node.handlerTag;\n          return _ref.current;\n        }\n        return null;\n      },\n      [_ref, _gestureHandlerRef]\n    );\n    return (\n      <NativeViewGestureHandler\n        {...gestureHandlerProps}\n        // @ts-ignore TODO(TS)\n        ref={_gestureHandlerRef}>\n        <Component {...props} ref={_ref} />\n      </NativeViewGestureHandler>\n    );\n  });\n\n  ComponentWrapper.displayName = Component.displayName || 'ComponentWrapper';\n\n  return ComponentWrapper;\n}\n","import createHandler from './createHandler';\nimport { BaseGestureHandlerProps, baseProps } from './gestureHandlers';\n\nexport interface NativeViewGestureHandlerProps\n  extends BaseGestureHandlerProps<NativeViewGestureHandlerPayload> {\n  shouldActivateOnStart?: boolean;\n  disallowInterruption?: boolean;\n}\n\nexport type NativeViewGestureHandlerPayload = {\n  pointerInside: boolean;\n};\n\nexport const nativeViewProps = [\n  ...baseProps,\n  'shouldActivateOnStart',\n  'disallowInterruption',\n] as const;\n\nexport type NativeViewGestureHandler = typeof NativeViewGestureHandler;\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlers.ts file\nexport const NativeViewGestureHandler = createHandler<\n  NativeViewGestureHandlerProps,\n  NativeViewGestureHandlerPayload\n>({\n  name: 'NativeViewGestureHandler',\n  allowedProps: nativeViewProps,\n  config: {},\n});\n","import * as React from 'react';\nimport {\n  Animated,\n  Platform,\n  processColor,\n  StyleSheet,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\nimport GestureHandlerButton from './GestureHandlerButton';\nimport { State } from '../State';\n\nimport {\n  GestureEvent,\n  HandlerStateChangeEvent,\n} from '../handlers/gestureHandlers';\nimport {\n  NativeViewGestureHandlerPayload,\n  NativeViewGestureHandlerProps,\n} from '../handlers/NativeViewGestureHandler';\n\nexport interface RawButtonProps extends NativeViewGestureHandlerProps {\n  exclusive?: boolean;\n  // TODO: we should transform props in `createNativeWrapper`\n  rippleColor?: any; // it was present in BaseButtonProps before but is used here in code\n}\n\nexport interface BaseButtonProps extends RawButtonProps {\n  onPress?: (pointerInside: boolean) => void;\n  onActiveStateChange?: (active: boolean) => void;\n  style?: StyleProp<ViewStyle>;\n  testID?: string;\n}\n\nexport interface RectButtonProps extends BaseButtonProps {\n  underlayColor?: string;\n  activeOpacity?: number;\n}\n\nexport interface BorderlessButtonProps extends BaseButtonProps {\n  borderless?: boolean;\n  activeOpacity?: number;\n}\n\nexport const RawButton = createNativeWrapper(GestureHandlerButton, {\n  shouldCancelWhenOutside: false,\n  shouldActivateOnStart: false,\n});\n\nexport class BaseButton extends React.Component<BaseButtonProps> {\n  private lastActive: boolean;\n\n  constructor(props: BaseButtonProps) {\n    super(props);\n    this.lastActive = false;\n  }\n\n  private handleEvent = ({\n    nativeEvent,\n  }: HandlerStateChangeEvent<NativeViewGestureHandlerPayload>) => {\n    const { state, oldState, pointerInside } = nativeEvent;\n    const active = pointerInside && state === State.ACTIVE;\n\n    if (active !== this.lastActive && this.props.onActiveStateChange) {\n      this.props.onActiveStateChange(active);\n    }\n\n    if (\n      oldState === State.ACTIVE &&\n      state !== State.CANCELLED &&\n      this.lastActive &&\n      this.props.onPress\n    ) {\n      this.props.onPress(active);\n    }\n\n    this.lastActive = active;\n  };\n\n  // Normally, the parent would execute it's handler first,\n  // then forward the event to listeners. However, here our handler\n  // is virtually only forwarding events to listeners, so we reverse the order\n  // to keep the proper order of the callbacks (from \"raw\" ones to \"processed\").\n  private onHandlerStateChange = (\n    e: HandlerStateChangeEvent<NativeViewGestureHandlerPayload>\n  ) => {\n    this.props.onHandlerStateChange?.(e);\n    this.handleEvent(e);\n  };\n\n  private onGestureEvent = (\n    e: GestureEvent<NativeViewGestureHandlerPayload>\n  ) => {\n    this.props.onGestureEvent?.(e);\n    this.handleEvent(\n      e as HandlerStateChangeEvent<NativeViewGestureHandlerPayload>\n    ); // TODO: maybe it is not correct\n  };\n\n  render() {\n    const { rippleColor, ...rest } = this.props;\n\n    return (\n      <RawButton\n        rippleColor={processColor(rippleColor)}\n        {...rest}\n        onGestureEvent={this.onGestureEvent}\n        onHandlerStateChange={this.onHandlerStateChange}\n      />\n    );\n  }\n}\n\nconst AnimatedBaseButton = Animated.createAnimatedComponent(BaseButton);\n\nconst btnStyles = StyleSheet.create({\n  underlay: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    bottom: 0,\n    top: 0,\n  },\n});\n\nexport class RectButton extends React.Component<RectButtonProps> {\n  static defaultProps = {\n    activeOpacity: 0.105,\n    underlayColor: 'black',\n  };\n\n  private opacity: Animated.Value;\n\n  constructor(props: RectButtonProps) {\n    super(props);\n    this.opacity = new Animated.Value(0);\n  }\n\n  private onActiveStateChange = (active: boolean) => {\n    if (Platform.OS !== 'android') {\n      this.opacity.setValue(active ? this.props.activeOpacity! : 0);\n    }\n\n    this.props.onActiveStateChange?.(active);\n  };\n\n  render() {\n    const { children, style, ...rest } = this.props;\n\n    const resolvedStyle = StyleSheet.flatten(style ?? {});\n\n    return (\n      <BaseButton\n        {...rest}\n        style={resolvedStyle}\n        onActiveStateChange={this.onActiveStateChange}>\n        <Animated.View\n          style={[\n            btnStyles.underlay,\n            {\n              opacity: this.opacity,\n              backgroundColor: this.props.underlayColor,\n              borderRadius: resolvedStyle.borderRadius,\n              borderTopLeftRadius: resolvedStyle.borderTopLeftRadius,\n              borderTopRightRadius: resolvedStyle.borderTopRightRadius,\n              borderBottomLeftRadius: resolvedStyle.borderBottomLeftRadius,\n              borderBottomRightRadius: resolvedStyle.borderBottomRightRadius,\n            },\n          ]}\n        />\n        {children}\n      </BaseButton>\n    );\n  }\n}\n\nexport class BorderlessButton extends React.Component<BorderlessButtonProps> {\n  static defaultProps = {\n    activeOpacity: 0.3,\n    borderless: true,\n  };\n\n  private opacity: Animated.Value;\n\n  constructor(props: BorderlessButtonProps) {\n    super(props);\n    this.opacity = new Animated.Value(1);\n  }\n\n  private onActiveStateChange = (active: boolean) => {\n    if (Platform.OS !== 'android') {\n      this.opacity.setValue(active ? this.props.activeOpacity! : 1);\n    }\n\n    this.props.onActiveStateChange?.(active);\n  };\n\n  render() {\n    const { children, style, ...rest } = this.props;\n\n    return (\n      <AnimatedBaseButton\n        {...rest}\n        onActiveStateChange={this.onActiveStateChange}\n        style={[style, Platform.OS === 'ios' && { opacity: this.opacity }]}>\n        {children}\n      </AnimatedBaseButton>\n    );\n  }\n}\n\nexport { default as PureNativeButton } from './GestureHandlerButton';\n","import { HostComponent, requireNativeComponent } from 'react-native';\nimport { RawButtonProps } from './GestureButtons';\nconst RNGestureHandlerButton: HostComponent<RawButtonProps> = requireNativeComponent(\n  'RNGestureHandlerButton'\n);\n\nexport default RNGestureHandlerButton;\n","export { default as TouchableNativeFeedback } from './TouchableNativeFeedback';\nexport { default as TouchableWithoutFeedback } from './TouchableWithoutFeedback';\nexport { default as TouchableOpacity } from './TouchableOpacity';\nexport { default as TouchableHighlight } from './TouchableHighlight';\n","import { TouchableNativeFeedback } from 'react-native';\n\nexport default TouchableNativeFeedback;\n","import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nconst TouchableWithoutFeedback = React.forwardRef<\n  GenericTouchable,\n  PropsWithChildren<GenericTouchableProps>\n>((props, ref) => <GenericTouchable ref={ref} {...props} />);\n\nTouchableWithoutFeedback.defaultProps = GenericTouchable.defaultProps;\n\nexport default TouchableWithoutFeedback;\n","import * as React from 'react';\nimport { Component } from 'react';\nimport {\n  Animated,\n  Platform,\n  StyleProp,\n  ViewStyle,\n  TouchableWithoutFeedbackProps,\n} from 'react-native';\n\nimport { State } from '../../State';\nimport { BaseButton } from '../GestureButtons';\n\nimport {\n  GestureEvent,\n  HandlerStateChangeEvent,\n} from '../../handlers/gestureHandlers';\nimport { NativeViewGestureHandlerPayload } from '../../handlers/NativeViewGestureHandler';\nimport { TouchableNativeFeedbackExtraProps } from './TouchableNativeFeedback.android';\n\n/**\n * Each touchable is a states' machine which preforms transitions.\n * On very beginning (and on the very end or recognition) touchable is\n * UNDETERMINED. Then it moves to BEGAN. If touchable recognizes that finger\n * travel outside it transits to special MOVED_OUTSIDE state. Gesture recognition\n * finishes in UNDETERMINED state.\n */\nexport const TOUCHABLE_STATE = {\n  UNDETERMINED: 0,\n  BEGAN: 1,\n  MOVED_OUTSIDE: 2,\n} as const;\n\ntype TouchableState = typeof TOUCHABLE_STATE[keyof typeof TOUCHABLE_STATE];\n\nexport interface GenericTouchableProps extends TouchableWithoutFeedbackProps {\n  // Decided to drop not used fields from RN's implementation.\n  // e.g. onBlur and onFocus as well as deprecated props. - TODO: this comment may be unuseful in this moment\n\n  // TODO: in RN these events get native event parameter, which prolly could be used in our implementation too\n  onPress?: () => void;\n  onPressIn?: () => void;\n  onPressOut?: () => void;\n  onLongPress?: () => void;\n\n  nativeID?: string;\n  shouldActivateOnStart?: boolean;\n  disallowInterruption?: boolean;\n\n  containerStyle?: StyleProp<ViewStyle>;\n}\n\ninterface InternalProps {\n  extraButtonProps: TouchableNativeFeedbackExtraProps;\n  onStateChange?: (oldState: TouchableState, newState: TouchableState) => void;\n}\n\n// TODO: maybe can be better\n// TODO: all clearTimeout have ! added, maybe they shouldn't ?\ntype Timeout = ReturnType<typeof setTimeout> | null | undefined;\n\n/**\n * GenericTouchable is not intented to be used as it is.\n * Should be treated as a source for the rest of touchables\n */\n\nexport default class GenericTouchable extends Component<\n  GenericTouchableProps & InternalProps\n> {\n  static defaultProps = {\n    delayLongPress: 600,\n    extraButtonProps: {\n      rippleColor: 'transparent',\n    },\n  };\n\n  // timeout handlers\n  pressInTimeout: Timeout;\n  pressOutTimeout: Timeout;\n  longPressTimeout: Timeout;\n\n  // This flag is required since recognition of longPress implies not-invoking onPress\n  longPressDetected = false;\n\n  pointerInside = true;\n\n  // State of touchable\n  STATE: TouchableState = TOUCHABLE_STATE.UNDETERMINED;\n\n  // handlePressIn in called on first touch on traveling inside component.\n  // Handles state transition with delay.\n  handlePressIn() {\n    if (this.props.delayPressIn) {\n      this.pressInTimeout = setTimeout(() => {\n        this.moveToState(TOUCHABLE_STATE.BEGAN);\n        this.pressInTimeout = null;\n      }, this.props.delayPressIn);\n    } else {\n      this.moveToState(TOUCHABLE_STATE.BEGAN);\n    }\n    if (this.props.onLongPress) {\n      const time =\n        (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0);\n      this.longPressTimeout = setTimeout(this.onLongPressDetected, time);\n    }\n  }\n  // handleMoveOutside in called on traveling outside component.\n  // Handles state transition with delay.\n  handleMoveOutside() {\n    if (this.props.delayPressOut) {\n      this.pressOutTimeout =\n        this.pressOutTimeout ||\n        setTimeout(() => {\n          this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE);\n          this.pressOutTimeout = null;\n        }, this.props.delayPressOut);\n    } else {\n      this.moveToState(TOUCHABLE_STATE.MOVED_OUTSIDE);\n    }\n  }\n\n  // handleGoToUndetermined transits to UNDETERMINED state with proper delay\n  handleGoToUndetermined() {\n    clearTimeout(this.pressOutTimeout!); // TODO: maybe it can be undefined\n    if (this.props.delayPressOut) {\n      this.pressOutTimeout = setTimeout(() => {\n        if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) {\n          this.moveToState(TOUCHABLE_STATE.BEGAN);\n        }\n        this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n        this.pressOutTimeout = null;\n      }, this.props.delayPressOut);\n    } else {\n      if (this.STATE === TOUCHABLE_STATE.UNDETERMINED) {\n        this.moveToState(TOUCHABLE_STATE.BEGAN);\n      }\n      this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n    }\n  }\n\n  componentDidMount() {\n    this.reset();\n  }\n  // reset timeout to prevent memory leaks.\n  reset() {\n    this.longPressDetected = false;\n    this.pointerInside = true;\n    clearTimeout(this.pressInTimeout!);\n    clearTimeout(this.pressOutTimeout!);\n    clearTimeout(this.longPressTimeout!);\n    this.pressOutTimeout = null;\n    this.longPressTimeout = null;\n    this.pressInTimeout = null;\n  }\n\n  // All states' transitions are defined here.\n  moveToState(newState: TouchableState) {\n    if (newState === this.STATE) {\n      // Ignore dummy transitions\n      return;\n    }\n    if (newState === TOUCHABLE_STATE.BEGAN) {\n      // First touch and moving inside\n      this.props.onPressIn?.();\n    } else if (newState === TOUCHABLE_STATE.MOVED_OUTSIDE) {\n      // Moving outside\n      this.props.onPressOut?.();\n    } else if (newState === TOUCHABLE_STATE.UNDETERMINED) {\n      // Need to reset each time on transition to UNDETERMINED\n      this.reset();\n      if (this.STATE === TOUCHABLE_STATE.BEGAN) {\n        // ... and if it happens inside button.\n        this.props.onPressOut?.();\n      }\n    }\n    // Finally call lister (used by subclasses)\n    this.props.onStateChange?.(this.STATE, newState);\n    // ... and make transition.\n    this.STATE = newState;\n  }\n\n  onGestureEvent = ({\n    nativeEvent: { pointerInside },\n  }: GestureEvent<NativeViewGestureHandlerPayload>) => {\n    if (this.pointerInside !== pointerInside) {\n      if (pointerInside) {\n        this.onMoveIn();\n      } else {\n        this.onMoveOut();\n      }\n    }\n    this.pointerInside = pointerInside;\n  };\n\n  onHandlerStateChange = ({\n    nativeEvent,\n  }: HandlerStateChangeEvent<NativeViewGestureHandlerPayload>) => {\n    const { state } = nativeEvent;\n    if (state === State.CANCELLED || state === State.FAILED) {\n      // Need to handle case with external cancellation (e.g. by ScrollView)\n      this.moveToState(TOUCHABLE_STATE.UNDETERMINED);\n    } else if (\n      // This platform check is an implication of slightly different behavior of handlers on different platform.\n      // And Android \"Active\" state is achieving on first move of a finger, not on press in.\n      // On iOS event on \"Began\" is not delivered.\n      state === (Platform.OS !== 'android' ? State.ACTIVE : State.BEGAN) &&\n      this.STATE === TOUCHABLE_STATE.UNDETERMINED\n    ) {\n      // Moving inside requires\n      this.handlePressIn();\n    } else if (state === State.END) {\n      const shouldCallOnPress =\n        !this.longPressDetected &&\n        this.STATE !== TOUCHABLE_STATE.MOVED_OUTSIDE &&\n        this.pressOutTimeout === null;\n      this.handleGoToUndetermined();\n      if (shouldCallOnPress) {\n        // Calls only inside component whether no long press was called previously\n        this.props.onPress?.();\n      }\n    }\n  };\n\n  onLongPressDetected = () => {\n    this.longPressDetected = true;\n    // checked for in the caller of `onLongPressDetected`, but better to check twice\n    this.props.onLongPress?.();\n  };\n\n  componentWillUnmount() {\n    // to prevent memory leaks\n    this.reset();\n  }\n\n  onMoveIn() {\n    if (this.STATE === TOUCHABLE_STATE.MOVED_OUTSIDE) {\n      // This call is not throttled with delays (like in RN's implementation).\n      this.moveToState(TOUCHABLE_STATE.BEGAN);\n    }\n  }\n\n  onMoveOut() {\n    // long press should no longer be detected\n    clearTimeout(this.longPressTimeout!);\n    this.longPressTimeout = null;\n    if (this.STATE === TOUCHABLE_STATE.BEGAN) {\n      this.handleMoveOutside();\n    }\n  }\n\n  render() {\n    const coreProps = {\n      accessible: this.props.accessible !== false,\n      accessibilityLabel: this.props.accessibilityLabel,\n      accessibilityHint: this.props.accessibilityHint,\n      accessibilityRole: this.props.accessibilityRole,\n      // TODO: check if changed to no 's' correctly, also removed 2 props that are no longer available: `accessibilityComponentType` and `accessibilityTraits`,\n      // would be good to check if it is ok for sure, see: https://github.com/facebook/react-native/issues/24016\n      accessibilityState: this.props.accessibilityState,\n      nativeID: this.props.nativeID,\n      onLayout: this.props.onLayout,\n      hitSlop: this.props.hitSlop,\n    };\n\n    return (\n      <BaseButton\n        style={this.props.containerStyle}\n        onHandlerStateChange={\n          // TODO: not sure if it can be undefined instead of null\n          this.props.disabled ? undefined : this.onHandlerStateChange\n        }\n        onGestureEvent={this.onGestureEvent}\n        hitSlop={this.props.hitSlop}\n        shouldActivateOnStart={this.props.shouldActivateOnStart}\n        disallowInterruption={this.props.disallowInterruption}\n        testID={this.props.testID}\n        {...this.props.extraButtonProps}>\n        <Animated.View {...coreProps} style={this.props.style}>\n          {this.props.children}\n        </Animated.View>\n      </BaseButton>\n    );\n  }\n}\n","import {\n  Animated,\n  Easing,\n  StyleSheet,\n  View,\n  TouchableOpacityProps,\n} from 'react-native';\nimport GenericTouchable, {\n  TOUCHABLE_STATE,\n  GenericTouchableProps,\n} from './GenericTouchable';\nimport * as React from 'react';\nimport { Component } from 'react';\n\n/**\n * TouchableOpacity bases on timing animation which has been used in RN's core\n */\nexport default class TouchableOpacity extends Component<\n  TouchableOpacityProps & GenericTouchableProps\n> {\n  static defaultProps = {\n    ...GenericTouchable.defaultProps,\n    activeOpacity: 0.2,\n  };\n\n  // opacity is 1 one by default but could be overwritten\n  getChildStyleOpacityWithDefault = () => {\n    const childStyle = StyleSheet.flatten(this.props.style) || {};\n    return childStyle.opacity == null ? 1 : childStyle.opacity;\n  };\n\n  opacity = new Animated.Value(this.getChildStyleOpacityWithDefault());\n\n  setOpacityTo = (value: number, duration: number) => {\n    Animated.timing(this.opacity, {\n      toValue: value,\n      duration: duration,\n      easing: Easing.inOut(Easing.quad),\n      useNativeDriver: true,\n    }).start();\n  };\n\n  onStateChange = (_from: number, to: number) => {\n    if (to === TOUCHABLE_STATE.BEGAN) {\n      this.setOpacityTo(this.props.activeOpacity!, 0);\n    } else if (\n      to === TOUCHABLE_STATE.UNDETERMINED ||\n      to === TOUCHABLE_STATE.MOVED_OUTSIDE\n    ) {\n      this.setOpacityTo(this.getChildStyleOpacityWithDefault(), 150);\n    }\n  };\n\n  render() {\n    const { style = {}, ...rest } = this.props;\n    return (\n      <GenericTouchable\n        {...rest}\n        style={[\n          style,\n          {\n            opacity: (this.opacity as unknown) as number, // TODO: fix this\n          },\n        ]}\n        onStateChange={this.onStateChange}>\n        {this.props.children ? this.props.children : <View />}\n      </GenericTouchable>\n    );\n  }\n}\n","import * as React from 'react';\nimport { Component } from 'react';\nimport GenericTouchable, {\n  GenericTouchableProps,\n  TOUCHABLE_STATE,\n} from './GenericTouchable';\nimport {\n  StyleSheet,\n  View,\n  TouchableHighlightProps,\n  ColorValue,\n  ViewProps,\n} from 'react-native';\n\ninterface State {\n  extraChildStyle: null | {\n    opacity?: number;\n  };\n  extraUnderlayStyle: null | {\n    backgroundColor?: ColorValue;\n  };\n}\n\n/**\n * TouchableHighlight follows RN's implementation\n */\nexport default class TouchableHighlight extends Component<\n  TouchableHighlightProps & GenericTouchableProps,\n  State\n> {\n  static defaultProps = {\n    ...GenericTouchable.defaultProps,\n    activeOpacity: 0.85,\n    delayPressOut: 100,\n    underlayColor: 'black',\n  };\n\n  constructor(props: TouchableHighlightProps & GenericTouchableProps) {\n    super(props);\n    this.state = {\n      extraChildStyle: null,\n      extraUnderlayStyle: null,\n    };\n  }\n\n  // Copied from RN\n  showUnderlay = () => {\n    if (!this.hasPressHandler()) {\n      return;\n    }\n    this.setState({\n      extraChildStyle: {\n        opacity: this.props.activeOpacity,\n      },\n      extraUnderlayStyle: {\n        backgroundColor: this.props.underlayColor,\n      },\n    });\n    this.props.onShowUnderlay?.();\n  };\n\n  hasPressHandler = () =>\n    this.props.onPress ||\n    this.props.onPressIn ||\n    this.props.onPressOut ||\n    this.props.onLongPress;\n\n  hideUnderlay = () => {\n    this.setState({\n      extraChildStyle: null,\n      extraUnderlayStyle: null,\n    });\n    this.props.onHideUnderlay?.();\n  };\n\n  renderChildren() {\n    if (!this.props.children) {\n      return <View />;\n    }\n\n    const child = React.Children.only(\n      this.props.children\n    ) as React.ReactElement<ViewProps>; // TODO: not sure if OK but fixes error\n    return React.cloneElement(child, {\n      style: StyleSheet.compose(child.props.style, this.state.extraChildStyle),\n    });\n  }\n\n  onStateChange = (_from: number, to: number) => {\n    if (to === TOUCHABLE_STATE.BEGAN) {\n      this.showUnderlay();\n    } else if (\n      to === TOUCHABLE_STATE.UNDETERMINED ||\n      to === TOUCHABLE_STATE.MOVED_OUTSIDE\n    ) {\n      this.hideUnderlay();\n    }\n  };\n\n  render() {\n    const { style = {}, ...rest } = this.props;\n    const { extraUnderlayStyle } = this.state;\n    return (\n      <GenericTouchable\n        {...rest}\n        style={[style, extraUnderlayStyle]}\n        onStateChange={this.onStateChange}>\n        {this.renderChildren()}\n      </GenericTouchable>\n    );\n  }\n}\n","import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport {\n  ScrollView as RNScrollView,\n  ScrollViewProps as RNScrollViewProps,\n  Switch as RNSwitch,\n  SwitchProps as RNSwitchProps,\n  TextInput as RNTextInput,\n  TextInputProps as RNTextInputProps,\n  DrawerLayoutAndroid as RNDrawerLayoutAndroid,\n  DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,\n  FlatList as RNFlatList,\n  FlatListProps as RNFlatListProps,\n} from 'react-native';\n\nimport createNativeWrapper from '../handlers/createNativeWrapper';\n\nimport { NativeViewGestureHandlerProps } from '../handlers/NativeViewGestureHandler';\n\nexport const ScrollView = createNativeWrapper<\n  PropsWithChildren<RNScrollViewProps>\n>(RNScrollView, {\n  disallowInterruption: true,\n  shouldCancelWhenOutside: false,\n});\n// backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type ScrollView = typeof ScrollView & {\n  scrollTo(\n    y?: number | { x?: number; y?: number; animated?: boolean },\n    x?: number,\n    animated?: boolean\n  ): void;\n  scrollToEnd(options?: { animated: boolean }): void;\n};\n\nexport const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {\n  shouldCancelWhenOutside: false,\n  shouldActivateOnStart: true,\n  disallowInterruption: true,\n});\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Switch = typeof Switch;\n\nexport const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type TextInput = typeof TextInput;\n\nexport const DrawerLayoutAndroid = createNativeWrapper<\n  PropsWithChildren<RNDrawerLayoutAndroidProps>\n>(RNDrawerLayoutAndroid, { disallowInterruption: true });\n// we use literal object since TS gives error when using RN's `positions`\n// @ts-ignore FIXME(TS) maybe this should be removed?\nDrawerLayoutAndroid.positions = { Left: 'left', Right: 'right' };\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DrawerLayoutAndroid = typeof DrawerLayoutAndroid;\n\nexport const FlatList = React.forwardRef<RNFlatList<any>, RNFlatListProps<any>>(\n  (props, ref) => (\n    <RNFlatList\n      ref={ref}\n      {...props}\n      renderScrollComponent={(scrollProps) => <ScrollView {...scrollProps} />}\n    />\n  )\n);\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FlatList<ItemT> = React.ComponentType<\n  RNFlatListProps<ItemT> &\n    NativeViewGestureHandlerProps &\n    React.RefAttributes<any>\n> & {\n  scrollToEnd: (params?: { animated?: boolean }) => void;\n  scrollToIndex: (params: {\n    animated?: boolean;\n    index: number;\n    viewOffset?: number;\n    viewPosition?: number;\n  }) => void;\n  scrollToItem: (params: {\n    animated?: boolean;\n    item: ItemT;\n    viewPosition?: number;\n  }) => void;\n  scrollToOffset: (params: { animated?: boolean; offset: number }) => void;\n};\n","// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us\n// to move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n  Animated,\n  StyleSheet,\n  View,\n  I18nManager,\n  LayoutChangeEvent,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\n\nimport {\n  PanGestureHandler,\n  TapGestureHandler,\n  PanGestureHandlerProps,\n  GestureEvent,\n  PanGestureHandlerEventPayload,\n  HandlerStateChangeEvent,\n  TapGestureHandlerEventPayload,\n} from '../handlers/gestureHandlers';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n  keyof PanGestureHandlerProps,\n  'onGestureEvent' | 'onHandlerStateChange'\n>;\n\ninterface SwipeableProps\n  extends Pick<PanGestureHandlerProps, SwipeableExcludes> {\n  enableTrackpadTwoFingerGesture?: boolean;\n  friction?: number;\n  leftThreshold?: number;\n  rightThreshold?: number;\n  overshootLeft?: boolean;\n  overshootRight?: boolean;\n  overshootFriction?: number;\n  onSwipeableLeftOpen?: () => void;\n  onSwipeableRightOpen?: () => void;\n  onSwipeableOpen?: () => void;\n  onSwipeableClose?: () => void;\n  onSwipeableLeftWillOpen?: () => void;\n  onSwipeableRightWillOpen?: () => void;\n  onSwipeableWillOpen?: () => void;\n  onSwipeableWillClose?: () => void;\n  /**\n   *\n   * This map describes the values to use as inputRange for extra interpolation:\n   * AnimatedValue: [startValue, endValue]\n   *\n   * progressAnimatedValue: [0, 1]\n   * dragAnimatedValue: [0, +]\n   *\n   * To support `rtl` flexbox layouts use `flexDirection` styling.\n   * */\n  renderLeftActions?: (\n    progressAnimatedValue: Animated.AnimatedInterpolation,\n    dragAnimatedValue: Animated.AnimatedInterpolation\n  ) => React.ReactNode;\n  /**\n   *\n   * This map describes the values to use as inputRange for extra interpolation:\n   * AnimatedValue: [startValue, endValue]\n   *\n   * progressAnimatedValue: [0, 1]\n   * dragAnimatedValue: [0, -]\n   *\n   * To support `rtl` flexbox layouts use `flexDirection` styling.\n   * */\n  renderRightActions?: (\n    progressAnimatedValue: Animated.AnimatedInterpolation,\n    dragAnimatedValue: Animated.AnimatedInterpolation\n  ) => React.ReactNode;\n  useNativeAnimations?: boolean;\n  animationOptions?: Record<string, unknown>;\n  containerStyle?: StyleProp<ViewStyle>;\n  childrenContainerStyle?: StyleProp<ViewStyle>;\n}\n\ntype SwipeableState = {\n  dragX: Animated.Value;\n  rowTranslation: Animated.Value;\n  rowState: number;\n  leftWidth?: number;\n  rightOffset?: number;\n  rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n  SwipeableProps,\n  SwipeableState\n> {\n  static defaultProps = {\n    friction: 1,\n    overshootFriction: 1,\n    useNativeAnimations: true,\n  };\n\n  constructor(props: SwipeableProps) {\n    super(props);\n    const dragX = new Animated.Value(0);\n    this.state = {\n      dragX,\n      rowTranslation: new Animated.Value(0),\n      rowState: 0,\n      leftWidth: undefined,\n      rightOffset: undefined,\n      rowWidth: undefined,\n    };\n    this.updateAnimatedEvent(props, this.state);\n\n    this.onGestureEvent = Animated.event(\n      [{ nativeEvent: { translationX: dragX } }],\n      { useNativeDriver: props.useNativeAnimations! }\n    );\n  }\n\n  UNSAFE_componentWillUpdate(props: SwipeableProps, state: SwipeableState) {\n    if (\n      this.props.friction !== props.friction ||\n      this.props.overshootLeft !== props.overshootLeft ||\n      this.props.overshootRight !== props.overshootRight ||\n      this.props.overshootFriction !== props.overshootFriction ||\n      this.state.leftWidth !== state.leftWidth ||\n      this.state.rightOffset !== state.rightOffset ||\n      this.state.rowWidth !== state.rowWidth\n    ) {\n      this.updateAnimatedEvent(props, state);\n    }\n  }\n\n  private onGestureEvent?: (\n    event: GestureEvent<PanGestureHandlerEventPayload>\n  ) => void;\n  private transX?: Animated.AnimatedInterpolation;\n  private showLeftAction?: Animated.AnimatedInterpolation | Animated.Value;\n  private leftActionTranslate?: Animated.AnimatedInterpolation;\n  private showRightAction?: Animated.AnimatedInterpolation | Animated.Value;\n  private rightActionTranslate?: Animated.AnimatedInterpolation;\n\n  private updateAnimatedEvent = (\n    props: SwipeableProps,\n    state: SwipeableState\n  ) => {\n    const { friction, overshootFriction } = props;\n    const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n    const { rightOffset = rowWidth } = state;\n    const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n    const {\n      overshootLeft = leftWidth > 0,\n      overshootRight = rightWidth > 0,\n    } = props;\n\n    const transX = Animated.add(\n      rowTranslation,\n      dragX.interpolate({\n        inputRange: [0, friction!],\n        outputRange: [0, 1],\n      })\n    ).interpolate({\n      inputRange: [\n        -rightWidth - (overshootRight ? 1 : overshootFriction!),\n        -rightWidth,\n        leftWidth,\n        leftWidth + (overshootLeft ? 1 : overshootFriction!),\n      ],\n      outputRange: [\n        -rightWidth - (overshootRight || overshootFriction! > 1 ? 1 : 0),\n        -rightWidth,\n        leftWidth,\n        leftWidth + (overshootLeft || overshootFriction! > 1 ? 1 : 0),\n      ],\n    });\n    this.transX = transX;\n    this.showLeftAction =\n      leftWidth > 0\n        ? transX.interpolate({\n            inputRange: [-1, 0, leftWidth],\n            outputRange: [0, 0, 1],\n          })\n        : new Animated.Value(0);\n    this.leftActionTranslate = this.showLeftAction.interpolate({\n      inputRange: [0, Number.MIN_VALUE],\n      outputRange: [-10000, 0],\n      extrapolate: 'clamp',\n    });\n    this.showRightAction =\n      rightWidth > 0\n        ? transX.interpolate({\n            inputRange: [-rightWidth, 0, 1],\n            outputRange: [1, 0, 0],\n          })\n        : new Animated.Value(0);\n    this.rightActionTranslate = this.showRightAction.interpolate({\n      inputRange: [0, Number.MIN_VALUE],\n      outputRange: [-10000, 0],\n      extrapolate: 'clamp',\n    });\n  };\n\n  private onTapHandlerStateChange = ({\n    nativeEvent,\n  }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {\n    if (nativeEvent.oldState === State.ACTIVE) {\n      this.close();\n    }\n  };\n\n  private onHandlerStateChange = (\n    ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n  ) => {\n    if (ev.nativeEvent.oldState === State.ACTIVE) {\n      this.handleRelease(ev);\n    }\n  };\n\n  private handleRelease = (\n    ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n  ) => {\n    const { velocityX, translationX: dragX } = ev.nativeEvent;\n    const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n    const { rightOffset = rowWidth } = this.state;\n    const rightWidth = rowWidth - rightOffset;\n    const {\n      friction,\n      leftThreshold = leftWidth / 2,\n      rightThreshold = rightWidth / 2,\n    } = this.props;\n\n    const startOffsetX = this.currentOffset() + dragX / friction!;\n    const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n    let toValue = 0;\n    if (rowState === 0) {\n      if (translationX > leftThreshold) {\n        toValue = leftWidth;\n      } else if (translationX < -rightThreshold) {\n        toValue = -rightWidth;\n      }\n    } else if (rowState === 1) {\n      // swiped to left\n      if (translationX > -leftThreshold) {\n        toValue = leftWidth;\n      }\n    } else {\n      // swiped to right\n      if (translationX < rightThreshold) {\n        toValue = -rightWidth;\n      }\n    }\n\n    this.animateRow(startOffsetX, toValue, velocityX / friction!);\n  };\n\n  private animateRow = (\n    fromValue: number,\n    toValue: number,\n    velocityX?:\n      | number\n      | {\n          x: number;\n          y: number;\n        }\n  ) => {\n    const { dragX, rowTranslation } = this.state;\n    dragX.setValue(0);\n    rowTranslation.setValue(fromValue);\n\n    this.setState({ rowState: Math.sign(toValue) });\n    Animated.spring(rowTranslation, {\n      restSpeedThreshold: 1.7,\n      restDisplacementThreshold: 0.4,\n      velocity: velocityX,\n      bounciness: 0,\n      toValue,\n      useNativeDriver: this.props.useNativeAnimations!,\n      ...this.props.animationOptions,\n    }).start(({ finished }) => {\n      if (finished) {\n        if (toValue > 0 && this.props.onSwipeableLeftOpen) {\n          this.props.onSwipeableLeftOpen();\n        } else if (toValue < 0 && this.props.onSwipeableRightOpen) {\n          this.props.onSwipeableRightOpen();\n        }\n\n        if (toValue === 0) {\n          this.props.onSwipeableClose?.();\n        } else {\n          this.props.onSwipeableOpen?.();\n        }\n      }\n    });\n    if (toValue > 0 && this.props.onSwipeableLeftWillOpen) {\n      this.props.onSwipeableLeftWillOpen();\n    } else if (toValue < 0 && this.props.onSwipeableRightWillOpen) {\n      this.props.onSwipeableRightWillOpen();\n    }\n\n    if (toValue === 0) {\n      this.props.onSwipeableWillClose?.();\n    } else {\n      this.props.onSwipeableWillOpen?.();\n    }\n  };\n\n  private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n    this.setState({ rowWidth: nativeEvent.layout.width });\n  };\n\n  private currentOffset = () => {\n    const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n    const { rightOffset = rowWidth } = this.state;\n    const rightWidth = rowWidth - rightOffset;\n    if (rowState === 1) {\n      return leftWidth;\n    } else if (rowState === -1) {\n      return -rightWidth;\n    }\n    return 0;\n  };\n\n  close = () => {\n    this.animateRow(this.currentOffset(), 0);\n  };\n\n  openLeft = () => {\n    const { leftWidth = 0 } = this.state;\n    this.animateRow(this.currentOffset(), leftWidth);\n  };\n\n  openRight = () => {\n    const { rowWidth = 0 } = this.state;\n    const { rightOffset = rowWidth } = this.state;\n    const rightWidth = rowWidth - rightOffset;\n    this.animateRow(this.currentOffset(), -rightWidth);\n  };\n\n  render() {\n    const { rowState } = this.state;\n    const { children, renderLeftActions, renderRightActions } = this.props;\n\n    const left = renderLeftActions && (\n      <Animated.View\n        style={[\n          styles.leftActions,\n          // all those and below parameters can have ! since they are all asigned in constructor in `updateAnimatedEvent` but TS cannot spot it for some reason\n          { transform: [{ translateX: this.leftActionTranslate! }] },\n        ]}>\n        {renderLeftActions(this.showLeftAction!, this.transX!)}\n        <View\n          onLayout={({ nativeEvent }) =>\n            this.setState({ leftWidth: nativeEvent.layout.x })\n          }\n        />\n      </Animated.View>\n    );\n\n    const right = renderRightActions && (\n      <Animated.View\n        style={[\n          styles.rightActions,\n          { transform: [{ translateX: this.rightActionTranslate! }] },\n        ]}>\n        {renderRightActions(this.showRightAction!, this.transX!)}\n        <View\n          onLayout={({ nativeEvent }) =>\n            this.setState({ rightOffset: nativeEvent.layout.x })\n          }\n        />\n      </Animated.View>\n    );\n\n    return (\n      <PanGestureHandler\n        activeOffsetX={[-10, 10]}\n        {...this.props}\n        onGestureEvent={this.onGestureEvent}\n        onHandlerStateChange={this.onHandlerStateChange}>\n        <Animated.View\n          onLayout={this.onRowLayout}\n          style={[styles.container, this.props.containerStyle]}>\n          {left}\n          {right}\n          <TapGestureHandler\n            enabled={rowState !== 0}\n            onHandlerStateChange={this.onTapHandlerStateChange}>\n            <Animated.View\n              pointerEvents={rowState === 0 ? 'auto' : 'box-only'}\n              style={[\n                {\n                  transform: [{ translateX: this.transX! }],\n                },\n                this.props.childrenContainerStyle,\n              ]}>\n              {children}\n            </Animated.View>\n          </TapGestureHandler>\n        </Animated.View>\n      </PanGestureHandler>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    overflow: 'hidden',\n  },\n  leftActions: {\n    ...StyleSheet.absoluteFillObject,\n    flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n  },\n  rightActions: {\n    ...StyleSheet.absoluteFillObject,\n    flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n  },\n});\n","// This component is based on RN's DrawerLayoutAndroid API\n//\n// It perhaps deserves to be put in a separate repo, but since it relies\n// on react-native-gesture-handler library which isn't very popular at the\n// moment I decided to keep it here for the time being. It will allow us\n// to move faster and fix issues that may arise in gesture handler library\n// that could be found when using the drawer component\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport invariant from 'invariant';\nimport {\n  Animated,\n  StyleSheet,\n  View,\n  Keyboard,\n  StatusBar,\n  I18nManager,\n  StatusBarAnimation,\n  StyleProp,\n  ViewStyle,\n  LayoutChangeEvent,\n  NativeSyntheticEvent,\n} from 'react-native';\n\nimport {\n  GestureEvent,\n  PanGestureHandler,\n  PanGestureHandlerEventPayload,\n  TapGestureHandler,\n  HandlerStateChangeEvent,\n  TapGestureHandlerEventPayload,\n} from '../handlers/gestureHandlers';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\nconst IDLE: DrawerState = 'Idle';\nconst DRAGGING: DrawerState = 'Dragging';\nconst SETTLING: DrawerState = 'Settling';\n\nexport type DrawerPosition = 'left' | 'right';\n\nexport type DrawerState = 'Idle' | 'Dragging' | 'Settling';\n\nexport type DrawerType = 'front' | 'back' | 'slide';\n\nexport type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open';\n\nexport type DrawerKeyboardDismissMode = 'none' | 'on-drag';\n\nexport interface DrawerLayoutProps {\n  renderNavigationView: (\n    progressAnimatedValue: Animated.Value\n  ) => React.ReactNode;\n  drawerPosition?: DrawerPosition;\n  drawerWidth?: number;\n  drawerBackgroundColor?: string;\n  drawerLockMode?: DrawerLockMode;\n  keyboardDismissMode?: DrawerKeyboardDismissMode;\n  onDrawerClose?: () => void;\n  onDrawerOpen?: () => void;\n  onDrawerStateChanged?: (\n    newState: DrawerState,\n    drawerWillShow: boolean\n  ) => void;\n  useNativeAnimations?: boolean;\n\n  drawerType?: DrawerType;\n  edgeWidth?: number;\n  minSwipeDistance?: number;\n  hideStatusBar?: boolean;\n  statusBarAnimation?: StatusBarAnimation;\n  overlayColor?: string;\n  contentContainerStyle?: StyleProp<ViewStyle>;\n  drawerContainerStyle?: StyleProp<ViewStyle>;\n  enableTrackpadTwoFingerGesture?: boolean;\n  onDrawerSlide?: (position: number) => void;\n  onGestureRef?: (ref: PanGestureHandler) => void;\n}\n\nexport type DrawerLayoutState = {\n  dragX: Animated.Value;\n  touchX: Animated.Value;\n  drawerTranslation: Animated.Value;\n  containerWidth: number;\n};\n\nexport type DrawerMovementOption = {\n  velocity?: number;\n  speed?: number;\n};\nexport default class DrawerLayout extends Component<\n  DrawerLayoutProps,\n  DrawerLayoutState\n> {\n  static defaultProps = {\n    drawerWidth: 200,\n    drawerPosition: 'left',\n    useNativeAnimations: true,\n    drawerType: 'front',\n    edgeWidth: 20,\n    minSwipeDistance: 3,\n    overlayColor: 'rgba(0, 0, 0, 0.7)',\n    drawerLockMode: 'unlocked',\n    enableTrackpadTwoFingerGesture: false,\n  };\n\n  constructor(props: DrawerLayoutProps) {\n    super(props);\n\n    const dragX = new Animated.Value(0);\n    const touchX = new Animated.Value(0);\n    const drawerTranslation = new Animated.Value(0);\n\n    this.state = {\n      dragX,\n      touchX,\n      drawerTranslation,\n      containerWidth: 0,\n    };\n\n    this.updateAnimatedEvent(props, this.state);\n  }\n\n  UNSAFE_componentWillUpdate(\n    props: DrawerLayoutProps,\n    state: DrawerLayoutState\n  ) {\n    if (\n      this.props.drawerPosition !== props.drawerPosition ||\n      this.props.drawerWidth !== props.drawerWidth ||\n      this.props.drawerType !== props.drawerType ||\n      this.state.containerWidth !== state.containerWidth\n    ) {\n      this.updateAnimatedEvent(props, state);\n    }\n  }\n\n  private openValue?: Animated.AnimatedInterpolation;\n  private onGestureEvent?: (\n    event: GestureEvent<PanGestureHandlerEventPayload>\n  ) => void;\n  private accessibilityIsModalView = React.createRef<View>();\n  private pointerEventsView = React.createRef<View>();\n  private panGestureHandler = React.createRef<PanGestureHandler | null>();\n  private drawerShown = false;\n\n  static positions = {\n    Left: 'left',\n    Right: 'right',\n  };\n\n  private updateAnimatedEvent = (\n    props: DrawerLayoutProps,\n    state: DrawerLayoutState\n  ) => {\n    // Event definition is based on\n    const { drawerPosition, drawerWidth, drawerType } = props;\n    const {\n      dragX: dragXValue,\n      touchX: touchXValue,\n      drawerTranslation,\n      containerWidth,\n    } = state;\n\n    let dragX = dragXValue;\n    let touchX = touchXValue;\n\n    if (drawerPosition !== 'left') {\n      // Most of the code is written in a way to handle left-side drawer.\n      // In order to handle right-side drawer the only thing we need to\n      // do is to reverse events coming from gesture handler in a way they\n      // emulate left-side drawer gestures. E.g. dragX is simply -dragX, and\n      // touchX is calulcated by subtracing real touchX from the width of the\n      // container (such that when touch happens at the right edge the value\n      // is simply 0)\n      dragX = Animated.multiply(\n        new Animated.Value(-1),\n        dragXValue\n      ) as Animated.Value; // TODO(TS): (for all \"as\" in this file) make sure we can map this\n      touchX = Animated.add(\n        new Animated.Value(containerWidth),\n        Animated.multiply(new Animated.Value(-1), touchXValue)\n      ) as Animated.Value; // TODO(TS): make sure we can map this;\n      touchXValue.setValue(containerWidth);\n    } else {\n      touchXValue.setValue(0);\n    }\n\n    // While closing the drawer when user starts gesture outside of its area (in greyed\n    // out part of the window), we want the drawer to follow only once finger reaches the\n    // edge of the drawer.\n    // E.g. on the diagram below drawer is illustrate by X signs and the greyed out area by\n    // dots. The touch gesture starts at '*' and moves left, touch path is indicated by\n    // an arrow pointing left\n    // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n    //    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXX|.........|\n    //    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXX|.........|\n    //    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXX|.........|\n    //    |XXXXXXXX|......|    |XXXXXXXX|.<-*..|    |XXXXXXXX|<--*..|    |XXXXX|<-----*..|\n    //    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXX|.........|\n    //    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXX|.........|\n    //    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXXXXX|......|    |XXXXX|.........|\n    //    +---------------+    +---------------+    +---------------+    +---------------+\n    //\n    // For the above to work properly we define animated value that will keep start position\n    // of the gesture. Then we use that value to calculate how much we need to subtract from\n    // the dragX. If the gesture started on the greyed out area we take the distance from the\n    // edge of the drawer to the start position. Otherwise we don't subtract at all and the\n    // drawer be pulled back as soon as you start the pan.\n    //\n    // This is used only when drawerType is \"front\"\n    //\n    let translationX = dragX;\n    if (drawerType === 'front') {\n      const startPositionX = Animated.add(\n        touchX,\n        Animated.multiply(new Animated.Value(-1), dragX)\n      );\n\n      const dragOffsetFromOnStartPosition = startPositionX.interpolate({\n        inputRange: [drawerWidth! - 1, drawerWidth!, drawerWidth! + 1],\n        outputRange: [0, 0, 1],\n      });\n      translationX = Animated.add(\n        dragX,\n        dragOffsetFromOnStartPosition\n      ) as Animated.Value; // TODO: as above\n    }\n\n    this.openValue = Animated.add(translationX, drawerTranslation).interpolate({\n      inputRange: [0, drawerWidth!],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    });\n\n    const gestureOptions: {\n      useNativeDriver: boolean;\n      // TODO: make sure it is correct\n      listener?: (\n        ev: NativeSyntheticEvent<PanGestureHandlerEventPayload>\n      ) => void;\n    } = {\n      useNativeDriver: props.useNativeAnimations!,\n    };\n\n    if (this.props.onDrawerSlide) {\n      gestureOptions.listener = (ev) => {\n        const translationX = Math.floor(Math.abs(ev.nativeEvent.translationX));\n        const position = translationX / this.state.containerWidth;\n\n        this.props.onDrawerSlide?.(position);\n      };\n    }\n\n    this.onGestureEvent = Animated.event(\n      [{ nativeEvent: { translationX: dragXValue, x: touchXValue } }],\n      gestureOptions\n    );\n  };\n\n  private handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n    this.setState({ containerWidth: nativeEvent.layout.width });\n  };\n\n  private emitStateChanged = (\n    newState: DrawerState,\n    drawerWillShow: boolean\n  ) => {\n    this.props.onDrawerStateChanged?.(newState, drawerWillShow);\n  };\n\n  private openingHandlerStateChange = ({\n    nativeEvent,\n  }: HandlerStateChangeEvent<PanGestureHandlerEventPayload>) => {\n    if (nativeEvent.oldState === State.ACTIVE) {\n      this.handleRelease({ nativeEvent });\n    } else if (nativeEvent.state === State.ACTIVE) {\n      this.emitStateChanged(DRAGGING, false);\n      if (this.props.keyboardDismissMode === 'on-drag') {\n        Keyboard.dismiss();\n      }\n      if (this.props.hideStatusBar) {\n        StatusBar.setHidden(true, this.props.statusBarAnimation || 'slide');\n      }\n    }\n  };\n\n  private onTapHandlerStateChange = ({\n    nativeEvent,\n  }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {\n    if (\n      this.drawerShown &&\n      nativeEvent.oldState === State.ACTIVE &&\n      this.props.drawerLockMode !== 'locked-open'\n    ) {\n      this.closeDrawer();\n    }\n  };\n\n  private handleRelease = ({\n    nativeEvent,\n  }: HandlerStateChangeEvent<PanGestureHandlerEventPayload>) => {\n    const { drawerWidth, drawerPosition, drawerType } = this.props;\n    const { containerWidth } = this.state;\n    let { translationX: dragX, velocityX, x: touchX } = nativeEvent;\n\n    if (drawerPosition !== 'left') {\n      // See description in _updateAnimatedEvent about why events are flipped\n      // for right-side drawer\n      dragX = -dragX;\n      touchX = containerWidth - touchX;\n      velocityX = -velocityX;\n    }\n\n    const gestureStartX = touchX - dragX;\n    let dragOffsetBasedOnStart = 0;\n\n    if (drawerType === 'front') {\n      dragOffsetBasedOnStart =\n        gestureStartX > drawerWidth! ? gestureStartX - drawerWidth! : 0;\n    }\n\n    const startOffsetX =\n      dragX + dragOffsetBasedOnStart + (this.drawerShown ? drawerWidth! : 0);\n    const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n    const shouldOpen = projOffsetX > drawerWidth! / 2;\n\n    if (shouldOpen) {\n      this.animateDrawer(startOffsetX, drawerWidth!, velocityX);\n    } else {\n      this.animateDrawer(startOffsetX, 0, velocityX);\n    }\n  };\n\n  private updateShowing = (showing: boolean) => {\n    this.drawerShown = showing;\n    this.accessibilityIsModalView.current?.setNativeProps({\n      accessibilityViewIsModal: showing,\n    });\n    this.pointerEventsView.current?.setNativeProps({\n      pointerEvents: showing ? 'auto' : 'none',\n    });\n    const { drawerPosition, minSwipeDistance, edgeWidth } = this.props;\n    const fromLeft = drawerPosition === 'left';\n    // gestureOrientation is 1 if the expected gesture is from left to right and -1 otherwise\n    // e.g. when drawer is on the left and is closed we expect left to right gesture, thus\n    // orientation will be 1.\n    const gestureOrientation =\n      (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);\n    // When drawer is closed we want the hitSlop to be horizontally shorter\n    // than the container size by the value of SLOP. This will make it only\n    // activate when gesture happens not further than SLOP away from the edge\n    const hitSlop = fromLeft\n      ? { left: 0, width: showing ? undefined : edgeWidth }\n      : { right: 0, width: showing ? undefined : edgeWidth };\n    // @ts-ignore internal API, maybe could be fixed in handler types\n    this.panGestureHandler.current?.setNativeProps({\n      hitSlop,\n      activeOffsetX: gestureOrientation * minSwipeDistance!,\n    });\n  };\n\n  private animateDrawer = (\n    fromValue: number | null | undefined,\n    toValue: number,\n    velocity: number,\n    speed?: number\n  ) => {\n    this.state.dragX.setValue(0);\n    this.state.touchX.setValue(\n      this.props.drawerPosition === 'left' ? 0 : this.state.containerWidth\n    );\n\n    if (fromValue != null) {\n      let nextFramePosition = fromValue;\n      if (this.props.useNativeAnimations) {\n        // When using native driver, we predict the next position of the animation\n        // because it takes one frame of a roundtrip to pass RELEASE event from\n        // native driver to JS before we can start animating. Without it, it is more\n        // noticable that the frame is dropped.\n        if (fromValue < toValue && velocity > 0) {\n          nextFramePosition = Math.min(fromValue + velocity / 60.0, toValue);\n        } else if (fromValue > toValue && velocity < 0) {\n          nextFramePosition = Math.max(fromValue + velocity / 60.0, toValue);\n        }\n      }\n      this.state.drawerTranslation.setValue(nextFramePosition);\n    }\n\n    const willShow = toValue !== 0;\n    this.updateShowing(willShow);\n    this.emitStateChanged(SETTLING, willShow);\n    if (this.props.hideStatusBar) {\n      StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');\n    }\n    Animated.spring(this.state.drawerTranslation, {\n      velocity,\n      bounciness: 0,\n      toValue,\n      useNativeDriver: this.props.useNativeAnimations!,\n      speed: speed ?? undefined,\n    }).start(({ finished }) => {\n      if (finished) {\n        this.emitStateChanged(IDLE, willShow);\n        if (willShow) {\n          this.props.onDrawerOpen?.();\n        } else {\n          this.props.onDrawerClose?.();\n        }\n      }\n    });\n  };\n\n  openDrawer = (options: DrawerMovementOption = {}) => {\n    this.animateDrawer(\n      // TODO: decide if it should be null or undefined is the proper value\n      undefined,\n      this.props.drawerWidth!,\n      options.velocity ? options.velocity : 0\n    );\n\n    // We need to force the update, otherwise the overlay is not rerendered and it would not be clickable\n    this.forceUpdate();\n  };\n\n  closeDrawer = (options: DrawerMovementOption = {}) => {\n    // TODO: decide if it should be null or undefined is the proper value\n    this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0);\n\n    // We need to force the update, otherwise the overlay is not rerendered and it would be still clickable\n    this.forceUpdate();\n  };\n\n  private renderOverlay = () => {\n    /* Overlay styles */\n    invariant(this.openValue, 'should be set');\n    const overlayOpacity = this.openValue.interpolate({\n      inputRange: [0, 1],\n      outputRange: [0, 1],\n      extrapolate: 'clamp',\n    });\n    const dynamicOverlayStyles = {\n      opacity: overlayOpacity,\n      backgroundColor: this.props.overlayColor,\n    };\n\n    return (\n      <TapGestureHandler onHandlerStateChange={this.onTapHandlerStateChange}>\n        <Animated.View\n          pointerEvents={this.drawerShown ? 'auto' : 'none'}\n          ref={this.pointerEventsView}\n          style={[styles.overlay, dynamicOverlayStyles]}\n        />\n      </TapGestureHandler>\n    );\n  };\n\n  private renderDrawer = () => {\n    const {\n      drawerBackgroundColor,\n      drawerWidth,\n      drawerPosition,\n      drawerType,\n      drawerContainerStyle,\n      contentContainerStyle,\n    } = this.props;\n\n    const fromLeft = drawerPosition === 'left';\n    const drawerSlide = drawerType !== 'back';\n    const containerSlide = drawerType !== 'front';\n\n    // we rely on row and row-reverse flex directions to position the drawer\n    // properly. Apparently for RTL these are flipped which requires us to use\n    // the opposite setting for the drawer to appear from left or right according\n    // to the drawerPosition prop\n    const reverseContentDirection = I18nManager.isRTL ? fromLeft : !fromLeft;\n\n    const dynamicDrawerStyles = {\n      backgroundColor: drawerBackgroundColor,\n      width: drawerWidth,\n    };\n    const openValue = this.openValue;\n    invariant(openValue, 'should be set');\n\n    let containerStyles;\n    if (containerSlide) {\n      const containerTranslateX = openValue.interpolate({\n        inputRange: [0, 1],\n        outputRange: fromLeft ? [0, drawerWidth!] : [0, -drawerWidth!],\n        extrapolate: 'clamp',\n      });\n      containerStyles = {\n        transform: [{ translateX: containerTranslateX }],\n      };\n    }\n\n    let drawerTranslateX: number | Animated.AnimatedInterpolation = 0;\n    if (drawerSlide) {\n      const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!;\n      drawerTranslateX = openValue.interpolate({\n        inputRange: [0, 1],\n        outputRange: [closedDrawerOffset, 0],\n        extrapolate: 'clamp',\n      });\n    }\n    const drawerStyles: {\n      transform: { translateX: number | Animated.AnimatedInterpolation }[];\n      flexDirection: 'row-reverse' | 'row';\n    } = {\n      transform: [{ translateX: drawerTranslateX }],\n      flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n    };\n\n    return (\n      <Animated.View style={styles.main} onLayout={this.handleContainerLayout}>\n        <Animated.View\n          style={[\n            drawerType === 'front'\n              ? styles.containerOnBack\n              : styles.containerInFront,\n            containerStyles,\n            contentContainerStyle,\n          ]}\n          importantForAccessibility={\n            this.drawerShown ? 'no-hide-descendants' : 'yes'\n          }>\n          {typeof this.props.children === 'function'\n            ? this.props.children(this.openValue)\n            : this.props.children}\n          {this.renderOverlay()}\n        </Animated.View>\n        <Animated.View\n          pointerEvents=\"box-none\"\n          ref={this.accessibilityIsModalView}\n          accessibilityViewIsModal={this.drawerShown}\n          style={[styles.drawerContainer, drawerStyles, drawerContainerStyle]}>\n          <View style={dynamicDrawerStyles}>\n            {this.props.renderNavigationView(this.openValue as Animated.Value)}\n          </View>\n        </Animated.View>\n      </Animated.View>\n    );\n  };\n\n  private setPanGestureRef = (ref: PanGestureHandler) => {\n    // TODO(TS): make sure it is OK\n    // taken from https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842\n    (this\n      .panGestureHandler as React.MutableRefObject<PanGestureHandler>).current = ref;\n    this.props.onGestureRef?.(ref);\n  };\n\n  render() {\n    const {\n      drawerPosition,\n      drawerLockMode,\n      edgeWidth,\n      minSwipeDistance,\n    } = this.props;\n\n    const fromLeft = drawerPosition === 'left';\n\n    // gestureOrientation is 1 if the expected gesture is from left to right and -1 otherwise\n    // e.g. when drawer is on the left and is closed we expect left to right gesture, thus\n    // orientation will be 1.\n    const gestureOrientation =\n      (fromLeft ? 1 : -1) * (this.drawerShown ? -1 : 1);\n\n    // When drawer is closed we want the hitSlop to be horizontally shorter\n    // than the container size by the value of SLOP. This will make it only\n    // activate when gesture happens not further than SLOP away from the edge\n    const hitSlop = fromLeft\n      ? { left: 0, width: this.drawerShown ? undefined : edgeWidth }\n      : { right: 0, width: this.drawerShown ? undefined : edgeWidth };\n\n    return (\n      <PanGestureHandler\n        // @ts-ignore could be fixed in handler types\n        ref={this.setPanGestureRef}\n        hitSlop={hitSlop}\n        activeOffsetX={gestureOrientation * minSwipeDistance!}\n        failOffsetY={[-15, 15]}\n        onGestureEvent={this.onGestureEvent}\n        onHandlerStateChange={this.openingHandlerStateChange}\n        enableTrackpadTwoFingerGesture={\n          this.props.enableTrackpadTwoFingerGesture\n        }\n        enabled={\n          drawerLockMode !== 'locked-closed' && drawerLockMode !== 'locked-open'\n        }>\n        {this.renderDrawer()}\n      </PanGestureHandler>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  drawerContainer: {\n    ...StyleSheet.absoluteFillObject,\n    zIndex: 1001,\n    flexDirection: 'row',\n  },\n  containerInFront: {\n    ...StyleSheet.absoluteFillObject,\n    zIndex: 1002,\n  },\n  containerOnBack: {\n    ...StyleSheet.absoluteFillObject,\n  },\n  main: {\n    flex: 1,\n    zIndex: 0,\n    overflow: 'hidden',\n  },\n  overlay: {\n    ...StyleSheet.absoluteFillObject,\n    zIndex: 1000,\n  },\n});\n","import * as React from 'react';\n\nexport default React.createContext<React.Ref<\n  import('react-native-gesture-handler').PanGestureHandler\n> | null>(null);\n","import * as React from 'react';\nimport {\n  Animated,\n  StyleSheet,\n  LayoutChangeEvent,\n  Dimensions,\n  Platform,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\nimport type {\n  ParamListBase,\n  Route,\n  StackNavigationState,\n} from '@react-navigation/native';\nimport { screensEnabled } from 'react-native-screens';\n\nimport {\n  MaybeScreenContainer,\n  MaybeScreen,\n  shouldUseActivityState,\n} from '../Screens';\nimport { getDefaultHeaderHeight } from '../Header/HeaderSegment';\nimport type { Props as HeaderContainerProps } from '../Header/HeaderContainer';\nimport CardContainer from './CardContainer';\nimport {\n  DefaultTransition,\n  ModalTransition,\n} from '../../TransitionConfigs/TransitionPresets';\nimport { forNoAnimation as forNoAnimationHeader } from '../../TransitionConfigs/HeaderStyleInterpolators';\nimport { forNoAnimation as forNoAnimationCard } from '../../TransitionConfigs/CardStyleInterpolators';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport type {\n  Layout,\n  StackHeaderMode,\n  StackCardMode,\n  Scene,\n  StackDescriptorMap,\n  StackNavigationOptions,\n  StackDescriptor,\n} from '../../types';\n\ntype GestureValues = {\n  [key: string]: Animated.Value;\n};\n\ntype Props = {\n  mode: StackCardMode;\n  insets: EdgeInsets;\n  state: StackNavigationState<ParamListBase>;\n  descriptors: StackDescriptorMap;\n  routes: Route<string>[];\n  openingRouteKeys: string[];\n  closingRouteKeys: string[];\n  onOpenRoute: (props: { route: Route<string> }) => void;\n  onCloseRoute: (props: { route: Route<string> }) => void;\n  getPreviousRoute: (props: {\n    route: Route<string>;\n  }) => Route<string> | undefined;\n  getGesturesEnabled: (props: { route: Route<string> }) => boolean;\n  renderHeader: (props: HeaderContainerProps) => React.ReactNode;\n  renderScene: (props: { route: Route<string> }) => React.ReactNode;\n  headerMode: StackHeaderMode;\n  isParentHeaderShown: boolean;\n  onTransitionStart: (\n    props: { route: Route<string> },\n    closing: boolean\n  ) => void;\n  onTransitionEnd: (props: { route: Route<string> }, closing: boolean) => void;\n  onPageChangeStart?: () => void;\n  onPageChangeConfirm?: (force: boolean) => void;\n  onPageChangeCancel?: () => void;\n  onGestureStart?: (props: { route: Route<string> }) => void;\n  onGestureEnd?: (props: { route: Route<string> }) => void;\n  onGestureCancel?: (props: { route: Route<string> }) => void;\n  detachInactiveScreens?: boolean;\n};\n\ntype State = {\n  routes: Route<string>[];\n  descriptors: StackDescriptorMap;\n  scenes: Scene<Route<string>>[];\n  gestures: GestureValues;\n  layout: Layout;\n  headerHeights: Record<string, number>;\n};\n\nconst EPSILON = 0.01;\n\nconst STATE_INACTIVE = 0;\nconst STATE_TRANSITIONING_OR_BELOW_TOP = 1;\nconst STATE_ON_TOP = 2;\n\nconst FALLBACK_DESCRIPTOR = Object.freeze({ options: {} });\n\nconst getHeaderHeights = (\n  routes: Route<string>[],\n  insets: EdgeInsets,\n  isParentHeaderShown: boolean,\n  descriptors: StackDescriptorMap,\n  layout: Layout,\n  previous: Record<string, number>\n) => {\n  return routes.reduce<Record<string, number>>((acc, curr) => {\n    const { options = {} } = descriptors[curr.key] || {};\n    const style: any = StyleSheet.flatten(options.headerStyle || {});\n\n    const height =\n      typeof style.height === 'number' ? style.height : previous[curr.key];\n\n    const safeAreaInsets = {\n      ...insets,\n      ...options.safeAreaInsets,\n    };\n\n    const {\n      headerStatusBarHeight = isParentHeaderShown ? 0 : safeAreaInsets.top,\n    } = options;\n\n    acc[curr.key] =\n      typeof height === 'number'\n        ? height\n        : getDefaultHeaderHeight(layout, headerStatusBarHeight);\n\n    return acc;\n  }, {});\n};\n\nconst getDistanceFromOptions = (\n  mode: StackCardMode,\n  layout: Layout,\n  descriptor?: StackDescriptor\n) => {\n  const {\n    gestureDirection = mode === 'modal'\n      ? ModalTransition.gestureDirection\n      : DefaultTransition.gestureDirection,\n  } = descriptor?.options || {};\n\n  return getDistanceForDirection(layout, gestureDirection);\n};\n\nconst getProgressFromGesture = (\n  mode: StackCardMode,\n  gesture: Animated.Value,\n  layout: Layout,\n  descriptor?: StackDescriptor\n) => {\n  const distance = getDistanceFromOptions(\n    mode,\n    {\n      // Make sure that we have a non-zero distance, otherwise there will be incorrect progress\n      // This causes blank screen on web if it was previously inside container with display: none\n      width: Math.max(1, layout.width),\n      height: Math.max(1, layout.height),\n    },\n    descriptor\n  );\n\n  if (distance > 0) {\n    return gesture.interpolate({\n      inputRange: [0, distance],\n      outputRange: [1, 0],\n    });\n  }\n\n  return gesture.interpolate({\n    inputRange: [distance, 0],\n    outputRange: [0, 1],\n  });\n};\n\nexport default class CardStack extends React.Component<Props, State> {\n  static getDerivedStateFromProps(props: Props, state: State) {\n    if (\n      props.routes === state.routes &&\n      props.descriptors === state.descriptors\n    ) {\n      return null;\n    }\n\n    const gestures = props.routes.reduce<GestureValues>((acc, curr) => {\n      const descriptor = props.descriptors[curr.key];\n      const { animationEnabled } = descriptor?.options || {};\n\n      acc[curr.key] =\n        state.gestures[curr.key] ||\n        new Animated.Value(\n          props.openingRouteKeys.includes(curr.key) &&\n          animationEnabled !== false\n            ? getDistanceFromOptions(props.mode, state.layout, descriptor)\n            : 0\n        );\n\n      return acc;\n    }, {});\n\n    return {\n      routes: props.routes,\n      scenes: props.routes.map((route, index, self) => {\n        const previousRoute = self[index - 1];\n        const nextRoute = self[index + 1];\n\n        const oldScene = state.scenes[index];\n\n        const currentGesture = gestures[route.key];\n        const previousGesture = previousRoute\n          ? gestures[previousRoute.key]\n          : undefined;\n        const nextGesture = nextRoute ? gestures[nextRoute.key] : undefined;\n\n        const descriptor =\n          props.descriptors[route.key] ||\n          state.descriptors[route.key] ||\n          (oldScene ? oldScene.descriptor : FALLBACK_DESCRIPTOR);\n\n        const nextDescriptor =\n          props.descriptors[nextRoute?.key] ||\n          state.descriptors[nextRoute?.key];\n\n        const previousDescriptor =\n          props.descriptors[previousRoute?.key] ||\n          state.descriptors[previousRoute?.key];\n\n        const scene = {\n          route,\n          descriptor,\n          progress: {\n            current: getProgressFromGesture(\n              props.mode,\n              currentGesture,\n              state.layout,\n              descriptor\n            ),\n            next: nextGesture\n              ? getProgressFromGesture(\n                  props.mode,\n                  nextGesture,\n                  state.layout,\n                  nextDescriptor\n                )\n              : undefined,\n            previous: previousGesture\n              ? getProgressFromGesture(\n                  props.mode,\n                  previousGesture,\n                  state.layout,\n                  previousDescriptor\n                )\n              : undefined,\n          },\n          __memo: [\n            route,\n            state.layout,\n            descriptor,\n            nextDescriptor,\n            previousDescriptor,\n            currentGesture,\n            nextGesture,\n            previousGesture,\n          ],\n        };\n\n        if (\n          oldScene &&\n          scene.__memo.every((it, i) => {\n            // @ts-expect-error: we haven't added __memo to the annotation to prevent usage elsewhere\n            return oldScene.__memo[i] === it;\n          })\n        ) {\n          return oldScene;\n        }\n\n        return scene;\n      }),\n      gestures,\n      descriptors: props.descriptors,\n      headerHeights: getHeaderHeights(\n        props.routes,\n        props.insets,\n        props.isParentHeaderShown,\n        state.descriptors,\n        state.layout,\n        state.headerHeights\n      ),\n    };\n  }\n\n  constructor(props: Props) {\n    super(props);\n\n    const { height = 0, width = 0 } = Dimensions.get('window');\n\n    this.state = {\n      routes: [],\n      scenes: [],\n      gestures: {},\n      layout: { height, width },\n      descriptors: this.props.descriptors,\n      // Used when card's header is null and mode is float to make transition\n      // between screens with headers and those without headers smooth.\n      // This is not a great heuristic here. We don't know synchronously\n      // on mount what the header height is so we have just used the most\n      // common cases here.\n      headerHeights: {},\n    };\n  }\n\n  private handleLayout = (e: LayoutChangeEvent) => {\n    const { height, width } = e.nativeEvent.layout;\n\n    const layout = { width, height };\n\n    this.setState((state, props) => {\n      if (height === state.layout.height && width === state.layout.width) {\n        return null;\n      }\n\n      return {\n        layout,\n        headerHeights: getHeaderHeights(\n          props.routes,\n          props.insets,\n          props.isParentHeaderShown,\n          state.descriptors,\n          layout,\n          state.headerHeights\n        ),\n      };\n    });\n  };\n\n  private handleHeaderLayout = ({\n    route,\n    height,\n  }: {\n    route: Route<string>;\n    height: number;\n  }) => {\n    this.setState(({ headerHeights }) => {\n      const previousHeight = headerHeights[route.key];\n\n      if (previousHeight === height) {\n        return null;\n      }\n\n      return {\n        headerHeights: {\n          ...headerHeights,\n          [route.key]: height,\n        },\n      };\n    });\n  };\n\n  private getFocusedRoute = () => {\n    const { state } = this.props;\n\n    return state.routes[state.index];\n  };\n\n  private getPreviousScene = ({ route }: { route: Route<string> }) => {\n    const { getPreviousRoute } = this.props;\n    const { scenes } = this.state;\n\n    const previousRoute = getPreviousRoute({ route });\n\n    if (previousRoute) {\n      const previousScene = scenes.find(\n        (scene) => scene.route.key === previousRoute.key\n      );\n\n      return previousScene;\n    }\n\n    return undefined;\n  };\n\n  render() {\n    const {\n      mode,\n      insets,\n      descriptors,\n      state,\n      routes,\n      closingRouteKeys,\n      onOpenRoute,\n      onCloseRoute,\n      getGesturesEnabled,\n      renderHeader,\n      renderScene,\n      headerMode,\n      isParentHeaderShown,\n      onTransitionStart,\n      onTransitionEnd,\n      onPageChangeStart,\n      onPageChangeConfirm,\n      onPageChangeCancel,\n      onGestureStart,\n      onGestureEnd,\n      onGestureCancel,\n      // Enable on new versions of `react-native-screens`\n      // On older versions of `react-native-screens`, there's an issue with screens not being responsive to user interaction.\n      detachInactiveScreens = Platform.OS === 'web' || shouldUseActivityState,\n    } = this.props;\n\n    const { scenes, layout, gestures, headerHeights } = this.state;\n\n    const focusedRoute = state.routes[state.index];\n    const focusedDescriptor = descriptors[focusedRoute.key];\n    const focusedOptions = focusedDescriptor ? focusedDescriptor.options : {};\n    const focusedHeaderHeight = headerHeights[focusedRoute.key];\n\n    let defaultTransitionPreset =\n      mode === 'modal' ? ModalTransition : DefaultTransition;\n\n    if (headerMode === 'screen') {\n      defaultTransitionPreset = {\n        ...defaultTransitionPreset,\n        headerStyleInterpolator: forNoAnimationHeader,\n      };\n    }\n\n    const {\n      top = insets.top,\n      right = insets.right,\n      bottom = insets.bottom,\n      left = insets.left,\n    } = focusedOptions.safeAreaInsets || {};\n\n    let activeScreensLimit = 1;\n\n    for (let i = scenes.length - 1; i >= 0; i--) {\n      const {\n        // By default, we don't want to detach the previous screen of the active one for modals\n        detachPreviousScreen = mode === 'modal'\n          ? i !== scenes.length - 1\n          : true,\n      } = scenes[i].descriptor.options;\n\n      if (detachPreviousScreen === false) {\n        activeScreensLimit++;\n      } else {\n        break;\n      }\n    }\n\n    const isFloatHeaderAbsolute =\n      headerMode === 'float'\n        ? this.state.scenes.slice(-2).some((scene) => {\n            const { descriptor } = scene;\n            const options = descriptor ? descriptor.options : {};\n            const { headerTransparent, headerShown = true } = options;\n\n            if (headerTransparent || headerShown === false) {\n              return true;\n            }\n\n            return false;\n          })\n        : false;\n\n    const floatingHeader =\n      headerMode === 'float' ? (\n        <React.Fragment key=\"header\">\n          {renderHeader({\n            mode: 'float',\n            layout,\n            insets: { top, right, bottom, left },\n            scenes,\n            getPreviousScene: this.getPreviousScene,\n            getFocusedRoute: this.getFocusedRoute,\n            onContentHeightChange: this.handleHeaderLayout,\n            gestureDirection:\n              focusedOptions.gestureDirection !== undefined\n                ? focusedOptions.gestureDirection\n                : defaultTransitionPreset.gestureDirection,\n            styleInterpolator:\n              focusedOptions.headerStyleInterpolator !== undefined\n                ? focusedOptions.headerStyleInterpolator\n                : defaultTransitionPreset.headerStyleInterpolator,\n            style: [\n              styles.floating,\n              isFloatHeaderAbsolute && [\n                // Without this, the header buttons won't be touchable on Android when headerTransparent: true\n                { height: focusedHeaderHeight },\n                styles.absolute,\n              ],\n            ],\n          })}\n        </React.Fragment>\n      ) : null;\n\n    const isScreensEnabled = screensEnabled?.() && detachInactiveScreens;\n\n    return (\n      <React.Fragment>\n        {isFloatHeaderAbsolute ? null : floatingHeader}\n        <MaybeScreenContainer\n          enabled={isScreensEnabled}\n          style={styles.container}\n          onLayout={this.handleLayout}\n        >\n          {routes.map((route, index, self) => {\n            const focused = focusedRoute.key === route.key;\n            const gesture = gestures[route.key];\n            const scene = scenes[index];\n\n            // For the screens that shouldn't be active, the value is 0\n            // For those that should be active, but are not the top screen, the value is 1\n            // For those on top of the stack and with interaction enabled, the value is 2\n            // For the old implementation, it stays the same it was\n            let isScreenActive: Animated.AnimatedInterpolation | 2 | 1 | 0 = 1;\n\n            if (shouldUseActivityState || Platform.OS === 'web') {\n              if (index < self.length - activeScreensLimit - 1) {\n                // screen should be inactive because it is too deep in the stack\n                isScreenActive = STATE_INACTIVE;\n              } else {\n                const sceneForActivity = scenes[self.length - 1];\n                const outputValue =\n                  index === self.length - 1\n                    ? STATE_ON_TOP // the screen is on top after the transition\n                    : index >= self.length - activeScreensLimit\n                    ? STATE_TRANSITIONING_OR_BELOW_TOP // the screen should stay active after the transition, it is not on top but is in activeLimit\n                    : STATE_INACTIVE; // the screen should be active only during the transition, it is at the edge of activeLimit\n                isScreenActive = sceneForActivity\n                  ? sceneForActivity.progress.current.interpolate({\n                      inputRange: [0, 1 - EPSILON, 1],\n                      outputRange: [1, 1, outputValue],\n                      extrapolate: 'clamp',\n                    })\n                  : STATE_TRANSITIONING_OR_BELOW_TOP;\n              }\n            } else {\n              isScreenActive = scene.progress.next\n                ? scene.progress.next.interpolate({\n                    inputRange: [0, 1 - EPSILON, 1],\n                    outputRange: [1, 1, 0],\n                    extrapolate: 'clamp',\n                  })\n                : 1;\n            }\n\n            const {\n              safeAreaInsets,\n              headerShown = true,\n              headerTransparent,\n              cardShadowEnabled,\n              cardOverlayEnabled,\n              cardOverlay,\n              cardStyle,\n              animationEnabled,\n              gestureResponseDistance,\n              gestureVelocityImpact,\n              gestureDirection = defaultTransitionPreset.gestureDirection,\n              transitionSpec = defaultTransitionPreset.transitionSpec,\n              cardStyleInterpolator = animationEnabled === false\n                ? forNoAnimationCard\n                : defaultTransitionPreset.cardStyleInterpolator,\n              headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,\n            } = scene.descriptor\n              ? scene.descriptor.options\n              : ({} as StackNavigationOptions);\n\n            let transitionConfig = {\n              gestureDirection,\n              transitionSpec,\n              cardStyleInterpolator,\n              headerStyleInterpolator,\n            };\n\n            // When a screen is not the last, it should use next screen's transition config\n            // Many transitions also animate the previous screen, so using 2 different transitions doesn't look right\n            // For example combining a slide and a modal transition would look wrong otherwise\n            // With this approach, combining different transition styles in the same navigator mostly looks right\n            // This will still be broken when 2 transitions have different idle state (e.g. modal presentation),\n            // but majority of the transitions look alright\n            if (index !== self.length - 1) {\n              const nextScene = scenes[index + 1];\n\n              if (nextScene) {\n                const {\n                  animationEnabled,\n                  gestureDirection = defaultTransitionPreset.gestureDirection,\n                  transitionSpec = defaultTransitionPreset.transitionSpec,\n                  cardStyleInterpolator = animationEnabled === false\n                    ? forNoAnimationCard\n                    : defaultTransitionPreset.cardStyleInterpolator,\n                  headerStyleInterpolator = defaultTransitionPreset.headerStyleInterpolator,\n                } = nextScene.descriptor\n                  ? nextScene.descriptor.options\n                  : ({} as StackNavigationOptions);\n\n                transitionConfig = {\n                  gestureDirection,\n                  transitionSpec,\n                  cardStyleInterpolator,\n                  headerStyleInterpolator,\n                };\n              }\n            }\n\n            const {\n              top: safeAreaInsetTop = insets.top,\n              right: safeAreaInsetRight = insets.right,\n              bottom: safeAreaInsetBottom = insets.bottom,\n              left: safeAreaInsetLeft = insets.left,\n            } = safeAreaInsets || {};\n\n            const headerHeight =\n              headerMode !== 'none' && headerShown !== false\n                ? headerHeights[route.key]\n                : 0;\n\n            return (\n              <MaybeScreen\n                key={route.key}\n                style={StyleSheet.absoluteFill}\n                enabled={isScreensEnabled}\n                active={isScreenActive}\n                pointerEvents=\"box-none\"\n              >\n                <CardContainer\n                  index={index}\n                  active={index === self.length - 1}\n                  focused={focused}\n                  closing={closingRouteKeys.includes(route.key)}\n                  layout={layout}\n                  gesture={gesture}\n                  scene={scene}\n                  safeAreaInsetTop={safeAreaInsetTop}\n                  safeAreaInsetRight={safeAreaInsetRight}\n                  safeAreaInsetBottom={safeAreaInsetBottom}\n                  safeAreaInsetLeft={safeAreaInsetLeft}\n                  cardOverlay={cardOverlay}\n                  cardOverlayEnabled={cardOverlayEnabled}\n                  cardShadowEnabled={cardShadowEnabled}\n                  cardStyle={cardStyle}\n                  onPageChangeStart={onPageChangeStart}\n                  onPageChangeConfirm={onPageChangeConfirm}\n                  onPageChangeCancel={onPageChangeCancel}\n                  onGestureStart={onGestureStart}\n                  onGestureCancel={onGestureCancel}\n                  onGestureEnd={onGestureEnd}\n                  gestureResponseDistance={gestureResponseDistance}\n                  headerHeight={headerHeight}\n                  isParentHeaderShown={isParentHeaderShown}\n                  onHeaderHeightChange={this.handleHeaderLayout}\n                  getPreviousScene={this.getPreviousScene}\n                  getFocusedRoute={this.getFocusedRoute}\n                  mode={mode}\n                  headerMode={headerMode}\n                  headerShown={headerShown}\n                  hasAbsoluteHeader={\n                    isFloatHeaderAbsolute && !headerTransparent\n                  }\n                  renderHeader={renderHeader}\n                  renderScene={renderScene}\n                  onOpenRoute={onOpenRoute}\n                  onCloseRoute={onCloseRoute}\n                  onTransitionStart={onTransitionStart}\n                  onTransitionEnd={onTransitionEnd}\n                  gestureEnabled={index !== 0 && getGesturesEnabled({ route })}\n                  gestureVelocityImpact={gestureVelocityImpact}\n                  {...transitionConfig}\n                />\n              </MaybeScreen>\n            );\n          })}\n        </MaybeScreenContainer>\n        {isFloatHeaderAbsolute ? floatingHeader : null}\n      </React.Fragment>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n  },\n  absolute: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    right: 0,\n  },\n  floating: {\n    zIndex: 1,\n  },\n});\n","import React from 'react';\nimport {\n  Animated,\n  Image,\n  ImageProps,\n  requireNativeComponent,\n  StyleSheet,\n  UIManager,\n  View,\n  ViewProps,\n} from 'react-native';\n\nimport {\n  StackPresentationTypes,\n  StackAnimationTypes,\n  BlurEffectTypes,\n  ScreenReplaceTypes,\n  ScreenOrientationTypes,\n  HeaderSubviewTypes,\n  ScreenProps,\n  ScreenContainerProps,\n  ScreenStackProps,\n  ScreenStackHeaderConfigProps,\n} from './types';\n\nlet ENABLE_SCREENS = false;\n\nfunction enableScreens(shouldEnableScreens = true): void {\n  ENABLE_SCREENS = shouldEnableScreens;\n  if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {\n    console.error(\n      `Screen native module hasn't been linked. Please check the react-native-screens README for more details`\n    );\n  }\n}\n\n// const that tells if the library should use new implementation, will be undefined for older versions\nconst shouldUseActivityState = true;\n\nfunction screensEnabled(): boolean {\n  return ENABLE_SCREENS;\n}\n\n// We initialize these lazily so that importing the module doesn't throw error when not linked\n// This is necessary coz libraries such as React Navigation import the library where it may not be enabled\nlet NativeScreenValue: React.ComponentType<ScreenProps>;\nlet NativeScreenContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenStack: React.ComponentType<ScreenStackProps>;\nlet NativeScreenStackHeaderConfig: React.ComponentType<ScreenStackHeaderConfigProps>;\nlet NativeScreenStackHeaderSubview: React.ComponentType<React.PropsWithChildren<\n  ViewProps & { type?: HeaderSubviewTypes }\n>>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\n\nconst ScreensNativeModules = {\n  get NativeScreen() {\n    NativeScreenValue =\n      NativeScreenValue || requireNativeComponent('RNSScreen');\n    return NativeScreenValue;\n  },\n\n  get NativeScreenContainer() {\n    NativeScreenContainerValue =\n      NativeScreenContainerValue ||\n      requireNativeComponent('RNSScreenContainer');\n    return NativeScreenContainerValue;\n  },\n\n  get NativeScreenStack() {\n    NativeScreenStack =\n      NativeScreenStack || requireNativeComponent('RNSScreenStack');\n    return NativeScreenStack;\n  },\n\n  get NativeScreenStackHeaderConfig() {\n    NativeScreenStackHeaderConfig =\n      NativeScreenStackHeaderConfig ||\n      requireNativeComponent('RNSScreenStackHeaderConfig');\n    return NativeScreenStackHeaderConfig;\n  },\n\n  get NativeScreenStackHeaderSubview() {\n    NativeScreenStackHeaderSubview =\n      NativeScreenStackHeaderSubview ||\n      requireNativeComponent('RNSScreenStackHeaderSubview');\n    return NativeScreenStackHeaderSubview;\n  },\n};\n\nclass Screen extends React.Component<ScreenProps> {\n  private ref: React.ElementRef<typeof View> | null = null;\n\n  setNativeProps(props: ScreenProps): void {\n    this.ref?.setNativeProps(props);\n  }\n\n  setRef = (ref: React.ElementRef<typeof View> | null): void => {\n    this.ref = ref;\n    this.props.onComponentRef?.(ref);\n  };\n\n  render() {\n    const { enabled = true } = this.props;\n\n    if (!ENABLE_SCREENS || !enabled) {\n      // Filter out active prop in this case because it is unused and\n      // can cause problems depending on react-native version:\n      // https://github.com/react-navigation/react-navigation/issues/4886\n      // same for enabled prop\n\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      const { active, enabled, onComponentRef, ...rest } = this.props;\n\n      return <Animated.View {...rest} ref={this.setRef} />;\n    } else {\n      AnimatedNativeScreen =\n        AnimatedNativeScreen ||\n        Animated.createAnimatedComponent(ScreensNativeModules.NativeScreen);\n\n      // same reason as above\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      let { enabled, active, activityState, ...rest } = this.props;\n      if (active !== undefined && activityState === undefined) {\n        console.warn(\n          'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'\n        );\n        activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition\n      }\n      return (\n        <AnimatedNativeScreen\n          {...rest}\n          activityState={activityState}\n          ref={this.setRef}\n        />\n      );\n    }\n  }\n}\n\nclass ScreenContainer extends React.Component<ScreenContainerProps> {\n  render() {\n    const { enabled = true, ...rest } = this.props;\n\n    if (!ENABLE_SCREENS || !enabled) {\n      return <View {...rest} />;\n    } else {\n      return <ScreensNativeModules.NativeScreenContainer {...this.props} />;\n    }\n  }\n}\n\nconst styles = StyleSheet.create({\n  headerSubview: {\n    position: 'absolute',\n    top: 0,\n    right: 0,\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n});\n\nconst ScreenStackHeaderBackButtonImage = (props: ImageProps): JSX.Element => (\n  <ScreensNativeModules.NativeScreenStackHeaderSubview\n    type=\"back\"\n    style={styles.headerSubview}>\n    <Image resizeMode=\"center\" fadeDuration={0} {...props} />\n  </ScreensNativeModules.NativeScreenStackHeaderSubview>\n);\n\nconst ScreenStackHeaderRightView = (\n  props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n  <ScreensNativeModules.NativeScreenStackHeaderSubview\n    {...props}\n    type=\"right\"\n    style={styles.headerSubview}\n  />\n);\n\nconst ScreenStackHeaderLeftView = (\n  props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n  <ScreensNativeModules.NativeScreenStackHeaderSubview\n    {...props}\n    type=\"left\"\n    style={styles.headerSubview}\n  />\n);\n\nconst ScreenStackHeaderCenterView = (\n  props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n  <ScreensNativeModules.NativeScreenStackHeaderSubview\n    {...props}\n    type=\"center\"\n    style={styles.headerSubview}\n  />\n);\n\nexport type {\n  StackPresentationTypes,\n  StackAnimationTypes,\n  BlurEffectTypes,\n  ScreenReplaceTypes,\n  ScreenOrientationTypes,\n  HeaderSubviewTypes,\n  ScreenProps,\n  ScreenContainerProps,\n  ScreenStackProps,\n  ScreenStackHeaderConfigProps,\n};\n\nmodule.exports = {\n  // these are classes so they are not evaluated until used\n  // so no need to use getters for them\n  Screen,\n  ScreenContainer,\n\n  get NativeScreen() {\n    return ScreensNativeModules.NativeScreen;\n  },\n\n  get NativeScreenContainer() {\n    return ScreensNativeModules.NativeScreenContainer;\n  },\n\n  get ScreenStack() {\n    return ScreensNativeModules.NativeScreenStack;\n  },\n  get ScreenStackHeaderConfig() {\n    return ScreensNativeModules.NativeScreenStackHeaderConfig;\n  },\n  get ScreenStackHeaderSubview() {\n    return ScreensNativeModules.NativeScreenStackHeaderSubview;\n  },\n\n  // these are functions and will not be evaluated until used\n  // so no need to use getters for them\n  ScreenStackHeaderBackButtonImage,\n  ScreenStackHeaderRightView,\n  ScreenStackHeaderLeftView,\n  ScreenStackHeaderCenterView,\n\n  enableScreens,\n  screensEnabled,\n  shouldUseActivityState,\n};\n","import * as React from 'react';\nimport { Animated, View, Platform, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n  Screens = require('react-native-screens');\n} catch (e) {\n  // Ignore\n}\n\n// The web implementation in react-native-screens seems buggy.\n// The view doesn't become visible after coming back in some cases.\n// So we use our custom implementation.\nclass WebScreen extends React.Component<\n  ViewProps & {\n    active: number;\n    children: React.ReactNode;\n  }\n> {\n  render() {\n    const { active, style, ...rest } = this.props;\n\n    return (\n      <View\n        // @ts-expect-error: hidden exists on web, but not in React Native\n        hidden={!active}\n        style={[style, { display: active ? 'flex' : 'none' }]}\n        {...rest}\n      />\n    );\n  }\n}\n\nconst AnimatedWebScreen = Animated.createAnimatedComponent(WebScreen);\n\n// @ts-ignore\nexport const shouldUseActivityState = Screens?.shouldUseActivityState;\n\nexport const MaybeScreenContainer = ({\n  enabled,\n  ...rest\n}: ViewProps & {\n  enabled: boolean;\n  children: React.ReactNode;\n}) => {\n  if (enabled && Platform.OS !== 'web' && Screens?.screensEnabled()) {\n    return (\n      // @ts-ignore\n      <Screens.ScreenContainer enabled={enabled} {...rest} />\n    );\n  }\n\n  return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n  enabled,\n  active,\n  ...rest\n}: ViewProps & {\n  enabled: boolean;\n  active: 0 | 1 | 2 | Animated.AnimatedInterpolation;\n  children: React.ReactNode;\n}) => {\n  if (enabled && Platform.OS === 'web') {\n    return <AnimatedWebScreen active={active} {...rest} />;\n  }\n\n  if (enabled && Screens?.screensEnabled()) {\n    if (shouldUseActivityState) {\n      return (\n        // @ts-expect-error: there was an `active` prop and no `activityState` in older version and stackPresentation was required\n        <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n      );\n    } else {\n      return (\n        // @ts-expect-error: there was an `active` prop and no `activityState` in older version and stackPresentation was required\n        <Screens.Screen enabled={enabled} active={active} {...rest} />\n      );\n    }\n  }\n\n  return <View {...rest} />;\n};\n","import * as React from 'react';\nimport {\n  Animated,\n  View,\n  StyleSheet,\n  LayoutChangeEvent,\n  Platform,\n  ViewStyle,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\nimport type { Route } from '@react-navigation/native';\nimport HeaderBackButton from './HeaderBackButton';\nimport HeaderBackground from './HeaderBackground';\nimport HeaderShownContext from '../../utils/HeaderShownContext';\nimport memoize from '../../utils/memoize';\nimport type {\n  Layout,\n  StackHeaderStyleInterpolator,\n  StackHeaderLeftButtonProps,\n  StackHeaderTitleProps,\n  StackHeaderOptions,\n  Scene,\n} from '../../types';\n\ntype Props = StackHeaderOptions & {\n  headerTitle: (props: StackHeaderTitleProps) => React.ReactNode;\n  layout: Layout;\n  insets: EdgeInsets;\n  onGoBack?: () => void;\n  title?: string;\n  leftLabel?: string;\n  scene: Scene<Route<string>>;\n  styleInterpolator: StackHeaderStyleInterpolator;\n};\n\nconst warnIfHeaderStylesDefined = (styles: Record<string, any>) => {\n  Object.keys(styles).forEach((styleProp) => {\n    const value = styles[styleProp];\n\n    if (styleProp === 'position' && value === 'absolute') {\n      console.warn(\n        \"position: 'absolute' is not supported on headerStyle. If you would like to render content under the header, use the 'headerTransparent' navigationOption.\"\n      );\n    } else if (value !== undefined) {\n      console.warn(\n        `${styleProp} was given a value of ${value}, this has no effect on headerStyle.`\n      );\n    }\n  });\n};\n\nexport const getDefaultHeaderHeight = (\n  layout: Layout,\n  statusBarHeight: number\n): number => {\n  const isLandscape = layout.width > layout.height;\n\n  let headerHeight;\n\n  if (Platform.OS === 'ios') {\n    if (isLandscape && !Platform.isPad) {\n      headerHeight = 32;\n    } else {\n      headerHeight = 44;\n    }\n  } else if (Platform.OS === 'android') {\n    headerHeight = 56;\n  } else {\n    headerHeight = 64;\n  }\n\n  return headerHeight + statusBarHeight;\n};\n\nexport default function HeaderSegment(props: Props) {\n  const [leftLabelLayout, setLeftLabelLayout] = React.useState<\n    Layout | undefined\n  >(undefined);\n\n  const [titleLayout, setTitleLayout] = React.useState<Layout | undefined>(\n    undefined\n  );\n\n  const isParentHeaderShown = React.useContext(HeaderShownContext);\n\n  const handleTitleLayout = (e: LayoutChangeEvent) => {\n    const { height, width } = e.nativeEvent.layout;\n\n    setTitleLayout((titleLayout) => {\n      if (\n        titleLayout &&\n        height === titleLayout.height &&\n        width === titleLayout.width\n      ) {\n        return titleLayout;\n      }\n\n      return { height, width };\n    });\n  };\n\n  const handleLeftLabelLayout = (e: LayoutChangeEvent) => {\n    const { height, width } = e.nativeEvent.layout;\n\n    if (\n      leftLabelLayout &&\n      height === leftLabelLayout.height &&\n      width === leftLabelLayout.width\n    ) {\n      return;\n    }\n\n    setLeftLabelLayout({ height, width });\n  };\n\n  const getInterpolatedStyle = memoize(\n    (\n      styleInterpolator: StackHeaderStyleInterpolator,\n      layout: Layout,\n      current: Animated.AnimatedInterpolation,\n      next: Animated.AnimatedInterpolation | undefined,\n      titleLayout: Layout | undefined,\n      leftLabelLayout: Layout | undefined,\n      headerHeight: number\n    ) =>\n      styleInterpolator({\n        current: { progress: current },\n        next: next && { progress: next },\n        layouts: {\n          header: {\n            height: headerHeight,\n            width: layout.width,\n          },\n          screen: layout,\n          title: titleLayout,\n          leftLabel: leftLabelLayout,\n        },\n      })\n  );\n\n  const {\n    scene,\n    layout,\n    insets,\n    title: currentTitle,\n    leftLabel: previousTitle,\n    onGoBack,\n    headerTitle,\n    headerTitleAlign = Platform.select({\n      ios: 'center',\n      default: 'left',\n    }),\n    headerLeft: left = onGoBack\n      ? (props: StackHeaderLeftButtonProps) => <HeaderBackButton {...props} />\n      : undefined,\n    headerTransparent,\n    headerTintColor,\n    headerBackground,\n    headerRight: right,\n    headerBackImage: backImage,\n    headerBackTitle: leftLabel,\n    headerBackTitleVisible,\n    headerTruncatedBackTitle: truncatedLabel,\n    headerPressColorAndroid: pressColorAndroid,\n    headerBackAccessibilityLabel: backAccessibilityLabel,\n    headerBackAllowFontScaling: backAllowFontScaling,\n    headerTitleAllowFontScaling: titleAllowFontScaling,\n    headerTitleStyle: customTitleStyle,\n    headerBackTitleStyle: customLeftLabelStyle,\n    headerLeftContainerStyle: leftContainerStyle,\n    headerRightContainerStyle: rightContainerStyle,\n    headerTitleContainerStyle: titleContainerStyle,\n    headerStyle: customHeaderStyle,\n    headerStatusBarHeight = isParentHeaderShown ? 0 : insets.top,\n    styleInterpolator,\n  } = props;\n\n  const defaultHeight = getDefaultHeaderHeight(layout, headerStatusBarHeight);\n\n  const {\n    height = defaultHeight,\n    minHeight,\n    maxHeight,\n    backgroundColor,\n    borderBottomColor,\n    borderBottomEndRadius,\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderBottomStartRadius,\n    borderBottomWidth,\n    borderColor,\n    borderEndColor,\n    borderEndWidth,\n    borderLeftColor,\n    borderLeftWidth,\n    borderRadius,\n    borderRightColor,\n    borderRightWidth,\n    borderStartColor,\n    borderStartWidth,\n    borderStyle,\n    borderTopColor,\n    borderTopEndRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius,\n    borderTopStartRadius,\n    borderTopWidth,\n    borderWidth,\n    // @ts-expect-error: web support for shadow\n    boxShadow,\n    elevation,\n    shadowColor,\n    shadowOffset,\n    shadowOpacity,\n    shadowRadius,\n    opacity,\n    transform,\n    ...unsafeStyles\n  } = StyleSheet.flatten(customHeaderStyle || {}) as ViewStyle;\n\n  if (process.env.NODE_ENV !== 'production') {\n    warnIfHeaderStylesDefined(unsafeStyles);\n  }\n\n  const safeStyles: ViewStyle = {\n    backgroundColor,\n    borderBottomColor,\n    borderBottomEndRadius,\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderBottomStartRadius,\n    borderBottomWidth,\n    borderColor,\n    borderEndColor,\n    borderEndWidth,\n    borderLeftColor,\n    borderLeftWidth,\n    borderRadius,\n    borderRightColor,\n    borderRightWidth,\n    borderStartColor,\n    borderStartWidth,\n    borderStyle,\n    borderTopColor,\n    borderTopEndRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius,\n    borderTopStartRadius,\n    borderTopWidth,\n    borderWidth,\n    // @ts-expect-error: boxShadow is only for Web\n    boxShadow,\n    elevation,\n    shadowColor,\n    shadowOffset,\n    shadowOpacity,\n    shadowRadius,\n    opacity,\n    transform,\n  };\n\n  // Setting a property to undefined triggers default style\n  // So we need to filter them out\n  // Users can use `null` instead\n  for (const styleProp in safeStyles) {\n    // @ts-expect-error: typescript wrongly complains that styleProp cannot be used to index safeStyles\n    if (safeStyles[styleProp] === undefined) {\n      // @ts-expect-error\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete safeStyles[styleProp];\n    }\n  }\n\n  const {\n    titleStyle,\n    leftButtonStyle,\n    leftLabelStyle,\n    rightButtonStyle,\n    backgroundStyle,\n  } = getInterpolatedStyle(\n    styleInterpolator,\n    layout,\n    scene.progress.current,\n    scene.progress.next,\n    titleLayout,\n    previousTitle ? leftLabelLayout : undefined,\n    typeof height === 'number' ? height : defaultHeight\n  );\n\n  const leftButton = left\n    ? left({\n        backImage,\n        pressColorAndroid,\n        accessibilityLabel: backAccessibilityLabel,\n        allowFontScaling: backAllowFontScaling,\n        onPress: onGoBack,\n        labelVisible: headerBackTitleVisible,\n        label: leftLabel !== undefined ? leftLabel : previousTitle,\n        truncatedLabel,\n        labelStyle: [leftLabelStyle, customLeftLabelStyle],\n        onLabelLayout: handleLeftLabelLayout,\n        screenLayout: layout,\n        titleLayout,\n        tintColor: headerTintColor,\n        canGoBack: Boolean(onGoBack),\n      })\n    : null;\n\n  const rightButton = right ? right({ tintColor: headerTintColor }) : null;\n\n  return (\n    <React.Fragment>\n      <Animated.View\n        pointerEvents=\"box-none\"\n        style={[StyleSheet.absoluteFill, { zIndex: 0 }, backgroundStyle]}\n      >\n        {headerBackground ? (\n          headerBackground({ style: safeStyles })\n        ) : headerTransparent ? null : (\n          <HeaderBackground style={safeStyles} />\n        )}\n      </Animated.View>\n      <Animated.View\n        pointerEvents=\"box-none\"\n        style={[{ height, minHeight, maxHeight, opacity, transform }]}\n      >\n        <View pointerEvents=\"none\" style={{ height: headerStatusBarHeight }} />\n        <View pointerEvents=\"box-none\" style={styles.content}>\n          {leftButton ? (\n            <Animated.View\n              pointerEvents=\"box-none\"\n              style={[\n                styles.left,\n                { left: insets.left },\n                leftButtonStyle,\n                leftContainerStyle,\n              ]}\n            >\n              {leftButton}\n            </Animated.View>\n          ) : null}\n          <Animated.View\n            pointerEvents=\"box-none\"\n            style={[\n              headerTitleAlign === 'left'\n                ? {\n                    position: 'absolute',\n                    left: (leftButton ? 72 : 16) + insets.left,\n                    right: (rightButton ? 72 : 16) + insets.right,\n                  }\n                : {\n                    marginHorizontal:\n                      (leftButton ? 32 : 16) +\n                      (leftButton && headerBackTitleVisible !== false\n                        ? 40\n                        : 0) +\n                      Math.max(insets.left, insets.right),\n                  },\n              titleStyle,\n              titleContainerStyle,\n            ]}\n          >\n            {headerTitle({\n              children: currentTitle,\n              onLayout: handleTitleLayout,\n              allowFontScaling: titleAllowFontScaling,\n              tintColor: headerTintColor,\n              style: customTitleStyle,\n            })}\n          </Animated.View>\n          {rightButton ? (\n            <Animated.View\n              pointerEvents=\"box-none\"\n              style={[\n                styles.right,\n                { right: insets.right },\n                rightButtonStyle,\n                rightContainerStyle,\n              ]}\n            >\n              {rightButton}\n            </Animated.View>\n          ) : null}\n        </View>\n      </Animated.View>\n    </React.Fragment>\n  );\n}\n\nconst styles = StyleSheet.create({\n  content: {\n    flex: 1,\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  left: {\n    position: 'absolute',\n    left: 0,\n    top: 0,\n    bottom: 0,\n    justifyContent: 'center',\n    alignItems: 'flex-start',\n  },\n  right: {\n    position: 'absolute',\n    right: 0,\n    top: 0,\n    bottom: 0,\n    justifyContent: 'center',\n    alignItems: 'flex-end',\n  },\n});\n","import * as React from 'react';\nimport {\n  Animated,\n  I18nManager,\n  Image,\n  View,\n  Platform,\n  StyleSheet,\n  LayoutChangeEvent,\n} from 'react-native';\nimport { useTheme } from '@react-navigation/native';\nimport MaskedView from '../MaskedView';\nimport TouchableItem from '../TouchableItem';\nimport type { StackHeaderLeftButtonProps } from '../../types';\n\ntype Props = StackHeaderLeftButtonProps;\n\nexport default function HeaderBackButton({\n  disabled,\n  allowFontScaling,\n  backImage,\n  label,\n  labelStyle,\n  labelVisible = Platform.OS === 'ios',\n  onLabelLayout,\n  onPress,\n  pressColorAndroid: customPressColorAndroid,\n  screenLayout,\n  tintColor: customTintColor,\n  titleLayout,\n  truncatedLabel = 'Back',\n  accessibilityLabel = label && label !== 'Back' ? `${label}, back` : 'Go back',\n  style,\n}: Props) {\n  const { dark, colors } = useTheme();\n\n  const [initialLabelWidth, setInitialLabelWidth] = React.useState<\n    undefined | number\n  >(undefined);\n\n  const tintColor =\n    customTintColor !== undefined\n      ? customTintColor\n      : Platform.select({\n          ios: colors.primary,\n          default: colors.text,\n        });\n\n  const pressColorAndroid =\n    customPressColorAndroid !== undefined\n      ? customPressColorAndroid\n      : dark\n      ? 'rgba(255, 255, 255, .32)'\n      : 'rgba(0, 0, 0, .32)';\n\n  const handleLabelLayout = (e: LayoutChangeEvent) => {\n    onLabelLayout?.(e);\n\n    setInitialLabelWidth(e.nativeEvent.layout.x + e.nativeEvent.layout.width);\n  };\n\n  const shouldTruncateLabel = () => {\n    return (\n      !label ||\n      (initialLabelWidth &&\n        titleLayout &&\n        screenLayout &&\n        (screenLayout.width - titleLayout.width) / 2 < initialLabelWidth + 26)\n    );\n  };\n\n  const renderBackImage = () => {\n    if (backImage) {\n      return backImage({ tintColor });\n    } else {\n      return (\n        <Image\n          style={[\n            styles.icon,\n            Boolean(labelVisible) && styles.iconWithLabel,\n            Boolean(tintColor) && { tintColor },\n          ]}\n          source={require('../assets/back-icon.png')}\n          fadeDuration={0}\n        />\n      );\n    }\n  };\n\n  const renderLabel = () => {\n    const leftLabelText = shouldTruncateLabel() ? truncatedLabel : label;\n\n    if (!labelVisible || leftLabelText === undefined) {\n      return null;\n    }\n\n    const labelElement = (\n      <View\n        style={\n          screenLayout\n            ? // We make the button extend till the middle of the screen\n              // Otherwise it appears to cut off when translating\n              [styles.labelWrapper, { minWidth: screenLayout.width / 2 - 27 }]\n            : null\n        }\n      >\n        <Animated.Text\n          accessible={false}\n          onLayout={\n            // This measurement is used to determine if we should truncate the label when it doesn't fit\n            // Only measure it when label is not truncated because we want the measurement of full label\n            leftLabelText === label ? handleLabelLayout : undefined\n          }\n          style={[\n            styles.label,\n            tintColor ? { color: tintColor } : null,\n            labelStyle,\n          ]}\n          numberOfLines={1}\n          allowFontScaling={!!allowFontScaling}\n        >\n          {leftLabelText}\n        </Animated.Text>\n      </View>\n    );\n\n    if (backImage || Platform.OS !== 'ios') {\n      // When a custom backimage is specified, we can't mask the label\n      // Otherwise there might be weird effect due to our mask not being the same as the image\n      return labelElement;\n    }\n\n    return (\n      <MaskedView\n        maskElement={\n          <View style={styles.iconMaskContainer}>\n            <Image\n              source={require('../assets/back-icon-mask.png')}\n              style={styles.iconMask}\n            />\n            <View style={styles.iconMaskFillerRect} />\n          </View>\n        }\n      >\n        {labelElement}\n      </MaskedView>\n    );\n  };\n\n  const handlePress = () => onPress && requestAnimationFrame(onPress);\n\n  return (\n    <TouchableItem\n      disabled={disabled}\n      accessible\n      accessibilityRole=\"button\"\n      accessibilityComponentType=\"button\"\n      accessibilityLabel={accessibilityLabel}\n      accessibilityTraits=\"button\"\n      testID=\"header-back\"\n      delayPressIn={0}\n      onPress={disabled ? undefined : handlePress}\n      pressColor={pressColorAndroid}\n      style={[styles.container, disabled && styles.disabled, style]}\n      hitSlop={Platform.select({\n        ios: undefined,\n        default: { top: 16, right: 16, bottom: 16, left: 16 },\n      })}\n      borderless\n    >\n      <React.Fragment>\n        {renderBackImage()}\n        {renderLabel()}\n      </React.Fragment>\n    </TouchableItem>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    alignItems: 'center',\n    flexDirection: 'row',\n    ...Platform.select({\n      ios: null,\n      default: {\n        marginVertical: 3,\n        marginHorizontal: 11,\n      },\n    }),\n  },\n  disabled: {\n    opacity: 0.5,\n  },\n  label: {\n    fontSize: 17,\n    // Title and back label are a bit different width due to title being bold\n    // Adjusting the letterSpacing makes them coincide better\n    letterSpacing: 0.35,\n  },\n  labelWrapper: {\n    // These styles will make sure that the label doesn't fill the available space\n    // Otherwise it messes with the measurement of the label\n    flexDirection: 'row',\n    alignItems: 'flex-start',\n  },\n  icon: Platform.select({\n    ios: {\n      height: 21,\n      width: 13,\n      marginLeft: 8,\n      marginRight: 22,\n      marginVertical: 12,\n      resizeMode: 'contain',\n      transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }],\n    },\n    default: {\n      height: 24,\n      width: 24,\n      margin: 3,\n      resizeMode: 'contain',\n      transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }],\n    },\n  }),\n  iconWithLabel:\n    Platform.OS === 'ios'\n      ? {\n          marginRight: 6,\n        }\n      : {},\n  iconMaskContainer: {\n    flex: 1,\n    flexDirection: 'row',\n    justifyContent: 'center',\n  },\n  iconMaskFillerRect: {\n    flex: 1,\n    backgroundColor: '#000',\n  },\n  iconMask: {\n    height: 21,\n    width: 13,\n    marginLeft: -14.5,\n    marginVertical: 12,\n    alignSelf: 'center',\n    resizeMode: 'contain',\n    transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }],\n  },\n});\n","export { default } from './MaskedViewNative';\n","/**\n * The native MaskedView that we explicitly re-export for supported platforms: Android, iOS.\n */\nimport * as React from 'react';\nimport { UIManager } from 'react-native';\n\ntype MaskedViewType = typeof import('@react-native-community/masked-view').default;\n\ntype Props = React.ComponentProps<MaskedViewType> & {\n  children: React.ReactElement;\n};\n\nlet RNCMaskedView: MaskedViewType | undefined;\n\ntry {\n  // Add try/catch to support usage even if it's not installed, since it's optional.\n  // Newer versions of Metro will handle it properly.\n  RNCMaskedView = require('@react-native-community/masked-view').default;\n} catch (e) {\n  // Ignore\n}\n\nconst isMaskedViewAvailable =\n  UIManager.getViewManagerConfig('RNCMaskedView') != null;\n\nexport default function MaskedView({ children, ...rest }: Props) {\n  if (isMaskedViewAvailable && RNCMaskedView) {\n    return <RNCMaskedView {...rest}>{children}</RNCMaskedView>;\n  }\n\n  return children;\n}\n","import MaskedView from './js/MaskedView';\n\nexport default MaskedView;\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 * @flow\n * @format\n */\n\nimport React from 'react';\nimport { View, StyleSheet, requireNativeComponent } from 'react-native';\n\nconst RNCMaskedView = requireNativeComponent<any>('RNCMaskedView');\n\nimport { type MaskedViewProps } from './MaskedViewTypes';\n\n/**\n * Renders the child view with a mask specified in the `maskElement` prop.\n *\n * ```\n * import React from 'react';\n * import { Text, View } from 'react-native';\n * import MaskedView from 'react-native-masked-view';\n *\n * class MyMaskedView extends React.Component {\n *   render() {\n *     return (\n *       <MaskedView\n *         style={{ flex: 1 }}\n *         maskElement={\n *           <View style={styles.maskContainerStyle}>\n *             <Text style={styles.maskTextStyle}>\n *               Basic Mask\n *             </Text>\n *           </View>\n *         }\n *       >\n *         <View style={{ flex: 1, backgroundColor: 'blue' }} />\n *       </MaskedView>\n *     );\n *   }\n * }\n * ```\n *\n * The above example will render a view with a blue background that fills its\n * parent, and then mask that view with text that says \"Basic Mask\".\n *\n * The alpha channel of the view rendered by the `maskElement` prop determines how\n * much of the view's content and background shows through. Fully or partially\n * opaque pixels allow the underlying content to show through but fully\n * transparent pixels block that content.\n *\n */\nexport default class MaskedView extends React.Component<MaskedViewProps> {\n  _hasWarnedInvalidRenderMask = false;\n\n  render() {\n    const { maskElement, children, ...otherViewProps } = this.props;\n\n    if (!React.isValidElement(maskElement)) {\n      if (!this._hasWarnedInvalidRenderMask) {\n        console.warn(\n          'MaskedView: Invalid `maskElement` prop was passed to MaskedView. ' +\n            'Expected a React Element. No mask will render.',\n        );\n        this._hasWarnedInvalidRenderMask = true;\n      }\n      // $FlowFixMe\n      return <View {...otherViewProps}>{children}</View>;\n    }\n\n    return (\n      <RNCMaskedView {...otherViewProps}>\n        <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n          {maskElement}\n        </View>\n        {children}\n      </RNCMaskedView>\n    );\n  }\n}\n","import * as React from 'react';\nimport { Animated, Platform } from 'react-native';\nimport { BaseButton } from 'react-native-gesture-handler';\n\nconst AnimatedBaseButton = Animated.createAnimatedComponent(BaseButton);\n\ntype Props = React.ComponentProps<typeof BaseButton> & {\n  pressOpacity: number;\n};\n\nconst useNativeDriver = Platform.OS !== 'web';\n\nexport default class TouchableItem extends React.Component<Props> {\n  static defaultProps = {\n    pressOpacity: 0.3,\n    borderless: true,\n    enabled: true,\n  };\n\n  private opacity = new Animated.Value(1);\n\n  private handleActiveStateChange = (active: boolean) => {\n    Animated.spring(this.opacity, {\n      stiffness: 1000,\n      damping: 500,\n      mass: 3,\n      overshootClamping: true,\n      restDisplacementThreshold: 0.01,\n      restSpeedThreshold: 0.01,\n      toValue: active ? this.props.pressOpacity : 1,\n      useNativeDriver,\n    }).start();\n\n    this.props.onActiveStateChange?.(active);\n  };\n\n  render() {\n    const { children, style, enabled, ...rest } = this.props;\n\n    return (\n      <AnimatedBaseButton\n        {...rest}\n        onActiveStateChange={this.handleActiveStateChange}\n        style={[style, enabled && { opacity: this.opacity }]}\n      >\n        {children}\n      </AnimatedBaseButton>\n    );\n  }\n}\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 * @flow strict\n * @format\n */\n\n'use strict';\n\nmodule.exports = require('@react-native/assets/registry');\n","","import * as React from 'react';\nimport {\n  Animated,\n  StyleSheet,\n  Platform,\n  ViewProps,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\nimport { useTheme } from '@react-navigation/native';\n\ntype Props = ViewProps & {\n  style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n  children?: React.ReactNode;\n};\n\nexport default function HeaderBackground({ style, ...rest }: Props) {\n  const { colors } = useTheme();\n\n  return (\n    <Animated.View\n      style={[\n        styles.container,\n        {\n          backgroundColor: colors.card,\n          borderBottomColor: colors.border,\n          shadowColor: colors.border,\n        },\n        style,\n      ]}\n      {...rest}\n    />\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    ...Platform.select({\n      android: {\n        elevation: 4,\n      },\n      ios: {\n        shadowOpacity: 0.85,\n        shadowRadius: 0,\n        shadowOffset: {\n          width: 0,\n          height: StyleSheet.hairlineWidth,\n        },\n      },\n      default: {\n        borderBottomWidth: StyleSheet.hairlineWidth,\n      },\n    }),\n  },\n});\n","import * as React from 'react';\n\nconst HeaderShownContext = React.createContext(false);\n\nexport default HeaderShownContext;\n","export default function memoize<Result, Deps extends readonly any[]>(\n  callback: (...deps: Deps) => Result\n) {\n  let previous: Deps | undefined;\n  let result: Result | undefined;\n\n  return (...dependencies: Deps): Result => {\n    let hasChanged = false;\n\n    if (previous) {\n      if (previous.length !== dependencies.length) {\n        hasChanged = true;\n      } else {\n        for (let i = 0; i < previous.length; i++) {\n          if (previous[i] !== dependencies[i]) {\n            hasChanged = true;\n            break;\n          }\n        }\n      }\n    } else {\n      hasChanged = true;\n    }\n\n    previous = dependencies;\n\n    if (hasChanged || result === undefined) {\n      result = callback(...dependencies);\n    }\n\n    return result;\n  };\n}\n","import * as React from 'react';\nimport { Animated, View, StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport { Route, useTheme } from '@react-navigation/native';\nimport type { Props as HeaderContainerProps } from '../Header/HeaderContainer';\nimport Card from './Card';\nimport HeaderHeightContext from '../../utils/HeaderHeightContext';\nimport HeaderShownContext from '../../utils/HeaderShownContext';\nimport PreviousSceneContext from '../../utils/PreviousSceneContext';\nimport type {\n  Scene,\n  Layout,\n  StackHeaderMode,\n  StackCardMode,\n  TransitionPreset,\n} from '../../types';\n\ntype Props = TransitionPreset & {\n  index: number;\n  active: boolean;\n  focused: boolean;\n  closing: boolean;\n  layout: Layout;\n  gesture: Animated.Value;\n  scene: Scene<Route<string>>;\n  safeAreaInsetTop: number;\n  safeAreaInsetRight: number;\n  safeAreaInsetBottom: number;\n  safeAreaInsetLeft: number;\n  cardOverlay?: (props: {\n    style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n  }) => React.ReactNode;\n  cardOverlayEnabled?: boolean;\n  cardShadowEnabled?: boolean;\n  cardStyle?: StyleProp<ViewStyle>;\n  getPreviousScene: (props: {\n    route: Route<string>;\n  }) => Scene<Route<string>> | undefined;\n  getFocusedRoute: () => Route<string>;\n  renderHeader: (props: HeaderContainerProps) => React.ReactNode;\n  renderScene: (props: { route: Route<string> }) => React.ReactNode;\n  onOpenRoute: (props: { route: Route<string> }) => void;\n  onCloseRoute: (props: { route: Route<string> }) => void;\n  onTransitionStart?: (\n    props: { route: Route<string> },\n    closing: boolean\n  ) => void;\n  onTransitionEnd?: (props: { route: Route<string> }, closing: boolean) => void;\n  onPageChangeStart?: () => void;\n  onPageChangeConfirm?: (force: boolean) => void;\n  onPageChangeCancel?: () => void;\n  onGestureStart?: (props: { route: Route<string> }) => void;\n  onGestureEnd?: (props: { route: Route<string> }) => void;\n  onGestureCancel?: (props: { route: Route<string> }) => void;\n  gestureEnabled?: boolean;\n  gestureResponseDistance?: {\n    vertical?: number;\n    horizontal?: number;\n  };\n  gestureVelocityImpact?: number;\n  mode: StackCardMode;\n  headerMode: StackHeaderMode;\n  headerShown: boolean;\n  hasAbsoluteHeader: boolean;\n  headerHeight: number;\n  onHeaderHeightChange: (props: {\n    route: Route<string>;\n    height: number;\n  }) => void;\n  isParentHeaderShown: boolean;\n};\n\nconst EPSILON = 0.1;\n\nfunction CardContainer({\n  active,\n  cardOverlay,\n  cardOverlayEnabled,\n  cardShadowEnabled,\n  cardStyle,\n  cardStyleInterpolator,\n  closing,\n  gesture,\n  focused,\n  gestureDirection,\n  gestureEnabled,\n  gestureResponseDistance,\n  gestureVelocityImpact,\n  getPreviousScene,\n  getFocusedRoute,\n  mode,\n  headerMode,\n  headerShown,\n  headerStyleInterpolator,\n  hasAbsoluteHeader,\n  headerHeight,\n  onHeaderHeightChange,\n  isParentHeaderShown,\n  index,\n  layout,\n  onCloseRoute,\n  onOpenRoute,\n  onPageChangeCancel,\n  onPageChangeConfirm,\n  onPageChangeStart,\n  onGestureCancel,\n  onGestureEnd,\n  onGestureStart,\n  onTransitionEnd,\n  onTransitionStart,\n  renderHeader,\n  renderScene,\n  safeAreaInsetBottom,\n  safeAreaInsetLeft,\n  safeAreaInsetRight,\n  safeAreaInsetTop,\n  scene,\n  transitionSpec,\n}: Props) {\n  const handleOpen = () => {\n    const { route } = scene;\n\n    onTransitionEnd?.({ route }, false);\n    onOpenRoute({ route });\n  };\n\n  const handleClose = () => {\n    const { route } = scene;\n\n    onTransitionEnd?.({ route }, true);\n    onCloseRoute({ route });\n  };\n\n  const handleGestureBegin = () => {\n    const { route } = scene;\n\n    onPageChangeStart?.();\n    onGestureStart?.({ route });\n  };\n\n  const handleGestureCanceled = () => {\n    const { route } = scene;\n\n    onPageChangeCancel?.();\n    onGestureCancel?.({ route });\n  };\n\n  const handleGestureEnd = () => {\n    const { route } = scene;\n\n    onGestureEnd?.({ route });\n  };\n\n  const handleTransition = ({\n    closing,\n    gesture,\n  }: {\n    closing: boolean;\n    gesture: boolean;\n  }) => {\n    const { route } = scene;\n\n    if (!gesture) {\n      onPageChangeConfirm?.(true);\n    } else if (active && closing) {\n      onPageChangeConfirm?.(false);\n    } else {\n      onPageChangeCancel?.();\n    }\n\n    onTransitionStart?.({ route }, closing);\n  };\n\n  const insets = {\n    top: safeAreaInsetTop,\n    right: safeAreaInsetRight,\n    bottom: safeAreaInsetBottom,\n    left: safeAreaInsetLeft,\n  };\n\n  const { colors } = useTheme();\n\n  const [pointerEvents, setPointerEvents] = React.useState<'box-none' | 'none'>(\n    'box-none'\n  );\n\n  React.useEffect(() => {\n    // @ts-expect-error: AnimatedInterpolation optionally has addListener, but the type defs don't think so\n    const listener = scene.progress.next?.addListener?.(\n      ({ value }: { value: number }) => {\n        setPointerEvents(value <= EPSILON ? 'box-none' : 'none');\n      }\n    );\n\n    return () => {\n      if (listener) {\n        // @ts-expect-error: AnimatedInterpolation optionally has removedListener, but the type defs don't think so\n        scene.progress.next?.removeListener?.(listener);\n      }\n    };\n  }, [pointerEvents, scene.progress.next]);\n\n  const isCurrentHeaderShown = headerMode !== 'none' && headerShown !== false;\n  const previousScene = getPreviousScene({ route: scene.route });\n\n  return (\n    <Card\n      index={index}\n      gestureDirection={gestureDirection}\n      layout={layout}\n      insets={insets}\n      gesture={gesture}\n      current={scene.progress.current}\n      next={scene.progress.next}\n      closing={closing}\n      onOpen={handleOpen}\n      onClose={handleClose}\n      overlay={cardOverlay}\n      overlayEnabled={cardOverlayEnabled}\n      shadowEnabled={cardShadowEnabled}\n      onTransition={handleTransition}\n      onGestureBegin={handleGestureBegin}\n      onGestureCanceled={handleGestureCanceled}\n      onGestureEnd={handleGestureEnd}\n      gestureEnabled={gestureEnabled}\n      gestureResponseDistance={gestureResponseDistance}\n      gestureVelocityImpact={gestureVelocityImpact}\n      transitionSpec={transitionSpec}\n      styleInterpolator={cardStyleInterpolator}\n      accessibilityElementsHidden={!focused}\n      importantForAccessibility={focused ? 'auto' : 'no-hide-descendants'}\n      pointerEvents={active ? 'box-none' : pointerEvents}\n      pageOverflowEnabled={headerMode === 'screen' && mode === 'card'}\n      containerStyle={hasAbsoluteHeader ? { marginTop: headerHeight } : null}\n      contentStyle={[{ backgroundColor: colors.background }, cardStyle]}\n      style={[\n        {\n          // This is necessary to avoid unfocused larger pages increasing scroll area\n          // The issue can be seen on the web when a smaller screen is pushed over a larger one\n          overflow: active ? undefined : 'hidden',\n        },\n        StyleSheet.absoluteFill,\n      ]}\n    >\n      <View style={styles.container}>\n        <View style={styles.scene}>\n          <PreviousSceneContext.Provider value={previousScene}>\n            <HeaderShownContext.Provider\n              value={isParentHeaderShown || isCurrentHeaderShown}\n            >\n              <HeaderHeightContext.Provider value={headerHeight}>\n                {renderScene({ route: scene.route })}\n              </HeaderHeightContext.Provider>\n            </HeaderShownContext.Provider>\n          </PreviousSceneContext.Provider>\n        </View>\n        {headerMode === 'screen'\n          ? renderHeader({\n              mode: 'screen',\n              layout,\n              insets,\n              scenes: [previousScene, scene],\n              getPreviousScene,\n              getFocusedRoute,\n              gestureDirection,\n              styleInterpolator: headerStyleInterpolator,\n              onContentHeightChange: onHeaderHeightChange,\n            })\n          : null}\n      </View>\n    </Card>\n  );\n}\n\nexport default React.memo(CardContainer);\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    flexDirection: 'column-reverse',\n  },\n  scene: {\n    flex: 1,\n  },\n});\n","import * as React from 'react';\nimport {\n  Animated,\n  View,\n  StyleSheet,\n  ViewProps,\n  StyleProp,\n  ViewStyle,\n  Platform,\n  InteractionManager,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\nimport Color from 'color';\n\nimport CardSheet from './CardSheet';\nimport {\n  PanGestureHandler,\n  GestureState,\n  PanGestureHandlerGestureEvent,\n} from '../GestureHandler';\nimport CardAnimationContext from '../../utils/CardAnimationContext';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport getInvertedMultiplier from '../../utils/getInvertedMultiplier';\nimport memoize from '../../utils/memoize';\nimport type {\n  TransitionSpec,\n  StackCardStyleInterpolator,\n  GestureDirection,\n  Layout,\n} from '../../types';\n\ntype Props = ViewProps & {\n  index: number;\n  closing: boolean;\n  next?: Animated.AnimatedInterpolation;\n  current: Animated.AnimatedInterpolation;\n  gesture: Animated.Value;\n  layout: Layout;\n  insets: EdgeInsets;\n  pageOverflowEnabled: boolean;\n  gestureDirection: GestureDirection;\n  onOpen: () => void;\n  onClose: () => void;\n  onTransition?: (props: { closing: boolean; gesture: boolean }) => void;\n  onGestureBegin?: () => void;\n  onGestureCanceled?: () => void;\n  onGestureEnd?: () => void;\n  children: React.ReactNode;\n  overlay: (props: {\n    style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n  }) => React.ReactNode;\n  overlayEnabled: boolean;\n  shadowEnabled: boolean;\n  gestureEnabled: boolean;\n  gestureResponseDistance?: {\n    vertical?: number;\n    horizontal?: number;\n  };\n  gestureVelocityImpact: number;\n  transitionSpec: {\n    open: TransitionSpec;\n    close: TransitionSpec;\n  };\n  styleInterpolator: StackCardStyleInterpolator;\n  containerStyle?: StyleProp<ViewStyle>;\n  contentStyle?: StyleProp<ViewStyle>;\n};\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\n\nconst TRUE = 1;\nconst FALSE = 0;\n\n/**\n * The distance of touch start from the edge of the screen where the gesture will be recognized\n */\nconst GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 50;\nconst GESTURE_RESPONSE_DISTANCE_VERTICAL = 135;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\nconst hasOpacityStyle = (style: any) => {\n  if (style) {\n    const flattenedStyle = StyleSheet.flatten(style);\n    return flattenedStyle.opacity != null;\n  }\n\n  return false;\n};\n\nexport default class Card extends React.Component<Props> {\n  static defaultProps = {\n    overlayEnabled: Platform.OS !== 'ios',\n    shadowEnabled: true,\n    gestureEnabled: true,\n    gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,\n    overlay: ({\n      style,\n    }: {\n      style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n    }) =>\n      style ? (\n        <Animated.View pointerEvents=\"none\" style={[styles.overlay, style]} />\n      ) : null,\n  };\n\n  componentDidMount() {\n    this.animate({ closing: this.props.closing });\n    this.isCurrentlyMounted = true;\n  }\n\n  componentDidUpdate(prevProps: Props) {\n    const { layout, gestureDirection, closing } = this.props;\n    const { width, height } = layout;\n\n    if (width !== prevProps.layout.width) {\n      this.layout.width.setValue(width);\n    }\n\n    if (height !== prevProps.layout.height) {\n      this.layout.height.setValue(height);\n    }\n\n    if (gestureDirection !== prevProps.gestureDirection) {\n      this.inverted.setValue(getInvertedMultiplier(gestureDirection));\n    }\n\n    const toValue = this.getAnimateToValue(this.props);\n\n    if (\n      this.getAnimateToValue(prevProps) !== toValue ||\n      this.lastToValue !== toValue\n    ) {\n      // We need to trigger the animation when route was closed\n      // Thr route might have been closed by a `POP` action or by a gesture\n      // When route was closed due to a gesture, the animation would've happened already\n      // It's still important to trigger the animation so that `onClose` is called\n      // If `onClose` is not called, cleanup step won't be performed for gestures\n      this.animate({ closing });\n    }\n  }\n\n  componentWillUnmount() {\n    this.isCurrentlyMounted = false;\n    this.handleEndInteraction();\n  }\n\n  private isCurrentlyMounted = false;\n\n  private isClosing = new Animated.Value(FALSE);\n\n  private inverted = new Animated.Value(\n    getInvertedMultiplier(this.props.gestureDirection)\n  );\n\n  private layout = {\n    width: new Animated.Value(this.props.layout.width),\n    height: new Animated.Value(this.props.layout.height),\n  };\n\n  private isSwiping = new Animated.Value(FALSE);\n\n  private interactionHandle: number | undefined;\n\n  private pendingGestureCallback: number | undefined;\n\n  private lastToValue: number | undefined;\n\n  private animate = ({\n    closing,\n    velocity,\n  }: {\n    closing: boolean;\n    velocity?: number;\n  }) => {\n    const {\n      gesture,\n      transitionSpec,\n      onOpen,\n      onClose,\n      onTransition,\n    } = this.props;\n\n    const toValue = this.getAnimateToValue({\n      ...this.props,\n      closing,\n    });\n\n    this.lastToValue = toValue;\n\n    const spec = closing ? transitionSpec.close : transitionSpec.open;\n\n    const animation =\n      spec.animation === 'spring' ? Animated.spring : Animated.timing;\n\n    this.setPointerEventsEnabled(!closing);\n    this.handleStartInteraction();\n\n    clearTimeout(this.pendingGestureCallback);\n\n    onTransition?.({ closing, gesture: velocity !== undefined });\n    animation(gesture, {\n      ...spec.config,\n      velocity,\n      toValue,\n      useNativeDriver,\n      isInteraction: false,\n    }).start(({ finished }) => {\n      this.handleEndInteraction();\n\n      clearTimeout(this.pendingGestureCallback);\n\n      if (finished) {\n        if (closing) {\n          onClose();\n        } else {\n          onOpen();\n        }\n\n        if (this.isCurrentlyMounted) {\n          // Make sure to re-open screen if it wasn't removed\n          this.forceUpdate();\n        }\n      }\n    });\n  };\n\n  private getAnimateToValue = ({\n    closing,\n    layout,\n    gestureDirection,\n  }: {\n    closing?: boolean;\n    layout: Layout;\n    gestureDirection: GestureDirection;\n  }) => {\n    if (!closing) {\n      return 0;\n    }\n\n    return getDistanceForDirection(layout, gestureDirection);\n  };\n\n  private setPointerEventsEnabled = (enabled: boolean) => {\n    const pointerEvents = enabled ? 'box-none' : 'none';\n\n    this.contentRef.current?.setNativeProps({ pointerEvents });\n  };\n\n  private handleStartInteraction = () => {\n    if (this.interactionHandle === undefined) {\n      this.interactionHandle = InteractionManager.createInteractionHandle();\n    }\n  };\n\n  private handleEndInteraction = () => {\n    if (this.interactionHandle !== undefined) {\n      InteractionManager.clearInteractionHandle(this.interactionHandle);\n      this.interactionHandle = undefined;\n    }\n  };\n\n  private handleGestureStateChange = ({\n    nativeEvent,\n  }: PanGestureHandlerGestureEvent) => {\n    const {\n      layout,\n      onClose,\n      onGestureBegin,\n      onGestureCanceled,\n      onGestureEnd,\n      gestureDirection,\n      gestureVelocityImpact,\n    } = this.props;\n\n    switch (nativeEvent.state) {\n      case GestureState.BEGAN:\n        this.isSwiping.setValue(TRUE);\n        this.handleStartInteraction();\n        onGestureBegin?.();\n        break;\n      case GestureState.CANCELLED: {\n        this.isSwiping.setValue(FALSE);\n        this.handleEndInteraction();\n\n        const velocity =\n          gestureDirection === 'vertical' ||\n          gestureDirection === 'vertical-inverted'\n            ? nativeEvent.velocityY\n            : nativeEvent.velocityX;\n\n        this.animate({ closing: this.props.closing, velocity });\n\n        onGestureCanceled?.();\n        break;\n      }\n      case GestureState.END: {\n        this.isSwiping.setValue(FALSE);\n\n        let distance;\n        let translation;\n        let velocity;\n\n        if (\n          gestureDirection === 'vertical' ||\n          gestureDirection === 'vertical-inverted'\n        ) {\n          distance = layout.height;\n          translation = nativeEvent.translationY;\n          velocity = nativeEvent.velocityY;\n        } else {\n          distance = layout.width;\n          translation = nativeEvent.translationX;\n          velocity = nativeEvent.velocityX;\n        }\n\n        const closing =\n          (translation + velocity * gestureVelocityImpact) *\n            getInvertedMultiplier(gestureDirection) >\n          distance / 2\n            ? velocity !== 0 || translation !== 0\n            : this.props.closing;\n\n        this.animate({ closing, velocity });\n\n        if (closing) {\n          // We call onClose with a delay to make sure that the animation has already started\n          // This will make sure that the state update caused by this doesn't affect start of animation\n          this.pendingGestureCallback = (setTimeout(() => {\n            onClose();\n\n            // Trigger an update after we dispatch the action to remove the screen\n            // This will make sure that we check if the screen didn't get removed so we can cancel the animation\n            this.forceUpdate();\n          }, 32) as any) as number;\n        }\n\n        onGestureEnd?.();\n        break;\n      }\n    }\n  };\n\n  // Memoize this to avoid extra work on re-render\n  private getInterpolatedStyle = memoize(\n    (\n      styleInterpolator: StackCardStyleInterpolator,\n      index: number,\n      current: Animated.AnimatedInterpolation,\n      next: Animated.AnimatedInterpolation | undefined,\n      layout: Layout,\n      insetTop: number,\n      insetRight: number,\n      insetBottom: number,\n      insetLeft: number\n    ) =>\n      styleInterpolator({\n        index,\n        current: { progress: current },\n        next: next && { progress: next },\n        closing: this.isClosing,\n        swiping: this.isSwiping,\n        inverted: this.inverted,\n        layouts: {\n          screen: layout,\n        },\n        insets: {\n          top: insetTop,\n          right: insetRight,\n          bottom: insetBottom,\n          left: insetLeft,\n        },\n      })\n  );\n\n  // Keep track of the animation context when deps changes.\n  private getCardAnimationContext = memoize(\n    (\n      index: number,\n      current: Animated.AnimatedInterpolation,\n      next: Animated.AnimatedInterpolation | undefined,\n      layout: Layout,\n      insetTop: number,\n      insetRight: number,\n      insetBottom: number,\n      insetLeft: number\n    ) => ({\n      index,\n      current: { progress: current },\n      next: next && { progress: next },\n      closing: this.isClosing,\n      swiping: this.isSwiping,\n      inverted: this.inverted,\n      layouts: {\n        screen: layout,\n      },\n      insets: {\n        top: insetTop,\n        right: insetRight,\n        bottom: insetBottom,\n        left: insetLeft,\n      },\n    })\n  );\n\n  private gestureActivationCriteria() {\n    const { layout, gestureDirection, gestureResponseDistance } = this.props;\n\n    const distance =\n      gestureDirection === 'vertical' ||\n      gestureDirection === 'vertical-inverted'\n        ? gestureResponseDistance?.vertical !== undefined\n          ? gestureResponseDistance.vertical\n          : GESTURE_RESPONSE_DISTANCE_VERTICAL\n        : gestureResponseDistance?.horizontal !== undefined\n        ? gestureResponseDistance.horizontal\n        : GESTURE_RESPONSE_DISTANCE_HORIZONTAL;\n\n    if (gestureDirection === 'vertical') {\n      return {\n        maxDeltaX: 15,\n        minOffsetY: 5,\n        hitSlop: { bottom: -layout.height + distance },\n      };\n    } else if (gestureDirection === 'vertical-inverted') {\n      return {\n        maxDeltaX: 15,\n        minOffsetY: -5,\n        hitSlop: { top: -layout.height + distance },\n      };\n    } else {\n      const hitSlop = -layout.width + distance;\n      const invertedMultiplier = getInvertedMultiplier(gestureDirection);\n\n      if (invertedMultiplier === 1) {\n        return {\n          minOffsetX: 5,\n          maxDeltaY: 20,\n          hitSlop: { right: hitSlop },\n        };\n      } else {\n        return {\n          minOffsetX: -5,\n          maxDeltaY: 20,\n          hitSlop: { left: hitSlop },\n        };\n      }\n    }\n  }\n\n  private contentRef = React.createRef<View>();\n\n  render() {\n    const {\n      styleInterpolator,\n      index,\n      current,\n      gesture,\n      next,\n      layout,\n      insets,\n      overlay,\n      overlayEnabled,\n      shadowEnabled,\n      gestureEnabled,\n      gestureDirection,\n      pageOverflowEnabled,\n      children,\n      containerStyle: customContainerStyle,\n      contentStyle,\n      ...rest\n    } = this.props;\n\n    const interpolatedStyle = this.getInterpolatedStyle(\n      styleInterpolator,\n      index,\n      current,\n      next,\n      layout,\n      insets.top,\n      insets.right,\n      insets.bottom,\n      insets.left\n    );\n\n    const animationContext = this.getCardAnimationContext(\n      index,\n      current,\n      next,\n      layout,\n      insets.top,\n      insets.right,\n      insets.bottom,\n      insets.left\n    );\n\n    const {\n      containerStyle,\n      cardStyle,\n      overlayStyle,\n      shadowStyle,\n    } = interpolatedStyle;\n\n    const handleGestureEvent = gestureEnabled\n      ? Animated.event(\n          [\n            {\n              nativeEvent:\n                gestureDirection === 'vertical' ||\n                gestureDirection === 'vertical-inverted'\n                  ? { translationY: gesture }\n                  : { translationX: gesture },\n            },\n          ],\n          { useNativeDriver }\n        )\n      : undefined;\n\n    const { backgroundColor } = StyleSheet.flatten(contentStyle || {});\n    const isTransparent =\n      typeof backgroundColor === 'string'\n        ? Color(backgroundColor).alpha() === 0\n        : false;\n\n    return (\n      <CardAnimationContext.Provider value={animationContext}>\n        <Animated.View\n          style={{\n            // This is a dummy style that doesn't actually change anything visually.\n            // Animated needs the animated value to be used somewhere, otherwise things don't update properly.\n            // If we disable animations and hide header, it could end up making the value unused.\n            // So we have this dummy style that will always be used regardless of what else changed.\n            opacity: current,\n          }}\n          // Make sure that this view isn't removed. If this view is removed, our style with animated value won't apply\n          collapsable={false}\n        />\n        <View pointerEvents=\"box-none\" {...rest}>\n          {overlayEnabled ? (\n            <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n              {overlay({ style: overlayStyle })}\n            </View>\n          ) : null}\n          <Animated.View\n            needsOffscreenAlphaCompositing={hasOpacityStyle(containerStyle)}\n            style={[styles.container, containerStyle, customContainerStyle]}\n            pointerEvents=\"box-none\"\n          >\n            <PanGestureHandler\n              enabled={layout.width !== 0 && gestureEnabled}\n              onGestureEvent={handleGestureEvent}\n              onHandlerStateChange={this.handleGestureStateChange}\n              {...this.gestureActivationCriteria()}\n            >\n              <Animated.View style={[styles.container, cardStyle]}>\n                {shadowEnabled && shadowStyle && !isTransparent ? (\n                  <Animated.View\n                    style={[\n                      styles.shadow,\n                      gestureDirection === 'horizontal'\n                        ? [styles.shadowHorizontal, styles.shadowLeft]\n                        : gestureDirection === 'horizontal-inverted'\n                        ? [styles.shadowHorizontal, styles.shadowRight]\n                        : gestureDirection === 'vertical'\n                        ? [styles.shadowVertical, styles.shadowTop]\n                        : [styles.shadowVertical, styles.shadowBottom],\n                      { backgroundColor },\n                      shadowStyle,\n                    ]}\n                    pointerEvents=\"none\"\n                  />\n                ) : null}\n                <CardSheet\n                  ref={this.contentRef}\n                  enabled={pageOverflowEnabled}\n                  layout={layout}\n                  style={contentStyle}\n                >\n                  {children}\n                </CardSheet>\n              </Animated.View>\n            </PanGestureHandler>\n          </Animated.View>\n        </View>\n      </CardAnimationContext.Provider>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n  },\n  overlay: {\n    flex: 1,\n    backgroundColor: '#000',\n  },\n  shadow: {\n    position: 'absolute',\n    shadowRadius: 5,\n    shadowColor: '#000',\n    shadowOpacity: 0.3,\n  },\n  shadowHorizontal: {\n    top: 0,\n    bottom: 0,\n    width: 3,\n    shadowOffset: { width: -1, height: 1 },\n  },\n  shadowLeft: {\n    left: 0,\n  },\n  shadowRight: {\n    right: 0,\n  },\n  shadowVertical: {\n    left: 0,\n    right: 0,\n    height: 3,\n    shadowOffset: { width: 1, height: -1 },\n  },\n  shadowTop: {\n    top: 0,\n  },\n  shadowBottom: {\n    bottom: 0,\n  },\n});\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","import * as React from 'react';\nimport { View, ViewProps, StyleSheet } from 'react-native';\n\ntype Props = ViewProps & {\n  enabled: boolean;\n  layout: { width: number; height: number };\n  children: React.ReactNode;\n};\n\n// This component will render a page which overflows the screen\n// if the container fills the body by comparing the size\n// This lets the document.body handle scrolling of the content\n// It's necessary for mobile browsers to be able to hide address bar on scroll\nexport default React.forwardRef<View, Props>(function CardSheet(\n  { enabled, layout, style, ...rest },\n  ref\n) {\n  const [fill, setFill] = React.useState(false);\n\n  React.useEffect(() => {\n    if (typeof document === 'undefined' || !document.body) {\n      // Only run when DOM is available\n      return;\n    }\n\n    const width = document.body.clientWidth;\n    const height = document.body.clientHeight;\n\n    setFill(width === layout.width && height === layout.height);\n  }, [layout.height, layout.width]);\n\n  return (\n    <View\n      {...rest}\n      ref={ref}\n      style={[enabled && fill ? styles.page : styles.card, style]}\n    />\n  );\n});\n\nconst styles = StyleSheet.create({\n  page: {\n    minHeight: '100%',\n  },\n  card: {\n    flex: 1,\n    overflow: 'hidden',\n  },\n});\n","import * as React from 'react';\nimport type { StackCardInterpolationProps } from '../types';\n\nexport default React.createContext<StackCardInterpolationProps | undefined>(\n  undefined\n);\n","import getInvertedMultiplier from './getInvertedMultiplier';\nimport type { GestureDirection, Layout } from '../types';\n\nexport default function getDistanceForDirection(\n  layout: Layout,\n  gestureDirection: GestureDirection\n): number {\n  const multiplier = getInvertedMultiplier(gestureDirection);\n\n  switch (gestureDirection) {\n    case 'vertical':\n    case 'vertical-inverted':\n      return layout.height * multiplier;\n    case 'horizontal':\n    case 'horizontal-inverted':\n      return layout.width * multiplier;\n  }\n}\n","import { I18nManager } from 'react-native';\nimport type { GestureDirection } from '../types';\n\nexport default function getInvertedMultiplier(\n  gestureDirection: GestureDirection\n): 1 | -1 {\n  switch (gestureDirection) {\n    case 'vertical':\n      return 1;\n    case 'vertical-inverted':\n      return -1;\n    case 'horizontal':\n      return I18nManager.isRTL ? -1 : 1;\n    case 'horizontal-inverted':\n      return I18nManager.isRTL ? 1 : -1;\n  }\n}\n","import * as React from 'react';\n\nexport default React.createContext<number | undefined>(undefined);\n","import * as React from 'react';\nimport type { Route } from '@react-navigation/native';\nimport type { Scene } from '../types';\n\nconst PreviousSceneContext = React.createContext<\n  Scene<Route<string>> | undefined\n>(undefined);\n\nexport default PreviousSceneContext;\n","import * as React from 'react';\nimport { TextInput, Keyboard, HostComponent } from 'react-native';\n\ntype Props = {\n  enabled: boolean;\n  children: (props: {\n    onPageChangeStart: () => void;\n    onPageChangeConfirm: (force: boolean) => void;\n    onPageChangeCancel: () => void;\n  }) => React.ReactNode;\n};\n\ntype InputRef = React.ElementRef<HostComponent<unknown>> | undefined;\n\nexport default class KeyboardManager extends React.Component<Props> {\n  componentWillUnmount() {\n    this.clearKeyboardTimeout();\n  }\n\n  // Numeric id of the previously focused text input\n  // When a gesture didn't change the tab, we can restore the focused input with this\n  private previouslyFocusedTextInput: InputRef = undefined;\n  private startTimestamp: number = 0;\n  private keyboardTimeout: any;\n\n  private clearKeyboardTimeout = () => {\n    if (this.keyboardTimeout !== undefined) {\n      clearTimeout(this.keyboardTimeout);\n      this.keyboardTimeout = undefined;\n    }\n  };\n\n  private handlePageChangeStart = () => {\n    if (!this.props.enabled) {\n      return;\n    }\n\n    this.clearKeyboardTimeout();\n\n    // @ts-expect-error: blurTextInput accepts both number and ref, but types say only ref\n    const input: InputRef = TextInput.State.currentlyFocusedInput\n      ? TextInput.State.currentlyFocusedInput()\n      : TextInput.State.currentlyFocusedField();\n\n    // When a page change begins, blur the currently focused input\n    TextInput.State.blurTextInput(input);\n\n    // Store the id of this input so we can refocus it if change was cancelled\n    this.previouslyFocusedTextInput = input;\n\n    // Store timestamp for touch start\n    this.startTimestamp = Date.now();\n  };\n\n  private handlePageChangeConfirm = (force: boolean) => {\n    if (!this.props.enabled) {\n      return;\n    }\n\n    this.clearKeyboardTimeout();\n\n    if (force) {\n      // Always dismiss input, even if we don't have a ref to it\n      // We might not have the ref if onPageChangeStart was never called\n      // This can happen if page change was not from a gesture\n      Keyboard.dismiss();\n    } else {\n      const input = this.previouslyFocusedTextInput;\n\n      if (input) {\n        // Dismiss the keyboard only if an input was a focused before\n        // This makes sure we don't dismiss input on going back and focusing an input\n        TextInput.State.blurTextInput(input);\n      }\n    }\n\n    // Cleanup the ID on successful page change\n    this.previouslyFocusedTextInput = undefined;\n  };\n\n  private handlePageChangeCancel = () => {\n    if (!this.props.enabled) {\n      return;\n    }\n\n    this.clearKeyboardTimeout();\n\n    // The page didn't change, we should restore the focus of text input\n    const input = this.previouslyFocusedTextInput;\n\n    if (input) {\n      // If the interaction was super short we should make sure keyboard won't hide again.\n\n      // Too fast input refocus will result only in keyboard flashing on screen and hiding right away.\n      // During first ~100ms keyboard will be dismissed no matter what,\n      // so we have to make sure it won't interrupt input refocus logic.\n      // That's why when the interaction is shorter than 100ms we add delay so it won't hide once again.\n      // Subtracting timestamps makes us sure the delay is executed only when needed.\n      if (Date.now() - this.startTimestamp < 100) {\n        this.keyboardTimeout = setTimeout(() => {\n          TextInput.State.focusTextInput(input);\n          this.previouslyFocusedTextInput = undefined;\n        }, 100);\n      } else {\n        TextInput.State.focusTextInput(input);\n        this.previouslyFocusedTextInput = undefined;\n      }\n    }\n  };\n\n  render() {\n    return this.props.children({\n      onPageChangeStart: this.handlePageChangeStart,\n      onPageChangeConfirm: this.handlePageChangeConfirm,\n      onPageChangeCancel: this.handlePageChangeCancel,\n    });\n  }\n}\n","import * as React from 'react';\nimport { Animated, View, StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport {\n  NavigationContext,\n  NavigationRouteContext,\n  Route,\n  ParamListBase,\n} from '@react-navigation/native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport Header from './Header';\nimport {\n  forSlideLeft,\n  forSlideUp,\n  forNoAnimation,\n  forSlideRight,\n} from '../../TransitionConfigs/HeaderStyleInterpolators';\nimport PreviousSceneContext from '../../utils/PreviousSceneContext';\nimport type {\n  Layout,\n  Scene,\n  StackHeaderStyleInterpolator,\n  StackNavigationProp,\n  GestureDirection,\n} from '../../types';\n\nexport type Props = {\n  mode: 'float' | 'screen';\n  layout: Layout;\n  insets: EdgeInsets;\n  scenes: (Scene<Route<string>> | undefined)[];\n  getPreviousScene: (props: {\n    route: Route<string>;\n  }) => Scene<Route<string>> | undefined;\n  getFocusedRoute: () => Route<string>;\n  onContentHeightChange?: (props: {\n    route: Route<string>;\n    height: number;\n  }) => void;\n  styleInterpolator: StackHeaderStyleInterpolator;\n  gestureDirection: GestureDirection;\n  style?: StyleProp<ViewStyle>;\n};\n\nexport default function HeaderContainer({\n  mode,\n  scenes,\n  layout,\n  insets,\n  getPreviousScene,\n  getFocusedRoute,\n  onContentHeightChange,\n  gestureDirection,\n  styleInterpolator,\n  style,\n}: Props) {\n  const focusedRoute = getFocusedRoute();\n  const parentPreviousScene = React.useContext(PreviousSceneContext);\n\n  return (\n    <Animated.View pointerEvents=\"box-none\" style={style}>\n      {scenes.slice(-3).map((scene, i, self) => {\n        if ((mode === 'screen' && i !== self.length - 1) || !scene) {\n          return null;\n        }\n\n        const { header, headerShown = true, headerTransparent } =\n          scene.descriptor.options || {};\n\n        if (!headerShown) {\n          return null;\n        }\n\n        const isFocused = focusedRoute.key === scene.route.key;\n        const previous =\n          getPreviousScene({ route: scene.route }) ?? parentPreviousScene;\n\n        // If the screen is next to a headerless screen, we need to make the header appear static\n        // This makes the header look like it's moving with the screen\n        const previousScene = self[i - 1];\n        const nextScene = self[i + 1];\n\n        const { headerShown: previousHeaderShown = true } =\n          previousScene?.descriptor.options || {};\n\n        const { headerShown: nextHeaderShown = true } =\n          nextScene?.descriptor.options || {};\n\n        const isHeaderStatic =\n          (previousHeaderShown === false &&\n            // We still need to animate when coming back from next scene\n            // A hacky way to check this is if the next scene exists\n            !nextScene) ||\n          nextHeaderShown === false;\n\n        const props = {\n          mode,\n          layout,\n          insets,\n          scene,\n          previous,\n          navigation: scene.descriptor.navigation as StackNavigationProp<\n            ParamListBase\n          >,\n          styleInterpolator:\n            mode === 'float'\n              ? isHeaderStatic\n                ? gestureDirection === 'vertical' ||\n                  gestureDirection === 'vertical-inverted'\n                  ? forSlideUp\n                  : gestureDirection === 'horizontal-inverted'\n                  ? forSlideRight\n                  : forSlideLeft\n                : styleInterpolator\n              : forNoAnimation,\n        };\n\n        return (\n          <NavigationContext.Provider\n            key={scene.route.key}\n            value={scene.descriptor.navigation}\n          >\n            <NavigationRouteContext.Provider value={scene.route}>\n              <View\n                onLayout={\n                  onContentHeightChange\n                    ? (e) => {\n                        const { height } = e.nativeEvent.layout;\n\n                        onContentHeightChange({\n                          route: scene.route,\n                          height,\n                        });\n                      }\n                    : undefined\n                }\n                pointerEvents={isFocused ? 'box-none' : 'none'}\n                accessibilityElementsHidden={!isFocused}\n                importantForAccessibility={\n                  isFocused ? 'auto' : 'no-hide-descendants'\n                }\n                style={\n                  // Avoid positioning the focused header absolutely\n                  // Otherwise accessibility tools don't seem to be able to find it\n                  (mode === 'float' && !isFocused) || headerTransparent\n                    ? styles.header\n                    : null\n                }\n              >\n                {header !== undefined ? header(props) : <Header {...props} />}\n              </View>\n            </NavigationRouteContext.Provider>\n          </NavigationContext.Provider>\n        );\n      })}\n    </Animated.View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  header: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    right: 0,\n  },\n});\n","import * as React from 'react';\nimport { StackActions } from '@react-navigation/native';\n\nimport HeaderSegment from './HeaderSegment';\nimport HeaderTitle from './HeaderTitle';\nimport debounce from '../../utils/debounce';\nimport type { StackHeaderProps, StackHeaderTitleProps } from '../../types';\n\nexport default React.memo(function Header(props: StackHeaderProps) {\n  const {\n    scene,\n    previous,\n    layout,\n    insets,\n    navigation,\n    styleInterpolator,\n  } = props;\n  const { options } = scene.descriptor;\n  const title =\n    typeof options.headerTitle !== 'function' &&\n    options.headerTitle !== undefined\n      ? options.headerTitle\n      : options.title !== undefined\n      ? options.title\n      : scene.route.name;\n\n  let leftLabel;\n\n  // The label for the left back button shows the title of the previous screen\n  // If a custom label is specified, we use it, otherwise use previous screen's title\n  if (options.headerBackTitle !== undefined) {\n    leftLabel = options.headerBackTitle;\n  } else if (previous) {\n    const o = previous.descriptor.options;\n\n    leftLabel =\n      typeof o.headerTitle !== 'function' && o.headerTitle !== undefined\n        ? o.headerTitle\n        : o.title !== undefined\n        ? o.title\n        : previous.route.name;\n  }\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const goBack = React.useCallback(\n    debounce(() => {\n      if (navigation.isFocused() && navigation.canGoBack()) {\n        navigation.dispatch({\n          ...StackActions.pop(),\n          source: scene.route.key,\n        });\n      }\n    }, 50),\n    [navigation, scene.route.key]\n  );\n\n  return (\n    <HeaderSegment\n      {...options}\n      insets={insets}\n      layout={layout}\n      scene={scene}\n      title={title}\n      leftLabel={leftLabel}\n      headerTitle={\n        typeof options.headerTitle !== 'function'\n          ? (props: StackHeaderTitleProps) => <HeaderTitle {...props} />\n          : options.headerTitle\n      }\n      onGoBack={previous ? goBack : undefined}\n      styleInterpolator={styleInterpolator}\n    />\n  );\n});\n","import * as React from 'react';\nimport {\n  Animated,\n  StyleSheet,\n  Platform,\n  TextProps,\n  StyleProp,\n  TextStyle,\n} from 'react-native';\nimport { useTheme } from '@react-navigation/native';\n\ntype Props = Omit<TextProps, 'style'> & {\n  tintColor?: string;\n  children?: string;\n  style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function HeaderTitle({ tintColor, style, ...rest }: Props) {\n  const { colors } = useTheme();\n\n  return (\n    <Animated.Text\n      accessibilityRole=\"header\"\n      aria-level=\"1\"\n      numberOfLines={1}\n      {...rest}\n      style={[\n        styles.title,\n        { color: tintColor === undefined ? colors.text : tintColor },\n        style,\n      ]}\n    />\n  );\n}\n\nconst styles = StyleSheet.create({\n  title: Platform.select({\n    ios: {\n      fontSize: 17,\n      fontWeight: '600',\n    },\n    android: {\n      fontSize: 20,\n      fontFamily: 'sans-serif-medium',\n      fontWeight: 'normal',\n    },\n    default: {\n      fontSize: 18,\n      fontWeight: '500',\n    },\n  }),\n});\n","export default function debounce<T extends (...args: any[]) => void>(\n  func: T,\n  duration: number\n): T {\n  let timeout: NodeJS.Timeout | number | undefined;\n\n  return function (this: any, ...args) {\n    if (!timeout) {\n      // eslint-disable-next-line babel/no-invalid-this\n      func.apply(this, args);\n\n      timeout = setTimeout(() => {\n        timeout = undefined;\n      }, duration);\n    }\n  } as T;\n}\n","import * as React from 'react';\nimport {\n  SafeAreaProvider,\n  SafeAreaConsumer,\n  initialWindowSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport {\n  getStatusBarHeight,\n  getBottomSpace,\n} from 'react-native-iphone-x-helper';\n\n// The provider component for safe area initializes asynchornously\n// Until the insets are available, there'll be blank screen\n// To avoid the blank screen, we specify some initial values\nconst initialSafeAreaInsets = {\n  // Approximate values which are good enough for most cases\n  top: getStatusBarHeight(true),\n  bottom: getBottomSpace(),\n  right: 0,\n  left: 0,\n  // If we are on a newer version of the library, we can get the correct window insets\n  // The component might not be filling the window, but this is good enough for most cases\n  ...initialWindowSafeAreaInsets,\n};\n\ntype Props = {\n  children: React.ReactNode;\n};\n\nexport default function SafeAreaProviderCompat({ children }: Props) {\n  return (\n    <SafeAreaConsumer>\n      {(insets) => {\n        if (insets) {\n          // If we already have insets, don't wrap the stack in another safe area provider\n          // This avoids an issue with updates at the cost of potentially incorrect values\n          // https://github.com/react-navigation/react-navigation/issues/174\n          return children;\n        }\n\n        return (\n          <SafeAreaProvider initialSafeAreaInsets={initialSafeAreaInsets}>\n            {children}\n          </SafeAreaProvider>\n        );\n      }}\n    </SafeAreaConsumer>\n  );\n}\n","import * as React from 'react';\nimport CardAnimationContext from './CardAnimationContext';\n\nexport default function useCardAnimation() {\n  const animation = React.useContext(CardAnimationContext);\n\n  if (animation === undefined) {\n    throw new Error(\n      \"Couldn't find values for card animation. Are you inside a screen in Stack?\"\n    );\n  }\n\n  return animation;\n}\n","import * as React from 'react';\nimport HeaderHeightContext from './HeaderHeightContext';\n\nexport default function useFloatingHeaderHeight() {\n  const height = React.useContext(HeaderHeightContext);\n\n  if (height === undefined) {\n    throw new Error(\n      \"Couldn't find the header height. Are you inside a screen in Stack?\"\n    );\n  }\n\n  return height;\n}\n","import * as React from 'react';\nimport StackGestureRefContext from './GestureHandlerRefContext';\n\nexport default function useGestureHandlerRef() {\n  const ref = React.useContext(StackGestureRefContext);\n\n  if (ref === undefined) {\n    throw new Error(\n      \"Couldn't find a ref for gesture handler. Are you inside a screen in Stack?\"\n    );\n  }\n\n  return ref;\n}\n","/**\n * Navigators\n */\nexport { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';\n\n/**\n * Views\n */\nexport { default as BottomTabView } from './views/BottomTabView';\nexport { default as BottomTabBar } from './views/BottomTabBar';\n\n/**\n * Utilities\n */\nexport { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';\n\nexport { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';\n\n/**\n * Types\n */\nexport type {\n  BottomTabNavigationOptions,\n  BottomTabNavigationProp,\n  BottomTabScreenProps,\n  BottomTabBarProps,\n  BottomTabBarOptions,\n  BottomTabBarButtonProps,\n} from './types';\n","import * as React from 'react';\nimport {\n  useNavigationBuilder,\n  createNavigatorFactory,\n  DefaultNavigatorOptions,\n  TabRouter,\n  TabRouterOptions,\n  TabNavigationState,\n  TabActionHelpers,\n  ParamListBase,\n} from '@react-navigation/native';\nimport BottomTabView from '../views/BottomTabView';\nimport type {\n  BottomTabNavigationConfig,\n  BottomTabNavigationOptions,\n  BottomTabNavigationEventMap,\n} from '../types';\n\ntype Props = DefaultNavigatorOptions<BottomTabNavigationOptions> &\n  TabRouterOptions &\n  BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n  initialRouteName,\n  backBehavior,\n  children,\n  screenOptions,\n  sceneContainerStyle,\n  ...rest\n}: Props) {\n  const { state, descriptors, navigation } = useNavigationBuilder<\n    TabNavigationState<ParamListBase>,\n    TabRouterOptions,\n    TabActionHelpers<ParamListBase>,\n    BottomTabNavigationOptions,\n    BottomTabNavigationEventMap\n  >(TabRouter, {\n    initialRouteName,\n    backBehavior,\n    children,\n    screenOptions,\n  });\n\n  return (\n    <BottomTabView\n      {...rest}\n      state={state}\n      navigation={navigation}\n      descriptors={descriptors}\n      sceneContainerStyle={sceneContainerStyle}\n    />\n  );\n}\n\nexport default createNavigatorFactory<\n  TabNavigationState<ParamListBase>,\n  BottomTabNavigationOptions,\n  BottomTabNavigationEventMap,\n  typeof BottomTabNavigator\n>(BottomTabNavigator);\n","import * as React from 'react';\nimport {\n  View,\n  StyleSheet,\n  Dimensions,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\n\nimport {\n  NavigationHelpersContext,\n  ParamListBase,\n  TabNavigationState,\n  useTheme,\n} from '@react-navigation/native';\nimport { ScreenContainer, screensEnabled } from 'react-native-screens';\n\nimport SafeAreaProviderCompat, {\n  initialSafeAreaInsets,\n} from './SafeAreaProviderCompat';\nimport ResourceSavingScene from './ResourceSavingScene';\nimport BottomTabBar, { getTabBarHeight } from './BottomTabBar';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';\nimport type {\n  BottomTabNavigationConfig,\n  BottomTabDescriptorMap,\n  BottomTabNavigationHelpers,\n  BottomTabBarProps,\n} from '../types';\n\ntype Props = BottomTabNavigationConfig & {\n  state: TabNavigationState<ParamListBase>;\n  navigation: BottomTabNavigationHelpers;\n  descriptors: BottomTabDescriptorMap;\n};\n\ntype State = {\n  loaded: string[];\n  tabBarHeight: number;\n};\n\nfunction SceneContent({\n  isFocused,\n  children,\n  style,\n}: {\n  isFocused: boolean;\n  children: React.ReactNode;\n  style?: StyleProp<ViewStyle>;\n}) {\n  const { colors } = useTheme();\n\n  return (\n    <View\n      accessibilityElementsHidden={!isFocused}\n      importantForAccessibility={isFocused ? 'auto' : 'no-hide-descendants'}\n      style={[styles.content, { backgroundColor: colors.background }, style]}\n    >\n      {children}\n    </View>\n  );\n}\n\nexport default class BottomTabView extends React.Component<Props, State> {\n  static defaultProps = {\n    lazy: true,\n  };\n\n  static getDerivedStateFromProps(nextProps: Props, prevState: State) {\n    const focusedRouteKey = nextProps.state.routes[nextProps.state.index].key;\n\n    return {\n      // Set the current tab to be loaded if it was not loaded before\n      loaded: prevState.loaded.includes(focusedRouteKey)\n        ? prevState.loaded\n        : [...prevState.loaded, focusedRouteKey],\n    };\n  }\n\n  constructor(props: Props) {\n    super(props);\n\n    const { state, tabBarOptions } = this.props;\n\n    const dimensions = Dimensions.get('window');\n    const tabBarHeight = getTabBarHeight({\n      state,\n      dimensions,\n      layout: { width: dimensions.width, height: 0 },\n      insets: initialSafeAreaInsets,\n      adaptive: tabBarOptions?.adaptive,\n      labelPosition: tabBarOptions?.labelPosition,\n      tabStyle: tabBarOptions?.tabStyle,\n      style: tabBarOptions?.style,\n    });\n\n    this.state = {\n      loaded: [state.routes[state.index].key],\n      tabBarHeight: tabBarHeight,\n    };\n  }\n\n  private renderTabBar = () => {\n    const {\n      tabBar = (props: BottomTabBarProps) => <BottomTabBar {...props} />,\n      tabBarOptions,\n      state,\n      navigation,\n      descriptors,\n    } = this.props;\n    return tabBar({\n      ...tabBarOptions,\n      state: state,\n      descriptors: descriptors,\n      navigation: navigation,\n    });\n  };\n\n  private handleTabBarHeightChange = (height: number) => {\n    this.setState((state) => {\n      if (state.tabBarHeight !== height) {\n        return { tabBarHeight: height };\n      }\n\n      return null;\n    });\n  };\n\n  render() {\n    const {\n      state,\n      descriptors,\n      navigation,\n      lazy,\n      detachInactiveScreens = true,\n      sceneContainerStyle,\n    } = this.props;\n    const { routes } = state;\n    const { loaded, tabBarHeight } = this.state;\n    const isScreensEnabled = screensEnabled?.() && detachInactiveScreens;\n\n    return (\n      <NavigationHelpersContext.Provider value={navigation}>\n        <SafeAreaProviderCompat>\n          <ScreenContainer\n            // @ts-ignore\n            enabled={isScreensEnabled}\n            style={styles.container}\n          >\n            {routes.map((route, index) => {\n              const descriptor = descriptors[route.key];\n              const { unmountOnBlur } = descriptor.options;\n              const isFocused = state.index === index;\n\n              if (unmountOnBlur && !isFocused) {\n                return null;\n              }\n\n              if (lazy && !loaded.includes(route.key) && !isFocused) {\n                // Don't render a screen if we've never navigated to it\n                return null;\n              }\n\n              return (\n                <ResourceSavingScene\n                  key={route.key}\n                  style={StyleSheet.absoluteFill}\n                  isVisible={isFocused}\n                  enabled={isScreensEnabled}\n                >\n                  <SceneContent\n                    isFocused={isFocused}\n                    style={sceneContainerStyle}\n                  >\n                    <BottomTabBarHeightContext.Provider value={tabBarHeight}>\n                      {descriptor.render()}\n                    </BottomTabBarHeightContext.Provider>\n                  </SceneContent>\n                </ResourceSavingScene>\n              );\n            })}\n          </ScreenContainer>\n          <BottomTabBarHeightCallbackContext.Provider\n            value={this.handleTabBarHeightChange}\n          >\n            {this.renderTabBar()}\n          </BottomTabBarHeightCallbackContext.Provider>\n        </SafeAreaProviderCompat>\n      </NavigationHelpersContext.Provider>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    overflow: 'hidden',\n  },\n  content: {\n    flex: 1,\n  },\n});\n","import * as React from 'react';\nimport {\n  SafeAreaProvider,\n  SafeAreaConsumer,\n  initialWindowSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport {\n  getStatusBarHeight,\n  getBottomSpace,\n} from 'react-native-iphone-x-helper';\n\n// The provider component for safe area initializes asynchornously\n// Until the insets are available, there'll be blank screen\n// To avoid the blank screen, we specify some initial values\nexport const initialSafeAreaInsets = {\n  // Approximate values which are good enough for most cases\n  top: getStatusBarHeight(true),\n  bottom: getBottomSpace(),\n  right: 0,\n  left: 0,\n  // If we are on a newer version of the library, we can get the correct window insets\n  // The component might not be filling the window, but this is good enough for most cases\n  ...initialWindowSafeAreaInsets,\n};\n\ntype Props = {\n  children: React.ReactNode;\n};\n\nexport default function SafeAreaProviderCompat({ children }: Props) {\n  return (\n    <SafeAreaConsumer>\n      {(insets) => {\n        if (insets) {\n          // If we already have insets, don't wrap the stack in another safe area provider\n          // This avoids an issue with updates at the cost of potentially incorrect values\n          // https://github.com/react-navigation/react-navigation/issues/174\n          return children;\n        }\n\n        return (\n          <SafeAreaProvider initialSafeAreaInsets={initialSafeAreaInsets}>\n            {children}\n          </SafeAreaProvider>\n        );\n      }}\n    </SafeAreaConsumer>\n  );\n}\n","import * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport {\n  Screen,\n  screensEnabled,\n  // @ts-ignore\n  shouldUseActivityState,\n} from 'react-native-screens';\n\ntype Props = {\n  isVisible: boolean;\n  children: React.ReactNode;\n  enabled: boolean;\n  style?: any;\n};\n\nconst FAR_FAR_AWAY = 30000; // this should be big enough to move the whole view out of its container\n\nexport default function ResourceSavingScene({\n  isVisible,\n  children,\n  style,\n  ...rest\n}: Props) {\n  // react-native-screens is buggy on web\n  if (screensEnabled?.() && Platform.OS !== 'web') {\n    if (shouldUseActivityState) {\n      return (\n        // @ts-expect-error: there was an `active` prop and no `activityState` in older version and stackPresentation was required\n        <Screen activityState={isVisible ? 2 : 0} style={style} {...rest}>\n          {children}\n        </Screen>\n      );\n    } else {\n      return (\n        // @ts-expect-error: there was an `active` prop and no `activityState` in older version and stackPresentation was required\n        <Screen active={isVisible ? 1 : 0} style={style} {...rest}>\n          {children}\n        </Screen>\n      );\n    }\n  }\n\n  if (Platform.OS === 'web') {\n    return (\n      <View\n        // @ts-expect-error: hidden exists on web, but not in React Native\n        hidden={!isVisible}\n        style={[\n          { display: isVisible ? 'flex' : 'none' },\n          styles.container,\n          style,\n        ]}\n        pointerEvents={isVisible ? 'auto' : 'none'}\n        {...rest}\n      >\n        {children}\n      </View>\n    );\n  }\n\n  return (\n    <View\n      style={[styles.container, style]}\n      // box-none doesn't seem to work properly on Android\n      pointerEvents={isVisible ? 'auto' : 'none'}\n    >\n      <View\n        collapsable={false}\n        removeClippedSubviews={\n          // On iOS, set removeClippedSubviews to true only when not focused\n          // This is an workaround for a bug where the clipped view never re-appears\n          Platform.OS === 'ios' ? !isVisible : true\n        }\n        pointerEvents={isVisible ? 'auto' : 'none'}\n        style={isVisible ? styles.attached : styles.detached}\n      >\n        {children}\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    overflow: 'hidden',\n  },\n  attached: {\n    flex: 1,\n  },\n  detached: {\n    flex: 1,\n    top: FAR_FAR_AWAY,\n  },\n});\n","import React from 'react';\nimport {\n  View,\n  Animated,\n  StyleSheet,\n  Platform,\n  LayoutChangeEvent,\n  StyleProp,\n  ViewStyle,\n} from 'react-native';\nimport {\n  NavigationContext,\n  NavigationRouteContext,\n  TabNavigationState,\n  ParamListBase,\n  CommonActions,\n  useTheme,\n  useLinkBuilder,\n} from '@react-navigation/native';\nimport { useSafeArea, EdgeInsets } from 'react-native-safe-area-context';\n\nimport BottomTabItem from './BottomTabItem';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport useWindowDimensions from '../utils/useWindowDimensions';\nimport useIsKeyboardShown from '../utils/useIsKeyboardShown';\nimport type { BottomTabBarProps, LabelPosition } from '../types';\n\ntype Props = BottomTabBarProps & {\n  activeTintColor?: string;\n  inactiveTintColor?: string;\n};\n\nconst DEFAULT_TABBAR_HEIGHT = 49;\nconst COMPACT_TABBAR_HEIGHT = 32;\nconst DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\ntype Options = {\n  state: TabNavigationState<ParamListBase>;\n  layout: { height: number; width: number };\n  dimensions: { height: number; width: number };\n  tabStyle: StyleProp<ViewStyle>;\n  labelPosition: LabelPosition | undefined;\n  adaptive: boolean | undefined;\n};\n\nconst shouldUseHorizontalLabels = ({\n  state,\n  layout,\n  dimensions,\n  adaptive = true,\n  labelPosition,\n  tabStyle,\n}: Options) => {\n  if (labelPosition) {\n    return labelPosition === 'beside-icon';\n  }\n\n  if (!adaptive) {\n    return false;\n  }\n\n  if (layout.width >= 768) {\n    // Screen size matches a tablet\n    let maxTabItemWidth = DEFAULT_MAX_TAB_ITEM_WIDTH;\n\n    const flattenedStyle = StyleSheet.flatten(tabStyle);\n\n    if (flattenedStyle) {\n      if (typeof flattenedStyle.width === 'number') {\n        maxTabItemWidth = flattenedStyle.width;\n      } else if (typeof flattenedStyle.maxWidth === 'number') {\n        maxTabItemWidth = flattenedStyle.maxWidth;\n      }\n    }\n\n    return state.routes.length * maxTabItemWidth <= layout.width;\n  } else {\n    return dimensions.width > dimensions.height;\n  }\n};\n\nconst getPaddingBottom = (insets: EdgeInsets) =>\n  Math.max(insets.bottom - Platform.select({ ios: 4, default: 0 }), 0);\n\nexport const getTabBarHeight = ({\n  dimensions,\n  insets,\n  style,\n  ...rest\n}: Options & {\n  insets: EdgeInsets;\n  style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n}) => {\n  // @ts-ignore\n  const customHeight = StyleSheet.flatten(style)?.height;\n\n  if (typeof customHeight === 'number') {\n    return customHeight;\n  }\n\n  const isLandscape = dimensions.width > dimensions.height;\n  const horizontalLabels = shouldUseHorizontalLabels({ dimensions, ...rest });\n  const paddingBottom = getPaddingBottom(insets);\n\n  if (\n    Platform.OS === 'ios' &&\n    !Platform.isPad &&\n    isLandscape &&\n    horizontalLabels\n  ) {\n    return COMPACT_TABBAR_HEIGHT + paddingBottom;\n  }\n\n  return DEFAULT_TABBAR_HEIGHT + paddingBottom;\n};\n\nexport default function BottomTabBar({\n  state,\n  navigation,\n  descriptors,\n  activeBackgroundColor,\n  activeTintColor,\n  adaptive,\n  allowFontScaling,\n  inactiveBackgroundColor,\n  inactiveTintColor,\n  keyboardHidesTabBar = false,\n  labelPosition,\n  labelStyle,\n  iconStyle,\n  safeAreaInsets,\n  showLabel,\n  style,\n  tabStyle,\n}: Props) {\n  const { colors } = useTheme();\n  const buildLink = useLinkBuilder();\n\n  const focusedRoute = state.routes[state.index];\n  const focusedDescriptor = descriptors[focusedRoute.key];\n  const focusedOptions = focusedDescriptor.options;\n\n  const dimensions = useWindowDimensions();\n  const isKeyboardShown = useIsKeyboardShown();\n\n  const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);\n\n  const shouldShowTabBar =\n    focusedOptions.tabBarVisible !== false &&\n    !(keyboardHidesTabBar && isKeyboardShown);\n\n  const visibilityAnimationConfigRef = React.useRef(\n    focusedOptions.tabBarVisibilityAnimationConfig\n  );\n\n  React.useEffect(() => {\n    visibilityAnimationConfigRef.current =\n      focusedOptions.tabBarVisibilityAnimationConfig;\n  });\n\n  const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);\n\n  const [visible] = React.useState(\n    () => new Animated.Value(shouldShowTabBar ? 1 : 0)\n  );\n\n  React.useEffect(() => {\n    const visibilityAnimationConfig = visibilityAnimationConfigRef.current;\n\n    if (shouldShowTabBar) {\n      const animation =\n        visibilityAnimationConfig?.show?.animation === 'spring'\n          ? Animated.spring\n          : Animated.timing;\n\n      animation(visible, {\n        toValue: 1,\n        useNativeDriver,\n        duration: 250,\n        ...visibilityAnimationConfig?.show?.config,\n      }).start(({ finished }) => {\n        if (finished) {\n          setIsTabBarHidden(false);\n        }\n      });\n    } else {\n      setIsTabBarHidden(true);\n\n      const animation =\n        visibilityAnimationConfig?.hide?.animation === 'spring'\n          ? Animated.spring\n          : Animated.timing;\n\n      animation(visible, {\n        toValue: 0,\n        useNativeDriver,\n        duration: 200,\n        ...visibilityAnimationConfig?.hide?.config,\n      }).start();\n    }\n  }, [visible, shouldShowTabBar]);\n\n  const [layout, setLayout] = React.useState({\n    height: 0,\n    width: dimensions.width,\n  });\n\n  const handleLayout = (e: LayoutChangeEvent) => {\n    const { height, width } = e.nativeEvent.layout;\n\n    onHeightChange?.(height);\n\n    setLayout((layout) => {\n      if (height === layout.height && width === layout.width) {\n        return layout;\n      } else {\n        return {\n          height,\n          width,\n        };\n      }\n    });\n  };\n\n  const { routes } = state;\n\n  const defaultInsets = useSafeArea();\n\n  const insets = {\n    top: safeAreaInsets?.top ?? defaultInsets.top,\n    right: safeAreaInsets?.right ?? defaultInsets.right,\n    bottom: safeAreaInsets?.bottom ?? defaultInsets.bottom,\n    left: safeAreaInsets?.left ?? defaultInsets.left,\n  };\n\n  const paddingBottom = getPaddingBottom(insets);\n  const tabBarHeight = getTabBarHeight({\n    state,\n    insets,\n    dimensions,\n    layout,\n    adaptive,\n    labelPosition,\n    tabStyle,\n    style,\n  });\n\n  const hasHorizontalLabels = shouldUseHorizontalLabels({\n    state,\n    dimensions,\n    layout,\n    adaptive,\n    labelPosition,\n    tabStyle,\n  });\n\n  return (\n    <Animated.View\n      style={[\n        styles.tabBar,\n        {\n          backgroundColor: colors.card,\n          borderTopColor: colors.border,\n        },\n        {\n          transform: [\n            {\n              translateY: visible.interpolate({\n                inputRange: [0, 1],\n                outputRange: [\n                  layout.height + paddingBottom + StyleSheet.hairlineWidth,\n                  0,\n                ],\n              }),\n            },\n          ],\n          // Absolutely position the tab bar so that the content is below it\n          // This is needed to avoid gap at bottom when the tab bar is hidden\n          position: isTabBarHidden ? 'absolute' : (null as any),\n        },\n        {\n          height: tabBarHeight,\n          paddingBottom,\n          paddingHorizontal: Math.max(insets.left, insets.right),\n        },\n        style,\n      ]}\n      pointerEvents={isTabBarHidden ? 'none' : 'auto'}\n      onLayout={handleLayout}\n    >\n      <View style={styles.content}>\n        {routes.map((route, index) => {\n          const focused = index === state.index;\n          const { options } = descriptors[route.key];\n\n          const onPress = () => {\n            const event = navigation.emit({\n              type: 'tabPress',\n              target: route.key,\n              canPreventDefault: true,\n            });\n\n            if (!focused && !event.defaultPrevented) {\n              navigation.dispatch({\n                ...CommonActions.navigate(route.name),\n                target: state.key,\n              });\n            }\n          };\n\n          const onLongPress = () => {\n            navigation.emit({\n              type: 'tabLongPress',\n              target: route.key,\n            });\n          };\n\n          const label =\n            options.tabBarLabel !== undefined\n              ? options.tabBarLabel\n              : options.title !== undefined\n              ? options.title\n              : route.name;\n\n          const accessibilityLabel =\n            options.tabBarAccessibilityLabel !== undefined\n              ? options.tabBarAccessibilityLabel\n              : typeof label === 'string'\n              ? `${label}, tab, ${index + 1} of ${routes.length}`\n              : undefined;\n\n          return (\n            <NavigationContext.Provider\n              key={route.key}\n              value={descriptors[route.key].navigation}\n            >\n              <NavigationRouteContext.Provider value={route}>\n                <BottomTabItem\n                  route={route}\n                  focused={focused}\n                  horizontal={hasHorizontalLabels}\n                  onPress={onPress}\n                  onLongPress={onLongPress}\n                  accessibilityLabel={accessibilityLabel}\n                  to={buildLink(route.name, route.params)}\n                  testID={options.tabBarTestID}\n                  allowFontScaling={allowFontScaling}\n                  activeTintColor={activeTintColor}\n                  inactiveTintColor={inactiveTintColor}\n                  activeBackgroundColor={activeBackgroundColor}\n                  inactiveBackgroundColor={inactiveBackgroundColor}\n                  button={options.tabBarButton}\n                  icon={options.tabBarIcon}\n                  badge={options.tabBarBadge}\n                  badgeStyle={options.tabBarBadgeStyle}\n                  label={label}\n                  showLabel={showLabel}\n                  labelStyle={labelStyle}\n                  iconStyle={iconStyle}\n                  style={tabStyle}\n                />\n              </NavigationRouteContext.Provider>\n            </NavigationContext.Provider>\n          );\n        })}\n      </View>\n    </Animated.View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  tabBar: {\n    left: 0,\n    right: 0,\n    bottom: 0,\n    borderTopWidth: StyleSheet.hairlineWidth,\n    elevation: 8,\n  },\n  content: {\n    flex: 1,\n    flexDirection: 'row',\n  },\n});\n","import React from 'react';\nimport {\n  View,\n  Text,\n  TouchableWithoutFeedback,\n  StyleSheet,\n  Platform,\n  StyleProp,\n  ViewStyle,\n  TextStyle,\n  GestureResponderEvent,\n} from 'react-native';\nimport { Link, Route, useTheme } from '@react-navigation/native';\nimport Color from 'color';\n\nimport TabBarIcon from './TabBarIcon';\nimport type { BottomTabBarButtonProps, LabelPosition } from '../types';\n\ntype Props = {\n  /**\n   * Whether the tab is focused.\n   */\n  focused: boolean;\n  /**\n   * The route object which should be specified by the tab.\n   */\n  route: Route<string>;\n  /**\n   * The label text of the tab.\n   */\n  label:\n    | string\n    | ((props: {\n        focused: boolean;\n        color: string;\n        position: LabelPosition;\n      }) => React.ReactNode);\n  /**\n   * Icon to display for the tab.\n   */\n  icon?: (props: {\n    focused: boolean;\n    size: number;\n    color: string;\n  }) => React.ReactNode;\n  /**\n   * Text to show in a badge on the tab icon.\n   */\n  badge?: number | string;\n  /**\n   * Custom style for the badge.\n   */\n  badgeStyle?: StyleProp<TextStyle>;\n  /**\n   * URL to use for the link to the tab.\n   */\n  to?: string;\n  /**\n   * The button for the tab. Uses a `TouchableWithoutFeedback` by default.\n   */\n  button?: (props: BottomTabBarButtonProps) => React.ReactNode;\n  /**\n   * The accessibility label for the tab.\n   */\n  accessibilityLabel?: string;\n  /**\n   * An unique ID for testing for the tab.\n   */\n  testID?: string;\n  /**\n   * Function to execute on press in React Native.\n   * On the web, this will use onClick.\n   */\n  onPress: (\n    e: React.MouseEvent<HTMLElement, MouseEvent> | GestureResponderEvent\n  ) => void;\n  /**\n   * Function to execute on long press.\n   */\n  onLongPress: (e: GestureResponderEvent) => void;\n  /**\n   * Whether the label should be aligned with the icon horizontally.\n   */\n  horizontal: boolean;\n  /**\n   * Color for the icon and label when the item is active.\n   */\n  activeTintColor?: string;\n  /**\n   * Color for the icon and label when the item is inactive.\n   */\n  inactiveTintColor?: string;\n  /**\n   * Background color for item when its active.\n   */\n  activeBackgroundColor?: string;\n  /**\n   * Background color for item when its inactive.\n   */\n  inactiveBackgroundColor?: string;\n  /**\n   * Whether to show the label text for the tab.\n   */\n  showLabel?: boolean;\n  /**\n   * Whether to allow scaling the font for the label for accessibility purposes.\n   */\n  allowFontScaling?: boolean;\n  /**\n   * Style object for the label element.\n   */\n  labelStyle?: StyleProp<TextStyle>;\n  /**\n   * Style object for the icon element.\n   */\n  iconStyle?: StyleProp<ViewStyle>;\n  /**\n   * Style object for the wrapper element.\n   */\n  style?: StyleProp<ViewStyle>;\n};\n\nexport default function BottomTabBarItem({\n  focused,\n  route,\n  label,\n  icon,\n  badge,\n  badgeStyle,\n  to,\n  button = ({\n    children,\n    style,\n    onPress,\n    to,\n    accessibilityRole,\n    accessibilityState,\n    ...rest\n  }: BottomTabBarButtonProps) => {\n    if (Platform.OS === 'web' && to) {\n      // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n      // We need to use `onClick` to be able to prevent default browser handling of links.\n      return (\n        <Link\n          {...rest}\n          to={to}\n          style={[styles.button, style]}\n          onPress={(e: any) => {\n            if (\n              !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n              (e.button == null || e.button === 0) // ignore everything but left clicks\n            ) {\n              e.preventDefault();\n              onPress?.(e);\n            }\n          }}\n        >\n          {children}\n        </Link>\n      );\n    } else {\n      return (\n        <TouchableWithoutFeedback\n          {...rest}\n          accessibilityRole={accessibilityRole}\n          accessibilityState={accessibilityState}\n          onPress={onPress}\n        >\n          <View style={style}>{children}</View>\n        </TouchableWithoutFeedback>\n      );\n    }\n  },\n  accessibilityLabel,\n  testID,\n  onPress,\n  onLongPress,\n  horizontal,\n  activeTintColor: customActiveTintColor,\n  inactiveTintColor: customInactiveTintColor,\n  activeBackgroundColor = 'transparent',\n  inactiveBackgroundColor = 'transparent',\n  showLabel = true,\n  allowFontScaling,\n  labelStyle,\n  iconStyle,\n  style,\n}: Props) {\n  const { colors } = useTheme();\n\n  const activeTintColor =\n    customActiveTintColor === undefined\n      ? colors.primary\n      : customActiveTintColor;\n\n  const inactiveTintColor =\n    customInactiveTintColor === undefined\n      ? Color(colors.text).mix(Color(colors.card), 0.5).hex()\n      : customInactiveTintColor;\n\n  const renderLabel = ({ focused }: { focused: boolean }) => {\n    if (showLabel === false) {\n      return null;\n    }\n\n    const color = focused ? activeTintColor : inactiveTintColor;\n\n    if (typeof label === 'string') {\n      return (\n        <Text\n          numberOfLines={1}\n          style={[\n            styles.label,\n            { color },\n            horizontal ? styles.labelBeside : styles.labelBeneath,\n            labelStyle,\n          ]}\n          allowFontScaling={allowFontScaling}\n        >\n          {label}\n        </Text>\n      );\n    }\n\n    return label({\n      focused,\n      color,\n      position: horizontal ? 'beside-icon' : 'below-icon',\n    });\n  };\n\n  const renderIcon = ({ focused }: { focused: boolean }) => {\n    if (icon === undefined) {\n      return null;\n    }\n\n    const activeOpacity = focused ? 1 : 0;\n    const inactiveOpacity = focused ? 0 : 1;\n\n    return (\n      <TabBarIcon\n        route={route}\n        horizontal={horizontal}\n        badge={badge}\n        badgeStyle={badgeStyle}\n        activeOpacity={activeOpacity}\n        inactiveOpacity={inactiveOpacity}\n        activeTintColor={activeTintColor}\n        inactiveTintColor={inactiveTintColor}\n        renderIcon={icon}\n        style={iconStyle}\n      />\n    );\n  };\n\n  const scene = { route, focused };\n\n  const backgroundColor = focused\n    ? activeBackgroundColor\n    : inactiveBackgroundColor;\n\n  return button({\n    to,\n    onPress,\n    onLongPress,\n    testID,\n    accessibilityLabel,\n    accessibilityRole: 'button',\n    accessibilityState: { selected: focused },\n    // @ts-expect-error: keep for compatibility with older React Native versions\n    accessibilityStates: focused ? ['selected'] : [],\n    style: [\n      styles.tab,\n      { backgroundColor },\n      horizontal ? styles.tabLandscape : styles.tabPortrait,\n      style,\n    ],\n    children: (\n      <React.Fragment>\n        {renderIcon(scene)}\n        {renderLabel(scene)}\n      </React.Fragment>\n    ),\n  }) as React.ReactElement;\n}\n\nconst styles = StyleSheet.create({\n  tab: {\n    flex: 1,\n    alignItems: 'center',\n  },\n  tabPortrait: {\n    justifyContent: 'flex-end',\n    flexDirection: 'column',\n  },\n  tabLandscape: {\n    justifyContent: 'center',\n    flexDirection: 'row',\n  },\n  label: {\n    textAlign: 'center',\n    backgroundColor: 'transparent',\n  },\n  labelBeneath: {\n    fontSize: 10,\n  },\n  labelBeside: {\n    fontSize: 13,\n    marginLeft: 20,\n    marginTop: 3,\n  },\n  button: {\n    display: 'flex',\n  },\n});\n","import React from 'react';\nimport {\n  View,\n  StyleSheet,\n  StyleProp,\n  TextStyle,\n  ViewStyle,\n} from 'react-native';\nimport type { Route } from '@react-navigation/native';\nimport Badge from './Badge';\n\ntype Props = {\n  route: Route<string>;\n  horizontal: boolean;\n  badge?: string | number;\n  badgeStyle?: StyleProp<TextStyle>;\n  activeOpacity: number;\n  inactiveOpacity: number;\n  activeTintColor: string;\n  inactiveTintColor: string;\n  renderIcon: (props: {\n    focused: boolean;\n    color: string;\n    size: number;\n  }) => React.ReactNode;\n  style: StyleProp<ViewStyle>;\n};\n\nexport default function TabBarIcon({\n  horizontal,\n  badge,\n  badgeStyle,\n  activeOpacity,\n  inactiveOpacity,\n  activeTintColor,\n  inactiveTintColor,\n  renderIcon,\n  style,\n}: Props) {\n  const size = 25;\n\n  // We render the icon twice at the same position on top of each other:\n  // active and inactive one, so we can fade between them.\n  return (\n    <View\n      style={[horizontal ? styles.iconHorizontal : styles.iconVertical, style]}\n    >\n      <View style={[styles.icon, { opacity: activeOpacity }]}>\n        {renderIcon({\n          focused: true,\n          size,\n          color: activeTintColor,\n        })}\n      </View>\n      <View style={[styles.icon, { opacity: inactiveOpacity }]}>\n        {renderIcon({\n          focused: false,\n          size,\n          color: inactiveTintColor,\n        })}\n      </View>\n      <Badge\n        visible={badge != null}\n        style={[\n          styles.badge,\n          horizontal ? styles.badgeHorizontal : styles.badgeVertical,\n          badgeStyle,\n        ]}\n        size={(size * 3) / 4}\n      >\n        {badge}\n      </Badge>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  icon: {\n    // We render the icon twice at the same position on top of each other:\n    // active and inactive one, so we can fade between them:\n    // Cover the whole iconContainer:\n    position: 'absolute',\n    alignSelf: 'center',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: '100%',\n    width: '100%',\n    // Workaround for react-native >= 0.54 layout bug\n    minWidth: 25,\n  },\n  iconVertical: {\n    flex: 1,\n  },\n  iconHorizontal: {\n    height: '100%',\n    marginTop: 3,\n  },\n  badge: {\n    position: 'absolute',\n    left: 3,\n  },\n  badgeVertical: {\n    top: 3,\n  },\n  badgeHorizontal: {\n    top: 7,\n  },\n});\n","import * as React from 'react';\nimport { Animated, StyleSheet, StyleProp, TextStyle } from 'react-native';\nimport color from 'color';\nimport { useTheme } from '@react-navigation/native';\n\ntype Props = {\n  /**\n   * Whether the badge is visible\n   */\n  visible: boolean;\n  /**\n   * Content of the `Badge`.\n   */\n  children?: string | number;\n  /**\n   * Size of the `Badge`.\n   */\n  size?: number;\n  /**\n   * Style object for the tab bar container.\n   */\n  style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n  visible = true,\n  size = 18,\n  children,\n  style,\n  ...rest\n}: Props) {\n  const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n  const [rendered, setRendered] = React.useState(visible ? true : false);\n\n  const theme = useTheme();\n\n  React.useEffect(() => {\n    if (!rendered) {\n      return;\n    }\n\n    Animated.timing(opacity, {\n      toValue: visible ? 1 : 0,\n      duration: 150,\n      useNativeDriver: true,\n    }).start(({ finished }) => {\n      if (finished && !visible) {\n        setRendered(false);\n      }\n    });\n  }, [opacity, rendered, visible]);\n\n  if (visible && !rendered) {\n    setRendered(true);\n  }\n\n  if (!visible && !rendered) {\n    return null;\n  }\n\n  // @ts-expect-error: backgroundColor definitely exists\n  const { backgroundColor = theme.colors.notification, ...restStyle } =\n    StyleSheet.flatten(style) || {};\n  const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n  const borderRadius = size / 2;\n  const fontSize = Math.floor((size * 3) / 4);\n\n  return (\n    <Animated.Text\n      numberOfLines={1}\n      style={[\n        {\n          opacity,\n          transform: [\n            {\n              scale: opacity.interpolate({\n                inputRange: [0, 1],\n                outputRange: [0.5, 1],\n              }),\n            },\n          ],\n          backgroundColor,\n          color: textColor,\n          fontSize,\n          lineHeight: size - 1,\n          height: size,\n          minWidth: size,\n          borderRadius,\n        },\n        styles.container,\n        restStyle,\n      ]}\n      {...rest}\n    >\n      {children}\n    </Animated.Text>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    alignSelf: 'flex-end',\n    textAlign: 'center',\n    paddingHorizontal: 4,\n    overflow: 'hidden',\n  },\n});\n","import * as React from 'react';\n\nexport default React.createContext<((height: number) => void) | undefined>(\n  undefined\n);\n","import * as React from 'react';\nimport { ScaledSize, Dimensions } from 'react-native';\n\n// This is similar to the new useWindowDimensions hook in react-native\n// However, we have a custom implementation to support older RN versions\nexport default function useWindowDimensions() {\n  const [dimensions, setDimensions] = React.useState(() => {\n    // `height` and `width` maybe undefined during SSR, so we initialize them\n    const { height = 0, width = 0 } = Dimensions.get('window');\n\n    return { height, width };\n  });\n\n  React.useEffect(() => {\n    const onChange = ({ window }: { window: ScaledSize }) => {\n      const { width, height } = window;\n\n      setDimensions((d) => {\n        if (width === d.width && height === d.height) {\n          return d;\n        }\n\n        return { width, height };\n      });\n    };\n\n    // We might have missed an update before the listener was added\n    // So make sure to update the dimensions\n    onChange({ window: Dimensions.get('window') });\n\n    Dimensions.addEventListener('change', onChange);\n\n    return () => Dimensions.removeEventListener('change', onChange);\n  }, []);\n\n  return dimensions;\n}\n","import * as React from 'react';\nimport { Keyboard, Platform } from 'react-native';\n\nexport default function useIsKeyboardShown() {\n  const [isKeyboardShown, setIsKeyboardShown] = React.useState(false);\n\n  React.useEffect(() => {\n    const handleKeyboardShow = () => setIsKeyboardShown(true);\n    const handleKeyboardHide = () => setIsKeyboardShown(false);\n\n    if (Platform.OS === 'ios') {\n      Keyboard.addListener('keyboardWillShow', handleKeyboardShow);\n      Keyboard.addListener('keyboardWillHide', handleKeyboardHide);\n    } else {\n      Keyboard.addListener('keyboardDidShow', handleKeyboardShow);\n      Keyboard.addListener('keyboardDidHide', handleKeyboardHide);\n    }\n\n    return () => {\n      if (Platform.OS === 'ios') {\n        Keyboard.removeListener('keyboardWillShow', handleKeyboardShow);\n        Keyboard.removeListener('keyboardWillHide', handleKeyboardHide);\n      } else {\n        Keyboard.removeListener('keyboardDidShow', handleKeyboardShow);\n        Keyboard.removeListener('keyboardDidHide', handleKeyboardHide);\n      }\n    };\n  }, []);\n\n  return isKeyboardShown;\n}\n","import * as React from 'react';\n\nexport default React.createContext<number | undefined>(undefined);\n","import * as React from 'react';\nimport BottomTabBarHeightContext from './BottomTabBarHeightContext';\n\nexport default function useFloatingBottomTabBarHeight() {\n  const height = React.useContext(BottomTabBarHeightContext);\n\n  if (height === undefined) {\n    throw new Error(\n      \"Couldn't find the bottom tab bar height. Are you inside a screen in Bottom Tab Navigator?\"\n    );\n  }\n\n  return height;\n}\n","// RootNavigation.js\nimport * as React from 'react';\nimport { camelCase } from 'lodash';\nimport { StackActions } from '@react-navigation/native';\nimport { getTabBarPages, setTabInitRoute, handleUrl } from './utils/index';\nlet routeEvtChannel;\nexport const isReadyRef = React.createRef();\nexport const navigationRef = React.createRef();\nexport function navigateTo(option) {\n    return navigate(option, 'navigateTo');\n}\nexport function redirectTo(option) {\n    return navigate(option, 'redirectTo');\n}\nexport function navigateBack(option = {}) {\n    return navigate(option, 'navigateBack');\n}\nexport function switchTab(option) {\n    return navigate(option, 'switchTab');\n}\nexport function reLaunch(option) {\n    return navigate(option, 'reLaunch');\n}\nexport function navigate(option, method) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    const { success, complete, fail } = option;\n    let errMsg;\n    let routeParam;\n    const path = option.url;\n    if (path) {\n        routeParam = handleUrl(path);\n    }\n    try {\n        if (method === 'navigateTo') {\n            (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.dispatch(StackActions.push(routeParam.pageName, routeParam.params));\n        }\n        else if (method === 'redirectTo') {\n            (_b = navigationRef.current) === null || _b === void 0 ? void 0 : _b.dispatch(StackActions.replace(routeParam.pageName, routeParam.params));\n        }\n        else if (method === 'switchTab') {\n            const states = (_c = navigationRef.current) === null || _c === void 0 ? void 0 : _c.getRootState();\n            if ((states === null || states === void 0 ? void 0 : states.routes[0].name) !== 'tabNav') {\n                states && (states === null || states === void 0 ? void 0 : states.routes.length) > 1 && ((_d = navigationRef.current) === null || _d === void 0 ? void 0 : _d.dispatch(StackActions.popToTop()));\n                (_e = navigationRef.current) === null || _e === void 0 ? void 0 : _e.dispatch(StackActions.replace('tabNav'));\n                setTabInitRoute(routeParam.pageName);\n            }\n            else {\n                (_f = navigationRef.current) === null || _f === void 0 ? void 0 : _f.navigate(routeParam.pageName, routeParam.params);\n            }\n        }\n        else if (method === 'navigateBack') {\n            const number = option.delta ? option.delta : 1;\n            const states = (_g = navigationRef.current) === null || _g === void 0 ? void 0 : _g.getRootState();\n            const index = number && ((states && states.index < number) ? states === null || states === void 0 ? void 0 : states.index : number);\n            (_h = navigationRef.current) === null || _h === void 0 ? void 0 : _h.dispatch(StackActions.pop(index));\n        }\n        else if (method === 'reLaunch') {\n            if (isTabPage()) {\n                isTabPage(path)\n                    ? (_j = navigationRef.current) === null || _j === void 0 ? void 0 : _j.navigate(routeParam.pageName, routeParam.params)\n                    : (_k = navigationRef.current) === null || _k === void 0 ? void 0 : _k.dispatch(StackActions.push(routeParam.pageName, routeParam.params));\n            }\n            else {\n                (_l = navigationRef.current) === null || _l === void 0 ? void 0 : _l.dispatch(StackActions.popToTop());\n                (_m = navigationRef.current) === null || _m === void 0 ? void 0 : _m.dispatch(StackActions.replace(routeParam.pageName, routeParam.params));\n            }\n        }\n    }\n    catch (error) {\n        errMsg = error;\n    }\n    return new Promise((resolve, reject) => {\n        if (errMsg) {\n            fail && fail({ errMsg });\n            complete && complete({ errMsg });\n            reject(new Error(errMsg));\n        }\n        else {\n            const msg = {\n                errMsg: `${method}:ok`\n            };\n            if (method === 'navigateTo') {\n                routeEvtChannel.addEvents(option.events);\n                msg.eventChannel = routeEvtChannel;\n            }\n            success && success(msg);\n            complete && complete(msg);\n            resolve(msg);\n        }\n    });\n}\nexport function isTabPage(path = '') {\n    var _a;\n    const tabPages = getTabBarPages();\n    let pageName = '';\n    if (path) {\n        pageName = camelCase(path.startsWith('/') ? path : `/${path}`);\n    }\n    else {\n        const route = ((_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.getCurrentRoute()) || {};\n        pageName = (route === null || route === void 0 ? void 0 : route.name) || '';\n    }\n    return tabPages.indexOf(pageName) !== -1;\n}\nexport function getCurrentRoute() {\n    var _a;\n    const routeState = (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.getRootState();\n    const routes = routeState === null || routeState === void 0 ? void 0 : routeState.routes;\n    const routeKeys = [];\n    if (routes) {\n        routes.forEach(item => {\n            var _a, _b, _c, _d;\n            if (item.name === 'tabNav') {\n                const index = (_b = (_a = item.state) === null || _a === void 0 ? void 0 : _a.index) !== null && _b !== void 0 ? _b : 0;\n                const tabRoutes = (_d = (_c = item.state) === null || _c === void 0 ? void 0 : _c.routes) !== null && _d !== void 0 ? _d : [];\n                tabRoutes && routeKeys.push(tabRoutes[index].key);\n            }\n            else {\n                routeKeys.push(item.key);\n            }\n        });\n    }\n    return routeKeys;\n}\nexport const getRouteEventChannel = (routeChannel) => {\n    routeEvtChannel = routeChannel;\n};\n//# sourceMappingURL=rootNavigation.js.map","import { camelCase } from 'lodash';\nimport { parseUrl } from 'query-string';\nconst globalAny = global;\nexport function isUrl(str) {\n    const protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\n    const localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\n    const nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\n    if (typeof str !== 'string') {\n        return false;\n    }\n    const match = str.match(protocolAndDomainRE);\n    if (!match) {\n        return false;\n    }\n    const everythingAfterProtocol = match[1];\n    if (!everythingAfterProtocol) {\n        return false;\n    }\n    if (localhostDomainRE.test(everythingAfterProtocol) ||\n        nonLocalhostDomainRE.test(everythingAfterProtocol)) {\n        return true;\n    }\n    return false;\n}\nexport function isFunction(obj) {\n    return typeof obj === 'function';\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function isEmptyObject(obj) {\n    if (obj == null) {\n        return true;\n    }\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function successHandler(success, complete) {\n    return function (res) {\n        success && isFunction(success) && success(res);\n        complete && isFunction(complete) && complete(res);\n        return Promise.resolve(res);\n    };\n}\nexport function errorHandler(fail, complete) {\n    return function (res) {\n        fail && isFunction(fail) && fail(res);\n        complete && isFunction(complete) && complete(res);\n        return Promise.reject(res);\n    };\n}\nexport function getTabItemConfig(index, key) {\n    const _taroTabBarIconConfig = globalAny.__taroTabBarIconConfig;\n    const _taroTabItems = _taroTabBarIconConfig.tabItems;\n    return _taroTabItems[index] && _taroTabItems[index][key];\n}\nexport function getTabConfig(key) {\n    const _taroTabBarIconConfig = globalAny.__taroTabBarIconConfig;\n    return _taroTabBarIconConfig[key];\n}\nexport function setTabConfig(key, value) {\n    const tabBarConfig = globalAny.__taroTabBarIconConfig;\n    tabBarConfig[key] = value;\n    globalAny.__taroTabBarIconConfig = tabBarConfig;\n}\nexport function setTabInitRoute(routeName) {\n    globalAny.__taroTabInitRoute = routeName;\n}\nexport function getTabInitRoute() {\n    return globalAny.__taroTabInitRoute || '';\n}\nexport function getTabVisible() {\n    return getTabConfig('tabBarVisible');\n}\nexport function getDefalutTabItem(index) {\n    var _a;\n    const _taroAppConfig = globalAny.__taroAppConfig || {};\n    const tabBar = ((_a = _taroAppConfig === null || _taroAppConfig === void 0 ? void 0 : _taroAppConfig.appConfig) === null || _a === void 0 ? void 0 : _a.tabBar) || [];\n    return (tabBar === null || tabBar === void 0 ? void 0 : tabBar.list[index]) || {};\n}\n// camelCase之后的页面\nexport function getTabBarPages() {\n    var _a, _b;\n    const tabBar = ((_b = (_a = globalAny.__taroAppConfig) === null || _a === void 0 ? void 0 : _a.appConfig) === null || _b === void 0 ? void 0 : _b.tabBar) || {};\n    if (isEmptyObject(tabBar))\n        return [];\n    const pages = [];\n    tabBar === null || tabBar === void 0 ? void 0 : tabBar.list.forEach((item) => {\n        const path = item.pagePath.startsWith('/') ? item.pagePath : `/${item.pagePath}`;\n        pages.push(camelCase(path));\n    });\n    return pages;\n}\n// 处理url转换成pageName与params\nexport function handleUrl(url) {\n    const path = url.split('?')[0];\n    const pageName = camelCase(path.startsWith('/') ? path : `/${path}`);\n    const params = parseUrl(url.startsWith('/') ? url.substr(1) : url).query || {};\n    return {\n        pageName,\n        params\n    };\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line no-use-before-define\nimport * as React from 'react';\nimport { Link } from '@react-navigation/native';\nimport { withSafeAreaInsets } from 'react-native-safe-area-context';\nimport { View, TouchableWithoutFeedback, Animated, StyleSheet, Platform, Dimensions, Keyboard } from 'react-native';\nimport { getTabVisible, getTabConfig, getTabItemConfig, getDefalutTabItem, isUrl } from '../utils/index';\nimport { getInitSafeAreaInsets } from './tabBarUtils';\nimport TabBarItem from './TabBarItem';\nconst DEFAULT_TABBAR_HEIGHT = 55;\nconst COMPACT_TABBAR_HEIGHT = 32;\n// const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\nconst useNativeDriver = Platform.OS !== 'web';\nconst styles = StyleSheet.create({\n    tabBar: {\n        left: 0,\n        right: 0,\n        bottom: 0,\n        borderTopWidth: StyleSheet.hairlineWidth,\n        elevation: 8\n    },\n    tab: {\n        flex: 1,\n        alignItems: 'center'\n    },\n    tabPortrait: {\n        justifyContent: 'flex-end',\n        flexDirection: 'column'\n    },\n    tabLandscape: {\n        justifyContent: 'center',\n        flexDirection: 'row'\n    }\n});\nexport class TabBar extends React.PureComponent {\n    constructor(props) {\n        super(props);\n        const { height = 0, width = 0 } = Dimensions.get('window');\n        const { safeAreaInsets, userOptions = {} } = this.props;\n        const { tabBarVisible = true } = userOptions;\n        const tabVisible = tabBarVisible === false ? false : getTabVisible();\n        this.state = {\n            visible: new Animated.Value(tabVisible ? 1 : 0),\n            tabVisible: tabVisible,\n            isKeyboardShown: false,\n            layout: {\n                width,\n                height\n            },\n            insets: safeAreaInsets || getInitSafeAreaInsets()\n        };\n    }\n    componentDidMount() {\n        const { keyboardHidesTabBar = false } = this.props;\n        if (keyboardHidesTabBar) {\n            if (Platform.OS === 'ios') {\n                Keyboard.addListener('keyboardWillShow', () => this.handleKeyboardShow());\n                Keyboard.addListener('keyboardWillHide', () => this.handleKeyboardHide());\n            }\n            else {\n                Keyboard.addListener('keyboardDidShow', () => this.handleKeyboardShow());\n                Keyboard.addListener('keyboardDidHide', () => this.handleKeyboardHide());\n            }\n        }\n    }\n    componentWillUnmount() {\n        const { keyboardHidesTabBar = false } = this.props;\n        if (keyboardHidesTabBar) {\n            if (Platform.OS === 'ios') {\n                Keyboard.removeListener('keyboardWillShow', () => this.handleKeyboardShow());\n                Keyboard.removeListener('keyboardWillHide', () => this.handleKeyboardHide());\n            }\n            else {\n                Keyboard.removeListener('keyboardDidShow', () => this.handleKeyboardShow());\n                Keyboard.removeListener('keyboardDidHide', () => this.handleKeyboardHide());\n            }\n        }\n    }\n    UNSAFE_componentWillReceiveProps() {\n        const curVisible = getTabVisible();\n        const { tabVisible } = this.state;\n        if (curVisible !== tabVisible) {\n            this.setState({\n                tabVisible: curVisible\n            });\n            this.setTabBarHidden(!curVisible);\n        }\n    }\n    handleKeyboardShow() {\n        this.setState({\n            isKeyboardShown: true,\n            tabVisible: false\n        });\n        this.setTabBarHidden(true);\n    }\n    handleKeyboardHide() {\n        this.setState({\n            isKeyboardShown: false,\n            tabVisible: getTabVisible()\n        });\n        this.setTabBarHidden(false);\n    }\n    setTabBarHidden(isHidden) {\n        if (!getTabConfig('needAnimate'))\n            return;\n        const { visible } = this.state;\n        if (isHidden) {\n            this.setState({\n                tabVisible: false\n            });\n            Animated.timing(visible, {\n                toValue: 0,\n                duration: 200,\n                useNativeDriver\n            }).start();\n        }\n        else {\n            Animated.timing(visible, {\n                toValue: 1,\n                duration: 250,\n                useNativeDriver\n            }).start(({ finished }) => {\n                if (finished) {\n                    this.setState({\n                        tabVisible: true\n                    });\n                }\n            });\n        }\n    }\n    isLandscape() {\n        const { height = 0, width = 0 } = Dimensions.get('window');\n        return width > height;\n    }\n    getDefaultTabBarHeight() {\n        if (Platform.OS === 'ios' &&\n            !Platform.isPad && this.isLandscape()) {\n            return COMPACT_TABBAR_HEIGHT;\n        }\n        return DEFAULT_TABBAR_HEIGHT;\n    }\n    // 只有最简单的格式\n    buildLink(name, params) {\n        const keys = Object.keys(params).sort();\n        let str = '';\n        keys.forEach((v) => {\n            str += (v + '=' + encodeURIComponent(params[v]) + '&');\n        });\n        str = str.slice(0, str.length - 1);\n        return str ? `${name}?${str}` : `${name}`;\n    }\n    handleLayout(e) {\n        const { layout } = this.state;\n        const { height, width } = e.nativeEvent.layout;\n        if (layout.height !== height && layout.width !== width) {\n            this.setState({\n                layout: {\n                    width,\n                    height\n                }\n            });\n        }\n    }\n    getTabBarStyle() {\n        const { activeTintColor, inactiveTintColor, style = {} } = this.props;\n        const tabStyle = getTabConfig('tabStyle');\n        const { color = '', selectedColor = '', backgroundColor = '', borderStyle = '' } = tabStyle;\n        const defaultBackground = (style === null || style === void 0 ? void 0 : style.backgroundColor) || 'rgb(255, 255, 255)';\n        const defalutBorderTopColor = (style === null || style === void 0 ? void 0 : style.borderTopColor) || 'rgb(216, 216, 216)';\n        return {\n            backgroundColor: backgroundColor || defaultBackground,\n            borderTopColor: borderStyle || defalutBorderTopColor,\n            color: color || inactiveTintColor,\n            selectedColor: selectedColor || activeTintColor\n        };\n    }\n    getTabIconSource(index, focused) {\n        var _a, _b;\n        const item = getDefalutTabItem(index);\n        const iconPath = (_a = getTabItemConfig(index, 'iconPath')) !== null && _a !== void 0 ? _a : item === null || item === void 0 ? void 0 : item.iconPath;\n        const selectedIconPath = (_b = getTabItemConfig(index, 'selectedIconPath')) !== null && _b !== void 0 ? _b : item === null || item === void 0 ? void 0 : item.selectedIconPath;\n        const path = focused ? selectedIconPath : iconPath;\n        return isUrl(path) ? { uri: path } : { uri: path };\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    renderContent() {\n        const { state, descriptors, navigation } = this.props;\n        const horizontal = true;\n        const tabSelfStyle = this.getTabBarStyle();\n        return React.createElement(View, { style: { flexDirection: 'row', flex: 1 }, onLayout: () => this.handleLayout }, state.routes.map((route, index) => {\n            const focused = index === state.index;\n            const { options } = descriptors[route.key];\n            const tabLabel = getTabItemConfig(index, 'tabBarLabel');\n            const label = tabLabel || (options.tabBarLabel !== undefined\n                ? options.tabBarLabel\n                : options.title !== undefined\n                    ? options.title\n                    : route.name);\n            const accessibilityLabel = options.tabBarAccessibilityLabel !== undefined\n                ? options.tabBarAccessibilityLabel\n                : typeof label === 'string'\n                    ? `${label}, tab, ${index + 1} of ${state.routes.length}`\n                    : undefined;\n            const onPress = () => {\n                const event = navigation.emit({\n                    type: 'tabPress',\n                    target: route.key\n                });\n                if (!focused && !event.defaultPrevented) {\n                    navigation.navigate(route.name);\n                }\n            };\n            const onLongPress = () => {\n                navigation.emit({\n                    type: 'tabLongPress',\n                    target: route.key\n                });\n            };\n            const badge = getTabItemConfig(index, 'tabBarBadge');\n            const showRedDot = getTabItemConfig(index, 'showRedDot') || false;\n            const labelColor = focused ? tabSelfStyle.selectedColor : tabSelfStyle.color;\n            const source = this.getTabIconSource(index, focused);\n            if (Platform.OS === 'web') {\n                const linkto = this.buildLink(route.name, route.params);\n                return (React.createElement(Link, { to: linkto, style: [], onPress: (e) => {\n                        if (!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) &&\n                            (e.button == null || e.button === 0)) {\n                            e.preventDefault();\n                            onPress();\n                        }\n                    } },\n                    React.createElement(TabBarItem, Object.assign({ showRedDot: showRedDot, badge: badge, label: label, horizontal: horizontal, labelColor: labelColor, iconSource: source, size: 25 }, this.props))));\n            }\n            else {\n                return (React.createElement(TouchableWithoutFeedback, { key: options.tabBarTestID, accessibilityRole: \"button\", accessibilityState: focused ? { selected: true } : {}, accessibilityLabel: accessibilityLabel, testID: options.tabBarTestID, onPress: onPress, onLongPress: onLongPress },\n                    React.createElement(View, { style: [styles.tab, horizontal ? styles.tabLandscape : styles.tabPortrait] },\n                        React.createElement(TabBarItem, Object.assign({ label: label, badge: badge, showRedDot: showRedDot, horizontal: true, labelColor: labelColor, iconSource: source, size: 25 }, this.props)))));\n            }\n        }));\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        const { insets, visible, layout, tabVisible, isKeyboardShown } = this.state;\n        const paddingBottom = Math.max((insets === null || insets === void 0 ? void 0 : insets.bottom) - Platform.select({ ios: 4, default: 0 }), 5);\n        const { style } = this.props;\n        const tabBarStyle = this.getTabBarStyle();\n        const needAnimate = getTabConfig('needAnimate');\n        const showTabBar = tabVisible !== false && !isKeyboardShown;\n        if (!needAnimate) {\n            // eslint-disable-next-line multiline-ternary\n            return (!showTabBar ? null\n                : (React.createElement(View, { style: [\n                        styles.tabBar,\n                        {\n                            height: this.getDefaultTabBarHeight() + paddingBottom,\n                            paddingBottom,\n                            paddingHorizontal: Math.max(insets.left, insets.right)\n                        },\n                        style,\n                        {\n                            backgroundColor: tabBarStyle.backgroundColor,\n                            borderTopColor: tabBarStyle.borderTopColor\n                        }\n                    ] }, this.renderContent())));\n        }\n        else {\n            return (React.createElement(Animated.View, { style: [\n                    styles.tabBar,\n                    showTabBar ? {\n                        height: this.getDefaultTabBarHeight() + paddingBottom,\n                        paddingBottom,\n                        paddingHorizontal: Math.max(insets.left, insets.right)\n                    } : {},\n                    {\n                        transform: [\n                            {\n                                translateY: visible.interpolate({\n                                    inputRange: [0, 1],\n                                    outputRange: [\n                                        layout.height + paddingBottom + StyleSheet.hairlineWidth,\n                                        0\n                                    ]\n                                })\n                            }\n                        ],\n                        position: showTabBar ? 'absolute' : null\n                    },\n                    style,\n                    {\n                        backgroundColor: tabBarStyle.backgroundColor,\n                        borderTopColor: tabBarStyle.borderTopColor\n                    }\n                ], pointerEvents: !tabVisible ? 'none' : 'auto' }, this.renderContent()));\n        }\n    }\n}\nexport default withSafeAreaInsets(TabBar);\n//# sourceMappingURL=TabBar.js.map","import { Dimensions, Platform, StatusBar } from 'react-native';\nexport function getInitSafeAreaInsets() {\n    const safeInsets = {\n        top: getStatusBarHeight(true),\n        bottom: getBottomSpace(),\n        right: 0,\n        left: 0\n    };\n    return safeInsets;\n}\nfunction getStatusBarHeight(safe) {\n    return Platform.select({\n        ios: ifIphoneX(safe ? 44 : 30, 20),\n        android: StatusBar.currentHeight,\n        default: 0\n    });\n}\nfunction getBottomSpace() {\n    return isIphoneX() ? 34 : 0;\n}\nfunction isIphoneX() {\n    const dimen = Dimensions.get('window');\n    return (Platform.OS === 'ios' &&\n        !Platform.isPad &&\n        !Platform.isTVOS &&\n        ((dimen.height === 780 || dimen.width === 780) ||\n            (dimen.height === 812 || dimen.width === 812) ||\n            (dimen.height === 844 || dimen.width === 844) ||\n            (dimen.height === 896 || dimen.width === 896) ||\n            (dimen.height === 926 || dimen.width === 926)));\n}\nfunction ifIphoneX(iphoneXStyle, regularStyle) {\n    if (isIphoneX()) {\n        return iphoneXStyle;\n    }\n    return regularStyle;\n}\n//# sourceMappingURL=tabBarUtils.js.map","// eslint-disable-next-line no-use-before-define\nimport * as React from 'react';\nimport { View, Text, Image, StyleSheet } from 'react-native';\nimport Badge from './Badge';\nconst styles = StyleSheet.create({\n    label: {\n        textAlign: 'center',\n        backgroundColor: 'transparent'\n    },\n    labelBeneath: {\n        fontSize: 12\n    },\n    labelBeside: {\n        fontSize: 12,\n        marginTop: 5\n    },\n    button: {\n        display: 'flex'\n    },\n    icon: {\n        justifyContent: 'flex-end'\n    },\n    tabItem: {\n        alignSelf: 'center',\n        alignItems: 'center',\n        justifyContent: 'center',\n        height: '100%',\n        width: '100%'\n    },\n    itemVertical: {\n        flex: 1\n    },\n    itemHorizontal: {\n        height: '100%',\n        marginTop: 5\n    },\n    redDot: {\n        position: 'absolute',\n        top: -2,\n        right: -5,\n        backgroundColor: '#FA5151',\n        zIndex: 100,\n        borderRadius: 18,\n        paddingTop: 4,\n        paddingBottom: 4,\n        paddingLeft: 4,\n        paddingRight: 4\n    },\n    badge: {\n        position: 'absolute',\n        top: -3,\n        zIndex: 10,\n        left: 15\n    },\n    // todo\n    badgeHorizontal: {},\n    badgeVertical: {}\n});\nexport default class TabBarItem extends React.PureComponent {\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        const { label, horizontal, showRedDot, badge, size = 20, labelColor, iconSource, userOptions, tabStyle = {}, labelStyle = {}, allowFontScaling = true, showLabel = true } = this.props;\n        const tabBarBadgeStyle = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.tabBarBadgeStyle) || {};\n        return (React.createElement(View, { style: [styles.tabItem, styles.itemHorizontal, tabStyle] },\n            React.createElement(View, { style: styles.icon },\n                !!iconSource && React.createElement(Image, { style: { width: size, height: size }, source: iconSource }),\n                !!showRedDot && !badge && React.createElement(View, { style: styles.redDot }),\n                !!badge && React.createElement(Badge, { visible: badge != null, style: [\n                        styles.badge,\n                        horizontal ? styles.badgeHorizontal : styles.badgeVertical,\n                        tabBarBadgeStyle\n                    ], size: (size * 3) / 4 }, ('' + badge).length >= 4 ? '...' : badge)),\n            showLabel && React.createElement(Text, { numberOfLines: 1, allowFontScaling: allowFontScaling, style: [\n                    styles.label,\n                    horizontal ? styles.labelBeside : styles.labelBeneath,\n                    labelStyle,\n                    { color: labelColor }\n                ] }, label)));\n    }\n}\n//# sourceMappingURL=TabBarItem.js.map","var __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n// eslint-disable-next-line no-use-before-define\nimport * as React from 'react';\nimport { Animated, StyleSheet } from 'react-native';\nconst styles = StyleSheet.create({\n    container: {\n        alignSelf: 'flex-end',\n        textAlign: 'center',\n        paddingHorizontal: 4,\n        overflow: 'hidden'\n    }\n});\nexport default class Badge extends React.PureComponent {\n    constructor(props) {\n        super(props);\n        const { visible } = this.props;\n        this.state = {\n            opacity: new Animated.Value(visible ? 1 : 0),\n            visible: visible\n        };\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        const { visible, opacity } = this.state;\n        const curVisible = nextProps.visible;\n        if (curVisible !== visible) {\n            if (curVisible) {\n                Animated.spring(opacity, {\n                    toValue: 1,\n                    // duration: 250,\n                    useNativeDriver: true\n                }).start(({ finished }) => {\n                    if (finished) {\n                        this.setState({\n                            visible: true\n                        });\n                    }\n                });\n            }\n            else {\n                this.setState({\n                    visible: false\n                });\n                Animated.spring(opacity, {\n                    toValue: 0,\n                    // duration: 200,\n                    useNativeDriver: true\n                }).start();\n            }\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        const { opacity } = this.state;\n        const { style, size = 18, children, visible } = this.props;\n        const restStyle = __rest(StyleSheet.flatten(style) || {}, []);\n        const textColor = 'white';\n        const borderRadius = size / 2;\n        const fontSize = Math.floor((size * 3) / 4);\n        // eslint-disable-next-line multiline-ternary\n        return (!visible ? null\n            : (React.createElement(Animated.Text, { numberOfLines: 1, style: [\n                    {\n                        opacity,\n                        transform: [\n                            {\n                                scale: opacity.interpolate({\n                                    inputRange: [0, 1],\n                                    outputRange: [0.5, 1]\n                                })\n                            }\n                        ],\n                        backgroundColor: '#FA5151',\n                        color: textColor,\n                        fontSize,\n                        lineHeight: size - 1,\n                        height: size,\n                        minWidth: size,\n                        borderRadius\n                    },\n                    styles.container,\n                    restStyle\n                ] }, children)));\n    }\n}\n//# sourceMappingURL=Badge.js.map","// eslint-disable-next-line no-use-before-define\nimport * as React from 'react';\nimport { View, Text } from 'react-native';\nimport Loading from './Loading';\nimport { navigationRef } from '../rootNavigation';\nexport default class HeadTitle extends React.PureComponent {\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        var _a, _b;\n        // showLoading自定义的参数放在params中\n        const params = ((_b = (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.getCurrentRoute()) === null || _b === void 0 ? void 0 : _b.params) || {};\n        const { showLoading = false } = (params === null || params === void 0 ? void 0 : params.navigateConfig) || {};\n        const { label, color, headerProps } = this.props;\n        return React.createElement(View, { style: { flexDirection: 'row', alignItems: 'center' } },\n            showLoading && React.createElement(Loading, null),\n            React.createElement(Text, { style: {\n                    fontSize: 17,\n                    fontWeight: '600',\n                    textAlign: 'center',\n                    color: headerProps.tintColor || color,\n                    paddingLeft: 2\n                } }, (headerProps === null || headerProps === void 0 ? void 0 : headerProps.children) || label));\n    }\n}\n//# sourceMappingURL=HeadTitle.js.map","// eslint-disable-next-line no-use-before-define\nimport * as React from 'react';\nimport { Animated, StyleSheet, Easing } from 'react-native';\nconst styles = StyleSheet.create({\n    toastLoading: {\n        width: 25,\n        height: 25\n    }\n});\nclass LoadingView extends React.Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            rotateValue: new Animated.Value(0) // 初始值\n        };\n    }\n    componentDidMount() {\n        this.startAnimation();\n    }\n    startAnimation() {\n        this.state.rotateValue.setValue(0);\n        Animated.timing(this.state.rotateValue, {\n            toValue: 1,\n            duration: 2000,\n            easing: Easing.linear,\n            useNativeDriver: true\n        }).start(() => this.startAnimation());\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        return (React.createElement(Animated.Image, { source: { uri: 'data:image/png;base64,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' }, style: [\n                styles.toastLoading, {\n                    transform: [\n                        {\n                            rotateZ: this.state.rotateValue.interpolate({\n                                inputRange: [0, 1],\n                                outputRange: ['0deg', '360deg']\n                            })\n                        }\n                    ]\n                }\n            ] }));\n    }\n}\nexport default LoadingView;\n//# sourceMappingURL=Loading.js.map","// eslint-disable-next-line no-use-before-define\nimport * as React from 'react';\nimport { View, Image, Platform } from 'react-native';\nexport const blackArrow = 'data:image/png;base64,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';\nexport const whiteArrow = 'data:image/png;base64,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';\nexport default class BackButton extends React.PureComponent {\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        const { tintColor = '#ffffff' } = this.props;\n        const color = tintColor.toLowerCase();\n        const imageSource = (color === '#ffffff' || color === 'white' || color === '#fff') ? whiteArrow : blackArrow;\n        return React.createElement(View, { style: { marginHorizontal: Platform.OS === 'ios' ? 10 : 0, marginRight: 25, marginVertical: 10 } },\n            React.createElement(Image, { style: { width: 22, height: 22 }, source: { uri: imageSource } }));\n    }\n}\n//# sourceMappingURL=BackButton.js.map","import * as React from 'react';\nimport { camelCase } from 'lodash';\nimport { getTabVisible, getTabBarPages } from './utils/index';\nimport { navigationRef } from './rootNavigation';\nconst globalAny = global;\nexport class PageProvider extends React.Component {\n    constructor(props) {\n        super(props);\n        // setOptions  在导航navigationRef 并没有暴露出来\n        if (navigationRef && (navigationRef === null || navigationRef === void 0 ? void 0 : navigationRef.current)) {\n            navigationRef.current.setOptions = this.props.navigation.setOptions;\n        }\n        this.handleConfig();\n    }\n    componentDidMount() {\n        const { navigation } = this.props;\n        this.unSubscribleFocus = this.props.navigation.addListener('focus', () => {\n            if (navigationRef && (navigationRef === null || navigationRef === void 0 ? void 0 : navigationRef.current)) {\n                navigationRef.current.setOptions = navigation.setOptions;\n            }\n            // 若是tabBar页面,确保tabbar内容最新\n            if (this.isTabBarPage()) {\n                const tabBarVisible = getTabVisible();\n                navigation.setOptions({\n                    tabBarVisible: tabBarVisible\n                });\n            }\n        });\n    }\n    componentWillUnmount() {\n        if (this.unSubscribleFocus) {\n            this.unSubscribleFocus();\n        }\n    }\n    handleConfig() {\n        var _a, _b;\n        const { navigation, pageConfig } = this.props;\n        if (navigation && navigation.setOptions) {\n            const config = ((_a = globalAny.__taroAppConfig) === null || _a === void 0 ? void 0 : _a.appConfig) || {};\n            const winOptions = config.window || {};\n            const winRnOptions = config.rn || {}; // 全局的rn config\n            // 多个config的优先级问题,页面rnConfig> 页面config > app.config中rnConfig > app.config.window\n            const winScreenOptions = this.isTabBarPage() ? {} : ((winRnOptions === null || winRnOptions === void 0 ? void 0 : winRnOptions.screenOptions) || {});\n            const { title = '', headerTintColor = '', headerStyle = {}, headerShown = true } = winScreenOptions;\n            const winRnTitle = this.isTabBarPage() ? ((_b = winRnOptions === null || winRnOptions === void 0 ? void 0 : winRnOptions.options) === null || _b === void 0 ? void 0 : _b.title) || '' : title;\n            const headerTitle = pageConfig.navigationBarTitleText || winRnTitle || (winOptions === null || winOptions === void 0 ? void 0 : winOptions.navigationBarTitleText) || '';\n            const color = pageConfig.navigationBarTextStyle || headerTintColor || (winOptions === null || winOptions === void 0 ? void 0 : winOptions.navigationBarTextStyle) || 'white';\n            const bgColor = pageConfig.navigationBarBackgroundColor || (headerStyle === null || headerStyle === void 0 ? void 0 : headerStyle.backgroundColor) || (winOptions === null || winOptions === void 0 ? void 0 : winOptions.navigationBarBackgroundColor) || '#000000';\n            let showHeader = headerShown;\n            if (pageConfig.navigationStyle) {\n                showHeader = pageConfig.navigationStyle !== 'custom';\n            }\n            if (winOptions.navigationStyle) {\n                showHeader = winOptions.navigationStyle !== 'custom';\n            }\n            const rnConfig = (pageConfig === null || pageConfig === void 0 ? void 0 : pageConfig.rn) || {};\n            const screenOptions = rnConfig.screenOptions || {};\n            const screenHeaderStyle = (screenOptions === null || screenOptions === void 0 ? void 0 : screenOptions.headerStyle) || {};\n            screenOptions.headerStyle = Object.assign({}, {\n                backgroundColor: bgColor,\n                shadowOffset: { width: 0, height: 0 },\n                borderWidth: 0,\n                elevation: 0,\n                shadowOpacity: 1,\n                borderBottomWidth: 0\n            }, screenHeaderStyle);\n            const navBarParams = Object.assign(winScreenOptions, {\n                title: headerTitle,\n                headerShown: showHeader,\n                headerTintColor: color\n            }, screenOptions);\n            // 页面的config\n            if (pageConfig) {\n                if (this.isTabBarPage()) {\n                    navigation.setParams({\n                        navigateConfig: navBarParams\n                    });\n                }\n                else {\n                    navigation.setOptions(navBarParams);\n                }\n            }\n        }\n    }\n    isTabBarPage() {\n        const { currentPath = '' } = this.props;\n        const tabPages = getTabBarPages();\n        return !!((tabPages.length > 0 && tabPages.indexOf(camelCase(currentPath)) !== -1));\n    }\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    render() {\n        return this.props.children;\n    }\n}\n//# sourceMappingURL=provider.js.map","import { successHandler, errorHandler, setTabConfig } from './utils/index';\nimport { navigationRef } from './rootNavigation';\nconst globalAny = global;\nconst INIT_TABBAR_ICON_CONFIG = {\n    needAnimate: true,\n    tabBarVisible: true,\n    tabStyle: {},\n    tabItems: {}\n};\nglobalAny.__taroTabBarIconConfig = INIT_TABBAR_ICON_CONFIG;\nfunction setTabBarItemConfig(index, obj) {\n    const tabBarConfig = globalAny.__taroTabBarIconConfig;\n    const items = tabBarConfig.tabItems[index] || {};\n    tabBarConfig.tabItems[index] = Object.assign({}, items, obj);\n    globalAny.__taroTabBarIconConfig = tabBarConfig;\n}\nexport function showTabBar(options = {}) {\n    var _a;\n    const { fail, success, complete, animation = true } = options;\n    let msg;\n    setTabConfig('tabBarVisible', true);\n    setTabConfig('needAnimate', animation);\n    try {\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarVisible: true\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'showTabBar:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function hideTabBar(options = {}) {\n    var _a;\n    const { fail, success, complete, animation = true } = options;\n    let msg;\n    setTabConfig('tabBarVisible', false);\n    setTabConfig('needAnimate', animation);\n    try {\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarVisible: false\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'hideTabBar:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function showTabBarRedDot(options) {\n    var _a;\n    const { index, fail, success, complete } = options;\n    let msg;\n    setTabBarItemConfig(index, { showRedDot: true });\n    try {\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarIcon: null\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'showTabBarRedDot:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function hideTabBarRedDot(options) {\n    var _a;\n    const { index, fail, success, complete } = options;\n    let msg;\n    setTabBarItemConfig(index, { showRedDot: false });\n    try {\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarIcon: null\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'hideTabBarRedDot:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function setTabBarBadge(options) {\n    var _a;\n    const { index, text, complete, fail, success } = options;\n    let msg;\n    setTabBarItemConfig(index, { tabBarBadge: text });\n    try {\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarBadge: text\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'setTabBarBadge:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function removeTabBarBadge(options) {\n    var _a;\n    const { index, fail, success, complete } = options;\n    let msg = '';\n    setTabBarItemConfig(index, { tabBarBadge: null });\n    try {\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarBadge: null\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'removeTabBarBadge:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function setTabBarItem(options) {\n    var _a;\n    const { fail, complete, success, index, text, iconPath, selectedIconPath } = options;\n    let msg;\n    setTabBarItemConfig(index, {\n        tabBarLabel: text,\n        iconPath: iconPath,\n        selectedIconPath: selectedIconPath\n    });\n    try {\n        // 会直接更新当前调用的tab,只是为了触发导航的tabbar的更新\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarIcon: null\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'setTabBarItem:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function setTabBarStyle(option) {\n    var _a;\n    const { backgroundColor, borderStyle, color, selectedColor, fail, success, complete } = option;\n    let msg;\n    setTabConfig('tabStyle', { backgroundColor, borderStyle, color, selectedColor });\n    try {\n        // 设置tabBarIcon 只是为了触发导航的tabbar的更新\n        (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n            tabBarIcon: null\n        });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'setTabBarStyle:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\n//# sourceMappingURL=tabBar.js.map","import { successHandler, errorHandler } from './utils/index';\nimport { navigationRef, isTabPage } from './rootNavigation';\nfunction setNavigateConfig(obj) {\n    var _a, _b, _c;\n    const oldParams = ((_b = (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.getCurrentRoute()) === null || _b === void 0 ? void 0 : _b.params) || {};\n    const params = (oldParams === null || oldParams === void 0 ? void 0 : oldParams.navigateConfig) || {};\n    (_c = navigationRef.current) === null || _c === void 0 ? void 0 : _c.setParams({\n        navigateConfig: Object.assign({}, Object.assign({}, params), Object.assign({}, obj))\n    });\n}\nexport function setNavigationBarTitle(option) {\n    var _a;\n    const { title, fail, success, complete } = option;\n    let msg;\n    try {\n        // 如果是tabbar,设置会不生效,设置setParams ,触发tab header重新渲染\n        if (isTabPage()) {\n            setNavigateConfig({ title });\n        }\n        else {\n            (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.setOptions({\n                title: title\n            });\n        }\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'setNavigationBarTitle:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function setNavigationBarColor(option) {\n    var _a, _b;\n    const { backgroundColor, frontColor, fail, success, complete } = option;\n    let msg;\n    const options = (_a = navigationRef.current) === null || _a === void 0 ? void 0 : _a.getCurrentOptions();\n    const defaultStyle = (options === null || options === void 0 ? void 0 : options.headerStyle) || {};\n    const headerStyle = Object.assign({}, defaultStyle, {\n        backgroundColor: backgroundColor\n    });\n    const params = Object.assign({}, options, {\n        headerStyle: headerStyle,\n        headerTintColor: frontColor\n    });\n    try {\n        // 如果是tabbar,设置会不生效,设置setParams ,触发tab header更新\n        if (isTabPage()) {\n            setNavigateConfig(Object.assign({}, params));\n        }\n        else {\n            (_b = navigationRef.current) === null || _b === void 0 ? void 0 : _b.setOptions(Object.assign({}, params));\n        }\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'setNavigationBarColor:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function showNavigationBarLoading(option = {}) {\n    const { fail, success, complete } = option;\n    let msg;\n    try {\n        setNavigateConfig({ showLoading: true });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'showNavigationBarLoading:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\nexport function hideNavigationBarLoading(option = {}) {\n    const { fail, success, complete } = option;\n    let msg;\n    try {\n        setNavigateConfig({ showLoading: false });\n    }\n    catch (error) {\n        msg = error;\n        return errorHandler(fail, complete)({ errMsg: msg });\n    }\n    msg = 'hideNavigationBarLoading:ok';\n    return successHandler(success, complete)({ errMsg: msg });\n}\n//# sourceMappingURL=navigationBar.js.map","export const incrementId = () => {\n    let id = 0;\n    return () => (id++).toString();\n};\nexport function isFunction(o) {\n    return typeof o === 'function';\n}\nexport const EMPTY_OBJ = {};\nexport const isArray = Array.isArray;\nexport function successHandler(success, complete) {\n    return function (res) {\n        success && isFunction(success) && success(res);\n        complete && isFunction(complete) && complete(res);\n        return Promise.resolve(res);\n    };\n}\nexport function errorHandler(fail, complete) {\n    return function (res) {\n        fail && isFunction(fail) && fail(res);\n        complete && isFunction(complete) && complete(res);\n        return Promise.reject(res);\n    };\n}\n//# sourceMappingURL=utils.js.map","import * as React from 'react';\nimport { createRouter } from '@tarojs/router-rn';\nimport { Provider as TCNProvider } from '@tarojs/components-rn';\nimport { Current } from './current';\nimport { isFunction } from './utils';\nexport function isClassComponent(component) {\n    var _a;\n    return isFunction(component.render) ||\n        !!((_a = component.prototype) === null || _a === void 0 ? void 0 : _a.isReactComponent) ||\n        component.prototype instanceof React.Component;\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createReactNativeApp(component, config) {\n    const routerConfig = {\n        tabBar: config.appConfig.tabBar,\n        pages: config.pageList,\n        window: config.appConfig.window,\n        linkPrefix: config.appConfig.linkPrefix || [],\n        rnConfig: config.appConfig.rn || {}\n    };\n    const ref = React.createRef();\n    const isReactComponent = isClassComponent(component);\n    const NewAppComponent = (AppCompoent) => {\n        return class Entry extends React.Component {\n            render() {\n                let props = null;\n                if (isReactComponent) {\n                    props = { ref };\n                }\n                const { initPath = '', initParams = {} } = this.props;\n                routerConfig.initPath = initPath;\n                routerConfig.initParams = initParams;\n                return React.createElement(TCNProvider, Object.assign({}, this.props), React.createElement(AppCompoent, Object.assign(Object.assign({}, props), this.props), createRouter(routerConfig)));\n            }\n        };\n    };\n    const App = NewAppComponent(component);\n    // 与小程序端实例保持一致\n    const appInst = Object.create({}, {\n        config: {\n            writable: true,\n            enumerable: true,\n            configurable: true,\n            value: config.appConfig\n        },\n        onLaunch: {\n            enumerable: true,\n            writable: true,\n            value(options) {\n                const app = ref.current;\n                if (app != null && isFunction(app.onLaunch)) {\n                    app.onLaunch && app.onLaunch(options);\n                }\n            }\n        },\n        onShow: {\n            enumerable: true,\n            writable: true,\n            value(options) {\n                const app = ref.current;\n                if (app != null && isFunction(app.componentDidShow)) {\n                    app.componentDidShow && app.componentDidShow(options);\n                }\n            }\n        },\n        onHide: {\n            enumerable: true,\n            writable: true,\n            value(options) {\n                const app = ref.current;\n                if (app != null && isFunction(app.componentDidHide)) {\n                    app.componentDidHide && app.componentDidHide(options);\n                }\n            }\n        }\n    });\n    Current.app = appInst;\n    return App;\n}\nexport function getApp() {\n    return Current.app;\n}\n//# sourceMappingURL=app.js.map","import * as React from 'react';\nimport AntProvider from '@ant-design/react-native/lib/provider';\nexport default class Provider extends React.Component {\n    render() {\n        return (React.createElement(AntProvider, null, this.props.children));\n    }\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _localeProvider = _interopRequireDefault(require(\"../locale-provider\"));\n\nvar _portal = _interopRequireDefault(require(\"../portal\"));\n\nvar _style = require(\"../style\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar Provider = /*#__PURE__*/function (_React$Component) {\n  (0, _inherits2[\"default\"])(Provider, _React$Component);\n\n  var _super = (0, _createSuper2[\"default\"])(Provider);\n\n  function Provider() {\n    (0, _classCallCheck2[\"default\"])(this, Provider);\n    return _super.apply(this, arguments);\n  }\n\n  (0, _createClass2[\"default\"])(Provider, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(_localeProvider[\"default\"], {\n        locale: this.props.locale\n      }, /*#__PURE__*/React.createElement(_style.ThemeProvider, {\n        value: this.props.theme\n      }, /*#__PURE__*/React.createElement(_portal[\"default\"].Host, null, this.props.children)));\n    }\n  }]);\n  return Provider;\n}(React.Component);\n\nexports[\"default\"] = Provider;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = isNativeReflectConstruct();\n  return function _createSuperInternal() {\n    var Super = getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = getPrototypeOf(this).constructor;\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return possibleConstructorReturn(this, result);\n  };\n}\n\nmodule.exports = _createSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.LocaleContext = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar LocaleContext = /*#__PURE__*/_react[\"default\"].createContext({});\n\nexports.LocaleContext = LocaleContext;\n\nvar LocaleProvider = function LocaleProvider(props) {\n  var locale = _react[\"default\"].useMemo(function () {\n    return {\n      antLocale: (0, _extends2[\"default\"])((0, _extends2[\"default\"])({}, props.locale), {\n        exist: true\n      })\n    };\n  }, [props.locale]);\n\n  return /*#__PURE__*/_react[\"default\"].createElement(LocaleContext.Provider, {\n    value: locale\n  }, props.children);\n};\n\nvar _default = /*#__PURE__*/_react[\"default\"].memo(LocaleProvider);\n\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _portal = _interopRequireDefault(require(\"./portal\"));\n\nvar _default = _portal[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _portalConsumer = _interopRequireDefault(require(\"./portal-consumer\"));\n\nvar _portalHost = _interopRequireWildcard(require(\"./portal-host\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * Portal allows to render a component at a different place in the parent tree.\n * You can use it to render content which should appear above other elements, similar to `Modal`.\n * It requires a [`Portal.Host`](portal-host.html) component to be rendered somewhere in the parent tree.\n *\n * ## Usage\n * ```js\n * import * as React from 'react';\n * import { Portal, Text } from '@ant-design/react-native';\n *\n * export default class MyComponent extends React.Component {\n *   render() {\n *     const { visible } = this.state;\n *     return (\n *       <Portal>\n *         <Text>This is rendered at a different place</Text>\n *       </Portal>\n *     );\n *   }\n * }\n * ```\n */\nvar Portal = /*#__PURE__*/function (_React$Component) {\n  (0, _inherits2[\"default\"])(Portal, _React$Component);\n\n  var _super = (0, _createSuper2[\"default\"])(Portal);\n\n  function Portal() {\n    (0, _classCallCheck2[\"default\"])(this, Portal);\n    return _super.apply(this, arguments);\n  }\n\n  (0, _createClass2[\"default\"])(Portal, [{\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return /*#__PURE__*/_react[\"default\"].createElement(_portalHost.PortalContext.Consumer, null, function (manager) {\n        return /*#__PURE__*/_react[\"default\"].createElement(_portalConsumer[\"default\"], {\n          manager: manager\n        }, children);\n      });\n    }\n  }]);\n  return Portal;\n}(_react[\"default\"].Component);\n\nPortal.Host = _portalHost[\"default\"];\nPortal.add = _portalHost.portal.add;\nPortal.remove = _portalHost.portal.remove;\nvar _default = Portal;\nexports[\"default\"] = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar PortalConsumer = /*#__PURE__*/function (_React$Component) {\n  (0, _inherits2[\"default\"])(PortalConsumer, _React$Component);\n\n  var _super = (0, _createSuper2[\"default\"])(PortalConsumer);\n\n  function PortalConsumer() {\n    (0, _classCallCheck2[\"default\"])(this, PortalConsumer);\n    return _super.apply(this, arguments);\n  }\n\n  (0, _createClass2[\"default\"])(PortalConsumer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!this.props.manager) {\n        throw new Error('Looks like you forgot to wrap your root component with `Provider` component from `@ant-design/react-native`.\\n\\n');\n      }\n\n      this._key = this.props.manager.mount(this.props.children);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.props.manager.update(this._key, this.props.children);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.props.manager.unmount(this._key);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return null;\n    }\n  }]);\n  return PortalConsumer;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = PortalConsumer;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = exports.portal = exports.PortalContext = void 0;\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactNative = require(\"react-native\");\n\nvar _portalManager = _interopRequireDefault(require(\"./portal-manager\"));\n\nvar PortalContext = /*#__PURE__*/_react[\"default\"].createContext(null); // events\n\n\nexports.PortalContext = PortalContext;\nvar addType = 'ANT_DESIGN_MOBILE_RN_ADD_PORTAL';\nvar removeType = 'ANT_DESIGN_MOBILE_RN_REMOVE_PORTAL'; // fix react native web does not support DeviceEventEmitter\n\nvar TopViewEventEmitter = _reactNative.DeviceEventEmitter || new _reactNative.NativeEventEmitter();\n\nvar PortalGuard = function PortalGuard() {\n  var _this = this;\n\n  (0, _classCallCheck2[\"default\"])(this, PortalGuard);\n  this.nextKey = 10000;\n\n  this.add = function (e) {\n    var key = _this.nextKey++;\n    TopViewEventEmitter.emit(addType, e, key);\n    return key;\n  };\n\n  this.remove = function (key) {\n    return TopViewEventEmitter.emit(removeType, key);\n  };\n};\n/**\n * portal\n */\n\n\nvar portal = new PortalGuard();\n/**\n * Portal host renders all of its children `Portal` elements.\n * For example, you can wrap a screen in `Portal.Host` to render items above the screen.\n * If you're using the `Provider` component, it already includes `Portal.Host`.\n *\n * ## Usage\n * ```js\n * import * as React from 'react';\n * import { Text } from 'react-native';\n * import { Portal } from '@ant-design/react-native';\n *\n * export default class MyComponent extends React.Component {\n *   render() {\n *     return (\n *       <Portal.Host>\n *         <Text>Content of the app</Text>\n *       </Portal.Host>\n *     );\n *   }\n * }\n * ```\n *\n * Here any `Portal` elements under `<App />` are rendered alongside `<App />` and will appear above `<App />` like a `Modal`.\n */\n\nexports.portal = portal;\n\nvar PortalHost = /*#__PURE__*/function (_React$Component) {\n  (0, _inherits2[\"default\"])(PortalHost, _React$Component);\n\n  var _super = (0, _createSuper2[\"default\"])(PortalHost);\n\n  function PortalHost() {\n    var _this2;\n\n    (0, _classCallCheck2[\"default\"])(this, PortalHost);\n    _this2 = _super.apply(this, arguments);\n    _this2._nextKey = 0;\n    _this2._queue = [];\n\n    _this2._setManager = function (manager) {\n      _this2._manager = manager;\n    };\n\n    _this2._mount = function (children, _key) {\n      var key = _key || _this2._nextKey++;\n\n      if (_this2._manager) {\n        _this2._manager.mount(key, children);\n      } else {\n        _this2._queue.push({\n          type: 'mount',\n          key: key,\n          children: children\n        });\n      }\n\n      return key;\n    };\n\n    _this2._update = function (key, children) {\n      if (_this2._manager) {\n        _this2._manager.update(key, children);\n      } else {\n        var op = {\n          type: 'mount',\n          key: key,\n          children: children\n        };\n\n        var index = _this2._queue.findIndex(function (o) {\n          return o.type === 'mount' || o.type === 'update' && o.key === key;\n        });\n\n        if (index > -1) {\n          _this2._queue[index] = op;\n        } else {\n          _this2._queue.push(op);\n        }\n      }\n    };\n\n    _this2._unmount = function (key) {\n      if (_this2._manager) {\n        _this2._manager.unmount(key);\n      } else {\n        _this2._queue.push({\n          type: 'unmount',\n          key: key\n        });\n      }\n    };\n\n    return _this2;\n  }\n\n  (0, _createClass2[\"default\"])(PortalHost, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var manager = this._manager;\n      var queue = this._queue;\n      TopViewEventEmitter.addListener(addType, this._mount);\n      TopViewEventEmitter.addListener(removeType, this._unmount);\n\n      while (queue.length && manager) {\n        var action = queue.pop();\n\n        if (!action) {\n          continue;\n        } // tslint:disable-next-line:switch-default\n\n\n        switch (action.type) {\n          case 'mount':\n            manager.mount(action.key, action.children);\n            break;\n\n          case 'update':\n            manager.update(action.key, action.children);\n            break;\n\n          case 'unmount':\n            manager.unmount(action.key);\n            break;\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      TopViewEventEmitter.removeListener(addType, this._mount);\n      TopViewEventEmitter.removeListener(removeType, this._unmount);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/_react[\"default\"].createElement(PortalContext.Provider, {\n        value: {\n          mount: this._mount,\n          update: this._update,\n          unmount: this._unmount\n        }\n      }, /*#__PURE__*/_react[\"default\"].createElement(_reactNative.View, {\n        style: styles.container,\n        collapsable: false\n      }, this.props.children), /*#__PURE__*/_react[\"default\"].createElement(_portalManager[\"default\"], {\n        ref: this._setManager\n      }));\n    }\n  }]);\n  return PortalHost;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = PortalHost;\nPortalHost.displayName = 'Portal.Host';\n\nvar styles = _reactNative.StyleSheet.create({\n  container: {\n    flex: 1\n  }\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _createSuper2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createSuper\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactNative = require(\"react-native\");\n\n/**\n * Portal host is the component which actually renders all Portals.\n */\nvar PortalManager = /*#__PURE__*/function (_React$PureComponent) {\n  (0, _inherits2[\"default\"])(PortalManager, _React$PureComponent);\n\n  var _super = (0, _createSuper2[\"default\"])(PortalManager);\n\n  function PortalManager() {\n    var _this;\n\n    (0, _classCallCheck2[\"default\"])(this, PortalManager);\n    _this = _super.apply(this, arguments);\n    _this.state = {\n      portals: []\n    };\n\n    _this.mount = function (key, children) {\n      _this.setState(function (state) {\n        return {\n          portals: [].concat((0, _toConsumableArray2[\"default\"])(state.portals), [{\n            key: key,\n            children: children\n          }])\n        };\n      });\n    };\n\n    _this.update = function (key, children) {\n      return _this.setState(function (state) {\n        return {\n          portals: state.portals.map(function (item) {\n            if (item.key === key) {\n              return (0, _extends2[\"default\"])((0, _extends2[\"default\"])({}, item), {\n                children: children\n              });\n            }\n\n            return item;\n          })\n        };\n      });\n    };\n\n    _this.unmount = function (key) {\n      return _this.setState(function (state) {\n        return {\n          portals: state.portals.filter(function (item) {\n            return item.key !== key;\n          })\n        };\n      });\n    };\n\n    return _this;\n  }\n\n  (0, _createClass2[\"default\"])(PortalManager, [{\n    key: \"render\",\n    value: function render() {\n      return this.state.portals.map(function (_ref, i) {\n        var key = _ref.key,\n            children = _ref.children;\n        return /*#__PURE__*/_react[\"default\"].createElement(_reactNative.View, {\n          key: key,\n          collapsable: false\n          /* Need collapsable=false here to clip the elevations, otherwise they appear above sibling components */\n          ,\n          pointerEvents: \"box-none\",\n          style: [_reactNative.StyleSheet.absoluteFill, {\n            zIndex: 1000 + i\n          }]\n        }, children);\n      });\n    }\n  }]);\n  return PortalManager;\n}(_react[\"default\"].PureComponent);\n\nexports[\"default\"] = PortalManager;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.WithTheme = WithTheme;\nexports.useTheme = exports.ThemeProvider = exports.ThemeContext = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _deepmerge = _interopRequireDefault(require(\"deepmerge\"));\n\nvar _shallowequal = _interopRequireDefault(require(\"shallowequal\"));\n\nvar _default = _interopRequireDefault(require(\"./themes/default\"));\n\nvar ThemeContext = /*#__PURE__*/_react[\"default\"].createContext(_default[\"default\"]);\n\nexports.ThemeContext = ThemeContext;\n\nvar ThemeProvider = function ThemeProvider(props) {\n  var value = props.value,\n      children = props.children;\n\n  var theme = _react[\"default\"].useMemo(function () {\n    return (0, _extends2[\"default\"])((0, _extends2[\"default\"])({}, _default[\"default\"]), value);\n  }, [value]);\n\n  return /*#__PURE__*/_react[\"default\"].createElement(ThemeContext.Provider, {\n    value: theme\n  }, children);\n};\n\nexports.ThemeProvider = ThemeProvider;\n\nvar useTheme = function useTheme() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  var theme = _react[\"default\"].useContext(ThemeContext);\n\n  return (0, _extends2[\"default\"])((0, _extends2[\"default\"])({}, theme), props.theme);\n};\n\nexports.useTheme = useTheme;\n\nfunction WithTheme(props) {\n  var children = props.children,\n      themeStyles = props.themeStyles,\n      styles = props.styles;\n\n  var stylesRef = _react[\"default\"].useRef(undefined);\n\n  var cache = _react[\"default\"].useRef(undefined);\n\n  var getStyles = _react[\"default\"].useCallback(function (theme) {\n    if (themeStyles && cache.current === undefined) {\n      cache.current = themeStyles(theme);\n    } // TODO: check these styles has changed\n\n\n    if (styles && !(0, _shallowequal[\"default\"])(stylesRef.current, styles)) {\n      stylesRef.current = styles; // merge styles from user defined\n\n      cache.current = (0, _deepmerge[\"default\"])(cache.current, styles);\n    }\n\n    return cache.current || {};\n  }, [themeStyles, styles]);\n\n  return /*#__PURE__*/_react[\"default\"].createElement(ThemeContext.Consumer, null, function (theme) {\n    return children(getStyles(theme), theme);\n  });\n}","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar brandPrimary = '#108ee9';\nvar brandPrimaryTap = '#1284d6';\nvar _default = {\n  // 支付宝钱包默认主题\n  // https://github.com/ant-design/ant-design-mobile/wiki/设计变量表及命名规范\n  // 色彩, NOTE: must use `#000000` instead of `#000`\n  // https://facebook.github.io/react-native/docs/colors.html\n  // 8-digit-hex to 4-digit hex https://css-tricks.com/8-digit-hex-codes/\n  // https://www.chromestatus.com/feature/5685348285808640 chrome will support `#RGBA`\n  // 文字色\n  color_text_base: '#000000',\n  color_text_base_inverse: '#ffffff',\n  color_text_secondary: '#a4a9b0',\n  color_text_placeholder: '#bbbbbb',\n  color_text_disabled: '#bbbbbb',\n  color_text_caption: '#888888',\n  color_text_paragraph: '#333333',\n  color_link: brandPrimary,\n  // 背景色\n  fill_base: '#ffffff',\n  fill_body: '#f5f5f9',\n  fill_tap: '#dddddd',\n  fill_disabled: '#dddddd',\n  fill_mask: 'rgba(0, 0, 0, .4)',\n  color_icon_base: '#cccccc',\n  fill_grey: '#f7f7f7',\n  // 透明度\n  opacity_disabled: '0.3',\n  // 全局/品牌色\n  brand_primary: brandPrimary,\n  brand_primary_tap: brandPrimaryTap,\n  brand_success: '#6abf47',\n  brand_warning: '#f4333c',\n  brand_error: '#f4333c',\n  brand_important: '#ff5b05',\n  brand_wait: '#108ee9',\n  // 边框色\n  border_color_base: '#dddddd',\n  // 字体尺寸\n  // ---\n  font_size_icontext: 10,\n  font_size_caption_sm: 12,\n  font_size_base: 14,\n  font_size_subhead: 15,\n  font_size_caption: 16,\n  font_size_heading: 17,\n  // 圆角\n  // ---\n  radius_xs: 2,\n  radius_sm: 3,\n  radius_md: 5,\n  radius_lg: 7,\n  // 边框尺寸\n  // ---\n  border_width_sm: 0.5,\n  border_width_md: 1,\n  border_width_lg: 2,\n  // 间距\n  // ---\n  // 水平间距\n  h_spacing_sm: 5,\n  h_spacing_md: 8,\n  h_spacing_lg: 15,\n  // 垂直间距\n  v_spacing_xs: 3,\n  v_spacing_sm: 6,\n  v_spacing_md: 9,\n  v_spacing_lg: 15,\n  v_spacing_xl: 21,\n  // 高度\n  // ---\n  line_height_base: 1,\n  line_height_paragraph: 1.5,\n  // 图标尺寸\n  // ---\n  icon_size_xxs: 15,\n  icon_size_xs: 18,\n  icon_size_sm: 21,\n  icon_size_md: 22,\n  icon_size_lg: 36,\n  // 动画缓动\n  // ---\n  ease_in_out_quint: 'cubic_bezier(0.86, 0, 0.07, 1)',\n  // 组件变量\n  // ---\n  actionsheet_item_height: 50,\n  actionsheet_item_font_size: 18,\n  // button\n  button_height: 47,\n  button_font_size: 18,\n  button_height_sm: 23,\n  button_font_size_sm: 12,\n  primary_button_fill: brandPrimary,\n  primary_button_fill_tap: '#0e80d2',\n  ghost_button_color: brandPrimary,\n  ghost_button_fill_tap: \"\".concat(brandPrimary, \"99\"),\n  warning_button_fill: '#e94f4f',\n  warning_button_fill_tap: '#d24747',\n  link_button_fill_tap: '#dddddd',\n  link_button_font_size: 16,\n  // modal\n  modal_font_size_heading: 18,\n  modal_button_font_size: 18,\n  modal_button_height: 50,\n  // list\n  list_title_height: 30,\n  list_item_height_sm: 35,\n  list_item_height: 44,\n  // input\n  input_label_width: 17,\n  input_font_size: 17,\n  input_color_icon: '#cccccc',\n  input_color_icon_tap: brandPrimary,\n  // tabs\n  tabs_color: brandPrimary,\n  tabs_height: 42,\n  tabs_font_size_heading: 15,\n  // segmented_control\n  segmented_control_color: brandPrimary,\n  segmented_control_height: 27,\n  segmented_control_fill_tap: \"\".concat(brandPrimary, \"10\"),\n  // tab_bar\n  tab_bar_fill: '#ebeeef',\n  tab_bar_height: 50,\n  // toast\n  toast_fill: 'rgba(0, 0, 0, .8)',\n  // search_bar\n  search_bar_fill: '#efeff4',\n  search_bar_height: 44,\n  search_bar_input_height: 28,\n  search_bar_font_size: 15,\n  search_color_icon: '#bbbbbb',\n  // notice_bar\n  notice_bar_fill: '#fffada',\n  notice_bar_height: 36,\n  // switch\n  switch_fill: '#4dd865',\n  // tag\n  tag_height: 25,\n  tag_small_height: 15,\n  // picker\n  option_height: 42,\n  toast_zindex: 1999,\n  action_sheet_zindex: 1000,\n  popup_zindex: 999,\n  modal_zindex: 999\n};\nexports[\"default\"] = _default;","import { navigationRef as rnNavigationRef } from '@tarojs/router-rn';\nexport const Current = {\n    app: null,\n    router: null,\n    page: null,\n    rnNavigationRef // RN 导航实例私有对象\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const getCurrentInstance = () => Current;\n//# sourceMappingURL=current.js.map","export class Events {\n    constructor(opts) {\n        if (typeof opts !== 'undefined' && opts.callbacks) {\n            this.callbacks = opts.callbacks;\n        }\n        else {\n            this.callbacks = {};\n        }\n    }\n    on(eventName, callback, context) {\n        let event, node, tail, list;\n        if (!callback) {\n            return this;\n        }\n        eventName = eventName.split(Events.eventSplitter);\n        const calls = this.callbacks || [];\n        while ((event = eventName.shift())) {\n            list = calls[event];\n            node = list ? list.tail : {};\n            node.next = tail = {};\n            node.context = context;\n            node.callback = callback;\n            calls[event] = {\n                tail,\n                next: list ? list.next : node\n            };\n        }\n        return this;\n    }\n    once(events, callback, context) {\n        const wrapper = (...args) => {\n            callback.apply(this, args);\n            this.off(events, wrapper, context);\n        };\n        this.on(events, wrapper, context);\n        return this;\n    }\n    off(events, callback, context) {\n        let event, calls, node, tail, cb, ctx;\n        if (!(calls = this.callbacks)) {\n            return this;\n        }\n        if (!(events || callback || context)) {\n            delete this.callbacks;\n            return this;\n        }\n        events = events ? events.split(Events.eventSplitter) : Object.keys(calls);\n        while ((event = events.shift())) {\n            node = calls[event];\n            delete calls[event];\n            if (!node || !(callback || context)) {\n                continue;\n            }\n            tail = node.tail;\n            while ((node = node.next) !== tail) {\n                cb = node.callback;\n                ctx = node.context;\n                if ((callback && cb !== callback) || (context && ctx !== context)) {\n                    this.on(event, cb, ctx);\n                }\n            }\n        }\n        return this;\n    }\n    trigger(events) {\n        let event, node, calls, tail;\n        if (!(calls = this.callbacks)) {\n            return this;\n        }\n        events = events.split(Events.eventSplitter);\n        const rest = [].slice.call(arguments, 1);\n        while ((event = events.shift())) {\n            if ((node = calls[event])) {\n                tail = node.tail;\n                while ((node = node.next) !== tail) {\n                    node.callback.apply(node.context || this, rest);\n                }\n            }\n        }\n        return this;\n    }\n}\nEvents.eventSplitter = /\\s+/;\nexport const eventCenter = new Events();\n//# sourceMappingURL=emmiter.js.map","import { getRouteEventChannel } from '@tarojs/router-rn';\nimport { Events } from './emmiter';\nclass PageEvts extends Events {\n    constructor() {\n        super(...arguments);\n        this.exeList = [];\n    }\n    on(eventName, callback) {\n        super.on(eventName, callback, this);\n        this.exeList = this.exeList.reduce((prev, item) => {\n            if (item.eventName === eventName) {\n                super.trigger(item.eventName, item.data);\n            }\n            else {\n                prev.push(item);\n            }\n            return prev;\n        }, []);\n        return this;\n    }\n    emit(events, data) {\n        // eslint-disable-next-line\n        routeChannel.trigger(events, data);\n    }\n}\nconst pageChannel = new PageEvts();\nclass RouteEvts extends Events {\n    emit(events, data) {\n        pageChannel.off(events, null, null);\n        pageChannel.exeList.push({\n            eventName: events,\n            data\n        });\n    }\n    addEvents(events) {\n        if (!events || typeof events !== 'object')\n            return;\n        Object.keys(events).forEach(key => {\n            this.off(key, null, null);\n            this.on(key, events[key], this);\n        });\n    }\n}\nconst routeChannel = new RouteEvts();\ngetRouteEventChannel(routeChannel);\nexport default {\n    routeChannel,\n    pageChannel\n};\n//# sourceMappingURL=EventChannel.js.map","import * as React from 'react';\nimport { Current } from './current';\nimport { PageContext, getPageInstance, injectPageInstance } from './page';\nimport { isFunction, isArray } from './utils';\nconst taroHooks = (lifecycle) => {\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    return (fn) => {\n        const id = React.useContext(PageContext);\n        const fnRef = React.useRef(fn);\n        if (fnRef.current !== fn)\n            fnRef.current = fn;\n        React.useLayoutEffect(() => {\n            let inst = getPageInstance(id);\n            let first = false;\n            if (inst == null) {\n                first = true;\n                inst = Object.create(null);\n            }\n            inst = inst;\n            const callback = (...args) => fnRef.current(...args);\n            if (isFunction(inst[lifecycle])) {\n                inst[lifecycle] = [inst[lifecycle], callback];\n            }\n            else {\n                inst[lifecycle] = [\n                    ...(inst[lifecycle] || []),\n                    callback\n                ];\n            }\n            if (first) {\n                injectPageInstance(inst, id);\n            }\n            return () => {\n                const inst = getPageInstance(id);\n                const list = inst[lifecycle];\n                if (list === callback) {\n                    inst[lifecycle] = undefined;\n                }\n                else if (isArray(list)) {\n                    inst[lifecycle] = list.filter(item => item !== callback);\n                }\n            };\n        }, [id]);\n    };\n};\nexport const useDidShow = taroHooks('componentDidShow');\nexport const useDidHide = taroHooks('componentDidHide');\nexport const usePullDownRefresh = taroHooks('onPullDownRefresh');\nexport const useReachBottom = taroHooks('onReachBottom');\nexport const usePageScroll = taroHooks('onPageScroll');\nexport const useResize = taroHooks('onResize');\nexport const useTabItemTap = taroHooks('onTabItemTap');\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const useRouter = (dynamic = false) => {\n    return dynamic ? Current.router : React.useMemo(() => Current.router, []);\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const useScope = () => undefined;\n//# sourceMappingURL=hooks.js.map","import { Dimensions } from 'react-native';\nconst globalAny = global;\nconst defaultWidth = 750;\nconst defaultRadio = {\n    640: 2.34 / 2,\n    750: 1,\n    828: 1.81 / 2\n};\nexport function pxTransform(size) {\n    var _a;\n    const deviceWidthDp = Dimensions.get('window').width;\n    const uiWidthPx = 375;\n    const config = ((_a = globalAny.__taroAppConfig) === null || _a === void 0 ? void 0 : _a.appConfig) || {};\n    const { designWidth = defaultWidth, deviceRatio = defaultRadio } = config;\n    if (!(designWidth in deviceRatio)) {\n        throw new Error(`deviceRatio 配置中不存在 ${designWidth} 的设置!`);\n    }\n    const formatSize = ~~size;\n    const rateSize = formatSize / (deviceRatio[designWidth] * 2);\n    return rateSize * deviceWidthDp / uiWidthPx;\n}\n//# sourceMappingURL=compute.js.map","import { Component } from 'react'\nimport './app.scss'\n\nclass App extends Component {\n\n  componentDidMount () {}\n\n  componentDidShow () {}\n\n  componentDidHide () {}\n\n  componentDidCatchError () {}\n\n  // this.props.children 是将要会渲染的页面\n  render () {\n    return this.props.children\n  }\n}\nexport default App\n","","import { Component } from 'react'\nimport { View, Text } from '@tarojs/components'\nimport './index.scss'\n\nexport default class Index extends Component {\n\n  componentDidMount () { }\n\n  componentWillUnmount () { }\n\n  componentDidShow () { }\n\n  componentDidHide () { }\n\n  render () {\n    return (\n      <View className='index'>\n        <Text>Hello world!</Text>\n      </View>\n    )\n  }\n}\n","/**\n * ✔ hoverStyle (hover-class)\n * ✘ hover-stop-propagation\n * ✔ hoverStartTime\n * ✔ hoverStayTime\n */\nimport * as React from 'react';\nimport { View, Text, } from 'react-native';\nimport { extracteTextStyle } from '../../utils';\nimport ClickableSimplified from '../ClickableSimplified';\nconst stringToText = (child, props) => {\n    // TODO: 实现小程序中效果\n    return (typeof child === 'string' || typeof child === 'number') ? React.createElement(Text, Object.assign({}, props), child) : child;\n};\nconst _View = (props) => {\n    const textStyle = extracteTextStyle(props.style);\n    // 兼容View中没用Text包裹的文字 防止报错 直接继承props在安卓中文字会消失???\n    const child = Array.isArray(props.children) ? props.children.map((c, i) => stringToText(c, Object.assign(Object.assign({ key: i }, props), { style: textStyle }))) : stringToText(props.children, Object.assign(Object.assign({}, props), { style: textStyle }));\n    return (React.createElement(View, Object.assign({ style: props.style }, props), child));\n};\n_View.displayName = '_View';\nexport { _View };\nexport default ClickableSimplified(_View);\n//# sourceMappingURL=index.js.map","import { StyleSheet } from 'react-native';\n// @see https://facebook.github.io/react-native/docs/layout-props.html\n// @see https://facebook.github.io/react-native/docs/view-style-props.html\n// @todo According to the source code of ScrollView, ['alignItems','justifyContent'] should be set to contentContainerStyle\nconst WRAPPER_TYPE_STYLE_REGEX = /alignSelf|aspectRatio|border.*|bottom|direction|display|end|left|margin.*|position|right|start|top|zIndex|opacity|elevation/;\n// const INNER_TYPE_STYLE_REGEX: RegExp = /alignContent|alignItems|flexDirection|flexWrap|height|justifyContent|.*[wW]idth|.*[hH]eight|overflow|padding.*/\nconst SYNC_TYPE_STYLE_REGEX = /flex|flexBasis|flexGrow|flexShrink/;\nconst TEXT_STYLE_REGEX = /color|font.*|text.*|letterSpacing|lineHeight|includeFontPadding|writingDirection/;\nexport const extracteTextStyle = (style) => {\n    const flattenStyle = StyleSheet.flatten(style);\n    const textStyle = {};\n    if (flattenStyle) {\n        Object.keys(flattenStyle).forEach((key) => {\n            if (TEXT_STYLE_REGEX.test(key)) {\n                textStyle[key] = flattenStyle[key];\n            }\n        });\n    }\n    return textStyle;\n};\nexport const omit = (obj = {}, fields = []) => {\n    const shallowCopy = Object.assign({}, obj);\n    fields.forEach((key) => {\n        delete shallowCopy[key];\n    });\n    return shallowCopy;\n};\nexport const dismemberStyle = (style) => {\n    const flattenStyle = StyleSheet.flatten(style);\n    const wrapperStyle = {};\n    const innerStyle = {};\n    if (flattenStyle) {\n        Object.keys(flattenStyle).forEach((key) => {\n            if (SYNC_TYPE_STYLE_REGEX.test(key)) {\n                wrapperStyle[key] = flattenStyle[key];\n                innerStyle[key] = flattenStyle[key];\n            }\n            else if (WRAPPER_TYPE_STYLE_REGEX.test(key)) {\n                wrapperStyle[key] = flattenStyle[key];\n            }\n            else {\n                innerStyle[key] = flattenStyle[key];\n            }\n        });\n    }\n    return {\n        wrapperStyle,\n        innerStyle\n    };\n};\n/**\n * Parses a string of inline styles into a javascript object with casing for react\n *\n * @param {string} styles\n * @returns {Object}\n */\nexport const parseStyles = (styles = '') => {\n    return styles\n        .split(';')\n        .filter((style) => style.split(':').length === 2)\n        .map((style) => [\n        style.split(':')[0].trim().replace(/-./g, c => c.substr(1).toUpperCase()),\n        style.split(':')[1].trim()\n    ])\n        .reduce((styleObj, style) => (Object.assign(Object.assign({}, styleObj), { [style[0]]: style[1] })), {});\n};\n// eslint-disable-next-line\nexport const noop = (...args) => { };\nexport default {\n    omit,\n    dismemberStyle,\n    parseStyles,\n    noop,\n};\n//# sourceMappingURL=index.js.map","/**\n * ✔ hoverStyle: Convert hoverClass to hoverStyle.\n * ✔ hoverStartTime\n * ✔ hoverStayTime\n * ✘ hoverStopPropagation: Fixed value TRUE\n * ✔ onClick(tap)\n * ✔ onLongPress(longpress)\n * ✔ onTouchStart\n * ✘ onTouchMove\n * ✘ onTouchCancel\n * ✔ onTouchEnd\n */\nimport * as React from 'react';\nimport { PanResponder, } from 'react-native';\nimport { omit } from '../../utils';\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport default function (WrappedComponent) {\n    var _a;\n    return _a = class _Clickable extends React.Component {\n            constructor() {\n                super(...arguments);\n                this.state = {\n                    isHover: false\n                };\n                this.startTimestamp = 0;\n                this.panResponder = PanResponder.create({\n                    onStartShouldSetPanResponder: () => {\n                        const { hoverStyle, onClick, onLongPress, onTouchStart, \n                        // onTouchMove,\n                        // onTouchCancel,\n                        onTouchEnd } = this.props;\n                        return !!(hoverStyle || onClick || onLongPress || onTouchStart || onTouchEnd);\n                    },\n                    onShouldBlockNativeResponder: () => false,\n                    // onMoveShouldSetPanResponder: (evt: GestureResponderEvent, gestureState) => {\n                    //   const { onTouchMove, onTouchCancel, onTouchEnd } = this.props\n                    //   return !!(onTouchMove || onTouchCancel || onTouchEnd)\n                    // },\n                    onPanResponderGrant: (evt) => {\n                        const { onTouchStart } = this.props;\n                        onTouchStart && onTouchStart(this.getWxAppEvent(evt));\n                        this.startTimestamp = evt.nativeEvent.timestamp;\n                        this.setStartTimer();\n                    },\n                    // onPanResponderMove: (evt: GestureResponderEvent, gestureState) => {\n                    //   const { onTouchMove } = this.props\n                    //   onTouchMove && onTouchMove(this.getWxAppEvent(evt))\n                    // },\n                    onPanResponderTerminationRequest: () => true,\n                    onPanResponderRelease: (evt, gestureState) => {\n                        const { onClick, onLongPress, onTouchEnd } = this.props;\n                        onTouchEnd && onTouchEnd(this.getWxAppEvent(evt));\n                        const endTimestamp = evt.nativeEvent.timestamp;\n                        const gapTime = endTimestamp - this.startTimestamp;\n                        const hasMove = Math.abs(gestureState.dx) >= 1 || Math.abs(gestureState.dy) >= 1;\n                        if (!hasMove) {\n                            if (gapTime <= 350) {\n                                onClick && onClick(this.getWxAppEvent(evt));\n                            }\n                            else {\n                                onLongPress && onLongPress(this.getWxAppEvent(evt));\n                            }\n                        }\n                        this.setStayTimer();\n                    },\n                    onPanResponderTerminate: () => {\n                        // const { onTouchCancel } = this.props\n                        // onTouchCancel && onTouchCancel(this.getWxAppEvent(evt))\n                        this.setStayTimer();\n                    },\n                });\n                this.setStartTimer = () => {\n                    const { hoverStyle, hoverStartTime } = this.props;\n                    if (hoverStyle) {\n                        this.startTimer && clearTimeout(this.startTimer);\n                        this.startTimer = setTimeout(() => {\n                            this.setState({ isHover: true });\n                        }, hoverStartTime);\n                    }\n                };\n                this.setStayTimer = () => {\n                    const { hoverStyle, hoverStayTime } = this.props;\n                    this.startTimer && clearTimeout(this.startTimer);\n                    if (hoverStyle) {\n                        this.stayTimer && clearTimeout(this.stayTimer);\n                        this.stayTimer = setTimeout(() => {\n                            this.startTimer && clearTimeout(this.startTimer);\n                            this.state.isHover && this.setState({ isHover: false });\n                        }, hoverStayTime);\n                    }\n                };\n                this.getWxAppEvent = (event) => {\n                    const nativeEvent = event.nativeEvent;\n                    const { timestamp, target, pageX, pageY, touches = [], changedTouches = [] } = nativeEvent;\n                    return {\n                        type: 'tap',\n                        timeStamp: timestamp,\n                        target: {\n                            id: target,\n                            dataset: {}\n                        },\n                        currentTarget: {\n                            id: target,\n                            dataset: {}\n                        },\n                        detail: {\n                            x: pageX,\n                            y: pageY\n                        },\n                        touches: touches.map((item) => {\n                            return {\n                                identifier: item.identifier,\n                                pageX: item.pageX,\n                                pageY: item.pageY,\n                                clientX: item.locationX,\n                                clientY: item.locationY\n                            };\n                        }),\n                        changedTouches: changedTouches.map((item) => {\n                            return {\n                                identifier: item.identifier,\n                                pageX: item.pageX,\n                                pageY: item.pageY,\n                                clientX: item.locationX,\n                                clientY: item.locationY\n                            };\n                        })\n                    };\n                };\n            }\n            componentWillUnmount() {\n                this.startTimer && clearTimeout(this.startTimer);\n                this.stayTimer && clearTimeout(this.stayTimer);\n            }\n            render() {\n                const { style, hoverStyle, \n                // hoverStopPropagation,\n                onClick, onLongPress, onTouchStart, \n                // onTouchMove,\n                // onTouchCancel,\n                onTouchEnd, } = this.props;\n                const { isHover } = this.state;\n                if (!hoverStyle &&\n                    // !hoverStopPropagation &&\n                    !onClick &&\n                    !onLongPress &&\n                    !onTouchStart &&\n                    // !onTouchMove &&\n                    // !onTouchCancel &&\n                    !onTouchEnd) {\n                    return (React.createElement(WrappedComponent, Object.assign({}, this.props)));\n                }\n                return (React.createElement(WrappedComponent, Object.assign({}, omit(this.props, [\n                    'style',\n                    'hoverStyle',\n                    'hoverStartTime',\n                    'hoverStayTime',\n                    'onClick',\n                    'onLongPress',\n                    'onTouchStart',\n                    // 'onTouchMove',\n                    // 'onTouchCancel',\n                    'onTouchEnd'\n                ]), this.panResponder.panHandlers, { style: [{ backgroundColor: 'transparent' }, style, isHover && hoverStyle] })));\n            }\n        },\n        _a.defaultProps = {\n            hoverStartTime: 20,\n            hoverStayTime: 70\n        },\n        _a;\n}\n//# sourceMappingURL=index.js.map","/**\n * ✔ selectable\n * ✘ space\n * ✘ decode: Fixed value TRUE\n */\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport * as React from 'react';\nimport { Text } from 'react-native';\nconst _Text = (_a) => {\n    var { style, children, selectable, onClick } = _a, otherProps = __rest(_a, [\"style\", \"children\", \"selectable\", \"onClick\"]);\n    return (React.createElement(Text, Object.assign({ selectable: !!selectable, style: style, onPress: onClick }, otherProps), children));\n};\n_Text.displayName = '_Text';\nexport default _Text;\n//# sourceMappingURL=index.js.map","","export default {\n  pages: [\n    'pages/index/index'\n  ],\n  window: {\n    backgroundTextStyle: 'light',\n    navigationBarBackgroundColor: '#fff',\n    navigationBarTitleText: 'WeChat',\n    navigationBarTextStyle: 'black'\n  }\n}\n","export default {\n  navigationBarTitleText: '首页'\n}\n"],"x_facebook_sources":[null,[{"names":["<global>","global.$RefreshReg$","global.$RefreshSig$","<anonymous>","clear","define","metroRequire","initializingModuleIds.slice.map$argument_0","metroImportDefault","metroImportAll","guardedLoadModule","unpackModuleId","packModuleId","registerSegment","moduleIds.forEach$argument_0","loadModuleImplementation","unknownModuleError","moduleThrewError","metroRequire.Systrace.beginEvent","metroRequire.Systrace.endEvent","metroRequire.getModules","createHotReloadingObject","hot.accept","hot.dispose","metroHotUpdateModule","topologicalSort$argument_1","topologicalSort$argument_2","setTimeout$argument_0","topologicalSort","traverseDependentNodes","dependentNodes.forEach$argument_0","roots.forEach$argument_0","runUpdatedModule","performFullRefresh","isReactRefreshBoundary","shouldInvalidateReactRefreshBoundary","getRefreshBoundarySignature","registerExportsForReactRefresh"],"mappings":"AAA;wBCyB,QD;wBEE,MC,YH;AIG;CJM;AKO;CL2C;AME;aCyB,2DD;CNe;AQE;CRoB;ASI;CTmC;AUK;CViB;AWK;CXO;AYI;CZE;AaM;sBCmB;KDI;CbE;AeE;8BdyE;ScE;CfuD;AgBE;ChBU;AiBE;CjBK;gBkBI,QlB;cmBC,QnB;4BoBG;GpBE;iCqBE;cCK;ODG;eEC;OFE;GrBG;+BwBI;MC8C;ODoD;MEC,gBF;yCG+G;SHI;GxBG;0B4BE;ICI;6BCQ;ODM;KDE;kBGE;KHI;G5BE;2BgCE;GhCuE;6BiCE;GjC2C;+BkCE;GlCmC;6CmCE;GnCmB;oCoCE;GpC2B;uCqCE;GrCqB"}],[{"names":["<global>","<anonymous>","inspect","stylizeNoColor","arrayToHash","array.forEach$argument_0","formatValue","keys.map$argument_0","formatPrimitive","formatError","formatArray","keys.forEach$argument_0","formatProperty","str.split.map$argument_0","reduceToSingleString","output.reduce$argument_0","isArray","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","isObject","isDate","isError","isFunction","objectToString","hasOwnProperty","getNativeLogFunction","Array.prototype.map.call$argument_1","repeat","Array.apply.map$argument_0","consoleTablePolyfill","columns.forEach$argument_0","joinRow","row.map$argument_0","columnWidths.map$argument_0","groupFormat","consoleGroupPolyfill","consoleGroupCollapsedPolyfill","consoleGroupEndPolyfill","consoleAssertPolyfill","Object.keys.forEach$argument_0","methodName","forEach$argument_0","stub","global.console.assert"],"mappings":"AAA;iBCiB;ECwB;GDO;EEE;GFE;EGE;kBCG;KDE;GHG;EKE;wBC2F;ODS;GLM;EOE;GPgB;EQE;GRE;ESE;iBCkB;KDM;GTE;EWE;mBC4B;eDE;qBCQ;iBDE;GX0B;EaE;+BCE;KDI;Gbc;EeI;GfE;EgBE;GhBE;EiBE;GjBE;EkBE;GlBE;EmBE;GnBE;EoBE;GpBE;EqBE;GrBE;EsBE;GtBE;EuBE;GvBE;EwBE;GxBE;EyBE;GzBE;E0BE;G1BK;E2BE;G3BE;E4BE;G5BE;E6BE;G7BE;CDG;A+BmB;S9BC;yB+BM;S/BE;G8BmC;C/BC;AiCE;yCCC;GDE;CjCC;AmCE;kBCwB;GDQ;EEI;wBCC;KDG;GFG;oCIE;GJE;CnCc;AwCQ;CxCG;AyCE;CzCG;A0CE;C1CG;A2CE;C3CG;A4CE;C5CI;iC6CmC;8BCG;SDG;K7CE;gE+CK;8BDE;SCE;K/CE;EgDG,kBhD;IiDU;KjDI"}],[{"names":["<global>","onError","ErrorUtils.setGlobalHandler","ErrorUtils.getGlobalHandler","ErrorUtils.reportError","ErrorUtils.reportFatalError","ErrorUtils.applyWithGuard","ErrorUtils.applyWithGuardIfNeeded","ErrorUtils.inGuard","ErrorUtils.guard","guarded"],"mappings":"AAA;mCCqB;CDK;EEW;GFE;EGC;GHE;EIC;GJE;EKC;GLG;EMC;GNmB;EOC;GPY;EQC;GRE;ESC;ICY;KDQ;GTG"}],[{"names":["<global>","<anonymous>","entries","values"],"mappings":"AAA;CCW;qBCU;KDa;oBEQ;KFa;CDE"}],[{"names":["<global>","AppRegistry.registerComponent$argument_1"],"mappings":"AAA;2CCa,4CD"}],[{"names":["_interopRequireDefault","<global>"],"mappings":"AAA;CCI"}],[{"names":["_extends","<anonymous>","<global>"],"mappings":"AAA;+CCC;GDY;CEI"}],[{"names":["<global>","module.exports.get__AccessibilityInfo","module.exports.get__ActivityIndicator","module.exports.get__Button","module.exports.get__DatePickerIOS","module.exports.get__DrawerLayoutAndroid","module.exports.get__FlatList","module.exports.get__Image","module.exports.get__ImageBackground","module.exports.get__InputAccessoryView","module.exports.get__KeyboardAvoidingView","module.exports.get__MaskedViewIOS","module.exports.get__Modal","module.exports.get__Picker","module.exports.get__PickerIOS","module.exports.get__Pressable","module.exports.get__ProgressBarAndroid","module.exports.get__ProgressViewIOS","module.exports.get__RefreshControl","module.exports.get__SafeAreaView","module.exports.get__ScrollView","module.exports.get__SectionList","module.exports.get__SegmentedControlIOS","module.exports.get__Slider","module.exports.get__StatusBar","module.exports.get__Switch","module.exports.get__Text","module.exports.get__TextInput","module.exports.get__Touchable","module.exports.get__TouchableHighlight","module.exports.get__TouchableNativeFeedback","module.exports.get__TouchableOpacity","module.exports.get__TouchableWithoutFeedback","module.exports.get__View","module.exports.get__VirtualizedList","module.exports.get__VirtualizedSectionList","module.exports.get__ActionSheetIOS","module.exports.get__Alert","module.exports.get__Animated","module.exports.get__Appearance","module.exports.get__AppRegistry","module.exports.get__AppState","module.exports.get__AsyncStorage","module.exports.get__BackHandler","module.exports.get__Clipboard","module.exports.get__DatePickerAndroid","module.exports.get__DeviceInfo","module.exports.get__DevSettings","module.exports.get__Dimensions","module.exports.get__Easing","module.exports.get__findNodeHandle","module.exports.get__I18nManager","module.exports.get__ImagePickerIOS","module.exports.get__InteractionManager","module.exports.get__Keyboard","module.exports.get__LayoutAnimation","module.exports.get__Linking","module.exports.get__LogBox","module.exports.get__NativeDialogManagerAndroid","module.exports.get__NativeEventEmitter","module.exports.get__Networking","module.exports.get__PanResponder","module.exports.get__PermissionsAndroid","module.exports.get__PixelRatio","module.exports.get__PushNotificationIOS","module.exports.get__Settings","module.exports.get__Share","module.exports.get__StatusBarIOS","module.exports.get__StyleSheet","module.exports.get__Systrace","module.exports.get__ToastAndroid","module.exports.get__TurboModuleRegistry","module.exports.get__UIManager","module.exports.get__unstable_batchedUpdates","module.exports.get__useColorScheme","module.exports.get__useWindowDimensions","module.exports.get__UTFSequence","module.exports.get__Vibration","module.exports.get__YellowBox","module.exports.get__DeviceEventEmitter","module.exports.get__DynamicColorIOS","module.exports.get__NativeAppEventEmitter","module.exports.get__NativeModules","module.exports.get__Platform","module.exports.get__PlatformColor","module.exports.get__processColor","module.exports.get__requireNativeComponent","module.exports.get__unstable_RootTagContext","module.exports.get__unstable_enableLogBox","<anonymous>","module.exports.get__ColorPropType","module.exports.get__EdgeInsetsPropType","module.exports.get__PointPropType","module.exports.get__ViewPropTypes","Object.defineProperty$argument_2.get"],"mappings":"AAA;ECsH;GDE;EEC;GFE;EGC;GHE;EIE;GJQ;EKE;GLE;EMC;GNE;EOC;GPE;EQC;GRE;ESC;GTE;EUC;GVE;EWC;GXQ;EYC;GZE;EaC;GbQ;EcE;GdQ;EeC;GfE;EgBE;GhBQ;EiBE;GjBQ;EkBC;GlBE;EmBC;GnBE;EoBC;GpBE;EqBC;GrBE;EsBE;GtBQ;EuBC;GvBQ;EwBC;GxBE;EyBC;GzBE;E0BC;G1BE;E2BC;G3BE;E4BC;G5BE;E6BC;G7BE;E8BC;G9BE;E+BC;G/BE;EgCC;GhCE;EiCC;GjCE;EkCC;GlCE;EmCC;GnCE;EoCG;GpCE;EqCC;GrCE;EsCC;GtCE;EuCC;GvCE;EwCC;GxCE;EyCC;GzCE;E0CE;G1CQ;E2CC;G3CE;E4CC;G5CQ;E6CC;G7CQ;E8CC;G9CE;E+CC;G/CE;EgDC;GhDE;EiDC;GjDE;EkDC;GlDE;EmDC;GnDE;EoDC;GpDS;EqDC;GrDE;EsDC;GtDE;EuDC;GvDE;EwDC;GxDE;EyDC;GzDE;E0DC;G1DG;E2DC;G3DE;E4DC;G5DE;E6DC;G7DE;E8DC;G9DE;E+DC;G/DE;EgEC;GhEQ;EiEC;GjEE;EkEC;GlEE;EmEC;GnEM;EoEC;GpEE;EqEC;GrEE;EsEE;GtEE;EuEC;GvEE;EwEC;GxEE;EyEC;GzEM;E0EC;G1EE;E2EC;G3EE;E4EC;G5EE;E6EC;G7EE;E8EC;G9EE;E+EG;G/EE;EgFC;GhFG;EiFC;GjFE;EkFC;GlFE;EmFC;GnFE;EoFC;GpFG;EqFC;GrFE;EsFC;GtFI;EuFC;GvFE;EwFC;WCC;ODG;GxFC;E0FG;G1FE;E2FC;G3FE;E4FC;G5FE;E6FC;G7FE;I8FO;K9FO;I8FM;K9FO;I8FM;K9FO;I8FM;K9FO;I8FM;K9FO;I8FM;K9FO;I8FM;K9FQ;I8FM;K9FO;I8FM;K9FO;I8FM;K9FO;I8FM;K9FO;I8FM;K9FO"}],[{"names":["<global>","invariant","format.replace$argument_1"],"mappings":"AAA;gBCoB;8BCkB,uCD;CDQ"}],[{"names":["<global>","warnOnce"],"mappings":"AAA;ACqB;CDQ"}],[{"names":["<global>","isBoldTextEnabled","Promise$argument_0","isGrayscaleEnabled","isInvertColorsEnabled","isReduceMotionEnabled","isReduceTransparencyEnabled","isScreenReaderEnabled","get__fetch","addEventListener","setAccessibilityFocus","announceForAccessibility","removeEventListener"],"mappings":"AAA;qBCyD;uBCC;KDM;GDC;sBGU;uBDC;KCM;GHC;yBIU;uBFC;KEM;GJC;yBKU;uBHC;KGM;GLC;+BMU;uBJC;KIS;GNC;yBOU;uBLC;KKM;GPC;EQQ;GRK;oBSiC;GTwB;yBUO;GVI;4BWO;GXI;uBYO;GZY"}],[{"names":["<global>","checkNativeEventModule","RCTDeviceEventEmitter","constructor","addListener","removeAllListeners","removeSubscription"],"mappings":"AAA;ACgB;CDwB;AEM;ECG;GDI;EEE;GFS;EGE;GHK;EIE;GJM;CFC"}],[{"names":["_classCallCheck","<global>"],"mappings":"AAA;CCI"}],[{"names":["_defineProperties","<global>","_createClass"],"mappings":"AAA;CCQ;ACE;CDI"}],[{"names":["<global>","_get"],"mappings":"AAA;ACE;CDqB"}],[{"names":["<global>","_superPropBase"],"mappings":"AAA;ACE;CDO"}],[{"names":["_getPrototypeOf","<global>"],"mappings":"AAA;CCM"}],[{"names":["<global>","_inherits"],"mappings":"AAA;ACE;CDa"}],[{"names":["_setPrototypeOf","<global>"],"mappings":"AAA;CCQ"}],[{"names":["<global>","_possibleConstructorReturn"],"mappings":"AAA;ACI;CDQ"}],[{"names":["_typeof","<global>"],"mappings":"AAA;CCkB"}],[{"names":["_assertThisInitialized","<global>"],"mappings":"AAA;CCM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","sparseFilterPredicate","EventEmitter","EventEmitter#constructor","EventEmitter#addListener","EventEmitter#removeAllListeners","EventEmitter#removeSubscription","EventEmitter#listenerCount","EventEmitter#emit","EventEmitter#removeListener"],"mappings":"AAA;8BCkB,UD;AEe;ECS;GDE;EEgB;GFS;EGS;GHE;EIM;GJM;EKS;GLS;EMgB;GNe;EOe;GPa;CFC"}],[{"names":["<global>","EmitterSubscription","EmitterSubscription#constructor","EmitterSubscription#remove"],"mappings":"AAA;ACmB;ECgB;GDW;EEQ;GFE;CDC"}],[{"names":["<global>","EventSubscription","EventSubscription#constructor","EventSubscription#remove"],"mappings":"AAA;ACkB;ECS;GDE;EEK;GFE;CDC"}],[{"names":["<global>","EventSubscriptionVendor","EventSubscriptionVendor#constructor","EventSubscriptionVendor#addSubscription","EventSubscriptionVendor#removeAllSubscriptions","EventSubscriptionVendor#removeSubscription","EventSubscriptionVendor#getSubscriptionsForType"],"mappings":"AAA;ACoB;ECI;GDG;EEQ;GFgB;EGQ;GHM;EIQ;GJQ;EKc;GLE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","requireModule","get","getEnforcing"],"mappings":"AAA;ACkB;CDiB;OEE;CFY;OGE;CHkB"}],[{"names":["<global>","genModule","methods.forEach$argument_0","module.getConstants","loadModule","genMethod","promiseMethodWrapper","Promise$argument_0","BatchedBridge.enqueueNativeCall$argument_3","BatchedBridge.enqueueNativeCall$argument_4","nonPromiseMethodWrapper","arrayContains","updateErrorWithErrorData","forEach$argument_0","defineLazyObjectProperty$argument_2.get"],"mappings":"AAA;AC4B;oBC2B;KDW;0BEK,oCF;CDY;AIK;CJQ;AKE;SCG;yBCG;UCK,qBD;UEC;aFM;ODE;KDC;SKE;KLiC;CLI;AWE;CXE;AYE;CZK;Iac;eCc,qCD;KbG"}],[{"names":["<global>","_slicedToArray"],"mappings":"AAA;ACQ;CDE"}],[{"names":["_arrayWithHoles","<global>"],"mappings":"AAA;CCE"}],[{"names":["_iterableToArrayLimit","<global>"],"mappings":"AAA;CC4B"}],[{"names":["<global>","_unsupportedIterableToArray"],"mappings":"AAA;ACE;CDO"}],[{"names":["_arrayLikeToArray","<global>"],"mappings":"AAA;CCQ"}],[{"names":["_nonIterableRest","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","MessageQueue","constructor","spy","prototype.__spy","callFunctionReturnFlushedQueue","__guard$argument_0","invokeCallbackAndReturnFlushedQueue","flushedQueue","getEventLoopRunningTime","registerCallableModule","_lazyCallableModules.name","registerLazyCallableModule","getCallableModule","callNativeSyncHook","processCallbacks","_successCallbacks.forEach$argument_0","enqueueNativeCall","isValidArgument","replacer","createDebugLookup","setImmediatesCallback","__guard","__shouldPauseOnThrow","__callImmediates","__callFunction","__invokeCallback"],"mappings":"AAA;ACyC;ECgB;GD2B;EEM;qCCE;ODM;GFM;EIE;iBCK;KDE;GJG;EME;iBDI;KCE;GNG;EOE;iBFC;KEE;GPK;EQE;GRE;ESE;sCCC,YD;GTC;EWE;sCDG;KCM;GXC;EYE;GZG;EaE;GbkB;EcE;yCCe;WDK;Gd6B;EgBE;8BCiB;OD6B;uBEK;OFS;GhBwC;EmBE;GnBS;EoBK;GpBE;EqBM;GrBU;EsBO;GtBM;EuBE;GvBM;EwBE;GxBuB;EyBE;GzB+C;CDC"}],[{"names":["<global>","_toConsumableArray"],"mappings":"AAA;ACQ;CDE"}],[{"names":["<global>","_arrayWithoutHoles"],"mappings":"AAA;ACE;CDE"}],[{"names":["_iterableToArray","<global>"],"mappings":"AAA;CCE"}],[{"names":["_nonIterableSpread","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","mark","measure","clearMarks","clearMeasures","installPerformanceHooks","Object.keys.forEach$argument_0","installReactHook","setEnabled","isEnabled","beginEvent","endEvent","beginAsyncEvent","endAsyncEvent","counterEvent"],"mappings":"AAA;MC4B;ODiB;MEC;OFqB;MGC;OHa;MIC;OJG;AKI;kCCM;KDI;CLE;EOG;GPO;EQE;GRkB;ESE;GTE;EUK;GVa;EWE;GXI;EYO;GZa;EaE;GbU;EcK;GdW"}],[{"names":["<global>","deepFreezeAndThrowOnMutationInDev","throwOnImmutableMutation","identity"],"mappings":"AAA;AC6B;CDwC;AEE;CFS;AGE;CHE"}],[{"names":["<global>","createStringifySafeWithLimits","replacer","stringifySafe"],"mappings":"AAA;OCkB;ECa;GD6C;SEE;GFgC;CDC"}],[{"names":["<global>","defineLazyObjectProperty","getValue","setValue"],"mappings":"AAA;ACe;ECgB;GDc;EEC;GFS;CDQ"}],[{"names":["<global>","ActivityIndicator"],"mappings":"AAA;0BCgE;CD8C"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","q"],"mappings":"AAA;ACS,4TD"}],[{"names":["<global>","toObject","shouldUseNative","Object.getOwnPropertyNames.map$argument_0","abcdefghijklmnopqrst.split.forEach$argument_0","<anonymous>"],"mappings":"AAA;ACY;CDM;AEE;qDCoB;GDE;2CEO;GFE;CFW;qDKE;CLyB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","y","z","A.isMounted","A.enqueueForceUpdate","A.enqueueReplaceState","A.enqueueSetState","C","C.prototype.setState","C.prototype.forceUpdate","D","E","J","K","L","escape","a.replace$argument_1","N","O","O$argument_4","P","Q","b.then$argument_0","b.then$argument_1","S","exports.Children.forEach","P$argument_1","exports.Children.count","exports.Children.toArray","exports.Children.only","exports.cloneElement","exports.createContext","exports.createFactory","exports.createRef","exports.forwardRef","exports.lazy","exports.memo","exports.useCallback","exports.useContext","exports.useDebugValue","exports.useEffect","exports.useImperativeHandle","exports.useLayoutEffect","exports.useMemo","exports.useReducer","exports.useRef","exports.useState"],"mappings":"AAA;ACU,yHC,4TF;iBGC,oBH,oBI,YJ,qBK,YL,iBM,YN,OO,4EP,qDQ,0IR,yBS,kET;AUC,cV,wBW,4EX;AYC,8aZ;AaC,6FC,kEC,yEC,wBD,Ef,aiB,iGjB;AkBC,sUC,qBD;+SEC,+DD,mCC,WpB;AqBC,sFC,iED,CE,qDF,qDrB,qBwB,sExB;gCyBC,oBC,mCD,IzB,O2B,wBD,eC,W3B,S4B,uBF,qBE,M5B,M6B,kD7B;qB8BC;8B9BC,uB+B,6M/B,+CgC,mDhC,mBiC,gCjC,oBkC,wClC;amCC,uEnC,coC,kEpC,qBqC,0CrC,oBsC,yCtC,uBuC,YvC,mBwC,wCxC,6ByC,sDzC;wB0CC,8C1C,iB2C,sC3C,oB4C,6C5C,gB6C,iC7C,kB8C,mC9C"}],[{"names":["<global>","_objectWithoutProperties"],"mappings":"AAA;ACE;CDiB"}],[{"names":["_objectWithoutPropertiesLoose","<global>"],"mappings":"AAA;CCa"}],[{"names":["<global>","get__Version","get__constants","get__isPad","get__isTVOS","get__isTV","get__isTesting","select"],"mappings":"AAA;ECyB;GDE;EEE;GFiB;EGE;GHE;EIK;GJE;EKE;GLE;EME;GNK;UOC;4EPC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","module.exports.compose","module.exports.setStyleAttributePreprocessor","module.exports.create"],"mappings":"AAA;ECiR;GDS;EEoD;GFoB;EGK;GHa"}],[{"names":["<global>","PixelRatio","get","getFontScale","getPixelSizeForLayoutSize","roundToNearestPixel","startDetecting"],"mappings":"AAA;AC0D;ECyB;GDE;EEa;GFE;EGO;GHE;EIQ;GJG;EKG,0BL;CDC"}],[{"names":["<global>","Dimensions","get","set","addEventListener","removeEventListener","RCTDeviceEventEmitter.addListener$argument_1"],"mappings":"AAA;AC8B;ECkB;GDG;EEQ;GFiC;EGU;GHO;EIK;GJO;CDC;IMU;KNE"}],[{"names":["<global>","getConstants"],"mappings":"AAA;ECgD;GDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","colorPropType"],"mappings":"AAA;sBCa;CDyD"}],[{"names":["<global>","normalizeColor"],"mappings":"AAA;ACmB;CDc"}],[{"names":["<global>","normalizeColorBase","hue2rgb","hslToRgb","call","getMatchers","parse255","parse360","parse1","parsePercentage"],"mappings":"AAA;ACc;CD2G;AEE;CFiB;AGE;CHY;AIM;CJE;AKI;CLc;AME;CNS;AOE;CPG;AQE;CRS;ASE;CTU"}],[{"names":["<global>","PlatformColor","DynamicColorIOSPrivate","normalizeColorObject","processColorObject"],"mappings":"AAA;6BCuB;CDE;sCEO;CFI;oCGE;CHqB;kCIE;CJe"}],[{"names":["<global>","processColor"],"mappings":"AAA;ACsB;CDoC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","emptyFunction","emptyFunctionWithReset","module.exports","shim","getShim"],"mappings":"AAA;ACW,2BD;AEC,oCF;iBGG;ECC;GDY;EEE;GFE;CH+B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","TransformMatrixPropType","DecomposedMatrixPropType"],"mappings":"AAA;gCCgB;CDW;iCEE;CFW"}],[{"names":["<global>","deprecatedPropType","validate"],"mappings":"AAA;ACiB;SCI;GDa;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","module.exports.getViewManagerConfig","module.exports.getConstants","module.exports.getConstantsForViewManager","module.exports.getDefaultEventTypes","module.exports.lazilyLoadView","module.exports.createView","module.exports.updateView","module.exports.focus","module.exports.blur","module.exports.findSubviewIn","module.exports.dispatchViewManagerCommand","module.exports.measure","module.exports.measureInWindow","module.exports.viewIsDescendantOf","module.exports.measureLayout","module.exports.measureLayoutRelativeToParent","module.exports.setJSResponder","module.exports.clearJSResponder","module.exports.configureNextLayoutAnimation","module.exports.removeSubviewsFromContainerWithID","module.exports.replaceExistingNonRootView","module.exports.setChildren","module.exports.manageChildren","module.exports.setLayoutAnimationEnabledExperimental","module.exports.sendAccessibilityEvent","module.exports.showPopupMenu","module.exports.dismissPopupMenu"],"mappings":"AAA;wBCa;GDQ;gBEC,iBF;8BGC,+BH;wBIC,2BJ;kBKC,oBL;cMC;SNK;cOC,yDP;SQC,yBR;QSC,yBT;iBUC;SVU;8BWC;SXI;WYC;SZU;mBaC;SbG;sBcC;SdI;iBeC;SfU;iCgBC;ShBS;kBiBC,wDjB;oBkBC,QlB;gCmBC;SnBI;qCoBC,2BpB;8BqBC,+CrB;esBC,uDtB;kBuBC;SvBO;yCwBG,wBxB;0ByBC,4CzB;iB0BC;S1BK;oB2BC,Q3B"}],[{"names":["<global>","getConstants","UIManagerJS.getConstants","UIManagerJS.getViewManagerConfig","lazifyViewManagerConfig","defineLazyObjectProperty$argument_2.get","Object.keys.forEach$argument_0","NativeUIManager.getConstants.ViewManagerNames.forEach$argument_0"],"mappings":"AAA;AC0B;CDM;EEO;GFE;wBGC;GHsC;AIU;WCK;2CCI;WDK;ODE;WCG;2CCK;WDK;ODE;CJG;sCMQ;GNE;0DOE;WFE,iEE;GPE;sCMI;aDM;SCO;GNG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","processTransform","transform.forEach$argument_0","_multiplyTransform","_convertToRadians","_validateTransforms","_validateTransform"],"mappings":"AAA;AC0B;oBCgB;GDoE;CDG;AGK;CHS;AIM;CJG;AKE;oBHC;GGU;CLC;AME;CN8F"}],[{"names":["<global>","createIdentityMatrix","createCopy","createOrthographic","createFrustum","createPerspective","createTranslate2d","reuseTranslate2dCommand","reuseTranslate3dCommand","createScale","reuseScaleCommand","reuseScale3dCommand","reusePerspectiveCommand","reuseScaleXCommand","reuseScaleYCommand","reuseScaleZCommand","reuseRotateXCommand","reuseRotateYCommand","reuseRotateZCommand","createRotateZ","reuseSkewXCommand","reuseSkewYCommand","multiplyInto","determinant","inverse","transpose","multiplyVectorByMatrix","v3Length","v3Normalize","v3Dot","v3Combine","v3Cross","quaternionToDegreesXYZ","roundTo3Places","decomposeMatrix"],"mappings":"AAA;wBCmB;GDE;cEE;GFmB;sBGE;GHU;iBIE;GJW;qBKQ;GLM;qBME;GNI;2BOE;GPG;2BQE;GRI;eSE;GTI;qBUE;GVG;uBWE;GXI;2BYE;GZE;EaE;GbE;EcE;GdE;EeE;GfE;uBgBE;GhBK;uBiBE;GjBK;uBkBG;GlBK;iBmBE;GnBI;qBoBE;GpBE;qBqBE;GrBE;gBsBE;GtBqD;EuBE;GvB6C;EwBS;GxByI;EyBK;GzBmB;E0BK;G1BQ;E2BK;G3BE;E4BK;G5BG;E6BM;G7BE;E8BM;G9BW;E+BM;G/BM;EgCkB;GhC0B;EiCM;GjCG;EkCa;GlC8K"}],[{"names":["<global>","sizesDiffer"],"mappings":"AAA;oBCa;CDI"}],[{"names":["<global>","StyleSheetValidation","validateStyleProp","validateStyle","addValidStylePropTypes","styleError"],"mappings":"AAA;ACwB;ECC;GDsB;EEE;GFe;EGK;GHO;CDC;mBKE;CLU"}],[{"names":["<global>","flattenStyle"],"mappings":"AAA;ACiB;CDqB"}],[{"names":["<global>","React.forwardRef$argument_0"],"mappings":"AAA;qBC8B;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","codegenNativeCommands","options.supportedCommands.forEach$argument_0","commandObj.command"],"mappings":"AAA;ACkB;oCCG;0BCC;KDE;GDC;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","invokeGuardedCallbackImpl","reporter.onError","invokeGuardedCallback","invokeGuardedCallbackAndCatchFirstError","executeDispatch","executeDirectDispatch","functionThatReturnsTrue","functionThatReturnsFalse","SyntheticEvent","Object.assign$argument_1.preventDefault","Object.assign$argument_1.stopPropagation","Object.assign$argument_1.persist","Object.assign$argument_1.destructor","SyntheticEvent.Interface.currentTarget","SyntheticEvent.Interface.timeStamp","SyntheticEvent.extend","E","Class","createOrGetPooledEvent","releasePooledEvent","addEventPoolingTo","SyntheticEvent.extend$argument_0.touchHistory","isStartish","isMoveish","timestampForTouch","getTouchIdentifier","recordTouchStart","recordTouchMove","recordTouchEnd","ResponderTouchHistoryStore.recordTouchTrack","accumulate","accumulateInto","forEachAccumulated","changeResponder","getParent","traverseTwoPhase","getListener","accumulateDirectionalDispatches","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatchesSingleSkipTarget","accumulateTwoPhaseDispatchesSingle","ResponderEventPlugin._getResponder","ResponderEventPlugin.extractEvents","ResponderEventPlugin.injection.injectGlobalResponderHandler","recomputePluginOrdering","publishRegistrationName","getListener$1","accumulateDirectionalDispatches$1","accumulateTwoPhaseDispatchesSingle$1","accumulateDirectDispatchesSingle$1","injectedNamesToPlugins$jscomp$inline_222.ReactNativeBridgeEventPlugin.extractEvents","getInstanceFromTag","batchedUpdatesImpl","batchedUpdates","executeDispatchesAndReleaseTopLevel","_receiveRootNodeIDEvent","batchedUpdates$argument_0","ReactNativePrivateInterface.RCTEventEmitter.register$argument_0.receiveEvent","ReactNativePrivateInterface.RCTEventEmitter.register$argument_0.receiveTouches","getFiberCurrentPropsFromNode","getNodeFromInstance","ResponderEventPlugin.injection.injectGlobalResponderHandler$argument_0.onChange","getIteratorFn","getComponentName","getNearestMountedFiber","assertIsMounted","findCurrentFiberUsingSlowPath","findCurrentHostFiber","doesFiberContain","defaultDiffer","restoreDeletedValuesInNestedArray","diffNestedProperty","addNestedProperty","clearNestedProperty","diffProperties","mountSafeCallback_NOT_REALLY_SAFE","<anonymous>","ReactNativeFiberHostComponent","_proto.blur","_proto.focus","_proto.measure","_proto.measureInWindow","_proto.measureLayout","_proto.setNativeProps","shim","allocateTag","recursivelyUncacheFiberNode","finalizeInitialChildren","parentInstance._children.map$argument_0","describeComponentFrame","describeFunctionComponentFrame","createCursor","pop","push","getMaskedContext","isContextProvider","popContext","pushTopLevelContextObject","processChildContext","pushContextProvider","invalidateContextProvider","getHighestPriorityLanes","schedulerPriorityToLanePriority","lanePriorityToSchedulerPriority","getNextLanes","getLanesToRetrySynchronouslyOnError","findUpdateLane","getHighestPriorityLane","createLaneMap","markRootUpdated","clz32Fallback","getCurrentPriorityLevel","reactPriorityToSchedulerPriority","runWithPriority","scheduleCallback","flushSyncCallbackQueue","flushSyncCallbackQueueImpl","runWithPriority$argument_1","is","shallowEqual","describeFiber","getStackByFiberInDevAndProd","resolveDefaultProps","resetContextDependencies","popProvider","scheduleWorkOnParentPath","prepareToReadContext","readContext","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","enqueueCapturedUpdate","processUpdateQueue","commitUpdateQueue","applyDerivedStateFromProps","classComponentUpdater.isMounted","classComponentUpdater.enqueueSetState","classComponentUpdater.enqueueReplaceState","classComponentUpdater.enqueueForceUpdate","checkShouldComponentUpdate","constructClassInstance","callComponentWillReceiveProps","mountClassInstance","coerceRef","current","throwOnInvalidObjectType","ChildReconciler","deleteChild","deleteRemainingChildren","mapRemainingChildren","useFiber","placeChild","placeSingleChild","updateTextNode","updateElement","updatePortal","updateFragment","createChild","updateSlot","updateFromMap","reconcileChildrenArray","oldFiber.forEach$argument_0","reconcileChildrenIterator","requiredContext","pushHostContainer","popHostContainer","pushHostContext","popHostContext","findFirstSuspended","resetWorkInProgressVersions","throwInvalidHookError","areHookInputsEqual","renderWithHooks","mountWorkInProgressHook","updateWorkInProgressHook","basicStateReducer","updateReducer","rerenderReducer","readFromUnsubcribedMutableSource","useMutableSource","dispatcher.useState$argument_0","dispatcher.useEffect$argument_0","subscribe$argument_1","latestSetSnapshot$argument_0","updateMutableSource","mountState","pushEffect","updateRef","mountEffectImpl","updateEffectImpl","mountEffect","updateEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","startTransition","dispatchAction","HooksDispatcherOnMount.useCallback","HooksDispatcherOnMount.useImperativeHandle","HooksDispatcherOnMount.useLayoutEffect","HooksDispatcherOnMount.useMemo","HooksDispatcherOnMount.useReducer","HooksDispatcherOnMount.useRef","HooksDispatcherOnMount.useDeferredValue","mountEffect$argument_0","HooksDispatcherOnMount.useTransition","HooksDispatcherOnMount.useMutableSource","HooksDispatcherOnMount.useOpaqueIdentifier","HooksDispatcherOnUpdate.useState","HooksDispatcherOnUpdate.useDeferredValue","updateEffect$argument_0","HooksDispatcherOnUpdate.useTransition","HooksDispatcherOnUpdate.useOpaqueIdentifier","HooksDispatcherOnRerender.useState","HooksDispatcherOnRerender.useDeferredValue","HooksDispatcherOnRerender.useTransition","HooksDispatcherOnRerender.useOpaqueIdentifier","reconcileChildren","updateForwardRef","updateMemoComponent","updateSimpleMemoComponent","updateOffscreenComponent","markRef","updateFunctionComponent","updateClassComponent","finishClassComponent","pushHostRootContext","updateSuspenseComponent","mountSuspenseFallbackChildren","updateSuspensePrimaryChildren","updateSuspenseFallbackChildren","scheduleWorkOnFiber","initSuspenseListRenderState","updateSuspenseListComponent","bailoutOnAlreadyFinishedWork","appendAllChildren","updateHostContainer","updateHostComponent$1","updateHostText$1","cutOffTailIfNeeded","completeWork","unwindWork","createCapturedValue","logCapturedError","setTimeout$argument_0","createRootErrorUpdate","lane.callback","createClassErrorUpdate","lane.payload","safelyDetachRef","commitBeforeMutationLifeCycles","commitLifeCycles","hideOrUnhideAllChildren","commitUnmount","detachFiberMutation","isHostParent","commitPlacement","insertOrAppendPlacementNodeIntoContainer","insertOrAppendPlacementNode","unmountHostComponents","commitWork","attachSuspenseRetryListeners","wakeables.forEach$argument_0","isSuspenseBoundaryBeingHidden","requestEventTime","requestUpdateLane","scheduleUpdateOnFiber","markUpdateLaneFromFiberToRoot","ensureRootIsScheduled","performConcurrentWorkOnRoot","markRootSuspended$1","performSyncWorkOnRoot","pushRenderLanes","popRenderLanes","prepareFreshStack","handleError","pushDispatcher","renderRootSync","workLoopSync","workLoopConcurrent","performUnitOfWork","completeUnitOfWork","commitRoot","commitRootImpl","commitBeforeMutationEffects","scheduleCallback$argument_1","flushPassiveEffects","enqueuePendingPassiveHookEffectMount","enqueuePendingPassiveHookEffectUnmount","flushPassiveEffectsImpl","captureCommitPhaseErrorOnRoot","captureCommitPhaseError","pingSuspendedRoot","resolveRetryWakeable","beginWork$1","FiberNode","createFiber","shouldConstruct","resolveLazyComponentTag","createWorkInProgress","createFiberFromTypeAndProps","createFiberFromFragment","createFiberFromOffscreen","createFiberFromText","createFiberFromPortal","FiberRootNode","createPortal","findHostInstance","updateContainer","emptyFindFiberByHostInstance","findNodeHandle","unmountComponentAtNode","updateContainer$argument_3","devToolsConfig$jscomp$inline_908.rendererConfig.getInspectorDataForViewTag","internals$jscomp$inline_1115.findHostInstanceByFiber","exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.computeComponentStackForErrorReporting","exports.createPortal","exports.dispatchCommand","exports.findHostInstance_DEPRECATED","exports.render","exports.unmountComponentAtNodeAndRemoveContainer"],"mappings":"AAA;ACkB;CDO;aEM;KFG;AGE;CHI;AIC;CJuB;AKI;CLK;AMC;CNa;AOC;CPE;AQC;CRE;ASC;CTyB;kBUE;GVQ;mBWC;GXO;WYC;GZE;caE;GbO;iBcK;GdE;aeI;GfE;wBgBI;ECC,eD;EEC;GFE;ChBW;AmBE;CnBY;AoBC;CpBO;AqBC;CrBI;gBsBE;GtBE;AuBE;CvBE;AwBC;CxBE;AyBW;CzBE;A0BC;C1BI;A2BC;C3B4B;A4BC;C5BW;A6BC;C7BW;oB8BE;G9B0B;A+BG;C/BY;AgCC;ChCY;AiCC;CjCE;AkCG;ClCS;AmCyD;CnCI;AoCC;CpCI;AqCC;CrCc;AsCC;CtCe;AuCC;CvCgB;AwCC;CxCM;AyCC;CzCI;mB0CE;K1CE;mB2CE;K3C0Q;oC4CG;O5CE;A6CK;C7C+D;A8CC;C9CQ;A+CI;C/Cc;AgDO;ChDe;AiDC;CjDa;AkDC;ClDgB;qBmDc;OnD4B;AoDiC;CpDE;AqDC;CrDE;AsDE;CtDQ;AuDE;CvDkB;AwDE;iBCK;GDqC;CxDC;gB0DE;G1DE;kB2DC;G3D+B;+B4DE;C5DE;sB6DE;C7DM;Y8DE;G9DO;A+DyC;C/DM;AgEC;ChE2C;AiEC;CjEa;AkEC;ClEG;AmEC;CnE2E;AoEC;CpEiB;AqEC;CrEW;AsEK;CtEQ;AuEC;CvEqC;AwEC;CxEqD;AyEC;CzEgB;A0EC;C1EgB;A2EC;C3EoF;A4EC;SCC;GDM;C5EC;qC6EC;ECC;GDI;gBEE;GFE;iBGC;GHE;mBIC;GJK;2BKC;GLK;yBMC;GNa;0BOC;GPa;C7EE;AqFC;CrFI;AsFK;CtFK;AuFC;CvFS;AwFC;gDCE;GDE;CxFM;A0FG;C1FI;A2FC;C3FI;A4FG;C5FE;A6FC;C7FG;A8FC;C9FI;A+FK;C/FiB;AgGC;ChGG;AiGC;CjGG;AkGC;ClGO;AmGC;CnGc;AoGC;CpGS;AqGC;CrGkB;AsGM;CtGgC;AuGC;CvGc;AwGC;CxG4B;AyGC;CzGgD;A0GC;C1GG;A2GC;C3GkC;A4GC;C5GE;A6GC;C7GG;A8GC;C9GQ;A+GI;C/GE;iE6EgB,a7E;Q6EQ;S7EE;AgHC;ChHe;AiHC;CjHe;AkHC;ClHG;AmHC;CnHG;AoHC;CpHO;AqHC;0BCM;ODM;CrHa;AuHE;CvHE;AwHG;CxHmB;AyHC;CzHuB;A0HC;C1HW;A2HC;C3HU;A4HK;C5HE;A6HC;C7HI;A8HC;C9He;A+HC;C/HQ;AgIC;ChIuB;AiIE;CjIQ;AkIC;ClIU;AmIC;CnIS;AoIC;CpIU;AqIC;CrI4C;AsIC;CtI+H;AuIC;CvIqB;AwIE;CxIe;ayIE;GzII;mB0IC;G1IS;uB2IC;G3IU;sB4IC;G5IS;A6IE;C7Ie;A8IC;C9IyB;A+IC;C/Ia;AgJC;ChJkC;AiJE;gBC8B;ODI;CjJgB;AmJC;CnJS;AoJC;ECC;GDU;EEC;GFM;EGC;GHO;EIC;GJK;EKC;GLa;EMC;GNK;EOC;GPU;EQC;GRmB;ESC;GTe;EUC;GVe;EWC;GXoD;EYC;GZgC;EaC;Gb+C;EcC;uBCsF;ODE;GdE;EgBC;uBDuE;OCE;GhBE;SvEC;GuEiL;CpJC;AqKO;CrKM;AsKC;CtKM;AuKC;CvKI;AwKC;CxKiB;AyKC;CzKG;A0KE;C1KsB;A2KE;C3KI;A4KS;C5KI;A6KC;C7KK;A8KC;C9K2C;A+KC;C/KY;AgLC;ChL6B;AiLC;CjLE;AkLC;ClLkE;AmLC;CnLsB;AoLC;CpLgB;AqLC;+CCS;KDE;IEY;KFuB;IEI;uCCC;4BCQ;WDE;ODE;KFC;CrLsB;A0LC;C1LG;A2LC;C3LgB;A4LC;C5Le;A6LC;C7LE;A8LC;C9LS;A+LC;C/Lc;AgMC;ChME;AiMC;CjME;AkMC;ClME;AmMC;MtHK;OsHE;MtHM;OsHE;CnME;AoMC;CpMQ;AqMC,6BrM;AsMC;CtMY;AuMC;CvMa;AwMC;2DlFE;GkFE;2DlFC;GkFQ;CxMC;AyMC;CzMsC;iB0MqB;K1MM;yB2MG;K3MQ;qB4MC;K5ME;a6MC;K7MM;gB8MC;K9MgB;Y+MC;K/MI;sBgNG;QCK;SDQ;KhNI;mBkNC;KlNM;sBmNC;KnNQ;yBoNC;KpNE;cqNa;KrNE;sBsNE;QCK;SDQ;KtNI;mBwNC;KxNG;yByNE;KzNE;c0Na;K1NE;sB2NE;QJK;SIQ;K3NI;mB4NC;K5NG;yB6NE;K7NE;A8NK;C9NU;A+NC;C/N4B;AgOC;ChOuD;AiOC;CjO2B;AkOC;ClOkC;AmOC;CnOO;AoOC;CpO8B;AqOC;CrOwM;AsOC;CtOuC;AuOC;CvOW;AwOE;CxO8G;AyOC;CzO6B;A0OC;C1OoB;A2OC;C3OuC;A4OC;C5OK;A6OC;C7O0B;A8OC;C9O8F;A+OC;C/OsB;oBgPK;ChPgB;sBiPC,ajP;wBkPC;ClPK;mBmPC;CnPE;AoPC;CpPuB;AqPC;CrP+S;AsPC;CtP0C;AuPC;CvPM;AwPQ;eCU;KDE;CxPE;A0PE;kBCK;GDG;C1PE;A4PC;mBCM;KDG;qBDK;KCU;C5PE;A8PE;C9PU;A+PC;C/PgC;AgQC;ChQ2F;AiQC;CjQyD;AkQC;ClQsD;AmQC;CnQW;AoQC;CpQE;AqQC;CrQ8D;AsQC;CtQoB;AuQC;CvQ4D;AwQC;CxQ2G;AyQC;CzQmF;A0QC;sBCO;KDI;C1QE;A4QC;C5QO;A6QoC;C7QM;A8QC;C9Q2B;A+QC;C/Q6B;AgRC;ChRY;AiRC;CjRoE;AkRC;ClRmI;AmRC;CnRW;AoRC;CpRgC;AqRC;CrRI;AsRC;CtRG;AuRC;CvRiD;AwRC;CxRmL;AyRC;CzRI;A0RC;C1RwB;A2RC;C3RE;A4RC;C5RG;A6RC;C7RK;A8RC;C9RuD;A+RC;C/RI;AgSC;ChS+L;AiSC;2BCiB;ODG;CjSG;AmSC;CnSU;AoSC;yBFI;KEG;CpSC;AqSC;yBHI;KGG;CrSC;AsSC;CtS6C;AuSC;CvSS;AwSC;CxSqC;AySC;CzSe;A0SC;C1SmB;c2SE;C3S8gB;A4SC;C5Sa;A6SC;C7SE;A8SC;C9SG;A+SC;C/SS;AgTC;ChTmC;AiTC;CjT0F;AkTC;ClTI;AmTC;CnTK;AoTC;CpTI;AqTC;CrTc;AsTC;CtTa;AuTC;CvTU;AwTC;CxTY;AyTC;CzT0D;A0TC;C1TE;A2TC;C3TY;A4TC;sCCG;KDE;C5TC;qBqDC;CrDW;kC8TQ;O9TI;sC6EC;O7EI;2B+TiB;G/TG;0CgUwB;GhUI;uBiUE;CjUO;0BkUC;ClUa;sCmUC;CnUW;iBoUE;CpUqB;mDqUE;CrUG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","global.performance.now"],"mappings":"AAA;2BCqB;GDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","handleError"],"mappings":"AAA;sBCqB;GDO"}],[{"names":["<global>","SyntheticError","unstable_setExceptionDecorator","preprocessException","reportException","symbolicateStackTrace.then$argument_0","symbolicateStackTrace.then._catch$argument_0","handleException","reactConsoleErrorHandler","Array.prototype.map.call$argument_1","installConsoleErrorReporter"],"mappings":"AAA;ACe;CDE;AEY;CFI;AGE;CHY;AIM;cCqE;SDU;eEC;SFE;CJQ;AOe;CPiB;AQE;uBCgD;gEDC;CRc;AUM;CVa"}],[{"names":["<global>","_wrapNativeSuper","Wrapper"],"mappings":"AAA;ACQ;ICgB;KDE;CDe"}],[{"names":["_isNativeFunction","<global>"],"mappings":"AAA;CCE"}],[{"names":["<global>","_construct"],"mappings":"AAA;ACI;CDkB"}],[{"names":["_isNativeReflectConstruct","Reflect.construct$argument_2","<global>"],"mappings":"AAA;kECM,cD;CEK"}],[{"names":["<global>","ExceptionsManager.reportFatalException","ExceptionsManager.reportSoftException","ExceptionsManager.updateExceptionMessage","ExceptionsManager.dismissRedbox","ExceptionsManager.reportException"],"mappings":"AAA;ECkE;GDM;EEC;GFM;EGC;GHM;EIC;GJK;EKC;GLU"}],[{"names":["<global>","convertHermesStack","parseErrorStack","stacktraceParser.parse.map$argument_0"],"mappings":"AAA;AC0B;CDqB;AEE;6CCU;QDG;CFG"}],[{"names":["<global>","parseLine","parseHermesStack"],"mappings":"AAA;ACkE;CD+B;iBEE;CFoB"}],[{"names":["<global>","parse","lines.reduce$argument_0","parseChrome","parseWinjs","parseGecko","parseJSC","parseNode"],"mappings":"AAA;ACU;sBCE;GDQ;CDC;AGI;CH6B;AII;CJc;AKK;CLwB;AMI;CNc;AOI;CPc"}],[{"names":["<global>","polyfillGlobal$argument_1"],"mappings":"AAA;4BCoC,2BD"}],[{"names":["<global>","polyfillObjectProperty","polyfillGlobal"],"mappings":"AAA;AC2B;CDsB;AEE;CFE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","valuePromise","Promise.resolve","Promise$argument_0","iterableToArray","Promise.all","res","val.then$argument_0","p.then$argument_0","Promise.reject","Promise.race","iterableToArray.forEach$argument_0","Promise.prototype._catch"],"mappings":"AAA;ACiB;CDK;kBEC;yBCiB;ODE;CFI;sBIE;CJU;cKE;qBFG;IGG;mBCQ;WDE;mBEM;aFE;KHS;GEI;CLC;iBSE;qBNC;GME;CTC;eUE;qBPC;oCQC;KRE;GOC;CVC;6BYI;CZE"}],[{"names":["<global>","noop","getThen","tryCallOne","tryCallTwo","Promise","Promise.prototype.then","safeThen","self.constructor$argument_0","handle","handleResolved","setImmediate$argument_0","resolve","reject","finale","Handler","doResolve","tryCallTwo$argument_1","tryCallTwo$argument_2"],"mappings":"AAA;ACI,kBD;AEqB;CFO;AGE;CHO;AIC;CJO;AKI;CLa;yBMK;CNO;AOE;8BCC;GDI;CPC;ASC;CTsB;AUE;eCC;GDgB;CVC;AYC;CZgC;AaE;CbO;AcC;CdW;AeE;CfI;AgBQ;2BCE;GDI,EE;GFI;ChBK"}],[{"names":["<global>","Promise.prototype.done","self.then$argument_1","setTimeout$argument_0"],"mappings":"AAA;yBCK;kBCE;eCC;KDE;GDC;CDC"}],[{"names":["<global>","Promise.prototype._finally","then$argument_0","Promise.resolve.then$argument_0","then$argument_1"],"mappings":"AAA;4BCK;mBCC;qCCC;KDE;GDC,EG;qCDC;KCE;GHC;CDC"}],[{"names":["<global>","polyfillGlobal$argument_1"],"mappings":"AAA;qCCkB;CDQ"}],[{"names":["<global>","<anonymous>","define","wrap","tryCatch","Generator","GeneratorFunction","GeneratorFunctionPrototype","define$argument_2","defineIteratorMethods","forEach$argument_0","exports.isGeneratorFunction","exports.mark","exports.awrap","AsyncIterator","invoke","PromiseImpl.resolve.then$argument_0","PromiseImpl.resolve.then$argument_1","enqueue","callInvokeWithMethodAndArg","PromiseImpl$argument_0","exports.async","iter.next.then$argument_0","makeInvokeMethod","maybeInvokeDelegate","pushTryEntry","resetTryEntry","Context","exports.keys","next","values","doneResult","Context.prototype.reset","Context.prototype.stop","Context.prototype.dispatchException","handle","Context.prototype.abrupt","Context.prototype.complete","Context.prototype.finish","Context.prototype._catch","Context.prototype.delegateYield"],"mappings":"AAA;eCO;ECW;GDQ;aCK;KDE;EEG;GFW;EGa;GHM;EIe,uBJ;EKC,+BL;EMC,wCN;4COK;GPE;EQyB;wCCC;gCFC;OEE;KDC;GRC;gCUE;GVQ;iBWE;GXS;kBYM;GZE;EaE;ICC;yDCU;WDE,EE;WFE;+CCG;SDM,EE;SFI;KDE;III;MCC;+BCC;SDE;ODC;KJqB;GbK;uDOG;GPE;kBoBM;yBCU;SDE;GpBC;EsBE;WRG;KQwE;GtBC;EuBM;GvB6E;6BOa;GPE;yBOE;GPE;EwBE;GxBa;EyBE;GzBK;E0BE;G1BO;iB2BE;WCS;KDe;G3BC;E6BE;2BDY;SCa;G7BQ;E8BG;G9BE;W+BK;K/BwB;UgCE;KhCU;uBiCE;MCM;ODa;KjCuC;YmCE;KnCgC;coCE;KpCiB;YqCE;KrCS;asCE;KtCgB;mBuCE;KvCc;CDS"}],[{"names":["<global>","defineLazyTimer","polyfillGlobal$argument_1"],"mappings":"AAA;0BCoB;yBCC,wCD;GDC"}],[{"names":["<global>","_getFreeIndex","_allocateCallback","_callTimer","callback$argument_0.timeRemaining","_callImmediatesPass","_clearIndex","_freeCallback","setTimeout","_allocateCallback$argument_0","setInterval","setImmediate","requestAnimationFrame","requestIdleCallback","<anonymous>","setTimeout$argument_0","cancelIdleCallback","clearTimeout","clearInterval","clearImmediate","cancelAnimationFrame","callTimers","callIdleCallbacks","errors.forEach$argument_0","callImmediates","emitTimeDriftWarning","createTimer","deleteTimer","setSendIdleEvents"],"mappings":"AAA;AC4D;CDM;AEE;CFO;AGO;uBC6C;SDQ;CHkB;AKM;CLwB;AME;CNI;AOE;CPgB;cQY;MCW,iCD;GRK;eUM;MDe,iCC;GVK;gBWM;MFE,iCE;GXK;yBYK;GZI;uBaO;UCQ;WDO;4CEO;OFU;GbI;sBgBE;GhBgB;gBiBE;GjBE;iBkBE;GlBE;kBmBE;GnBM;wBoBE;GpBE;cqBM;aPkB;aOE;GrBO;qBsBE;qBCuB;4BRC;SQE,ID;GtBG;EwBM;qBDI;4BRC;SQE,IC;GxBG;EyBK;GzBM;A0BG;C1BQ;A2BE;C3BG;A4BE;C5BG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","polyfillGlobal$argument_1"],"mappings":"AAA;iCCoB,0CD;2BCC,oCD;wBCE,uCD;0BCC,yCD;0BCC,yCD;2BCC,0CD;4BCC,uCD;uBCC,6BD;uBCC,6BD;6BCC,mCD;sBCC,gCD;kCCC,4CD;ECG,uED;ECI,mED"}],[{"names":["<global>","XMLHttpRequestEventTarget","XMLHttpRequest","setInterceptor","constructor","_reset","get__responseType","set__responseType","get__responseText","get__response","__didCreateRequest","__didUploadProgress","__didReceiveResponse","__didReceiveData","__didReceiveIncrementalData","__didReceiveDataProgress","__didCompleteResponse","_clearSubscriptions","forEach$argument_0","getAllResponseHeaders","Object.keys.map$argument_0","getResponseHeader","setRequestHeader","setTrackingName","setPerformanceLogger","open","send","RCTNetworking.addListener$argument_1","doSend","abort","setResponseHeaders","Object.keys.reduce$argument_0","setReadyState","addEventListener"],"mappings":"AAA;ACgF;CDQ;AEK;ECsD;GDE;EEE;GFG;EGE;GHkB;EIE;GJE;EKE;GL2B;EME;GNW;EOE;GP8C;EQG;GRU;ESG;GTa;EUE;GV0B;EWE;GXU;EYE;GZoB;EaE;Gbc;EcG;Gd8B;EeE;wCCC;KDI;GfE;EiBE;WCO;ODE;GjBE;EmBE;GnBG;EoBE;GpBK;EqBK;GrBG;EsBK;GtBG;EuBE;GvBgB;EwBE;sDCY;yCDC;6DCI;0CDC;yDCI;sCDC;oECI;iDDC;iECI;8CDC;8DCI;2CDC;mBEY;KF6B;GxBM;E2BE;G3BmB;E4BE;MCI;ODG;G5BG;E8BE;G9BiB;E+BG;G/BS;CFC"}],[{"names":["<global>","uuidv4","xxxxxxxxXxxx4xxxYxxxXxxxxxxxxxxx.replace$argument_1","createBlobCollector","BlobManager","createFromParts","parts.map$argument_0","items.reduce$argument_0","createFromOptions","release","addNetworkingHandler","addWebSocketHandler","removeWebSocketHandler","sendOverSocket"],"mappings":"AAA;AC0B;iECC;GDI;CDC;AGS;CHM;AIK;ECS;4BCO;KDoB;8BEC;KFM;GDW;EIM;GJc;EKK;GLQ;EMM;GNI;EOM;GPI;EQM;GRI;ESK;GTI;CJC"}],[{"names":["<global>","getConstants","addNetworkingHandler","addWebSocketHandler","removeWebSocketHandler","sendOverSocket","createFromParts","release"],"mappings":"AAA;ICgC;KDK;IEC;KFE;IGC;KHE;IIC;KJE;IKC;KLE;IMC;KNE;IOC;KPE"}],[{"names":["<global>","Blob","constructor","set__data","get__data","slice","close","get__size","get__type"],"mappings":"AAA;ACmD;ECQ;GDG;EEQ;GFE;EGG;GHM;EIE;GJyB;EKc;GLI;EMM;GNE;EOO;GPE;CDC"}],[{"names":["<global>","register","unregister","has"],"mappings":"AAA;iBCY;CDM;mBEE;CFO;YGE;CHE"}],[{"names":["<global>","pd","setCancelFlag","Event","Event.prototype.get__type","Event.prototype.get__target","Event.prototype.get__currentTarget","Event.prototype.composedPath","Event.prototype.get__NONE","Event.prototype.get__CAPTURING_PHASE","Event.prototype.get__AT_TARGET","Event.prototype.get__BUBBLING_PHASE","Event.prototype.get__eventPhase","Event.prototype.stopPropagation","Event.prototype.stopImmediatePropagation","Event.prototype.get__bubbles","Event.prototype.get__cancelable","Event.prototype.preventDefault","Event.prototype.get__defaultPrevented","Event.prototype.get__composed","Event.prototype.get__timeStamp","Event.prototype.get__srcElement","Event.prototype.get__cancelBubble","Event.prototype.set__cancelBubble","Event.prototype.get__returnValue","Event.prototype.set__returnValue","Event.prototype.initEvent","defineRedirectDescriptor","get","set","defineCallDescriptor","value","defineWrapper","CustomEvent","getWrapper","wrapEvent","isStopped","setEventPhase","setCurrentTarget","setPassiveListener","isObject","getListeners","defineEventAttributeDescriptor","defineEventAttribute","defineCustomEventTarget","CustomEventTarget","EventTarget","EventTarget.prototype.addEventListener","EventTarget.prototype.removeEventListener","EventTarget.prototype.dispatchEvent"],"mappings":"AAA;AC2C;CDQ;AEM;CFqB;AGY;CHwB;IIQ;KJE;IKM;KLE;IMM;KNE;IOK;KPM;IQM;KRE;ISM;KTE;IUM;KVE;IWM;KXE;IYM;KZE;IaM;KbO;IcM;KdQ;IeM;KfE;IgBM;KhBE;IiBM;KjBE;IkBM;KlBE;ImBM;KnBE;IoBM;KpBE;IqBO;KrBE;IsBO;KtBE;IuBC;KvBU;IwBO;KxBE;IyBC;KzBI;I0BS;K1BE;A2BwB;QCE;SDE;QEC;SFE;C3BI;A8BQ;QCE;SDG;C9BI;AgCS;ICO;KDE;ChCuB;AkCQ;ClCW;AmCS;CnCG;AoCQ;CpCE;AqCS;CrCE;AsCS;CtCE;AuCS;CvCE;AwC4B;CxCE;AyCQ;CzCQ;A0CQ;QdE;ScU;QbE;SayC;C1CI;A2CQ;C3CM;A4CQ;ICE;KDE;C5Ce;A8Ce;C9CkB;I+CW;K/C6C;IgDS;KhD+B;IiDO;KjDoE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PerformanceLogger","PerformanceLogger#addTimespan","PerformanceLogger#append","PerformanceLogger#clear","PerformanceLogger#clearCompleted","PerformanceLogger#close","PerformanceLogger#currentTimestamp","PerformanceLogger#getExtras","PerformanceLogger#getPoints","PerformanceLogger#getPointExtras","PerformanceLogger#getTimespans","PerformanceLogger#hasTimespan","PerformanceLogger#isClosed","PerformanceLogger#logEverything","PerformanceLogger#markPoint","PerformanceLogger#removeExtra","PerformanceLogger#setExtra","PerformanceLogger#startTimespan","PerformanceLogger#stopTimespan","createPerformanceLogger"],"mappings":"AAA;AC+D;ECO;GD8B;EEE;GFW;EGE;GHO;EIE;GJW;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTE;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbmB;EcE;GdwB;EeE;GfI;EgBE;GhBkB;EiBE;GjBiC;EkBE;GlB2C;CDC;eoBO;CpBE"}],[{"names":["<global>","infoLog"],"mappings":"AAA;ACe;CDE"}],[{"names":["<global>","RCTNetworking","constructor","sendRequest","abortRequest","clearCookies"],"mappings":"AAA;ACkB;ECC;GDS;EEE;GF0B;EGE;GHE;EIE;GJE;CDC"}],[{"names":["<global>","NativeEventEmitter","constructor","addListener","removeAllListeners","removeSubscription"],"mappings":"AAA;eCoC;ECI;GDW;EEE;GFS;EGE;GHO;EIE;GJK;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","convertRequestBody"],"mappings":"AAA;ACyB;CDe"}],[{"names":["<global>","binaryToBase64"],"mappings":"AAA;ACc;CDc"}],[{"names":["<global>","getLens","byteLength","_byteLength","toByteArray","tripletToBase64","encodeChunk","fromByteArray"],"mappings":"AAA;ACqB;CDiB;AEG;CFK;AGE;CHE;AIE;CJ4C;AKE;CLK;AME;CNW;AOE;CP+B"}],[{"names":["<global>","FormData","constructor","append","getParts","_parts.map$argument_0"],"mappings":"AAA;ACkD;ECG;GDE;EEE;GFO;EGE;2BCC;KDoB;GHC;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","<anonymous>","isDataView","normalizeName","normalizeValue","iteratorFor","iterator.next","iterator.@@iterator","Headers","headers.forEach$argument_0","Object.getOwnPropertyNames.forEach$argument_0","Headers.prototype.append","Headers.prototype._delete","Headers.prototype.get","Headers.prototype.has","Headers.prototype.set","Headers.prototype.forEach","Headers.prototype.keys","forEach$argument_0","Headers.prototype.values","Headers.prototype.entries","consumed","fileReaderReady","Promise$argument_0","reader.onload","reader.onerror","readBlobAsArrayBuffer","readBlobAsText","readArrayBufferAsText","bufferClone","Body","_initBody","blob","arrayBuffer","text","formData","json","normalizeMethod","Request","Request.prototype.clone","decode","body.trim.split.forEach$argument_0","parseHeaders","preProcessedHeaders.split.map$argument_0","preProcessedHeaders.split.map.forEach$argument_0","Response","Response.prototype.clone","Response.error","Response.redirect","exports.DOMException","fetch","abortXhr","xhr.onload","setTimeout$argument_0","xhr.onerror","xhr.ontimeout","xhr.onabort","fixUrl","request.headers.forEach$argument_0","xhr.onreadystatechange"],"mappings":"AAA,CC;CDI,QC;ECyB;GDE;EEsB;GFQ;EGE;GHK;EIG;YCE;ODG;kCEI;OFE;GJI;EOE;sBCI;ODE;sBCE;ODE;kDEE;OFE;GPE;6BUE;GVK;gCWE;GXE;0BYE;GZG;0BaE;GbE;0BcE;GdE;8BeE;GfM;2BgBE;iBCE;KDE;GhBE;6BkBE;iBDE;KCE;GlBE;8BmBE;iBFE;KEE;GnBE;EoBM;GpBK;EqBE;uBCC;sBCC;ODE;uBEC;OFE;KDC;GrBC;EyBE;GzBK;E0BE;G1BK;E2BE;G3BQ;E4BE;G5BQ;E6BE;qBCG;KD0C;kBEG;OFe;yBGE;OHmB;gBIG;KJe;sBKG;OLE;gBMG;KNE;G7BG;EoCK;GpCG;EqCE;GrCwD;4BsCE;GtCE;EuCE;eCK;ODO;GvCE;EyCE;WCU;ODE;eEC;OFO;GzCE;E4CI;G5Ce;6B6CI;G7CO;mB8CE;G9CI;sB+CI;G/CM;2BgDM;KhDK;EiDK;uB3BC;M4BS;O5BE;mB6BE;mBCQ;SDE;O7BC;oB+BE;mBDC;SCE;O/BC;sBgCE;mBFC;SEE;OhCC;oBiCE;mBHC;SGE;OjCC;MkCE;OlCM;yDbuB;SaE;gCmCE;SnCE;iCoCM;SpCK;K2BI;GjDC;CDkB"}],[{"names":["<global>","WebSocket","constructor","get__binaryType","set__binaryType","close","send","ping","_close","_unregisterEvents","_subscriptions.forEach$argument_0","_registerEvents","_eventEmitter.addListener$argument_1"],"mappings":"AAA;ACsD;EC2B;GDgD;EEE;GFE;EGE;GHgB;EIE;GJO;EKE;GLyB;EME;GNM;EOE;GPS;EQE;gCCC,eD;GRE;EUE;yDCE;ODc;sDCC;ODO;wDCC;ODa;wDCC;ODiB;GVE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","WebSocketEvent","constructor"],"mappings":"AAA;ACmB;ECC;GDG;CDC"}],[{"names":["<global>","File","constructor","get__name","get__lastModified"],"mappings":"AAA;ACqB;ECI;GDY;EEK;GFG;EGK;GHE;CDC"}],[{"names":["<global>","FileReader","constructor","_reset","_clearSubscriptions","_subscriptions.forEach$argument_0","_setReadyState","readAsArrayBuffer","readAsDataURL","NativeFileReaderModule.readAsDataURL.then$argument_0","NativeFileReaderModule.readAsDataURL.then$argument_1","readAsText","NativeFileReaderModule.readAsText.then$argument_0","NativeFileReaderModule.readAsText.then$argument_1","abort","get__readyState","get__error","get__result"],"mappings":"AAA;ACqC;ECe;GDG;EEE;GFI;EGE;gCCC,mBD;GHE;EKE;GLa;EME;GNE;EOE;MCU;ODM;MEC;OFM;GPE;EUE;MCU;ODM;MEC;OFM;GVE;EaE;GbS;EcE;GdE;EeE;GfE;EgBE;GhBE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","URLSearchParams","URLSearchParams#constructor","Object.keys.forEach$argument_0","URLSearchParams#append","URLSearchParams#_delete","URLSearchParams#get","URLSearchParams#getAll","URLSearchParams#has","URLSearchParams#set","URLSearchParams#sort","URLSearchParams#@@iterator","URLSearchParams#toString","_searchParams.reduce$argument_0","validateBaseUrl","URL","createObjectURL","revokeObjectURL","constructor","get__hash","get__host","get__hostname","get__href","get__origin","get__password","get__pathname","get__port","get__protocol","get__search","get__searchParams","toJSON","toString","get__username"],"mappings":"AAA;OCuD;ECG;kCCE,oCD;GDE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTE;EUE;GVE;EWE;qCCK;KDE;GXC;CDC;AcE;CdK;OeE;ECG;GDK;EEE;GFE;EGE;GH2B;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPE;EQE;GRE;ESE;GTE;EUE;GVE;EWE;GXE;EYE;GZE;EaE;GbE;EcE;GdK;EeE;GfE;EgBE;GhBM;EiBE;GjBE;CfC"}],[{"names":["<global>","AbortSignal","AbortSignal#constructor","AbortSignal#get__aborted","createAbortSignal","abortSignal","AbortController","AbortController#constructor","AbortController#get__signal","AbortController#abort","getSignal"],"mappings":"AAA;ACc;ICI;KDG;IEI;KFM;CDC;AIK;CJK;AKI;CLM;AMqB;ICI;KDE;IEI;KFE;IGI;KHE;CNC;AUQ;CVM"}],[{"names":["<global>","global.alert"],"mappings":"AAA;iBCiB;GDI"}],[{"names":["<global>","Alert","alert","onAction","onError","prompt","callbackOrButtons.forEach$argument_0","RCTAlertManager.alertWithArgs$argument_1"],"mappings":"AAA;AC0C;ECC;uBC2C;ODY;sBEC,0CF;GDG;EIE;kCCgB;SDY;QEc;SFG;GJG;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","module.exports.alertWithArgs"],"mappings":"AAA;ECgB;GDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","polyfillObjectProperty$argument_2"],"mappings":"AAA;6CCoB,mBD"}],[{"names":["<global>","registerModule","registerModule$argument_1"],"mappings":"AAA;mBCiB;iEDC;2BEG,wCF;2BEC,kCF;8BEC,2CF;mCEC;4CFC;yBEE,oCF;EEG,8DF;2CEE;qDFC;0CEE;iDFC;qCEE;4CFC;8BEI,uCF;8BEE,+CF"}],[{"names":["<global>","captureHeap"],"mappings":"AAA;eCe;GDY"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","poke"],"mappings":"AAA;QCa;GDsB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","logIfNoNativeHook","logToConsole","setWarningHandler"],"mappings":"AAA;EC0B;GDU;EEG;GFQ;EGE;GHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getJSHierarchy"],"mappings":"AAA;kBCgB;GDoB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setup","enable","disable","registerBundle","log"],"mappings":"AAA;ECiB,UD;EEC;GFK;EGC,YH;EIC,mBJ;EKC,QL"}],[{"names":["<global>","__fetchSegment","SegmentFetcher.fetchSegment$argument_2","__getSegment","SegmentFetcher.getSegment$argument_2"],"mappings":"AAA;ACoB;ICc;KDc;CDE;AGI;ICmB;KDe;CHE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","module.exports.get__BatchedBridge","module.exports.get__ExceptionsManager","module.exports.get__Platform","module.exports.get__RCTEventEmitter","module.exports.get__ReactNativeViewConfigRegistry","module.exports.get__TextInputState","module.exports.get__UIManager","module.exports.get__deepDiffer","module.exports.get__deepFreezeAndThrowOnMutationInDev","module.exports.get__flattenStyle","module.exports.get__ReactFiberErrorDialog"],"mappings":"AAA;ECwB;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE;EMC;GNE;EOC;GPE;EQC;GRE;ESC;GTK;EUC;GVE;EWC;GXE"}],[{"names":["<global>","register"],"mappings":"AAA;ECe;GDE"}],[{"names":["<global>","processEventTypes","exports.register","exports.get"],"mappings":"AAA;AC4C;CDiC;mBEO;CFc;cGO;CH2B"}],[{"names":["<global>","currentlyFocusedInput","currentlyFocusedField","focusInput","blurInput","focusField","blurField","focusTextInput","blurTextInput","registerInput","unregisterInput","isTextInput"],"mappings":"AAA;AC4B;CDE;AEM;CFQ;AGE;CHI;AIE;CJI;AKE;CLM;AME;CNM;AOO;CPwB;AQO;CRwB;ASE;CTY;AUE;CVW;AWE;CXY"}],[{"names":["<global>","ReactNativeViewConfigRegistry.register$argument_1"],"mappings":"AAA;6DCqiB;GDE"}],[{"names":["<global>","requireNativeComponent","createReactNativeComponentClass$argument_1"],"mappings":"AAA;+BC0B;qDCC;iDDC;4BDC"}],[{"names":["<global>","createReactNativeComponentClass"],"mappings":"AAA;wCC0B;CDK"}],[{"names":["<global>","getNativeComponentAttributes","attachDefaultEventTypes","merge","getDifferForType","getProcessorForType"],"mappings":"AAA;ACwB;CDgE;AEK;CFkB;AGG;CH0B;AIE;CJiB;AKE;CLoB"}],[{"names":["<global>","insetsDiffer"],"mappings":"AAA;qBC2B;CDU"}],[{"names":["<global>","matricesDiffer"],"mappings":"AAA;uBCoB;CDwB"}],[{"names":["<global>","pointsDiffer"],"mappings":"AAA;qBCoB;CDI"}],[{"names":["<global>","processColorArray"],"mappings":"AAA;ACiB;CDI"}],[{"names":["<global>","getSourceCodeScriptURL","getDevServerURL","_coerceLocalScriptURL","getScriptURL","setCustomSourceTransformer","resolveAssetSource"],"mappings":"AAA;ACsB;CDY;AEE;CFc;AGE;CHc;AIE;CJK;AKE;CLI;AMM;CNmB"}],[{"names":["<global>","registerAsset","getAssetByID"],"mappings":"AAA;AC2B;CDI;AEE;CFE"}],[{"names":["<global>","getScaledAssetPath","getAssetPathInDrawableFolder","AssetSourceResolver","constructor","isLoadedFromServer","isLoadedFromFileSystem","defaultAsset","assetServerURL","scaledAssetPath","scaledAssetURLNearBundle","resourceIdentifierWithoutScale","drawableFolderInBundle","fromSource","pickScale"],"mappings":"AAA;ACoC;CDK;AEK;CFK;AGE;ECO;GDI;EEE;GFE;EGE;GHE;EIE;GJY;EKM;GLU;EMM;GNE;EOM;GPQ;EQQ;GRM;ESO;GTG;EUE;GVQ;EWE;GXY;CHC"}],[{"names":["<global>","getAndroidAssetSuffix","getAndroidResourceFolderName","getAndroidResourceIdentifier","getBasePath"],"mappings":"AAA;AC2B;CDM;AEa;CFmB;AGE;CHM;AIE;CJG"}],[{"names":["<global>","getConstants"],"mappings":"AAA;ECyB;GDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ReactNativeViewConfigRegistry.register$argument_1"],"mappings":"AAA;uEC6B;GDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","unstable_setLogListeners","deepDiffer"],"mappings":"AAA;ACoB;CDE;mBEK;CFsE"}],[{"names":["<global>","showErrorDialog"],"mappings":"AAA;ACyB;CDwB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","exports.unstable_now","w","f","g","h","exports.unstable_shouldYield","exports.unstable_forceFrameRate","k","F.port1.onmessage","x$argument_0","H","J","K","I","T","U","V","exports.unstable_cancelCallback","exports.unstable_continueExecution","exports.unstable_getCurrentPriorityLevel","exports.unstable_getFirstCallbackNode","exports.unstable_next","exports.unstable_pauseExecution","exports.unstable_runWithPriority","exports.unstable_scheduleCallback","exports.unstable_wrapCallback","<anonymous>"],"mappings":"AAA;uICQ,0BD,gDC,4BD;wFEC,0GF,GG,6DH,GI,gCJ,GK,2BL,8BM,oBN,mCO,YP;seMC;ENC,GQ,YR,iCO,kLP,sDS,0JT,GG,8CH,GI;EMC,qCN,IJ,GK,qBL,CW,gIC,8CZ;AaC,iTC,uEd;AeC,qJC,qGhB;AiBC,gcjB;8MkBC,4BlB,oCmB,6BnB,0CoB,oBpB,uCqB,uBrB;sBsBC,6GtB,iCuB,YvB,kEwB,qHxB;kCyBC,0bzB;8B0BC,2BC,uED,C1B"}],[{"names":["<global>","registerGeneratedViewConfig","ReactNativeViewConfigRegistry.register$argument_1"],"mappings":"AAA;AC6C;wDC8B;GDI;CDC"}],[{"names":["<global>","verifyComponentAttributeEquivalence","forEach$argument_0","lefthandObjectDiff","compare","getConfigWithoutViewProps","Object.keys.filter$argument_0","Object.keys.filter.reduce$argument_0","stringifyViewConfig","JSON.stringify$argument_1"],"mappings":"AAA;ACyC;MCQ;ODY;CDG;OGE;ECG;GDkB;CHe;OKE;YCS,kDD;YEC;KFG;CLC;OQE;ICG;KDK;CRG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","codegenNativeComponent"],"mappings":"AAA;AC4B;CDgC"}],[{"names":["<global>","Button","render"],"mappings":"AAA;ACyP;ECC;GD6D;CDC"}],[{"names":["<global>","TouchableText","TouchableText.getDerivedStateFromProps","TouchableText#render","TextAncestor.Consumer.props.children","TouchableText#_createResponseHandlers","onStartShouldSetResponder","onResponderGrant","onResponderMove","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","TouchableText#_attachTouchHandlers","touchableHandleActivePressIn","touchableHandleActivePressOut","touchableHandlePress","touchableHandleLongPress","touchableGetPressRectOffset","isTouchable","React.forwardRef$argument_0"],"mappings":"AAA;ACyD;ECyB;GDS;EEE;SCyB;WDc;GFI;EIE;iCCE;ODW;wBEC;OFK;uBGC;OHK;0BIC;OJK;4BKC;OLK;qCMC;ONS;GJE;EWK;wCCS;KDI;yCEC;KFI;gCGC;KHI;oCIC;KJI;uCKC;yCLG;GXC;CDC;oBkBE;yClBG;EmBM;GnBK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createReactNativeComponentClass$argument_1"],"mappings":"AAA;EC2B;ID2B;yDCM;QDO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DeprecatedStyleSheetPropType","<anonymous>"],"mappings":"AAA;ACe;SCK;GDQ;CDC"}],[{"names":["<global>","deprecatedCreateStrictShapeTypeChecker","checkType","chainedCheckType"],"mappings":"AAA;ACc;ECI;GDqD;EEC;GFQ;CDG"}],[{"names":["<global>","extractSingleTouch","TouchableMixin.componentDidMount","TouchableMixin.componentWillUnmount","TouchableMixin.touchableGetInitialState","TouchableMixin.touchableHandleResponderTerminationRequest","TouchableMixin.touchableHandleStartShouldSetResponder","TouchableMixin.touchableLongPressCancelsPress","TouchableMixin.touchableHandleResponderGrant","TouchableMixin.touchableHandleResponderRelease","TouchableMixin.touchableHandleResponderTerminate","TouchableMixin.touchableHandleResponderMove","TouchableMixin.touchableHandleFocus","TouchableMixin.touchableHandleBlur","TouchableMixin._remeasureMetricsOnActivation","TouchableMixin._handleQueryLayout","TouchableMixin._handleDelay","TouchableMixin._handleLongDelay","TouchableMixin._receiveSignal","TouchableMixin._cancelLongPressDelayTimeout","TouchableMixin._isHighlight","TouchableMixin._savePressInLocation","TouchableMixin._getDistanceBetweenPoints","TouchableMixin._performSideEffectsForTransition","TouchableMixin._startHighlight","TouchableMixin._endHighlight","setTimeout$argument_0","renderDebugView"],"mappings":"AAA;2BC0B;CDW;qBEyU;GFI;wBGK;GHI;4BIS;GJM;8CKM;GLE;0CMK;GNE;kCOK;GPE;iCQO;GRoC;mCSK;GTG;qCUK;GVG;gCWK;GX2E;wBYU;GZE;uBaU;GbE;iCc8E;GdW;sBeE;GfwB;gBgBE;GhBG;oBiBE;GjBS;kBkBU;GlBqC;gCmBE;GnBG;gBoBE;GpBK;wBqBE;GrBO;6BsBE;GtBS;oCuBa;GvB2D;mBwBE;GxBG;iByBE;+CCM;SDE;GzBK;mB2BwB;G3B2C"}],[{"names":["<global>","BoundingDimensions","prototype.destructor","getPooledFromElement"],"mappings":"AAA;ACsB;CDG;0CEE;CFG;0CGM;CHK"}],[{"names":["<global>","oneArgumentPooler","twoArgumentPooler","threeArgumentPooler","fourArgumentPooler","standardReleaser","addPoolingTo"],"mappings":"AAA;0BCqB;CDS;0BEE;CFS;4BGE;CHS;2BIE;CJS;yBKE;CLU;qBMgB;CNoB"}],[{"names":["<global>","Position","prototype.destructor"],"mappings":"AAA;ACuB;CDG;gCEE;CFG"}],[{"names":["<global>","playTouchSound"],"mappings":"AAA;kBCc;GDI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","nullthrows"],"mappings":"AAA;ACE;CDO"}],[{"names":["<global>","TouchableNativeFeedback","SelectableBackground","SelectableBackgroundBorderless","Ripple","canUseNativeForeground","_createPressabilityConfig","onPressIn","onPressMove","onPressOut","_dispatchPressedStateChange","_dispatchHotspotUpdate","render","componentDidUpdate","componentWillUnmount","<anonymous>"],"mappings":"AAA;ACkG;QCW;IDI;QEY;IFI;QGgB;GHY;iDIK;uDJC;EKM;iBCa;ODQ;mBEC;OFI;kBGC;OHO;GLE;ESE;GTY;EUE;GViB;EWE;GX0D;EYE;GZE;EaE;GbE;CDC;MeI;iDfG;MeC,mCf"}],[{"names":["<global>","isActiveSignal","isActivationSignal","isPressInSignal","isTerminalSignal","Pressability","constructor","configure","reset","getEventHandlers","_createEventHandlers","focusEventHandlers.onBlur","focusEventHandlers.onFocus","responderEventHandlers.onStartShouldSetResponder","responderEventHandlers.onResponderGrant","setTimeout$argument_0","responderEventHandlers.onResponderMove","responderEventHandlers.onResponderRelease","responderEventHandlers.onResponderTerminate","responderEventHandlers.onResponderTerminationRequest","responderEventHandlers.onClick","responderEventHandlers.onStartShouldSetResponder.testOnly_pressabilityConfig","onMouseEnter","onMouseLeave","_receiveSignal","_performTransitionSideEffects","_activate","_deactivate","_measureResponderRegion","_measureCallback","_isTouchWithinResponderRegion","_handleLongPress","_shouldLongPressCancelPress","_cancelHoverInDelayTimeout","_cancelHoverOutDelayTimeout","_cancelLongPressDelayTimeout","_cancelPressDelayTimeout","_cancelPressOutDelayTimeout","normalizeDelay","getTouchFromPressEvent"],"mappings":"AAA;uBCsQ;6CDE;2BEE;wCFE;wBGE;6CHG;yBIE;qEJC;eKwG;ECuB;GDE;EEE;GFE;EGK;GHU;EIK;GJK;EKE;cCE;ODK;eEC;OFK;iCGI;OHS;wBIE;+CCW;WDE;iDCU;SDE;OJC;uBME;ONgC;0BOE;OPE;4BQE;ORE;qCSE;OTS;eUE;OVK;qFWK;oBXC;0BYO;2DPW;qBOE;aZM;0BaE;2DRW;qBQE;abM;GLQ;EmBM;GnBmB;EoBM;GpB4D;EqBE;GrBW;EsBE;gDZe;SYE;GtBM;EuBE;GvBU;qBwBE;GxBU;EyBE;GzB4C;E0BE;G1BO;E2BE;G3BK;E4BE;G5BK;E6BE;G7BK;E8BE;G9BK;E+BE;G/BK;EgCE;GhCK;CLC;AsCE;CtCE;+BuCE;CvCU"}],[{"names":["<global>","enableHover","disableHover","isHoverEnabled"],"mappings":"AAA;wBCmC;KDK;yBEE;KFK;OGQ;CHE"}],[{"names":["<global>","createSquare","normalizeRect"],"mappings":"AAA;OCqB;CDE;OEE;CFE"}],[{"names":["<global>","PressabilityDebugView","isEnabled"],"mappings":"AAA;OC4C;CD6B;OEE;CFK"}],[{"names":["<global>","TouchableOpacity","_createPressabilityConfig","onBlur","onFocus","onPressIn","onPressOut","_setOpacityTo","_opacityActive","_opacityInactive","_getChildStyleOpacityWithDefault","render","componentDidUpdate","componentWillUnmount","React.forwardRef$argument_0"],"mappings":"AAA;ACoI;ECM;cCU;ODO;eEC;OFO;iBGG;OHS;kBIC;OJK;GDE;EMK;GNO;EOE;GPE;EQE;GRE;ESE;GTG;EUE;GV6C;EWE;GXK;EYE;GZE;CDC;mCcE;CdE"}],[{"names":["<global>","module.exports.get__FlatList","module.exports.get__Image","module.exports.get__ScrollView","module.exports.get__SectionList","module.exports.get__Text","module.exports.get__View"],"mappings":"AAA;EC4B;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE;EMC;GNE"}],[{"names":["<global>","emptyAnimation.start","emptyAnimation.stop","emptyAnimation.reset","emptyAnimation._startNativeLoop","emptyAnimation._isUsingNativeDriver","spring","start","timing","decay","sequence","parallel","delay","stagger","loop","event"],"mappings":"AAA;SC2C,QD;QEC,QF;SGC,QH;oBIC,QJ;wBKC;GLE;eMG;WCO;KDG;CNE;eQE;WDO;KCG;CRE;cSE;CTK;iBUE;CVI;iBWG;CXK;cYE;CZE;gBaE;CbK;acQ;CdK;ceE;CfE"}],[{"names":["<global>","attachNativeEvent","traverse","eventMappings.forEach$argument_0","detach","validateMapping","validate","argMapping.forEach$argument_0","AnimatedEvent","constructor","__addListener","__removeListener","_listeners.filter$argument_0","__attach","__detach","__getHandler","<anonymous>","_argMapping.forEach$argument_0","_callListeners","_listeners.forEach$argument_0"],"mappings":"AAA;AC0B;mBCS;GDa;0BEY;KFM;IGI;8BDE;SCM;KHE;CDE;AKE;mBCC;GDiC;qBEM;GFE;CLC;AQE;ECO;GDc;EEE;GFE;EGE;6CCC,iCD;GHC;EKE;GLW;EME;GNO;EOE;eCI;SDM;WCO;uBdM;Oca;+BCC;ODE;KDG;GPC;EUE;4BCC,6BD;GVC;CRC"}],[{"names":["<global>","_flush","findAnimatedStyles","animatedStyles.forEach$argument_0","AnimatedValue","constructor","__detach","NativeAnimatedAPI.getValue$argument_1","__getValue","setValue","setOffset","flattenOffset","extractOffset","stopAnimation","resetAnimation","_onAnimatedValueUpdateReceived","interpolate","animate","animation.start$argument_1","animation.start$argument_2","stopTracking","track","_updateValue","__getNativeConfig"],"mappings":"AAA;AC6C;ECE;GDS;yBEG,uCF;CDC;AIU;ECO;GDQ;EEE;wDCE;ODE;GFI;EIE;GJE;EKQ;GLY;EMS;GNK;EOQ;GPM;EQQ;GRM;ESS;GTK;EUO;GVG;EWE;GXE;EYM;GZE;EaQ;MCU;ODI;MEC;OFM;GbI;EgBK;GhBG;EiBK;GjBG;EkBE;GlBU;EmBE;GnBM;CJC"}],[{"names":["<global>","linear","createInterpolation","<anonymous>","interpolate","colorToRgba","createInterpolationFromStringOutputRange","outputRange._.match.map$argument_0","outputRange.forEach$argument_0","value.match.forEach$argument_0","outputRange._.replace$argument_1","isRgbOrRgba","checkPattern","findRange","checkValidInputRange","checkInfiniteRange","AnimatedInterpolation","constructor","__makeNative","__getValue","__attach","__detach","__transformDataType","__getNativeConfig"],"mappings":"AAA;eCgC,MD;AEM;SCuC;GDiB;CFC;AIE;CJkE;AKE;CLc;AMY;kECmB,QD;sBEC;0CCI;KDE;GFC;SCM;KDK;SHM;oDOK;KPM;GGC;CNC;AWE;CXE;AYE;CZQ;AaE;CbQ;AcE;Cdc;AeE;CfY;AgBE;ECU;GDK;EEE;GFG;EGE;GHO;EZE;GYE;EIE;GJE;EKE;GLG;EME;GNE;EOE;GPiB;ChBC"}],[{"names":["<global>","AnimatedNode","__attach","__detach","__getValue","__getAnimatedValue","__addChild","__removeChild","__getChildren","constructor","__makeNative","addListener","removeListener","removeAllListeners","hasListeners","_startListeningToNativeValueUpdates","NativeAnimatedHelper.nativeEventEmitter.addListener$argument_1","_onAnimatedValueUpdateReceived","__callListeners","_stopListeningForNativeValueUpdates","__getNativeTag","__getNativeConfig","toJSON"],"mappings":"AAA;ACuB;ECG,mBD;EEC;GFK;EGC,oBH;EIC;GJE;EKC,kCL;EMC,qCN;EOC;GPE;EQO;GRE;ESE;GTQ;EUS;GVO;EWQ;GXK;EYO;GZK;EaE;GbE;EcE;MCgB;ODK;GdE;EgBE;GhBE;EiBE;GjBI;EkBE;GlBQ;EmBE;GnBoB;EoBC;GpBI;EqBC;GrBE;CDC"}],[{"names":["<global>","API.getValue","API.setWaitingForIdentifier","API.unsetWaitingForIdentifier","API.disableQueue","API.queueOperation","API.createAnimatedNode","API.queueOperation$argument_0","API.startListeningToAnimatedNodeValue","API.stopListeningToAnimatedNodeValue","API.connectAnimatedNodes","API.disconnectAnimatedNodes","API.startAnimatingNode","API.stopAnimation","API.setAnimatedNodeValue","API.setAnimatedNodeOffset","API.flattenAnimatedNodeOffset","API.extractAnimatedNodeOffset","API.connectAnimatedNodeToView","API.disconnectAnimatedNodeFromView","API.restoreDefaultValues","API.dropAnimatedNode","API.addAnimatedEventToView","API.removeAnimatedEventFromView","addWhitelistedStyleProp","addWhitelistedTransformProp","addWhitelistedInterpolationParam","validateTransform","configs.forEach$argument_0","validateStyles","validateInterpolation","generateNewNodeTag","generateNewAnimationId","assertNativeAnimatedModule","shouldUseNativeDriver","transformDataType","module.exports.get__nativeEventEmitter"],"mappings":"AAA;YC8C;GDQ;2BEC;GFG;6BGC;GHO;gBIC;GJa;kBKC;GLM;sBMC;uBCE;0DDC;GNE;qCQC;uBDE;iECC;GRE;oCSC;uBFE;gEEC;GTE;wBUC;uBHE;oEGC;GVE;2BWC;uBJE;uEIC;GXE;sBYC;uBLO;OKM;GZE;iBaC;uBNE,qDM;GbC;wBcC;uBPE;+DOC;GdE;yBeC;uBRE;iEQC;GfE;6BgBC;uBTE;6DSC;GhBE;6BiBC;uBVE;6DUC;GjBE;6BkBC;uBXE;sEWC;GlBE;kCmBC;uBZK;2EYC;GnBE;wBoBC;yBbI;0DaC;GpBG;oBqBC;uBdE,gDc;GrBC;0BsBC;uBfM;OeK;GtBE;EuBC;uBhBM;OgBK;GvBE;AwBsD;CxBE;AyBE;CzBE;A0BE;C1BE;A2BE;kBCgB;GDM;C3BC;A6BE;C7BQ;A8BE;C9BQ;A+BE;C/BE;AgCE;ChCE;AiCE;CjCE;AkCI;ClCyB;AmCE;CnCa;EoCgB;GpCK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","AnimatedWithChildren","constructor","__makeNative","__addChild","__removeChild","__getChildren","__callListeners"],"mappings":"AAA;ACe;ECG;GDG;EEE;GFY;EGE;GHa;EIE;GJgB;EKE;GLE;EME;GNS;CDC"}],[{"names":["<global>","runAfterInteractions","Promise$argument_0","done","cancel","createInteractionHandle","clearInteractionHandle","setDeadline","_scheduleUpdate","_processUpdate","_addInteractionSet.forEach$argument_0","_deleteInteractionSet.forEach$argument_0"],"mappings":"AAA;ECuF;gCCY;KDU;YEG;OFQ;cGC;OHE;GDE;EKK;GLM;EMK;GNM;EOS;GPE;AQc;CRW;ASK;6BCI,qCD;gCEC,wCF;CT2B"}],[{"names":["<global>","TaskQueue","constructor","enqueue","enqueueTasks","tasks.forEach$argument_0","cancelTasks","_queueStack.map$argument_0","queue.tasks.filter$argument_0","_queueStack.map.filter$argument_0","hasTasksToProcess","processNext","_getCurrentQueue","_genPromise","task.gen.then$argument_0","task.gen.then._catch$argument_0"],"mappings":"AAA;AC2C;ECQ;GDG;EEO;GFE;EGE;kBCC,0BD;GHC;EKE;WCG;kCCE,0CD;QDC;cGC,mDH;GLC;ESY;GTE;EUK;GV0B;EWS;GXkB;EYE;YCY;ODQ;aEC;OFG;GZE;CDC"}],[{"names":["<global>","add","subtract","divide","multiply","modulo","diffClamp","_combineCallbacks","<anonymous>","maybeVectorAnim","spring","start","stop","reset","_startNativeLoop","_isUsingNativeDriver","timing","decay","sequence","onComplete","animations.forEach$argument_0","parallel","result.start","cb","result.stop","result.reset","result._startNativeLoop","result._isUsingNativeDriver","delay","stagger","animations.map$argument_0","loop","restart","forkEvent","unforkEvent","event"],"mappings":"AAA;YCkD;CDK;iBEE;CFK;eGE;CHK;iBIE;CJK;eKE;CLE;kBME;CNM;0BOE;WCK;KDG;CPI;wBSE;CTsB;eUE;gBCI;GDsB;aCG;ODE;YEE;OFE;aGE;OHE;wBIE;OJG;4BKE;OLE;CVG;egBE;gBLI;GKsB;aLI;OKE;YJE;OIE;aHE;OGE;wBFE;OEG;4BDE;OCE;ChBG;ciBE;gBNI;GMU;aNI;OME;YLE;OKE;aJE;OIE;wBHE;OGG;4BFE;OEE;CjBG;iBkBE;WPK;yBQC;ORc;KOO;UNE;KMI;WLE;yBOC;OPI;KKE;sBJE;KII;0BHE;KGE;ClBE;iBqBO;WCU;yBFM;mBGC;SHY;OEO;KDC;UGE;yBJC;OIG;KHC;WIE;yBLC;OKI;KJC;sBKE;KLI;0BME;KNE;CrBI;c4BE;C5BQ;gB6BE;mBCK;KDE;C7BE;a+BQ;WpBO;sBqBC;OrBY;KoBU;UnBE;KmBG;WlBE;KkBI;sBjBE;KiBI;0BhBE;KgBE;C/BE;AiCE;WzBU;KyBG;CjCE;AkCE;ClCO;cmCE;CnCU"}],[{"names":["<global>","AnimatedAddition","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACmB;ECI;GDI;EEE;GFI;EGE;GHE;EIE;GJE;EKE;GLG;EME;GNI;EOE;GPK;CDC"}],[{"names":["<global>","AnimatedDiffClamp","constructor","__makeNative","interpolate","__getValue","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACkB;ECO;GDO;EEE;GFG;EGE;GHE;EIE;GJM;EKE;GLE;EME;GNG;EOE;GPO;CDC"}],[{"names":["<global>","AnimatedDivision","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACmB;ECK;GDO;EEE;GFI;EGE;GHc;EIE;GJE;EKE;GLG;EME;GNI;EOE;GPK;CDC"}],[{"names":["<global>","AnimatedModulo","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACkB;ECI;GDI;EEE;GFG;EGE;GHI;EIE;GJE;EKE;GLE;EME;GNG;EOE;GPM;CDC"}],[{"names":["<global>","AnimatedMultiplication","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACmB;ECI;GDI;EEE;GFI;EGE;GHE;EIE;GJE;EKE;GLG;EME;GNI;EOE;GPK;CDC"}],[{"names":["<global>","AnimatedProps","constructor","__getValue","__getAnimatedValue","__attach","__detach","update","__makeNative","setNativeView","__connectAnimatedView","__disconnectAnimatedView","__restoreDefaultValues","__getNativeConfig"],"mappings":"AAA;ACoB;ECK;GDW;EEE;GFiB;EGE;GHS;EIE;GJO;EKE;GLW;EME;GNE;EOE;GPa;EQE;GRQ;ESE;GTa;EUE;GVa;EWE;GXQ;EYE;GZa;CDC"}],[{"names":["<global>","AnimatedStyle","constructor","_walkStyleAndGetValues","__getValue","_walkStyleAndGetAnimatedValues","__getAnimatedValue","__attach","__detach","__makeNative","__getNativeConfig"],"mappings":"AAA;ACmB;ECG;GDU;EEG;GFkB;EGE;GHE;EIG;GJY;EKE;GLE;EME;GNO;EOE;GPQ;EQE;GRQ;ESE;GTgB;CDC"}],[{"names":["<global>","AnimatedTransform","constructor","__makeNative","_transforms.forEach$argument_0","__getValue","_transforms.map$argument_0","__getAnimatedValue","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACgB;ECG;GDG;EEE;6BCC;KDO;GFE;EIE;gCCC;KDW;GJC;EME;gCDC;KCY;GNC;EOE;6BJC;KIO;GPC;EQE;6BLC;KKO;GRE;ESE;6BNG;KMiB;GTO;CDC"}],[{"names":["<global>","AnimatedSubtraction","constructor","__makeNative","__getValue","interpolate","__attach","__detach","__getNativeConfig"],"mappings":"AAA;ACmB;ECI;GDI;EEE;GFI;EGE;GHE;EIE;GJE;EKE;GLG;EME;GNI;EOE;GPK;CDC"}],[{"names":["<global>","AnimatedTracking","constructor","__makeNative","__getValue","__attach","__detach","update","__getNativeConfig"],"mappings":"AAA;ACqB;ECQ;GDe;EEE;GFK;EGE;GHE;EIE;GJU;EKE;GLG;EME;GNQ;EOE;GPc;CDC"}],[{"names":["<global>","AnimatedValueXY","constructor","setValue","setOffset","flattenOffset","extractOffset","__getValue","resetAnimation","stopAnimation","addListener","jointCallback","removeListener","removeAllListeners","getLayout","getTranslateTransform"],"mappings":"AAA;AC+B;ECY;GDsB;EEQ;GFG;EGS;GHG;EIQ;GJG;EKQ;GLG;EME;GNS;EOO;GPU;EQS;GRU;ESW;0BCE;KDE;GTM;EWQ;GXI;EYO;GZI;EaO;GbK;EcO;GdE;CDC"}],[{"names":["<global>","DecayAnimation","constructor","__getNativeAnimationConfig","start","onUpdate","stop"],"mappings":"AAA;ACqC;ECU;GDO;EEE;GFY;EGE;GHkB;EIE;GJmB;EKE;GLK;CDC"}],[{"names":["<global>","Animation","start","stop","__getNativeAnimationConfig","__debouncedOnEnd","__startNativeAnimation"],"mappings":"AAA;AC+B;ECM;YDM;EEC;GFI;EGC;GHI;EIE;GJI;EKC;GLsB;CDC"}],[{"names":["<global>","SpringAnimation","constructor","__getNativeAnimationConfig","start","getInternalState","onUpdate","stop"],"mappings":"AAA;ACyE;ECsB;GD8D;EEE;GFwB;EGE;GHuC;EIE;GJM;EKuB;GL4F;EME;GNM;CDC"}],[{"names":["<global>","stiffnessFromOrigamiValue","dampingFromOrigamiValue","fromOrigamiTensionAndFriction","fromBouncinessAndSpeed","normalize","projectNormal","linearInterpolation","quadraticOutInterpolation","b3Friction1","b3Friction2","b3Friction3","b3Nobounce"],"mappings":"AAA;ACkB;CDE;AEE;CFE;AGE;CHQ;AIE;ECI;GDE;EEE;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EME;GNE;EOE;GPO;EQE;GRQ;CJgB"}],[{"names":["<global>","easeInOut","TimingAnimation","constructor","__getNativeAnimationConfig","start","onUpdate","stop"],"mappings":"AAA;AC+C;CDM;AEE;ECY;GDS;EEE;GFc;EGE;GHmC;EIE;GJsB;EKE;GLM;CFC"}],[{"names":["<global>","Easing","step0","step1","linear","ease","quad","cubic","poly","<anonymous>","sin","circle","exp","elastic","back","bounce","bezier","_in","out","inOut"],"mappings":"AAA;AC2D;ECI;GDE;EEK;GFE;EGQ;GHE;EIQ;GJK;EKQ;GLE;EMQ;GNE;EOQ;WCC,6BD;GPC;ESO;GTE;EUO;GVE;EWO;GXE;EYY;WJE,mEI;GZC;EaU;WLC,8BK;GbC;EcO;GdiB;EeS;GfQ;EgBK;GhBE;EiBK;WTC,sBS;GjBC;EkBO;WVC;KUK;GlBC;CDC"}],[{"names":["<global>","A","B","C","calcBezier","getSlope","binarySubdivide","newtonRaphsonIterate","bezier","getTForX","BezierEasing"],"mappings":"AAA;AC6B;CDE;AEC;CFE;AGC;CHE;AIG;CJE;AKG;CLE;AME;CNmB;AOE;CPW;iBQE;ECoB;GDkC;SEE;GFY;CRC"}],[{"names":["<global>","createAnimatedComponent","AnimatedComponent","AnimatedComponent#_attachNativeEvents","_eventDetachers.push$argument_0","AnimatedComponent#_detachNativeEvents","_eventDetachers.forEach$argument_0","AnimatedComponent#_isFabric","AnimatedComponent#_waitForUpdate","AnimatedComponent#_markUpdateComplete","AnimatedComponent#_animatedPropsCallback","AnimatedComponent#_attachProps","setAndForwardRef$argument_0.getForwardedRef","setAndForwardRef$argument_0.setLocalRef","ref.getNode","AnimatedComponent#render","AnimatedComponent#UNSAFE_componentWillMount","AnimatedComponent#componentDidMount","AnimatedComponent#UNSAFE_componentWillReceiveProps","AnimatedComponent#componentDidUpdate","AnimatedComponent#componentWillUnmount","AnimatedComponentWrapper"],"mappings":"AAA;ACuC;ECU;ICU;oCCW,wCD;KDG;IGE;mCCC,kBD;KHE;gBKE;KL8B;qBME;KNM;0BOE;KPM;6BQQ;KR2B;ISE;KTwB;uBUG,6BV;mBWC;wBCM;WDQ;OXE;IaG;KbwB;IcE;KdG;IeE;KfS;IgBE;KhBG;IiBE;KjBS;IkBE;KlBI;GDC;0BoBE;GpBO;CDC"}],[{"names":["<global>","setAndForwardRef","forwardRef"],"mappings":"AAA;ACkD;SCI;GDa;CDC"}],[{"names":["<global>","React.forwardRef$argument_0"],"mappings":"AAA;mDCsB;CDE"}],[{"names":["<global>","FlatList","scrollToEnd","scrollToIndex","scrollToItem","scrollToOffset","recordInteraction","flashScrollIndicators","getScrollResponder","getNativeScrollRef","getScrollableNode","setNativeProps","constructor","props.viewabilityConfigCallbackPairs.map$argument_0","componentDidUpdate","_captureRef","_checkProps","_getItem","_getItemCount","_keyExtractor","items.map$argument_0","_pushMultiColumnViewable","v.item.forEach$argument_0","_createOnViewableItemsChanged","<anonymous>","info.viewableItems.forEach$argument_0","info.changed.forEach$argument_0","_renderer","renderer","virtualizedListRenderKey","item.map$argument_0","render"],"mappings":"AAA;ACuR;ECM;GDI;EEU;GFU;EGQ;GHS;EIO;GJI;EKO;GLI;EMO;GNI;EOK;GPI;EQK;GRM;ESE;GTI;EUE;GVI;EWE;QCK;UDK;GXa;EaE;GbqB;gBcK;GdE;EeE;Gf6B;agBE;GhBc;kBiBE;GjBO;kBkBE;aCU,qDD;GlBM;EoBE;mBCE;KDI;GpBC;EsBE;WCO;qCCU;2DDC;+BEE,8CF;KDM;GtBC;c0BE;qBCY;KDS;kCEM;wBCS;eDS;OFM;G1BE;E8BE;G9Bc;CDC"}],[{"names":["_defineProperty","<global>"],"mappings":"AAA;CCa"}],[{"names":["<global>","VirtualizedList","scrollToEnd","scrollToIndex","scrollToItem","scrollToOffset","recordInteraction","_nestedChildLists.forEach$argument_0","_viewabilityTuples.forEach$argument_0","flashScrollIndicators","getScrollResponder","getScrollableNode","getScrollRef","setNativeProps","defaultProps.keyExtractor","_getCellKey","_getListKey","_getDebugInfo","_getScrollMetrics","hasMore","_getOutermostParentListRef","_getNestedChildState","_registerAsNestedChild","_unregisterAsNestedChild","constructor","props.viewabilityConfigCallbackPairs.map$argument_0","componentDidMount","componentWillUnmount","getDerivedStateFromProps","_pushCells","CellRenderer.props.onLayout","CellRenderer.props.ref","_onUpdateSeparators","keys.forEach$argument_0","_isVirtualizationDisabled","_isNestedWithSameOrientation","render","React.cloneElement$argument_1.onLayout","ScrollView.Context.Consumer.props.children","componentDidUpdate","_captureScrollRef","_computeBlankness","_defaultRenderScrollComponent","_onCellLayout","_onCellUnmount","_triggerRemeasureForChildListsInCell","measureLayoutRelativeToContainingList","_scrollRef.measureLayout$argument_1","_scrollRef.measureLayout$argument_2","_onLayout","_onLayoutEmpty","_getFooterCellKey","_onLayoutFooter","_onLayoutHeader","_renderDebugOverlay","framesInLayout.map$argument_0","_selectLength","_selectOffset","_maybeCallOnEndReached","_onContentSizeChange","_convertParentScrollMetrics","_onScroll","_scheduleCellsToRenderUpdate","_onScrollBeginDrag","_onScrollEndDrag","_onMomentumScrollEnd","_updateCellsToRender","setState$argument_0","_createViewToken","_getFrameMetricsApprox","_getFrameMetrics","_updateViewableItems","CellRenderer","CellRenderer.getDerivedStateFromProps","CellRenderer#_separators.highlight","CellRenderer#_separators.unhighlight","CellRenderer#_separators.updateProps","CellRenderer#updateSeparatorProps","CellRenderer#componentWillUnmount","CellRenderer#_renderElement","CellRenderer#render","describeNestedLists"],"mappings":"AAA;ACmW;ECI;GD4B;EEG;GFqE;EGI;GHe;EIY;GJmB;EKE;mCCC;KDE;oCEC;KFE;GLE;EQE;GRM;ESO;GTI;EUE;GVM;EWE;GXQ;EYE;GZI;kBaM;KbY;EcQ;GdE;EeE;GfE;EgBE;GhBO;sBiBE;GjBE;EkBE;GlBE;+BmBE;GnBM;yBoBE;GpBG;2BqBE;GrBkC;6BsBE;GtBS;EuBI;QCsB;UDG;GvB4B;EyBE;GzBa;E0BE;oCnBa;KmBE;G1BE;E2BE;G3BW;E4BE;oBCyC,mCD;eEG;WFE;G5BK;wB+BE;iBCC;KDG;G/BC;EiCE;GjCE;EkCE;GlCK;EmCE;oBC6K;WDK;WEgF;WFgB;GnCc;EsCE;sC/BK;O+BE;GtCe;sBuC2C;GvCE;EwCE;GxCM;kCyCE;GzCoC;E0CE;G1CiC;mB2CE;G3CK;E4CE;G5CU;E6CE;QCW;SDW;QEC;SFK;G7CQ;cgDE;GhDa;mBiDE;GjDE;EkDE;GlDE;oBmDE;GnDG;oBoDE;GpDE;EqDE;4BCuB;SDY;GrDuB;EuDE;GvDQ;EwDE;GxDQ;EyDE;GzD0B;yB0DE;G1DsB;gC2DK;G3DkB;c4DE;mCtDC;KsDE;G5DiE;E6DE;G7DgD;uB8DE;mCxDC;KwDE;oCvDC;KuDE;G9DG;qB+DE;G/DO;yBgEE;GhEI;yBiEE;kBCO;KD0E;GjEC;qBmEE;GnEI;2BoEE;GpEsB;qBqEE;GrE+B;EsEE;oC/DG;K+DU;GtEC;CDC;AwE0C;ECW;GDU;eEK;KFK;iBGC;KHK;iBIC;KJM;EKG;kBVC;MUE;GLC;EME;GNE;EOE;GP+B;EQE;GR6D;CxEC;AiFE;CjFuB"}],[{"names":["<global>","VirtualizedListContextResetter","VirtualizedListContextProvider","useMemo$argument_0","VirtualizedListCellContextProvider"],"mappings":"AAA;OC2E;CDU;OEK;ICS;MDc;CFmB;OIK;CJc"}],[{"names":["<global>","Batchinator","constructor","dispose","schedule","setTimeout$argument_0","InteractionManager.runAfterInteractions$argument_0","_taskHandle.cancel"],"mappings":"AAA;ACoC;ECI;GDG;EEO;GFQ;EGC;qCCI;iECC;ODK;KDC;gCGC,iCH;GHC;CDC"}],[{"names":["<global>","Info","FillRateHelper","addListener","remove","_listeners.filter$argument_0","setSampleRate","setMinSampleCount","constructor","activate","deactivateAndFlush","_listeners.forEach$argument_0","computeBlankness","enabled","_resetData"],"mappings":"AAA;ACc;CDW;AEuB;ECQ;cCQ;uCCC,iCD;ODC;GDE;EIE;GJE;EKE;GLE;EME;GNI;EOE;GPK;EQE;uBCsC,0BD;GRE;EUE;GV6F;EWE;GXE;EYE;GZK;CFC"}],[{"names":["<global>","RefreshControl","componentDidMount","componentDidUpdate","render","_onRefresh","_setNativeRef"],"mappings":"AAA;AC0I;ECS;GDE;EEE;GFuB;EGE;GH2B;eIE;GJQ;kBKE;GLO;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createScrollResponder","ScrollView","constructor","Object.keys.filter$argument_0","Object.keys.filter.forEach$argument_0","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","componentDidMount","componentDidUpdate","componentWillUnmount","setAndForwardRef$argument_0.getForwardedRef","setAndForwardRef$argument_0.setLocalRef","getScrollResponder","getScrollableNode","getInnerViewNode","getInnerViewRef","getNativeScrollRef","scrollTo","scrollToEnd","flashScrollIndicators","_getKeyForIndex","_updateAnimatedNodeAttachment","_setStickyHeaderRef","_onStickyHeaderLayout","_handleScroll","_handleLayout","_handleContentOnLayout","render","filter$argument_0","childArray.map$argument_0","StickyHeaderComponent.props.ref","StickyHeaderComponent.props.onLayout","Wrapper"],"mappings":"AAA;ACulB;CDY;AEyC;ECgB;cC+B,uDD;eEC;OFG;GDC;EIiB;GJQ;EKE;GLU;EME;GNE;EOE;GPE;EQE;GRK;qBSG,8BT;iBUC;KV2B;kDWS;GXG;qCYE;GZE;EaE;GbE;EcE;GdE;sEeE;GfE;cgBwB;GhB+B;gEiBU;GjBQ;sCkBO;GlBE;EmBE;GnBG;EoBE;GpBc;EqBE;GrBS;EsBE;GtBwB;kBuBE;GvByB;kBwBE;GxBO;2ByBE;GzBI;qBSM,6BT;iBUC;KVE;E0BG;QCiC,0CD;gCEuB;mBCW,yCD;wBEI,sDF;OFU;G1BuJ;CFC;AiCoB;CjCE"}],[{"names":["<global>","ScrollResponderMixin.scrollResponderMixinGetInitialState","ScrollResponderMixin.scrollResponderHandleScrollShouldSetResponder","ScrollResponderMixin.scrollResponderHandleStartShouldSetResponder","ScrollResponderMixin.scrollResponderHandleStartShouldSetResponderCapture","ScrollResponderMixin.scrollResponderKeyboardIsDismissible","ScrollResponderMixin.scrollResponderHandleResponderReject","ScrollResponderMixin.scrollResponderHandleTerminationRequest","ScrollResponderMixin.scrollResponderHandleTouchEnd","ScrollResponderMixin.scrollResponderHandleTouchCancel","ScrollResponderMixin.scrollResponderHandleResponderRelease","ScrollResponderMixin.scrollResponderHandleScroll","ScrollResponderMixin.scrollResponderHandleResponderGrant","ScrollResponderMixin.scrollResponderHandleScrollBeginDrag","ScrollResponderMixin.scrollResponderHandleScrollEndDrag","ScrollResponderMixin.scrollResponderHandleMomentumScrollBegin","ScrollResponderMixin.scrollResponderHandleMomentumScrollEnd","ScrollResponderMixin.scrollResponderHandleTouchStart","ScrollResponderMixin.scrollResponderHandleTouchMove","ScrollResponderMixin.scrollResponderIsAnimating","ScrollResponderMixin.scrollResponderGetScrollableNode","ScrollResponderMixin.scrollResponderScrollTo","ScrollResponderMixin.scrollResponderScrollToEnd","ScrollResponderMixin.scrollResponderZoomTo","ScrollResponderMixin.scrollResponderFlashScrollIndicators","ScrollResponderMixin.scrollResponderScrollNativeHandleToKeyboard","ScrollResponderMixin.scrollResponderInputMeasureAndScrollToKeyboard","ScrollResponderMixin.scrollResponderTextInputFocusError","ScrollResponderMixin.UNSAFE_componentWillMount","ScrollResponderMixin.componentWillUnmount","ScrollResponderMixin.scrollResponderKeyboardWillShow","ScrollResponderMixin.scrollResponderKeyboardWillHide","ScrollResponderMixin.scrollResponderKeyboardDidShow","ScrollResponderMixin.scrollResponderKeyboardDidHide"],"mappings":"AAA;uCC4H;GDc;iDEK;GFM;gDG2B;GHkB;uDIa;GJ0C;wCKK;GLoB;wCMY,aN;2COiB;GPE;iCQO;GRI;oCSO;GTG;yCUK;GV4B;+BWE;GXG;uCYK;GZI;wCaS;GbG;sCcK;Gdc;4CeK;GfG;0CgBK;GhBI;mCiBa;GjBG;kCkBa;GlBE;8BmBO;GnBS;oCoBO;GpBI;2BqBa;GrB8B;8BsBU;GtBe;yBuBQ;GvB8B;wCwBK;GxBW;+CyBY;GzB4B;kD0BY;G1BwB;sC2BE;G3BE;6B4BQ;G5BgC;wB6BE;G7Ba;mC8B8B;G9BG;mC+BE;G/BG;kCgCE;GhCO;kCiCE;GjCG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setGlobalOptions","setContext","beginScroll","endScroll"],"mappings":"AAA;oBCqC;GDmB;cEM;GFE;EGM;GHE;EIM;GJE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","addListener","removeListener","removeAllListeners","dismiss","scheduleLayoutAnimation","KeyboardEventEmitter.scheduleLayoutAnimation"],"mappings":"AAA;ECuI;GDE;EEQ;GFK;EGO;GHE;EIK;GJE;EKM;GLE;+CMK;CNW"}],[{"names":["<global>","configureNext","<anonymous>","create","checkConfig"],"mappings":"AAA;AC4B;6BCS,aD;UCE,aD;6BCO,aD;UCE,aD;CDI;AGE;CHW;EIqE;GJE"}],[{"names":["<global>","dismissKeyboard"],"mappings":"AAA;ACgB;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ScrollViewStickyHeader","setNextHeaderY","UNSAFE_componentWillReceiveProps","updateTranslateListener","_animatedValueListener","setTimeout$argument_0","_onLayout","_setComponentRef","render"],"mappings":"AAA;AC6C;ECoB;GDG;EEE;GFQ;EGE;oCC8B;iCCU;SDM;ODC;GHQ;cME;GNwB;qBOE;GPE;EQE;GRwH;CDC"}],[{"names":["<global>","processDecelerationRate"],"mappings":"AAA;ACc;CDe"}],[{"names":["<global>","splitLayoutProps","Object.keys.forEach$argument_0"],"mappings":"AAA;ACyC;+BCU;KDO;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ViewabilityHelper","constructor","dispose","computeViewableItems","onUpdate","_viewableIndices.every$argument_0","setTimeout$argument_0","resetViewableIndices","recordInteraction","_onUpdateSync","viewableIndicesToCheck.filter$argument_0","viewableIndicesToCheck.map$argument_0","_isViewable","_getPixelsVisible","_isEntirelyVisible"],"mappings":"AAA;AC0E;ECO;GDI;EEK;GFK;EGK;GHuE;EIM;kCC2C,oCD;gCEQ;OFU;GJY;EOK;GPE;EQK;GRE;ESE;2DCM;wCDC;iCEI;OFG;GTsB;CDC;AaE;CbgB;AcE;CdO;AeE;CfM"}],[{"names":["<global>","elementsThatOverlapOffsets","newRangeCount","computeWindowedRenderLimits"],"mappings":"AAA;ACmB;CDgC;AEQ;CFqB;AGQ;CHsJ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getSize","NativeImageLoaderIOS.getSize.then$argument_0","<anonymous>","getSizeWithHeaders","NativeImageLoaderIOS.getSizeWithHeaders.then$argument_0","prefetch","queryCache","Image","ImageAnalyticsTagContext.Consumer.props.children"],"mappings":"AAA;AC4B;UCM,2CD;QEG;SFE;CDE;AIE;UCO;KDE;QDG;SCE;CJE;AME;CNE;AOE;CPI;YQkB;OCyC;ODY;CRG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ReactNativeViewConfigRegistry.register$argument_1"],"mappings":"AAA;yDC4C;GDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.forwardRef$argument_0"],"mappings":"AAA;qDCsB;CDE"}],[{"names":["<global>","React.forwardRef$argument_0"],"mappings":"AAA;sDCsB;CDE"}],[{"names":["<global>","SectionList","scrollToLocation","recordInteraction","flashScrollIndicators","getScrollResponder","getScrollableNode","setNativeProps","render","VirtualizedSectionList.props.getItemCount","VirtualizedSectionList.props.getItem","_captureRef"],"mappings":"AAA;ACgL;ECiB;GDI;EEO;GFG;EGO;GHG;EIK;GJK;EKE;GLK;EME;GNK;EOE;sBCK,qBD;iBEC,8BF;GPG;gBUG;GVK;CDC"}],[{"names":["<global>","VirtualizedSectionList","scrollToLocation","getListRef","constructor","UNSAFE_componentWillReceiveProps","_computeState","props.sections.reduce$argument_0","childProps.getItemCount","childProps.getItem","render","_getItem","_keyExtractor","_subExtractor","_convertViewable","_onViewableItemsChanged","_renderItem","ItemWithSeparator.props.ref","_onUpdateSeparator","_getSeparatorComponent","_captureRef","ItemWithSeparator","ItemWithSeparator#_separators.highlight","forEach$argument_0","ItemWithSeparator#_separators.unhighlight","ItemWithSeparator#_separators.updateProps","setState$argument_0","ItemWithSeparator.getDerivedStateFromProps","ItemWithSeparator#updateSeparatorProps","ItemWithSeparator#render"],"mappings":"AAA;ACmI;ECQ;GDmB;EEE;GFE;EGE;GHG;EIE;GJE;EKE;8BCI;SDG;sBEmB,eF;iBGE,0DH;GLU;ESE;GTI;aUE;GV0B;kBWE;GXG;EYE;GZuD;qBaE;GbgB;4BcE;GdiB;gBeE;eCgC;WDE;GfS;uBiBE;GjBG;EkBE;GlBqB;gBmBI;GnBK;CDC;AqBmC;eCwB;sCCC;4DDC;KDE;iBGC;sCDC;6DCC;KHE;iBIC;sBCG;UDE;KJO;EMG;GNsB;EOE;kBFC;MEE;GPC;EQE;GRiC;CrBC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DatePickerIOS","componentDidUpdate","_onChange","render","RCTDatePickerNativeComponent.props.ref","RCTDatePickerNativeComponent.props.onStartShouldSetResponder","RCTDatePickerNativeComponent.props.onResponderTerminationRequest"],"mappings":"AAA;ACkH;ECO;GDO;cEE;GFM;EGE;eCU;WDE;qCEwB,UF;yCGC,WH;GHI;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","UnimplementedView","render"],"mappings":"AAA;ACmB;ECC;GDQ;CDC"}],[{"names":["<global>","ImageBackground","setNativeProps","_captureRef","render"],"mappings":"AAA;ACyC;ECC;GDM;gBEI;GFE;EGE;GH8B;CDC"}],[{"names":["<global>","InputAccessoryView","render"],"mappings":"AAA;AC0F;ECC;GDiB;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","KeyboardAvoidingView","constructor","_relativeKeyboardHeight","_onKeyboardChange","_onLayout","_updateBottomIfNecesarry","componentDidMount","componentWillUnmount","_subscriptions.forEach$argument_0","render"],"mappings":"AAA;AC8D;ECY;GDI;EEE;GFW;sBGE;GHG;cIE;GJW;6BKE;GLwB;EME;GNW;EOE;gCCC;KDE;GPC;ESE;GTwE;CDC"}],[{"names":["<global>","MaskedViewIOS","render"],"mappings":"AAA;ACgE;ECG;GDsB;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Modal","constructor","componentDidMount","ModalEventEmitter.addListener$argument_1","componentWillUnmount","UNSAFE_componentWillReceiveProps","_confirmProps","render","_shouldSetResponder"],"mappings":"AAA;AC0J;ECW;GDI;EEE;QCI;SDI;GFG;EIE;GJI;EKE;GLE;EME;GNU;EOE;GPmD;EQG;GRE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","AppContainer","getChildContext","componentDidMount","RCTDeviceEventEmitter.addListener$argument_1","Inspector.props.onRequestRerenderApp","setState$argument_0","setState$argument_1","componentWillUnmount","render","View.props.ref"],"mappings":"AAA;ACsC;ECiB;GDI;EEE;UCK;sCCK;oBCE,+BD;oBEC,wCF;iBDE;WDI;GFI;EOE;GPI;EQE;aCmB;SDE;GR2B;CDC"}],[{"names":["<global>","createRootTag"],"mappings":"AAA;OCwB;CDE"}],[{"names":["<global>","module.exports.getConstants","module.exports.allowRTL","module.exports.forceRTL","module.exports.swapLeftAndRightInRTL"],"mappings":"AAA;gBCyB;GDE;YEE;GFM;YGE;GHM;yBIE;GJM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PickerItem","PickerItem#render","Picker","render"],"mappings":"AAA;ACoD;ECC;GDG;CDC;AGyE;ECiB;GDc;CHC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PickerIOSItem","PickerIOS","getDerivedStateFromProps","React.Children.toArray.filter$argument_0","React.Children.toArray.filter.forEach$argument_0","render","RCTPickerNativeComponent.props.ref","componentDidUpdate","_onChange"],"mappings":"AAA;sBCkE;CDE;AEE;ECW;cCI,uBD;eEC;OFc;GDE;EIE;eCI;WDE;GJU;EME;GNc;cOE;GPa;CFC"}],[{"names":["<global>","ReactNativeViewConfigRegistry.register$argument_1"],"mappings":"AAA;sDC8D;GDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Pressable","useImperativeHandle$argument_1","useMemo$argument_0","onPressIn","onPressOut","usePressState"],"mappings":"AAA;AC+I;oCCqB,qBD;IEiB;MCS;ODQ;MEE;OFQ;MFC;CD6B;AME;CNG"}],[{"names":["<global>","useAndroidRippleForView","useMemo$argument_0","onPressIn","onPressMove","onPressOut"],"mappings":"AAA;eCqC;iBCa;QCsB;SDU;QEC;SFS;QGC;SHK;GDI;CDC"}],[{"names":["<global>","usePressability","useEffect$argument_0","<anonymous>"],"mappings":"AAA;eCuB;YCW;GDI;YCI;aCE;ODE;GDE;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ProgressViewIOS"],"mappings":"AAA;wBCyD;CDS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SafeAreaView"],"mappings":"AAA;ICsC;KDG;ICO;KDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SegmentedControlIOS","_onChange","render","React.forwardRef$argument_0"],"mappings":"AAA;AC+E;cCM;GDI;EEE;GFU;CDC;EIS;GJK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Slider","<anonymous>","SliderNativeComponent.props.onResponderTerminationRequest","SliderNativeComponent.props.onStartShouldSetResponder"],"mappings":"AAA;eCoM;MCkB;ODS;MCK;ODE;qCEY,WF;iCGE,UH;CDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","mergePropsStack","propsStack.reduce$argument_0","createStackEntry","StatusBar","setHidden","setBarStyle","setNetworkActivityIndicatorVisible","setBackgroundColor","setTranslucent","pushStackEntry","popStackEntry","replaceStackEntry","componentDidMount","componentWillUnmount","componentDidUpdate","_updatePropsStack","setImmediate$argument_0","render"],"mappings":"AAA;ACiH;2BCI;GDO;CDC;AGM;CH2B;AIgE;EC4C;GDQ;EEO;GFQ;EGM;GHS;EIO;GJqB;EKM;GLO;EMQ;GNK;EOO;GPM;EQQ;GRQ;ESY;GTM;EUE;GVI;EWE;GXK;6BYK;8CCG;KDgE;GZC;EcE;GdE;CJC"}],[{"names":["<global>","NativeStatusBarManager.getConstants","NativeStatusBarManager.setColor","NativeStatusBarManager.setTranslucent","NativeStatusBarManager.setStyle","NativeStatusBarManager.setHidden"],"mappings":"AAA;ECoC;GDQ;EEE;GFE;EGE;GHE;EIO;GJE;EKE;GLE"}],[{"names":["<global>","NativeStatusBarManager.getConstants","NativeStatusBarManager.getHeight","NativeStatusBarManager.setNetworkActivityIndicatorVisible","NativeStatusBarManager.addListener","NativeStatusBarManager.removeListeners","NativeStatusBarManager.setStyle","NativeStatusBarManager.setHidden"],"mappings":"AAA;EC4C;GDQ;EEG;GFE;EGE;GHE;EIE;GJE;EKE;GLE;EMQ;GNE;EOK;GPE"}],[{"names":["<global>","Switch","render","componentDidUpdate","_handleChange","_handleSwitchNativeComponentRef","returnsFalse","returnsTrue"],"mappings":"AAA;ACmI;ECM;GDuE;EEE;GFyB;kBGE;GHW;oCIE;GJM;CDC;qBME,WN;oBOC,UP"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","emptyFunctionThatReturnsTrue","InternalTextInput","useLayoutEffect$argument_0","<anonymous>","clear","isFocused","getNativeRef","setAndForwardRef$argument_0.getForwardedRef","setAndForwardRef$argument_0.setLocalRef","_onPress","_onChange","_onSelectionChange","_onFocus","_onBlur","_onScroll","TextInput"],"mappings":"AAA;qCCgtB,UD;AEiH;kBCsD;GD+B;kBCY;aCM;ODM;GDE;EGE;GHU;EIG;GJE;EKE;GLE;qBMG,wBN;iBOC;KP8B;mBQG;GRI;oBSE;GTiB;6BUE;GVa;mBWE;GXK;kBYE;GZK;oBaE;GbE;CFsG;qBgBK;ChBO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","TouchableWithoutFeedback","render","componentDidUpdate","componentWillUnmount","createPressabilityConfig"],"mappings":"AAA;AC6F;ECK;GDgC;EEE;GFE;EGE;GHE;CDC;AKE;CLkB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","TouchableHighlight","_createPressabilityConfig","onBlur","onFocus","onPress","setTimeout$argument_0","onPressIn","onPressOut","_createExtraStyles","_showUnderlay","_hideUnderlay","_hasPressHandler","render","componentDidMount","componentDidUpdate","componentWillUnmount","React.forwardRef$argument_0"],"mappings":"AAA;AC4J;ECU;cCW;ODO;eEC;OFO;eGE;yCCM;WDE;OHK;iBKC;OLS;kBMC;ONO;GDE;EQE;GRU;ESE;GTQ;EUE;GVc;EWE;GXO;EYE;GZuD;EaE;GbE;EcE;GdE;EeE;GfM;CDC;mCiBE;CjBE"}],[{"names":["<global>","showActionSheetWithOptions","showShareActionSheetWithOptions"],"mappings":"AAA;EC0C;GD2C;EEyB;GFuB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","nativeEventEmitter.addListener$argument_1","module.exports.getColorScheme","module.exports.addChangeListener","module.exports.removeChangeListener"],"mappings":"AAA;IC4B;KDS;EEe;GFqB;EGI;GHE;EII;GJE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","componentProviderInstrumentationHook","setWrapperComponentProvider","enableArchitectureIndicator","registerConfig","config.forEach$argument_0","registerComponent","runnables.appKey.run","registerRunnable","registerSection","getAppKeys","getSectionKeys","getSections","getRunnable","getRegistry","setComponentProviderInstrumentationHook","runApplication","BugReporting.addSource$argument_1","unmountApplicationComponentAtRootTag","registerHeadlessTask","registerCancellableHeadlessTask$argument_2","<anonymous>","registerCancellableHeadlessTask","startHeadlessTask","taskProvider.then$argument_0","taskProvider.then._catch$argument_0","NativeHeadlessJsTaskSupport.notifyTaskRetry.then$argument_0","cancelHeadlessTask","registerComponent$argument_1","NoOp"],"mappings":"AAA;iFC6D;gBDE;EEW;GFE;EGE;GHE;EIE;mBCC;KDgB;GJC;EMO;WCQ;ODc;GNM;EQE;GRG;ESE;GTE;EUE;GVE;EWE;GXE;EYE;GZI;EaE;GbE;EcE;GdK;EeE;GfI;EgBO;QCO,SD;GhBa;EkBO;GlBE;EmBO;gECC,MC;KFE;GnBC;EsBO;GtBY;EuBO;YCU;ODI;aEC;YCQ;aDI;OFG;GvBC;E2BO;G3BM;0C4BO,qB5B;I4BI;MCC;O7BE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","HeadlessJsTaskError"],"mappings":"AAA;eCY,0CD"}],[{"names":["<global>","defaultExtras","addFileSource$argument_1","BugReporting","_maybeInit","addSource","addFileSource","_addSource","remove","collectExtraData"],"mappings":"AAA;ACyB;oDCC;gCDC;CDE;AGQ;ECM;GDiB;EEU;GFK;EGU;GHK;EIE;cCa;ODE;GJE;EMQ;GNmB;CHC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","dumpReactTree","getReactTree"],"mappings":"AAA;ACyB;CDM;AEE;CFiB"}],[{"names":["<global>","setActiveScene","_listeners.forEach$argument_0","getActiveScene","addActiveSceneChangedListener","remove","_listeners.filter$argument_0"],"mappings":"AAA;ECmB;uBCE,kCD;GDC;EGE;GHE;EIE;cCK;uCCC,iCD;ODC;GJE"}],[{"names":["<global>","renderApplication"],"mappings":"AAA;ACuB;CDqC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","emptyFunction","addEventListener","removeEventListener"],"mappings":"AAA;ACgB,iCD;EEgB;GFI;EGC,0EH"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","invokeGuardedCallbackImpl","reporter.onError","invokeGuardedCallback","invokeGuardedCallbackAndCatchFirstError","executeDispatch","executeDirectDispatch","functionThatReturnsTrue","functionThatReturnsFalse","SyntheticEvent","Object.assign$argument_1.preventDefault","Object.assign$argument_1.stopPropagation","Object.assign$argument_1.persist","Object.assign$argument_1.destructor","SyntheticEvent.Interface.currentTarget","SyntheticEvent.Interface.timeStamp","SyntheticEvent.extend","E","Class","createOrGetPooledEvent","releasePooledEvent","addEventPoolingTo","SyntheticEvent.extend$argument_0.touchHistory","isStartish","isMoveish","timestampForTouch","getTouchIdentifier","recordTouchStart","recordTouchMove","recordTouchEnd","ResponderTouchHistoryStore.recordTouchTrack","accumulate","accumulateInto","forEachAccumulated","changeResponder","getParent","traverseTwoPhase","getListener","accumulateDirectionalDispatches","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatchesSingleSkipTarget","accumulateTwoPhaseDispatchesSingle","ResponderEventPlugin._getResponder","ResponderEventPlugin.extractEvents","ResponderEventPlugin.injection.injectGlobalResponderHandler","recomputePluginOrdering","publishRegistrationName","getListener$1","accumulateDirectionalDispatches$1","accumulateTwoPhaseDispatchesSingle$1","accumulateDirectDispatchesSingle$1","injectedNamesToPlugins$jscomp$inline_219.ReactNativeBridgeEventPlugin.extractEvents","getInstanceFromInstance","getFiberCurrentPropsFromNode","getNodeFromInstance","ResponderEventPlugin.injection.injectGlobalResponderHandler$argument_0.onChange","getIteratorFn","getComponentName","getNearestMountedFiber","assertIsMounted","findCurrentFiberUsingSlowPath","findCurrentHostFiber","doesFiberContain","mountSafeCallback_NOT_REALLY_SAFE","<anonymous>","defaultDiffer","restoreDeletedValuesInNestedArray","diffNestedProperty","addNestedProperty","clearNestedProperty","diffProperties","batchedUpdatesImpl","batchedUpdates","executeDispatchesAndReleaseTopLevel","dispatchEvent","batchedUpdates$argument_0","shim","shim$1","ReactFabricHostComponent","_proto.blur","_proto.focus","_proto.measure","_proto.measureInWindow","_proto.measureLayout","_proto.setNativeProps","createTextInstance","cloneHiddenInstance","describeComponentFrame","describeFunctionComponentFrame","createCursor","pop","push","getMaskedContext","isContextProvider","popContext","pushTopLevelContextObject","processChildContext","pushContextProvider","invalidateContextProvider","getHighestPriorityLanes","schedulerPriorityToLanePriority","lanePriorityToSchedulerPriority","getNextLanes","getLanesToRetrySynchronouslyOnError","findUpdateLane","getHighestPriorityLane","createLaneMap","markRootUpdated","clz32Fallback","getCurrentPriorityLevel","reactPriorityToSchedulerPriority","runWithPriority","scheduleCallback","flushSyncCallbackQueue","flushSyncCallbackQueueImpl","runWithPriority$argument_1","is","shallowEqual","describeFiber","resolveDefaultProps","resetContextDependencies","popProvider","scheduleWorkOnParentPath","prepareToReadContext","readContext","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","enqueueCapturedUpdate","processUpdateQueue","commitUpdateQueue","applyDerivedStateFromProps","classComponentUpdater.isMounted","classComponentUpdater.enqueueSetState","classComponentUpdater.enqueueReplaceState","classComponentUpdater.enqueueForceUpdate","checkShouldComponentUpdate","constructClassInstance","callComponentWillReceiveProps","mountClassInstance","coerceRef","current","throwOnInvalidObjectType","ChildReconciler","deleteChild","deleteRemainingChildren","mapRemainingChildren","useFiber","placeChild","placeSingleChild","updateTextNode","updateElement","updatePortal","updateFragment","createChild","updateSlot","updateFromMap","reconcileChildrenArray","oldFiber.forEach$argument_0","reconcileChildrenIterator","requiredContext","pushHostContainer","popHostContainer","pushHostContext","popHostContext","findFirstSuspended","resetWorkInProgressVersions","throwInvalidHookError","areHookInputsEqual","renderWithHooks","mountWorkInProgressHook","updateWorkInProgressHook","basicStateReducer","updateReducer","rerenderReducer","readFromUnsubcribedMutableSource","useMutableSource","dispatcher.useState$argument_0","dispatcher.useEffect$argument_0","subscribe$argument_1","latestSetSnapshot$argument_0","updateMutableSource","mountState","pushEffect","updateRef","mountEffectImpl","updateEffectImpl","mountEffect","updateEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","startTransition","dispatchAction","HooksDispatcherOnMount.useCallback","HooksDispatcherOnMount.useImperativeHandle","HooksDispatcherOnMount.useLayoutEffect","HooksDispatcherOnMount.useMemo","HooksDispatcherOnMount.useReducer","HooksDispatcherOnMount.useRef","HooksDispatcherOnMount.useDeferredValue","mountEffect$argument_0","HooksDispatcherOnMount.useTransition","HooksDispatcherOnMount.useMutableSource","HooksDispatcherOnMount.useOpaqueIdentifier","HooksDispatcherOnUpdate.useState","HooksDispatcherOnUpdate.useDeferredValue","updateEffect$argument_0","HooksDispatcherOnUpdate.useTransition","HooksDispatcherOnUpdate.useOpaqueIdentifier","HooksDispatcherOnRerender.useState","HooksDispatcherOnRerender.useDeferredValue","HooksDispatcherOnRerender.useTransition","HooksDispatcherOnRerender.useOpaqueIdentifier","reconcileChildren","updateForwardRef","updateMemoComponent","updateSimpleMemoComponent","updateOffscreenComponent","markRef","updateFunctionComponent","updateClassComponent","finishClassComponent","pushHostRootContext","updateSuspenseComponent","mountSuspenseFallbackChildren","updateSuspensePrimaryChildren","updateSuspenseFallbackChildren","scheduleWorkOnFiber","initSuspenseListRenderState","updateSuspenseListComponent","bailoutOnAlreadyFinishedWork","appendAllChildren","appendAllChildrenToContainer","updateHostContainer","updateHostComponent$1","updateHostText$1","cutOffTailIfNeeded","completeWork","unwindWork","createCapturedValue","logCapturedError","setTimeout$argument_0","createRootErrorUpdate","lane.callback","createClassErrorUpdate","lane.payload","safelyDetachRef","commitBeforeMutationLifeCycles","commitLifeCycles","detachFiberMutation","commitWork","attachSuspenseRetryListeners","wakeables.forEach$argument_0","isSuspenseBoundaryBeingHidden","requestEventTime","requestUpdateLane","scheduleUpdateOnFiber","markUpdateLaneFromFiberToRoot","ensureRootIsScheduled","performConcurrentWorkOnRoot","markRootSuspended$1","performSyncWorkOnRoot","pushRenderLanes","popRenderLanes","prepareFreshStack","handleError","pushDispatcher","renderRootSync","workLoopSync","workLoopConcurrent","performUnitOfWork","completeUnitOfWork","commitRoot","commitRootImpl","commitBeforeMutationEffects","scheduleCallback$argument_1","flushPassiveEffects","enqueuePendingPassiveHookEffectMount","enqueuePendingPassiveHookEffectUnmount","flushPassiveEffectsImpl","captureCommitPhaseErrorOnRoot","captureCommitPhaseError","pingSuspendedRoot","resolveRetryWakeable","beginWork$1","FiberNode","createFiber","shouldConstruct","resolveLazyComponentTag","createWorkInProgress","createFiberFromTypeAndProps","createFiberFromFragment","createFiberFromOffscreen","createFiberFromText","createFiberFromPortal","FiberRootNode","createPortal","findHostInstance","updateContainer","emptyFindFiberByHostInstance","findNodeHandle","devToolsConfig$jscomp$inline_865.rendererConfig.getInspectorDataForViewTag","internals$jscomp$inline_1054.findHostInstanceByFiber","exports.createPortal","exports.dispatchCommand","exports.findHostInstance_DEPRECATED","exports.render","exports.stopSurface","updateContainer$argument_3","exports.unmountComponentAtNode"],"mappings":"AAA;ACkB;CDO;aEM;KFG;AGE;CHI;AIC;CJuB;AKI;CLK;AMC;CNa;AOC;CPE;AQC;CRE;ASC;CTyB;kBUE;GVQ;mBWC;GXO;WYC;GZE;caE;GbO;iBcK;GdE;aeI;GfE;wBgBI;ECC,eD;EEC;GFE;ChBW;AmBE;CnBY;AoBC;CpBO;AqBC;CrBI;gBsBE;GtBE;AuBE;CvBE;AwBC;CxBE;AyBW;CzBE;A0BC;C1BI;A2BC;C3B4B;A4BC;C5BW;A6BC;C7BW;oB8BE;G9B0B;A+BG;C/BY;AgCC;ChCY;AiCC;CjCE;AkCG;ClCS;AmCyD;CnCI;AoCC;CpCI;AqCC;CrCc;AsCC;CtCe;AuCC;CvCgB;AwCC;CxCM;AyCC;CzCI;mB0CE;K1CE;mB2CE;K3C0Q;oC4CG;O5CE;A6CK;C7C+D;A8CC;C9CQ;A+CI;C/Cc;AgDO;ChDe;AiDC;CjDa;AkDC;ClDgB;qBmDc;OnD4B;AoD+B;CpDE;+BqDC;CrDE;sBsDE;CtDI;YuDE;GvDO;AwDyC;CxDM;AyDC;CzD2C;A0DC;C1Da;A2DC;C3DG;A4DC;C5D2E;A6DC;C7DiB;A8DC;C9DW;A+DC;SCC;GDM;C/DC;AiEK;CjEQ;AkEC;ClEqC;AmEC;CnEqD;AoEC;CpEgB;AqEC;CrEgB;AsEC;CtEoF;AuEC;CvEE;AwEE;CxEQ;AyEE;CzEkB;A0EC;iBCM;GDqC;C1EC;A4EC;C5EI;A6EC;C7EI;gCgEoB;EcC;GdU;gBeE;GfE;iBgBC;GhBE;mBiBC;GjBK;2BkBC;GlBK;yBmBC;GnBS;0BoBC,apB;ChEE;AqFC;CrFmB;AsFG;CtFY;AuFC;CvFI;AwFC;CxFI;AyFG;CzFE;A0FC;C1FG;A2FC;C3FI;A4FK;C5FiB;A6FC;C7FG;A8FC;C9FG;A+FC;C/FO;AgGC;ChGc;AiGC;CjGS;AkGC;ClGkB;AmGM;CnGgC;AoGC;CpGc;AqGC;CrG4B;AsGC;CtGgD;AuGC;CvGG;AwGC;CxGkC;AyGC;CzGE;A0GC;C1GG;A2GC;C3GQ;A4GI;C5GE;iEgEgB,ahE;QgEQ;ShEE;A6GC;C7Ge;A8GC;C9Ge;A+GC;C/GG;AgHC;ChHG;AiHC;CjHO;AkHC;0BCM;ODM;ClHa;AoHE;CpHE;AqHG;CrHmB;AsHC;CtHuB;AuHC;CvHU;AwHK;CxHE;AyHC;CzHI;A0HC;C1He;A2HC;C3HQ;A4HC;C5HuB;A6HE;C7HQ;A8HC;C9HU;A+HC;C/HS;AgIC;ChIU;AiIC;CjI4C;AkIC;ClI+H;AmIC;CnIqB;AoIE;CpIe;aqIE;GrII;mBsIC;GtIS;uBuIC;GvIU;sBwIC;GxIS;AyIE;CzIe;A0IC;C1IyB;A2IC;C3Ia;A4IC;C5IkC;A6IE;gBC8B;ODI;C7IgB;A+IC;C/IS;AgJC;ECC;GDU;EEC;GFM;EGC;GHO;EIC;GJK;EKC;GLa;EMC;GNK;EOC;GPU;EQC;GRmB;ESC;GTe;EUC;GVe;EWC;GXoD;EYC;GZgC;EaC;Gb+C;EcC;uBCsF;ODE;GdE;EgBC;uBDuE;OCE;GhBE;ShFC;GgFiL;ChJC;AiKO;CjKM;AkKC;ClKM;AmKC;CnKI;AoKC;CpKiB;AqKC;CrKG;AsKE;CtKsB;AuKE;CvKI;AwKS;CxKI;AyKC;CzKK;A0KC;C1K2C;A2KC;C3KY;A4KC;C5K6B;A6KC;C7KE;A8KC;C9KkE;A+KC;C/KsB;AgLC;ChLgB;AiLC;+CCS;KDE;IEY;KFuB;IEI;uCCC;4BCQ;WDE;ODE;KFC;CjLsB;AsLC;CtLG;AuLC;CvLgB;AwLC;CxLe;AyLC;CzLE;A0LC;C1LS;A2LC;C3Lc;A4LC;C5LE;A6LC;C7LE;A8LC;C9LE;A+LC;M/HK;O+HE;M/HM;O+HE;C/LE;AgMC;ChMQ;AiMC,6BjM;AkMC;ClMY;AmMC;CnMa;AoMC;2DjFE;GiFE;2DjFC;GiFQ;CpMC;AqMC;CrMsC;iBsMqB;KtMM;yBuMG;KvMQ;qBwMC;KxME;ayMC;KzMM;gB0MC;K1MgB;Y2MC;K3MI;sB4MG;QCK;SDQ;K5MI;mB8MC;K9MM;sB+MC;K/MQ;yBgNC;KhNE;ciNa;KjNE;sBkNE;QCK;SDQ;KlNI;mBoNC;KpNG;yBqNE;KrNE;csNa;KtNE;sBuNE;QJK;SIQ;KvNI;mBwNC;KxNG;yByNE;KzNE;A0NK;C1NU;A2NC;C3N4B;A4NC;C5NuD;A6NC;C7N2B;A8NC;C9NkC;A+NC;C/NO;AgOC;ChO8B;AiOC;CjOwM;AkOC;ClOuC;AmOC;CnOW;AoOE;CpO8G;AqOC;CrO6B;AsOC;CtOoB;AuOC;CvOuC;AwOC;CxOK;AyOC;CzO0B;A0OC;C1O8F;A2OC;C3OsB;oB4OK;C5OoD;A6OC;C7OyD;sB8OC;C9OU;wB+OC;C/OqC;mBgPC;ChPY;AiPC;CjPuB;AkPC;ClPyS;AmPC;CnP0C;AoPC;CpPY;AqPQ;eCU;KDE;CrPE;AuPE;kBCK;GDG;CvPE;AyPC;mBCM;KDG;qBDK;KCU;CzPE;A2PE;C3PU;A4PC;C5PgC;A6PC;C7P4F;A8PC;C9PW;A+PC;C/PkD;AgQC;sBCO;KDI;ChQE;AkQC;ClQO;AmQoC;CnQM;AoQC;CpQ2B;AqQC;CrQ6B;AsQC;CtQY;AuQC;CvQoE;AwQC;CxQmI;AyQC;CzQW;A0QC;C1QgC;A2QC;C3QI;A4QC;C5QG;A6QC;C7QiD;A8QC;C9QmL;A+QC;C/QI;AgRC;ChRwB;AiRC;CjRE;AkRC;ClRG;AmRC;CnRK;AoRC;CpRuD;AqRC;CrRI;AsRC;CtR8Q;AuRC;2BCiB;ODG;CvRG;AyRC;CzRU;A0RC;yBFI;KEG;C1RC;A2RC;yBHI;KGG;C3RC;A4RC;C5R6C;A6RC;C7RS;A8RC;C9RqC;A+RC;C/Re;AgSC;ChSmB;ciSE;CjS8gB;AkSC;ClSa;AmSC;CnSE;AoSC;CpSG;AqSC;CrSS;AsSC;CtSmC;AuSC;CvS0F;AwSC;CxSI;AySC;CzSK;A0SC;C1SI;A2SC;C3Sc;A4SC;C5Sa;A6SC;C7SU;A8SC;C9SY;A+SC;C/S0D;AgTC;ChTE;AiTC;CjTY;qBuEC;CvEW;kCkTQ;OlTI;sCgEC;OhEI;2BmTiB;GnTG;uBoTuB;CpTO;0BqTC;CrTa;sCsTC;CtTW;iBuTE;CvTqB;sBwTC;sCCG;KDE;CxTC;iC0TC;C1TE"}],[{"names":["<global>","AppState","constructor","_supportedEvents.reduce$argument_0","addListener$argument_1","NativeAppState.getCurrentAppState$argument_0","addEventListener","removeEventListener","throwMissingNativeModule","MissingNativeAppStateShim","MissingNativeAppStateShim#addEventListener","MissingNativeAppStateShim#removeEventListener","MissingNativeAppStateShim#addListener","MissingNativeAppStateShim#removeAllListeners","MissingNativeAppStateShim#removeSubscription"],"mappings":"AAA;ACwB;ECM;uDCI;KDG;0CEU;KFG;sCGK;KHM;GDC;EKa;gDFW;WEE;kDFgB;WEO;GLI;EMO;GNW;CDC;AQE;CRM;ASE;ECK;GDE;EEE;GFE;EGG;GHE;EIE;GJE;EKE;GLE;CTC"}],[{"names":["<global>","logError"],"mappings":"AAA;iBCiB;CDO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getItem","Promise$argument_0","RCTAsyncStorage.multiGet$argument_1","setItem","RCTAsyncStorage.multiSet$argument_1","removeItem","RCTAsyncStorage.multiRemove$argument_1","mergeItem","RCTAsyncStorage.multiMerge$argument_1","clear","RCTAsyncStorage.clear$argument_0","getAllKeys","RCTAsyncStorage.getAllKeys$argument_0","flushGetRequests","result.forEach$argument_0","requestKeys.map$argument_0","multiGet","setImmediate$argument_0","keys.forEach$argument_0","multiSet","multiRemove","multiMerge","convertErrors","map$argument_0","convertError"],"mappings":"AAA;WCsC;uBCK;sCCC;ODU;KDC;GDC;WIO;uBFM;+CGC;OHQ;KEC;GJC;cMO;uBJK;yCKC;OLQ;KIC;GNC;aQU;uBNM;iDOC;OPQ;KMC;GRC;SUS;uBRE;4BSC;OTO;KQC;GVC;cYO;uBVI;iCWC;OXO;KUC;GZC;oBciB;sCXQ;uBYS;SZG;8CaK,sBb;KWI;GdC;YiBS;qCCK;ODG;sCfY;KeG;iBEI;KFI;GjBG;YoBQ;uBlBK;8CGC;OHQ;KkBC;GpBC;eqBO;uBnBK;wCKC;OLQ;KmBC;GrBC;csBU;uBpBK;gDOC;OPQ;KoBC;GtBC;AuBS;mDCI,oBD;CvBC;AyBE;CzBO"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","module.exports.getString","module.exports.setString"],"mappings":"AAA;EC0B;GDE;EEU;GFE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DatePickerAndroid","open"],"mappings":"AAA;ACc;ECC;GDE;CDU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","DevSettings","constructor","addMenuItem","addListener$argument_1","reload","onFastRefresh","NoopDevSettings","NoopDevSettings#addMenuItem","NoopDevSettings#reload","NoopDevSettings#onFastRefresh"],"mappings":"AAA;ACmB;ECG;GDI;EEE;yCCa;KDI;GFC;EIE;GJM;EKE;GLI;CDG;AOG;ECC,mDD;EEC,0BF;EGC,kBH;CPC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","canRecordVideos","canUseCamera","openCameraDialog","openSelectDialog","removePendingVideo","clearAllPendingVideos"],"mappings":"AAA;mBCgB;GDG;gBEC;GFG;oBGC;GH4B;oBIC;GJ4B;sBKS;GLG;yBMK;GNG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Linking","constructor","addEventListener","removeEventListener","openURL","canOpenURL","openSettings","getInitialURL","InteractionManager.runAfterInteractions.then$argument_0","sendIntent","Promise$argument_0","_validateURL"],"mappings":"AAA;AC0B;ECC;GDE;EEQ;GFE;EGO;GHE;EIO;GJO;EKO;GLO;EMO;GNM;EOQ;uDCE;yDDC;GPG;ESS;yBCW,qDD;GTE;EWE;GXM;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","console.error","console.warn","ignoreLogs","ignoreAllLogs","uninstall","install","errorImpl","warnImpl","Object.defineProperty$argument_2.get","Object.defineProperty$argument_2.set","RCTLog.setWarningHandler$argument_0","isRCTLogAdviceWarning","isWarningModuleWarning","registerWarning","registerError"],"mappings":"AAA;yBCgC;GDE;wBEC;GFE;gBGG;KHE;mBIE;KJE;eKE;KLI;aME;kBCI;ODE;iBEE;OFE;aGW,6BH;aIC;SJK;+BKO;OLE;KNC;gCYG;GZI;iCaE;GbE;0BcE;Gd0B;wBeE;GfqD;gBGG;KHE;mBIE;KJE;aME;KNE;eKE;KLE"}],[{"names":["<global>","_initializeGestureState","_updateGestureStateOnMove","create","panHandlers.onStartShouldSetResponder","panHandlers.onMoveShouldSetResponder","panHandlers.onStartShouldSetResponderCapture","panHandlers.onMoveShouldSetResponderCapture","panHandlers.onResponderGrant","panHandlers.onResponderReject","panHandlers.onResponderRelease","panHandlers.onResponderStart","panHandlers.onResponderMove","panHandlers.onResponderEnd","panHandlers.onResponderTerminate","panHandlers.onResponderTerminationRequest","getInteractionHandle","clearInteractionHandle"],"mappings":"AAA;ECqR;GDY;EE0B;GFoC;EGkC;MCqC;ODI;MEC;OFI;MGC;OHW;MIE;OJe;MKE;OLe;MME;ONO;MOE;OPQ;MQE;ORM;MSE;OTgB;MUE;OVS;MWE;OXQ;MYE;OZI;MaI;ObE;GHE;AiBG;CjBa"}],[{"names":["<global>","centroidDimension","currentCentroidXOfTouchesChangedAfter","currentCentroidYOfTouchesChangedAfter","previousCentroidXOfTouchesChangedAfter","previousCentroidYOfTouchesChangedAfter","currentCentroidX","currentCentroidY"],"mappings":"AAA;qBC0B;GDuD;yCEE;GFU;yCGE;GHU;0CIE;GJU;0CKE;GLU;oBME;GNO;oBOE;GPO"}],[{"names":["<global>","PermissionsAndroid","checkPermission","check","requestPermission","request","Promise$argument_0","NativeDialogManagerAndroid.showAlert$argument_1","NativeDialogManagerAndroid.showAlert$argument_2","requestMultiple"],"mappings":"AAA;ACuE;EC0C;GDiB;EEQ;GFc;EGgB;GHgB;EIQ;2BCsB;YCS,kDD;YEC;6EFC;SDE;GJI;EQS;GRgB;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PushNotificationIOS","presentLocalNotification","scheduleLocalNotification","cancelAllLocalNotifications","removeAllDeliveredNotifications","getDeliveredNotifications","removeDeliveredNotifications","setApplicationIconBadgeNumber","getApplicationIconBadgeNumber","cancelLocalNotifications","getScheduledLocalNotifications","addEventListener","PushNotificationEmitter.addListener$argument_1","removeEventListener","requestPermissions","abandonPermissions","checkPermissions","getInitialNotification","NativePushNotificationManagerIOS.getInitialNotification.then$argument_0","constructor","Object.keys.forEach$argument_0","finish","getMessage","getSound","getCategory","getAlert","getContentAvailable","getBadgeCount","getData","getThreadID"],"mappings":"AAA;ACuE;ECuB;GDM;EEO;GFM;EGO;GHM;EIO;GJM;EKO;GLQ;EMO;GNM;EOO;GPM;EQO;GRM;ESO;GTM;EUO;GVM;EWQ;QCY;SDE;QCK;SDE;QCK;SDE;QCK;SDE;GXI;EaQ;GbiB;EcU;Gd8B;EeO;GfM;EgBQ;GhBO;EiBQ;MCM;ODE;GjBE;EmBQ;uCCW;ODY;GnBS;EqBQ;GrBkB;EsBK;GtBG;EuBO;GvBE;EwBO;GxBE;EyBO;GzBE;E0BO;G1BE;E2BO;G3BE;E4BO;G5BE;E6BO;G7BE;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","get","set","watchKeys","clearWatch","_sendObservations","Object.keys.forEach$argument_0","subscriptions.forEach$argument_0"],"mappings":"AAA;EC0B;GDE;EEE;GFG;EGE;GHa;EIE;GJI;EKE;8BCC;8BCM;SDI;KDE;GLC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Share","share","NativeShareModule.share.then$argument_0","Promise$argument_0","NativeActionSheetManager.showShareActionSheetWithOptions$argument_1","NativeActionSheetManager.showShareActionSheetWithOptions$argument_2"],"mappings":"AAA;ACuC;ECqC;QCkC;UDG;yBEG;UCsB,sBD;UEC;WFY;OFE;GDI;CDY"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","StatusBarIOS"],"mappings":"AAA;ACkB,gDD"}],[{"names":["<global>","show","showWithGravity","showWithGravityAndOffset"],"mappings":"AAA;QCa;GDE;mBEE;GFM;4BGE;GHQ"}],[{"names":["<global>","useColorScheme","useMemo$argument_0","getCurrentValue","subscribe","<anonymous>"],"mappings":"AAA;eCiB;ICE;uBCC,iCD;iBEC;eCE,+CD;OFC;MDC;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","exports.useSubscription","g.useState$argument_0","g.useEffect$argument_0","b","f$argument_0","<anonymous>"],"mappings":"AAA;wBCS,+DC,2DD,wJE,WC,gCC,2FD,GD,2BG,oBH,CF,iBD"}],[{"names":["<global>","useWindowDimensions","useState$argument_0","useEffect$argument_0","handleChange","<anonymous>"],"mappings":"AAA;eCgB;+CCC,8BD;YEC;ICC;KDS;WEM;KFE;GFC;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","vibrateByPattern","setTimeout$argument_0","vibrateScheduler","vibrate","cancel"],"mappings":"AAA;AC0B;aCc,iDD;CDC;AGE;IDoB,0DC;CHG;WIQ;GJwB;UKM;GLM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","YellowBox","YellowBox.ignoreWarnings","YellowBox.install","YellowBox.uninstall","YellowBox#render"],"mappings":"AAA;cCsB;ICC;KDM;IEE;KFK;IGE;KHK;IIE;KJE;GDC;cCE;ICC;KDE;IEE;KFE;IGE;KHE;IIE;KJE;GDC"}],[{"names":["<global>","DynamicColorIOS"],"mappings":"AAA;+BCoB;CDE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","setPageObject","getPageObject","injectPageInstance","getPageInstance","getLifecyle","safeExecute","func.map$argument_0","createPageConfig","React.forwardRef$argument_0","WrapScreen","PageScreen","PageScreen#constructor","PageScreen#componentDidMount","AppState.addEventListener$argument_1","Dimensions.addEventListener$argument_1","navigation.addListener$argument_1","eventCenter.on$argument_1","PageScreen#componentWillUnmount","AppState.removeEventListener$argument_1","Dimensions.removeEventListener$argument_1","eventCenter.off$argument_1","PageScreen#setPageInstance","inst.onReady","inst.onShow","inst.onHide","inst.onPullDownRefresh","inst.onReachBottom","inst.onPageScroll","inst.onResize","inst.onTabItemTap","inst.onUnload","inst.getOpenerEventChannel","PageScreen#pullDownRefresh","PageScreen#setRefreshStyle","PageScreen#pageToScroll","PageScreen#onFocusChange","PageScreen#onBlurChange","PageScreen#onAppStateChange","PageScreen#onPageScroll","PageScreen#onResize","PageScreen#onReachBottom","PageScreen#onPullDownRefresh","PageScreen#onTabItemTap","PageScreen#handleHooksEvent","PageScreen#getTabItem","PageScreen#isEnablePullDown","PageScreen#refreshPullDown","React.createElement$argument_1.onRefresh","PageScreen#createPage","PageScreen#createScrollPage","Object.assign$argument_1.onScroll","Object.assign$argument_1.onMomentumScrollEnd","PageScreen#render","startPullDownRefresh","stopPullDownRefresh","pageScrollTo","setBackgroundColor","setBackgroundTextStyle","getCurrentPages","routes.forEach$argument_0"],"mappings":"AAA;ACc;CDE;AEC;CFE;OGC;CHE;OIC;CJE;AKC;CLE;AMC;6BCO,8BD;CNO;OQK;sCCY;SDM;uBEI;eCC;YCC;aDa;YEC;oDCG,qDD;sDEE,yCF;mFGE,yBH;6EGC,0BH;2EGC,yBH;wDIE,0DJ;qDIC,+DJ;wDIC,4BJ;aFC;YOC;uDCE,2BD;yDEC,yCF;yDGC,0DH;sDGC,+DH;yDGC,4BH;aPM;YWC;oBCQ;qBDQ;oBEC;qBFQ;oBGC;qBHQ;oBIC;qBJQ;oBKC;qBLQ;oBMC;qBNQ;oBOC;qBPQ;oBQC;qBRQ;oBSC;qBTQ;oBUC;qBVE;aXS;YsBC;atBI;YuBC;avBO;YwBC;axBK;YyBC;azBa;Y0BC;a1BW;Y2BC;a3BgB;Y4BC;a5Be;Y6BC;a7BW;Y8BE;a9Be;Y+BE;a/Be;YgCC;ahCY;YiCC;ajCI;YkCC;alCkB;YmCC;anCK;YoCC;+BCQ,8BD;apCE;YsCC;atCE;YuCC;gQCQ,2BD,uBE,4BF;avCC;Y0CC;a1CG;SDC;KFC;CRG;OsDC;CtDiB;OuDC;CvDiB;OwDC;CxDiB;OyDE;CzDc;O0DE;C1De;O2DC;uBCI;SDG;C3DO"}],[{"names":["<global>","<anonymous>","apply","arrayAggregator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","arrayIncludes","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","arrayReduceRight","arraySome","asciiToArray","asciiWords","baseFindKey","eachFunc$argument_1","baseFindIndex","baseIndexOf","baseIndexOfWith","baseIsNaN","baseMean","baseProperty","basePropertyOf","baseReduce","baseSortBy","baseSum","baseTimes","baseToPairs","arrayMap$argument_1","baseTrim","baseUnary","baseValues","cacheHas","charsStartIndex","charsEndIndex","countHolders","escapeStringChar","getValue","hasUnicode","hasUnicodeWord","iteratorToArray","mapToArray","map.forEach$argument_0","overArg","replaceHolders","setToArray","set.forEach$argument_0","setToPairs","strictIndexOf","strictLastIndexOf","stringSize","stringToArray","trimmedEndIndex","unicodeSize","unicodeToArray","unicodeWords","runInContext","lodash","object","baseLodash","LodashWrapper","LazyWrapper","lazyClone","lazyReverse","lazyValue","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","arrayLikeKeys","arraySample","arraySampleSize","arrayShuffle","assignMergeValue","assignValue","assocIndexOf","baseAggregator","baseEach$argument_1","baseAssign","baseAssignIn","baseAssignValue","baseAt","baseClamp","baseClone","value.forEach$argument_0","arrayEach$argument_1","baseConforms","baseConformsTo","baseDelay","setTimeout$argument_0","baseDifference","baseEvery","baseExtremum","baseFill","baseFilter","baseFlatten","baseForOwn","baseForOwnRight","baseFunctions","arrayFilter$argument_1","baseGet","baseGetAllKeys","baseGetTag","baseGt","baseHas","baseHasIn","baseInRange","baseIntersection","baseInverter","baseForOwn$argument_1","baseInvoke","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","baseIsMap","baseIsMatch","baseIsNative","baseIsRegExp","baseIsSet","baseIsTypedArray","baseIteratee","baseKeys","baseKeysIn","baseLt","baseMap","baseMatches","baseMatchesProperty","baseMerge","baseFor$argument_1","baseMergeDeep","baseNth","baseOrderBy","baseMap$argument_1","baseSortBy$argument_1","basePick","basePickBy$argument_2","basePickBy","basePropertyDeep","basePullAll","basePullAt","baseRandom","baseRange","baseRepeat","baseRest","baseSample","baseSampleSize","baseSet","baseShuffle","baseSlice","baseSome","baseSortedIndex","baseSortedIndexBy","baseSortedUniq","baseToNumber","baseToString","baseUniq","baseUnset","baseUpdate","baseWhile","baseWrapperValue","arrayReduce$argument_1","baseXor","baseZipObject","castArrayLikeObject","castFunction","castPath","castSlice","cloneBuffer","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","compareAscending","compareMultiple","composeArgs","composeArgsRight","copyArray","copyObject","copySymbols","copySymbolsIn","createAggregator","createAssigner","baseRest$argument_0","createBaseEach","createBaseFor","createBind","wrapper","createCaseFirst","createCompounder","createCtor","createCurry","createFind","predicate","createFlow","flatRest$argument_0","createHybrid","createInverter","createMathOperation","createOver","arrayFunc$argument_1","createPadding","createPartial","createRange","createRelationalOperation","createRecurry","createRound","createToPairs","createWrap","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","equalArrays","arraySome$argument_1","equalByTag","equalObjects","flatRest","getAllKeys","getAllKeysIn","getFuncName","getHolder","getIteratee","getMapData","getMatchData","getNative","getRawTag","getTag","getView","getWrapDetails","hasPath","initCloneArray","initCloneObject","initCloneByTag","insertWrapDetails","isFlattenable","isIndex","isIterateeCall","isKey","isKeyable","isLaziable","isMasked","isPrototype","isStrictComparable","matchesStrictComparable","memoizeCapped","memoize$argument_1","mergeData","nativeKeysIn","objectToString","overRest","parent","reorder","safeGet","setWrapToString","shortOut","shuffleSelf","memoizeCapped$argument_0","string.replace$argument_1","toKey","toSource","updateWrapDetails","wrapperClone","chunk","compact","concat","drop","dropRight","dropRightWhile","dropWhile","fill","findIndex","findLastIndex","flatten","flattenDeep","flattenDepth","fromPairs","head","indexOf","initial","join","last","lastIndexOf","nth","pullAll","pullAllBy","pullAllWith","remove","reverse","slice","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","uniq","uniqBy","uniqWith","unzip","baseTimes$argument_1","unzipWith","zipObject","zipObjectDeep","chain","tap","thru","interceptor","LodashWrapper.thru$argument_0","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapperValue","createAggregator$argument_0","every","filter","flatMap","flatMapDeep","flatMapDepth","forEach","forEachRight","includes","map","orderBy","createAggregator$argument_1","reduce","reduceRight","reject","sample","sampleSize","shuffle","size","some","after","ary","before","curry","curryRight","debounce","invokeFunc","leadingEdge","remainingWait","shouldInvoke","timerExpired","trailingEdge","cancel","flush","debounced","flip","memoize","memoized","negate","once","castRest$argument_0","rest","spread","throttle","unary","wrap","castArray","clone","cloneWith","cloneDeep","cloneDeepWith","conformsTo","eq","createRelationalOperation$argument_0","isArrayLike","isArrayLikeObject","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isFinite","isFunction","isInteger","isLength","isObject","isObjectLike","isMatch","isMatchWith","isNaN","isNative","isNull","isNil","isNumber","isPlainObject","isSafeInteger","isString","isSymbol","isUndefined","isWeakMap","isWeakSet","toArray","toFinite","toInteger","toLength","toNumber","toPlainObject","toSafeInteger","toString","createAssigner$argument_0","create","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","get","has","hasIn","createInverter$argument_0","keys","keysIn","mapKeys","mapValues","omitBy","pickBy","result","set","setWith","transform","unset","update","updateWith","values","valuesIn","clamp","inRange","random","createCompounder$argument_0","capitalize","deburr","endsWith","escape","escapeRegExp","pad","padEnd","padStart","parseInt","repeat","replace","split","startsWith","template","attempt$argument_0","toLower","toUpper","trim","trimEnd","trimStart","truncate","unescape","words","cond","conforms","constant","defaultTo","identity","iteratee","matches","matchesProperty","mixin","object.prototype.methodName","noConflict","noop","nthArg","property","propertyOf","stubArray","stubFalse","stubObject","stubString","stubTrue","times","toPath","uniqueId","createMathOperation$argument_0","max","maxBy","mean","meanBy","min","minBy","sum","sumBy","LazyWrapper.prototype.methodName","LazyWrapper.prototype.compact","LazyWrapper.prototype.find","LazyWrapper.prototype.findLast","map$argument_0","LazyWrapper.prototype.reject","LazyWrapper.prototype.slice","LazyWrapper.prototype.takeRightWhile","LazyWrapper.prototype.toArray","prototype.methodName","chainName$argument_0","define$argument_0"],"mappings":"AAA;ECQ;EC4d;GDQ;EEY;GFS;EGW;GHU;EIW;GJS;EKY;GLU;EMW;GNa;EOW;GPG;EQW;GRU;ESW;GTS;EUU;GVS;EWc;GXW;EYc;GZS;EaY;GbU;EckB;GdE;EeS;GfE;EgBa;yBCE;KDK;GhBE;EkBa;GlBU;EmBW;GnBI;EoBY;GpBU;EqBS;GrBE;EsBW;GtBG;EuBS;WvBC;KuBE;GvBC;EwBS;WxBC;KwBE;GxBC;EyBe;yBRC;KQI;GzBE;E0BY;G1BQ;E2BW;G3BY;E4BW;G5BQ;E6BW;2BCC;KDE;G7BC;E+BS;G/BI;EgCS;WhCC;KgCE;GhCC;EiCY;2BHC;KGE;GjCC;EkCU;GlCE;EmCW;GnCM;EoCW;GpCK;EqCU;GrCU;EsC4B;GtCE;EuCU;GvCE;EwCS;GxCE;EyCS;GzCE;E0CS;G1CQ;E2CS;gBCI;KDE;G3CE;E6CU;W7CC;K6CE;G7CC;E8CW;G9Cc;E+CS;gBCI;KDE;G/CE;EiDS;gBDI;KCE;GjDE;EkDY;GlDU;EmDY;GnDQ;EoDS;GpDI;EqDS;GrDI;EsDU;GtDK;EuDkB;GvDM;EwDS;GxDE;EyDS;GzDE;sB0DiC;sB1DgC;K0DG;0B1DkC;K0DM;ICuK;KDU;sB1DU;M4DC,oB5D;K0Da;IGO;KHE;IIS;KJM;IK+E;KLQ;IMU;KNS;IOU;KPU;IQU;KR+C;ISe;KTS;IUS;KVG;IWY;KXI;IYW;KZO;IaW;KbG;IcY;KdK;IekB;KfS;IgBS;KhBG;IiBW;KjBe;IkBW;KlBK;ImBW;KnBE;IoBY;KpBW;IqBkB;KrBS;IsBS;KtBO;IuBW;KvBI;IwBW;KxBE;IyBW;KzBE;I0BY;K1BO;I2BmB;K3BQ;I4BY;K5BG;I6BW;K7BE;I8Be;K9BG;I+BS;K/BG;IgCW;KhCM;IiCW;KjCE;IkCW;KlCE;ImCY;KnCc;IoCmB;KpCyB;IqCS;KrCG;IsCU;KtCE;IuCS;KvCE;IwCW;KxCK;IyCY;KzCM;I0CU;K1CQ;I2Ca;2BCC;ODE;K3CE;I6CW;K7CE;I8CW;K9CE;I+CW;K/CW;IgDU;KhDU;IiDW;KjDU;IkDkB;sBCmD;SDE;sBCE;SDE;gCEQ;OFO;KlDE;IqDS;a/GE;O+GE;KrDC;IsDU;KtDgB;IuDY;wBCI,2CD;KvDC;IyDa;KzD2C;I0D+B;2BdE;OcG;K1DE;I2DY;K3DiB;I4DY;K5DgB;I6DU;2BjBE;OiBI;K7DE;I8Da;K9DqB;I+DmC;K/DE;IgEU;KhEE;IiEW;gCCC;ODE;KjEC;ImEU;KnEU;IoEa;KpEG;IqES;KrEO;IsEW;KtEE;IuEU;KvEE;IwEU;KxEE;IyEW;KzEE;I0EY;K1EmD;I2Ea;yBCC;ODE;K3EE;I6EY;K7EK;I8ES;K9EE;I+ES;K/EE;IgFS;KhFE;IiFgB;KjFQ;IkFgB;KlF2C;ImFS;KnFE;IoFY;KpF0C;IqFU;KrFM;IsFS;KtFE;IuFS;KvFE;IwFS;KxFG;IyFS;KzFe;I0FS;K1FW;I2FS;K3Fa;I4FW;K5FE;I6FU;2BjDI;OiDE;K7FE;I8FS;axJK;OwJE;K9FC;I+FU;azJI;OyJK;K/FC;IgGa;sBCI;ODe;KhGC;IkGiB;KlG4D;ImGU;KnGO;IoGW;wChIE;mB9BE;a8BE;SgIG;uCCQ;2CjIC;SiIE;ODE;gCEE;OFE;KpGC;IuGW;uCCC;ODE;KvGC;IyGW;KzGc;I0GS;apKC;OoKE;K1GC;I2Ga;K3GyB;I4GW;K5GgB;I6GW;K7GE;I8Ga;K9GU;I+GU;K/GkB;IgHU;KhHE;IiHS;KjHE;IkHU;KlHG;ImHY;KnHgC;4C1DU;K0DG;uD1DU;K0DO;IoHS;KpHE;IqHW;KrHmB;IsHW;2B1EG;O0EG;KtHE;IuHc;KvHmB;IwHe;KxHyC;IyHW;KzHgB;I0HU;K1HQ;I2HU;K3Hc;I4HW;K5HkD;I6HU;K7HI;I8HY;K9HE;I+Ha;K/HU;IgIY;kCCK;ODE;KhIC;IkIY;KlImB;ImIW;KnIW;IoIS;KpIE;IqIS;KrIE;IsIU;KtIK;IuIsB;KvII;0C1DQ;K0DE;IwIU;KxIS;IyIS;KzII;I0IU;K1IG;I2IS;K3II;I4IS;K5IE;I6IU;K7IG;I8IU;K9I4B;I+IgB;K/IyB;IgJa;KhJsB;IiJa;KjJwB;IkJU;KlJS;ImJY;KnJwB;IoJU;KpJE;IqJU;KrJE;IsJU;ahNC;OgNK;KtJC;IuJS;sBCC;ODsB;KvJC;IyJU;anNC;OmNiB;KzJC;I0JS;apNC;OoNa;K1JC;I2JY;MCI;ODG;K3JE;I6JS;avNC;OuNgB;K7JC;I8JS;axNC;OwNE;K9JC;I+JU;azNC;OyNqB;K/JC;IgKW;MJG;OIqB;KhKE;IiKS;a3NC;sB4NK,gE5N;O2NI;KjKC;ImKS;sBCC;e9NmC;S8Nc;ODC;KnKC;IqKqB;MTQ;OS0C;KrKE;IsKU;ahOC;OgOE;KtKC;IuKU;ajOC;OiOsB;KvKC;IwKS;sBJC;wBZE;sCiBE;WjBE;SYC;OIC;KxKC;I0KW;K1KW;I2Kc;MfI;Oee;K3KE;I4KS;atOC;OsOc;K5KC;I6KS;avOC;OuOM;K7KC;I8KmB;K9KwB;I+KS;azOE;OyOa;K/KC;uF1DS;K0DE;IgLS;a1OC;O0OS;KhLC;IiL2B;KjLqD;IkLc;KlLM;ImLgB;KnLQ;IoLW;KpLE;IqLe;gCCwC;eDK;KrLe;IuLmB;KvL+D;IwLe;KxL+D;IyLS;KzLE;I0LS;K1LE;I2LU;K3LE;oC1DS;K0DE;I4LS;K5La;I6LS;K7LG;I8La;K9LI;I+LU;K/LK;IgMS;KhMW;IiMU;KjMG;IkMS;KlMkB;qD1DS;mD4HK;O5HE;K0DC;uD1DS;K0DO;emMiB;OnMe;IoMa;KpMgB;IqMS;KrMG;IsMW;KtMoB;IuMS;KvMU;IwMS;KxMI;IyMc;KzMkC;I0MU;K1MS;I2MS;K3MG;I4MU;K5MQ;I6MY;K7MY;I8MU;K9MW;I+MS;K/MK;IgNU;KhNY;IiNS;KjNE;IkNkB;KlNK;ImNU;KnNE;IoNW;a9QC;O8QM;KpNC;IqNU;iCCC;ODK;KrNI;IuNkB;KvNqD;IwNW;KxNQ;IyNS;KzNE;I0NW;apRE;OoRgB;K1NC;I2NU;K3NE;I4NY;K5NU;I6NU;K7NU;sC1D0B;K0DE;I8NsB;K9NG;I+NW;azRI;OyRa;K/NC;IgOU;KhOe;qCiOS;iCCK;ODE;KjOE;ImOS;KnOM;IoOS;KpOU;IqOU;2BjLC;OiLK;KrOE;IsOS;KtOS;IuOyB;KvOkB;IwOiB;KxOa;IyOwB;KzOa;8BwJuB;KxJI;gCwJ4B;KxJQ;kCwJyB;KxJQ;I0O2B;K1OO;I2O2B;K3OQ;I4OqC;K5OI;I6OqC;K7OI;I8O+B;K9OU;I+OqC;K/OU;IgPqC;KhPa;IiPgB;KjPG;IkPgB;KlPG;ImPsB;KnPO;IoPiB;KpPU;IqPoB;KrPE;IsPyB;KtPU;IuPgB;KvPG;gCwJmB;KxJK;kCwJyB;KxJY;oCwJuB;KxJW;IwPiB;KxPE;IyPgB;KzPG;I0PuB;K1Pa;I2PuB;K3PE;I4P+C;K5PI;I6PyB;K7PI;I8PyB;K9PI;0BoK0B;0ChMI;OgME;KpKG;I+P8B;K/PmB;IgQyB;KhQE;IiQkB;KjQc;IkQmB;KlQE;ImQ2B;KnQE;IoQkB;KpQS;IqQoB;KrQE;IsQ2B;KtQE;IuQkB;KvQS;IwQiB;KxQI;IyQkB;KzQI;I0QgB;K1QG;I2Q2B;K3QM;I4Q2B;K5QQ;I6QqC;K7QI;I8QqC;K9QI;yBwJkB;KxJE;2BwJyB;KxJM;6BwJuB;KxJI;I+QoB;K/QE;IgRyB;KhRE;IiRsB;KjRG;IkRqB;iChNK;OgNK;+BCC;ODE;KlRC;IoRuB;8BhTQ;OgTE;KpRC;2BwJsB;KxJI;uBwJoB;KxJE;yBwJyB;KxJM;2BwJuB;KxJI;IqRoC;KrRE;IsRiB;KtRE;2BwJsB;KxJM;IuRiC;KvRI;IwRyB;KxRG;IyRyB;KzRE;6BoKkB;wBsHI,kDtH;2DuHY;OvHK;KpKC;I4R6B;K5RE;I6R4B;K7RE;I8RwB;K9RQ;I+RoB;K/RE;IgS0B;KhSkB;IiSsB;KjSgB;IkSgB;KlSE;mCmS0B;KnSM;IoS2C;KpSM;IqS2C;KrSG;IsSkF;KtSE;IuSsB;KvSE;IwSuB;KxSG;IySgC;KzSG;I0SsB;K1SG;mCmSyB;KnSM;I2SgC;K3SW;6BwJyB;2B5GK;O4GE;KxJE;iCmS8B;KnSE;I4S4C;K5SG;I6S+B;K7SY;qCmSsC;KnSE,E8S,+B9S;I+SuC;K/SK;IgTwB;KhTK;IiToC;KjTG;IkTgB;KlTG;ImTsB;KnTQ;IoTiB;KpTG;IqTuB;KrTY;IsTsC;KtTM;0BwJ+B;KxJW;wB1DoB;K0DE;IuT4B;ajXK;OiXI;KvTC;IwTmB;KxTI;IyTmB;anXM;OmXQ;KzTC;wBwJqC;KxJO;2BwJ+C;KxJO;I0T2C;K1TK;I2TwC;K3TK;I4TwD;MCuB;ODQ;MEE;OFO;MGE;OHQ;MIE;OJS;MKE;OLO;MME;ONU;MOE;OPM;MQE;ORE;MSE;OTuB;K5TI;yBwJoB;KxJE;yBwJqB;KxJE;IsUoB;KtUE;IuU8C;qBCI;ODW;KvUG;IyUyB;anYI;OmYS;KzUC;I0UoB;K1UE;4B2UiC;sBnLM;OmLQ;K3UC;2BwJmC;KxJG;gCwJkC;KxJG;yBoKwB;KpKE;I4U2B;K5UM;I6UoC;sBrLK;OqLQ;K7UC;I8U8C;K9UgB;I+UiB;K/UE;IgVwB;KhVE;IiVqC;KjVM;IkV4B;KlVE;ImViC;KnVG;IoVoB;KpVE;IqV8B;KrVG;IsV0B;KtVE;IuVkC;KvVE;wCwVkD;KxVE;sC1DoB,gC0D,wB1D;K0DG;IyVuE;KzVE;I0V2B;K1VE;I2VmB;K3VG;I4VyD;K5VE;I6VmC;K7VsB;I8V8B;K9VE;I+VkC;K/VI;IgWoB;KhWO;IiW4B;KjWE;IkWmB;KlWQ;ImW4B;KnWE;IoW4B;KpWG;IqW2B;KrWG;IsW0B;KtWE;IuWiD;KvWE;IwWkC;KxWG;IyW8B;KzWK;I0W4B;K1WK;I2WmB;K3WE;I4WsB;K5WE;I6W4B;K7WG;I8W8B;K9WW;I+WgD;K/WE;IgXsC;KhXG;IiXmB;KjXG;IkXsC;KlXE;ImXmB;KnXE;IoXmB;KpXE;wCwVkD;KxVE;IqXyB;KrXc;IsXyB;KtXU;IuX4B;KvXK;IwX6B;KxXE;IyXyB;KzXmB;I0X0B;K1XE;I2X0B;K3XI;I4XuB;K5XE;gC6XoC;K7XU;kC6XiC;K7XE;sC6X+B;K7XE;oC6X8B;K7XE;I8XuD;K9XG;4BwJuB;KxJ6B;gCwJqB;KxJG;I+XqC;K/XE;IgYqC;KhYE;IiY8B;KjYI;IkY4B;KlYI;ImY8B;KnYE;IoY4B;KpYE;IqYyB;KrYE;IsYyB;KtYE;IuY2B;KvYG;IwY6B;KxYE;IyY4B;KzYE;gC0YoB;K1YO;kC0Y4B;K1YW;I2YkD;K3YE;I4YyB;K5YE;I6YuB;yBjUI;OiUE;K7YE;I8Y8B;yBlUI;OkUE;K9YE;+B6XiC;K7XE;mC6XiC;K7XE;wBoKsB;8BhMM;OgMI;KpKU;I+YsB;K/YE;wBoKmB;KpKE;IgZoB;iD5aI;O4aE;uCxSE;OwSE;KhZC;IiZ+B;KjZoB;IkZ8B;KlZE;ImZ0B;KnZG;IoZoF;mD9ciB;O8cE;KpZE;IqZ6B;KrZE;IsZ6B;KtZE;IuZ0B;KvZG;IwZ4B;KxZE;IyZ0B;KzZE;I0ZuB;K1Zc;I2ZwC;K3ZU;I4ZiC;K5ZqC;qC6ZwB;K7ZG;I8ZiB;K9ZE;I+ZoB;K/ZG;IgayB;KhaY;Iia8B;KjaK;IkaiB;KlaK;qC6ZuB;K7ZE;qC6ZsB;K7ZE;Ima4C;Knac;IoayB;KpaQ;IqayB;KraQ;Isa0B;KtaO;IuawB;KvaO;IwaqB;KxaK;qC6ZuB;K7ZE;IyaqB;KzamB;qC6ZuB;K7ZE;I0ayB;K1aQ;I2a0G;mCzMwC;OyMuB;2BCwC;ODG;K3aS;I6auB;K7aE;I8auB;K9aE;I+awB;K/ac;IgbqB;KhbY;IibqB;KjbY;IkbuC;KlbsD;ImbqB;KnbK;qC6ZsB;K7ZE;IobwC;KpbQ;2BwJ0B;KxJM;2BoK4B;6BhHC;OgHG;KpKE;Iqb+B;6CjdI;OidK;sB7RE;O6RQ;KrbC;Isb0B;KtbE;IubqB;ajfC;OifE;KvbC;IwbsB;KxbE;IybiE;KzbE;I0b4C;K1bE;I2bqC;K3bE;I4bmC;K5bE;0BwJ0B;alNC;OkNE;KxJC;4BwJyB;alNC;OkNE;KxJC;I6bsC;6BzYc;yC0YI;W1YW;OyYE;K7bG;I+be;K/bK;Igcc;KhcE;IicsB;sBzSE;OySE;KjcC;Ikc2G;KlcE;ImcuB;a7fC;O6fE;KncC;IocqG;KpcE;Iqce;KrcE;IscoB;KtcE;Iuce;KvcE;Iwce;KxcE;IycqB;KzcgB;I0cmB;K1cK;I2cmB;K3cG;kC4cmB;K5cE;qC4cwC;K5cE;I6c2C;K7cI;I8cyB;K9cI;I+cgB;K/cE;IgdyB;KhdE;IidoB;KjdI;IkdyB;KldI;uC4ciB;K5cE;uC4cwC;K5cE;ImdgB;KndI;IodyB;KpdI;mB1DkU;yBsIE;OtII;K0DE;qFoDc;KpDE;gCoDG;0CiaC;OjagB;oD9GE;O8GE;KpDC;8CoDG;0CiaI;OjaQ;KpDC;gCoDG;0CiaG;OjaE;KpDC;mCoDG;0CiaG;OjaE;KpDC;oCsdE;KtdE;iCudE;KvdE;qCwdE;KxdE;+CwJE;sBiUI;OjUE;KxJC;mC0dE;K1dE;kC2dE;K3diB;2C4dE;K5dE;oC6dE;K7dE;sC4EG;qCkZS;0BpMO;SoMG;OlZsB;K5EC;qEoDG;qC0aK;+BCM;SDE;O1aC;KpDC;sC4EG;K5ES;G1D4B;W0hBiB;K1hBE;CDa"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createRouter","getTabNames","tabBar.list.map$argument_0","getPageList","pageList.filter$argument_0","getTabItemOptions","getHeaderView","getStackOptions","defaultOptions.headerTitle","defaultOptions.headerBackImage","getTabItem","pageList.forEach$argument_0","getInitRouteName","getInitTabRoute","getInitParams","createTabStack","tabBar.list.forEach$argument_0","Object.assign$argument_1.tabBar","createTabBar","getLinkingConfig","tabBarList.forEach$argument_0","createTabNavigate","React.createElement$argument_1.children","React.createElement$argument_2","Object.assign$argument_1.screenOptions","createStackNavigate","getCurrentOptions"],"mappings":"AAA;OCW;CDQ;AEC;+BCK;KDG;CFE;AIC;2BCO,0CD;CJC;AMC;CNO;AOC;CPE;AQE;qBCS,iDD;yBEe;SFE;CRK;AWC;qBCU;KDI;CXE;AaC;Cbc;AcC;CdwB;AeC;CfS;AgBC;wECO;KDW;iIEiB,2CF;ChBC;AmBC;CnBE;AoBC;qBRK;KQG;2BCK;SDI;CpBc;AsBC;kBCQ,wCD;OEC,wCF;qBVG;KUS;wHGG;SHI;CtBE;A0BC;qBdO;KcS;C1BK;A2BC;C3BM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","goBack","navigate","reset","setParams"],"mappings":"AAA;OCoC;CDE;OEU;CFc;OGE;CHE;OIE;CJE"}],[{"names":["<global>","getStateForAction","state.routes.findIndex$argument_0","state.routes.map$argument_0","nextState.routes.some$argument_0","nextState.routeNames.some$argument_0","nextState.routes.map$argument_0","shouldActionChangeFocus"],"mappings":"AAA;ECY;mCCO,8BD;mCES;iBFG;YGW,mEH;cIU,0CJ;yCKQ;gFLC;GDW;EOE;GPE"}],[{"names":["<global>","customAlphabet","<anonymous>","nanoid"],"mappings":"AAA;qBCK;SCC;GDS;CDC;aGE;CHS"}],[{"names":["<global>","StackActions.replace","StackActions.push","StackActions.pop","StackActions.popToTop","StackRouter","router.getInitialState","router.getRehydratedState","state.routes.filter$argument_0","state.routes.filter.map$argument_0","router.getStateForRouteNamesChange","router.getStateForRouteFocus","state.routes.findIndex$argument_0","router.getStateForAction","state.routes.map$argument_0","state.routes.find$argument_0"],"mappings":"AAA;ECoF;GDE;EEC;GFE;EGC;GHE;EIC;GJE;eKG;ICS;KDqB;IEE;gBCQ,0CD;UEE;+BFW;KFwB;IKE;yCFC;uCEC;KLuB;IME;2CCC,oBD;KNW;IQE;uCDO,8BC;qCCe;uBDa;oBEa;sDFE;oBEI;8DFE;2CLO,0BK;uCDyC,8BC;gBDmD;0DCE;KR2G;CLM"}],[{"names":["<global>","TabActions.jumpTo","getRouteHistory","routes.findIndex$argument_0","changeIndex","state.history.filter$argument_0","TabRouter","router.getInitialState","routeNames.map$argument_0","router.getRehydratedState","routes.find$argument_0","<anonymous>","router.getStateForRouteNamesChange","state.routes.find$argument_0","router.getStateForRouteFocus","state.routes.findIndex$argument_0","router.getStateForAction","state.routes.map$argument_0","router.shouldActionChangeFocus"],"mappings":"AAA;EC6D;GDE;wBEG;QCyB,0CD;CFiB;oBIE;cCY,6DD;CJgB;eME;ICY;oCCM;QDI;KDkB;IGE;oCDO;uBEG,sBF;OCmB;8BEQ,oBD,uBC,CF;KHiB;IME;QJE;4BKC,sBL;WII;QPU,2CK,uBL,CO;KNmB;IQE;2CCC,oBD;KRO;IUE;cDQ,2CC;cDI,6CC;qCCa;qBD8B;YDgB,oCC;KViB;IYE;KZE;CNM"}],[{"names":["<global>","DrawerActions.openDrawer","DrawerActions.closeDrawer","DrawerActions.toggleDrawer","isDrawerOpen","<anonymous>","openDrawer","closeDrawer","state.history.filter$argument_0","DrawerRouter","getInitialState","getRehydratedState","getStateForRouteFocus","getStateForAction"],"mappings":"AAA;EC8D;GDE;EEC;GFE;EGC;GHE;qBIG;iCCI,4BD,EJ;mBME;CNW;oBOE;kCCS,4BD;CPE;eSE;ICiB;KDiB;IEE;KFuB;IGE;KHQ;IIE;KJ+B;CTI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","Object.defineProperty$argument_2.set","getPartialState","state.routes.map$argument_0","BaseNavigationContainer","useSyncState$argument_0","React.useCallback$argument_0","dispatch","listeners.focus._$argument_0","canGoBack","React.useImperativeHandle$argument_1","reduce$argument_0","acc.name","getState","getParent","dangerouslyGetState","dangerouslyGetParent","React.useMemo$argument_0","React.useEffect$argument_0"],"mappings":"AAA;MC2C;ODI;wBEY;6BCa;KDQ;CFE;EIY;4BCwB;sEDC;qCEO,6BF;qCEE;KFE;qBGM;yBCO,2CD;KHC;sBKE;qDDK;8BCC;KLQ;MEG;2BEO;YFI;OFE;2CEI;KFE;8CEE;KFS;mCMM;QCG;oBCC;WDM;ODE;gBGM,WH;iBIC,eJ;2BKC,WL;4BMC,eN;MNG;MEG;OFE;MEO;OFW;MaK;QbK;MaK,wCb;2CEM,0BF;MaG;QbQ;oBcc;KdG;oBcE;Kd6D;MEG;OFsC;GJ8B"}],[{"names":["<global>","EnsureSingleNavigator","React.useMemo$argument_0","register","unregister"],"mappings":"AAA;eCmB;ICI;MCC;ODQ;MEC;OFQ;MDC;CDS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.createContext$argument_0.onDispatchAction","React.createContext$argument_0.onOptionsChange"],"mappings":"AAA;oBC4D,eD;mBEC,eF"}],[{"names":["<global>","React.createContext$argument_0.get__getKey","React.createContext$argument_0.get__setKey","React.createContext$argument_0.get__getState","React.createContext$argument_0.get__setState","React.createContext$argument_0.get__getIsInitial"],"mappings":"AAA;ECuB;GDE;EEC;GFE;EGC;GHE;EIC;GJE;EKC;GLE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.createContext$argument_0.scheduleUpdate","React.createContext$argument_0.flushUpdates","useScheduleUpdate"],"mappings":"AAA;ECQ;GDE;EEC;GFE;eGU;CHQ"}],[{"names":["<global>","useChildListeners","React.useCallback$argument_0","<anonymous>"],"mappings":"AAA;eCM;ICW;aCI;ODK;KDC;CDQ"}],[{"names":["<global>","useKeyedChildListeners","React.useCallback$argument_0","<anonymous>"],"mappings":"AAA;eCO;ICc;aCQ;ODG;KDC;CDQ"}],[{"names":["<global>","useOptionsGetters","React.useCallback$argument_0","React.useEffect$argument_0","<anonymous>"],"mappings":"AAA;eCY;kDCe;GDO;kBEE;GFK;mDCE;GDa;8CCE;GDc;kBEE;GFE;ICG;aEI;OFI;KDC;CDQ"}],[{"names":["<global>","useEventEmitter","React.useEffect$argument_0","React.useCallback$argument_0","removeListener","addListener","<anonymous>","Object.keys.map$argument_0","concat.filter$argument_0","event.get__type","Object.defineProperty$argument_2.get","Object.defineProperties$argument_1.defaultPrevented.get","Object.defineProperties$argument_1.preventDefault.value","React.useMemo$argument_0"],"mappings":"AAA;eCc;kBCK;GDE;mCEI;2BCC;KDY;wBEE;aCK,oCD;KFC;GFM;IEG;gDIkB,eJ;sBKC,2CL;QMG;SNE;UOM;WPE;UOO;WPE;YQU;aRE;YSI;aTE;yBGO,iBH;KFG;uBYI,wBZ;CDC"}],[{"names":["<global>","useSyncState","React.useEffect$argument_0","<anonymous>","React.useCallback$argument_0"],"mappings":"AAA;eCO;kBCK;WCG;KDE;GDC;qCGU,sBH;qCGE;GHU;2CGE;GHQ;yCGE;GHQ;CDa"}],[{"names":["<global>","checkSerializableWithoutCircularReference","checkSerializable"],"mappings":"AAA,kDC;CDqE;eEE;CFE"}],[{"names":["<global>","createNavigatorFactory","<anonymous>"],"mappings":"AAA;eCY;SCM;GDiB;CDC"}],[{"names":["<global>","Screen"],"mappings":"AAA;eCM;CDS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getRouteConfigsFromChildren","React.Children.toArray.reduce$argument_0","configs.forEach$argument_0","useNavigationBuilder","routeConfigs.reduce$argument_0","routeConfigs.map$argument_0","routeNames.reduce$argument_0","React.useCallback$argument_0","React.useMemo$argument_0","React.useEffect$argument_0","useScheduleUpdate$argument_0","<anonymous>","setTimeout$argument_0","useEventEmitter$argument_0","state.routes.find$argument_0","Object.keys.filter$argument_0","routeNames.map$argument_0","Object.keys.filter.map$argument_0","concat.filter$argument_0","listeners.forEach$argument_0"],"mappings":"AAA;oCCwD;ICS;GD0C;oBEG;KFiE;CDI;eIS;ICwC;GDS;sCEE,uBF;IGE;KHkB;IGM;QHG;IIW,iEJ;IIK;yEJC;uEKa;GLqC;kBMuB;GNE;oBO6C;GPK;kBMO;WEU;iBCK;ODI;KFC;GNE;qCIQ;GJM;uDUE;gCCM,iCD;uCEQ,8BF;0BGY;wBDS,yBC;qBCC,qBD;SHE;cKE,iDL;sBME,2BN;GVC;kBMI;GNE;CJkF"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","z","A","exports.isAsyncMode","exports.isContextConsumer","exports.isContextProvider","exports.isElement","exports.isForwardRef","exports.isFragment","exports.isLazy","exports.isMemo","exports.isPortal","exports.isProfiler","exports.isStrictMode","exports.isSuspense","exports.isValidElementType"],"mappings":"AAA;ACW,0QC,8BF;+EGC,kCH,sDI,4BJ,2BK,4BL,mBM,gEN,sBO,4BP,oBQ,4BR,gBS,4BT;eUC,4BV,kBW,4BX,oBY,4BZ,sBa,4Bb,oBc,4Bd;2BeC,wRf"}],[{"names":["<global>","useComponent","React.useEffect$argument_0","React.useRef$argument_0"],"mappings":"AAA;eCE;kBCW;GDE;sBEE;GFW;CDC"}],[{"names":["<global>","useRegisterNavigator","React.useState$argument_0","React.useEffect$argument_0","<anonymous>"],"mappings":"AAA;eCQ;+BCC,cD;kBES;WCK,qBD;GFC;CDG"}],[{"names":["<global>","useDescriptors","React.useMemo$argument_0","routes.reduce$argument_0","clearOptions","setOptions$argument_0","acc.route.key.render"],"mappings":"AAA;eCmE;ICyB;MDQ;IEyB;yBCqC;iBCC;ODQ,CD;MGI;OHmB;GFK;CDC"}],[{"names":["<global>","SceneView","React.useCallback$argument_0","state.routes.find$argument_0","state.routes.map$argument_0","React.useEffect$argument_0","React.useMemo$argument_0"],"mappings":"AAA;eCgC;mCCe,6BD;mCCQ;GDE;4CCE;2CCE,0BD;GDG;ICG;iCEK;0DFC;KDG;kBIM;GJE;kBIG;GJG;yCCE,0BD;IKG;MLQ;CDkC"}],[{"names":["<global>","StaticContainer","React.memo$argument_1"],"mappings":"AAA;ACK;CDE;2CEE;CFmB"}],[{"names":["<global>","useNavigationCache","React.useMemo$argument_0","state.routes.reduce$argument_0","dispatch","Object.keys.reduce$argument_0","acc.name","acc.route.key.setOptions","setOptions$argument_0","acc.route.key.isFocused"],"mappings":"AAA;eCoC;ICe,gED;IEW;yBCU;SDW;UEG;wBCE,kDD;WFE;sBIS;uBCC;cDG,CJ;qBMC;WNU;KFK;CDK"}],[{"names":["<global>","useRouteCache","React.useMemo$argument_0","routes.reduce$argument_0","Object.defineProperty$argument_2.get"],"mappings":"AAA;eCqB;8BCI,4CD;gCEO;QCU;SDQ;GFO;CDG"}],[{"names":["<global>","useNavigationHelpers","React.useMemo$argument_0","dispatch","Object.keys.reduce$argument_0","acc.name","<anonymous>","canGoBack","getParent","dangerouslyGetParent"],"mappings":"AAA;eC+B;uBCS;qBCC;KDQ;MEQ;oBCE,kDD;OFE;UIW,UJ;iBKC;OLY;iBMC,oCN;4BOE,oCP;GDK;CDQ"}],[{"names":["<global>","PrivateValueStore"],"mappings":"AAA;OCsI;CDY"}],[{"names":["<global>","useOnAction","React.useEffect$argument_0","React.useCallback$argument_0"],"mappings":"AAA;eCoC;kBCqB;GDE;IEG;KF4E;kBCqB,6CD;CDM"}],[{"names":["<global>","shouldPreventRemove","nextRoutes.map$argument_0","currentRoutes.filter$argument_0","useOnPreventRemove","React.useEffect$argument_0","<anonymous>"],"mappings":"AAA;mCCoB;uCCO,oBD;YEI,6CF;CDwC;eIE;kBCS;0DCE;ODU;GDE;CJC"}],[{"names":["<global>","useFocusEvents","React.useEffect$argument_0","<anonymous>"],"mappings":"AAA;eCc;ICY;uCCC;ODG,CD;ICK;sCCC;ODG,CD;kBCI;GD2B;CDC"}],[{"names":["<global>","useOnRouteFocus","React.useCallback$argument_0"],"mappings":"AAA;eCoB;ICW;KDW;CDG"}],[{"names":["<global>","useFocusedListenersChildrenAdapter","React.useCallback$argument_0","React.useEffect$argument_0"],"mappings":"AAA;eCgB;ICO;KDc;kBEI,sCF;CDI"}],[{"names":["<global>","useOnGetState","React.useCallback$argument_0","state.routes.map$argument_0","React.useEffect$argument_0"],"mappings":"AAA;eCa;+CCQ;oCCI;KDQ;GDO;kBGE;GHE;CDC"}],[{"names":["<global>","isArrayEqual","a.every$argument_0"],"mappings":"AAA;eCI;0CCC,8BD;CDC"}],[{"names":["<global>","useCurrentRender"],"mappings":"AAA;eCiB;CDU"}],[{"names":["<global>","useNavigation"],"mappings":"AAA;eCU;CDY"}],[{"names":["<global>","useRoute"],"mappings":"AAA;eCU;CDY"}],[{"names":["<global>","useFocusEffect","React.useEffect$argument_0","callback","navigation.addListener$argument_1","<anonymous>"],"mappings":"AAA;eCY;kBCiB;qBCI;KDoC;6DEQ;KFa;2DEE;KFO;WGE;KHO;GDC;CDC"}],[{"names":["<global>","useIsFocused","React.useEffect$argument_0","navigation.addListener$argument_1","<anonymous>"],"mappings":"AAA;eCQ;kBCe;6DCC;wBDC;2DCG;yBDC;WEG;KFG;GDC;CDK"}],[{"names":["<global>","useNavigationState","React.useState$argument_0","React.useEffect$argument_0","navigation.addListener$argument_1"],"mappings":"AAA;eCW;uCCK,qCD;kBEK;GFE;kBEE;wDCC;KDE;GFG;CDG"}],[{"names":["<global>","getStateFromPath","remaining.split.filter.map$argument_0","Object.keys.map$argument_0","concat.sort$argument_0","configs.reduce$argument_0","b.every$argument_0","a.every$argument_0","configs.find$argument_0","config.routeNames.every$argument_0","match.routeNames.map$argument_0","configs.map$argument_0","joinPaths","paths.map$argument_0","matchAgainstConfigs","<anonymous>","config.routeNames.map$argument_0","createNormalizedConfigs","Object.keys.forEach$argument_0","createConfigItem","pattern.split.map$argument_0","findParseConfigForRoute","findInitialRoute","createStateObject","createNestedStateObject","findFocusedRoute","parseQueryParams"],"mappings":"AAA;eC6D;WC8B;ODQ;kCEY;SFQ;UGG;KH6C;8CIG;oBCS,sBD;oBEC,sBF;GJgB;MOM;UCI,wBD,wBC,OD;SPC;6BSK;STM;kBUgB;QVI;CD6D;kBYE;yBCE,mBD;cZE;4BcE;gBCgB,wBD;UCE;cDI;qCEI;oCRC,wBQ;kBDG,wBC;uCDC;WCS;OFO;CdS;gCiBE;0CCoE;ODY;CjBO;yBmBE;eCe;WDY;CnBc;gCqBE;CrBW;yBsBG;CtBsB;0BuBI;CvB4B;gCwBE;CxBuC;yByBE;CzBa;yB0BE;gCRQ;KQI;C1BI"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCE;CDU"}],[{"names":["<global>","isNullOrUndefined","encoderForArrayFormat","<anonymous>","parserForArrayFormat","value.split.map$argument_0","validateArrayFormatSeparator","encode","decode","keysSorter","keysSorter.sort$argument_0","keysSorter.sort.map$argument_0","removeHash","getHash","extract","parseValue","parse","reduce$argument_0","exports.stringify","shouldFilter","keys.map$argument_0","keys.map.filter$argument_0","exports.parseUrl","exports.stringifyUrl","exports.pick","exports.exclude"],"mappings":"AAA;0BCM,8CD;AEE;UCG;IDmB;UCG;IDc;UCI;IDU;UCG;IDc;CFE;AIE;UDK;ICe;UDG;ICe;UDI;+FEI,6BF;ICE;UDG;ICO;CJE;AME;CNI;AOE;CPM;AQE;CRM;ASE;SCO,+BD;QEC,iBF;CTI;AYE;CZO;AaE;CbQ;AcE;CdQ;AeE;CfQ;AgBE;uGCuD;EDU;ChBC;oBkBK;sBCc;EDG;iBEkB;EFkB,SG,iBH;ClBC;mBsBE;CtBc;uBuBE;CvBsB;ewBE;CxBW;kByBE;iDtBC,4BsB,GtB,mCsB;CzBG"}],[{"names":["<global>","module.exports","encodeURIComponent.replace$argument_1"],"mappings":"AAA;iBCC,mDC,qDD,CD"}],[{"names":["<global>","decodeComponents","decode","customDecodeURIComponent","module.exports"],"mappings":"AAA;ACK;CDmB;AEE;CFc;AGE;CHmC;iBIE;CJc"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCE;CDmB"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCC;CDe"}],[{"names":["<global>","checkLegacyPathConfig","Object.keys.some$argument_0"],"mappings":"AAA;eCO;MCQ,wDD;CDoB"}],[{"names":["<global>","getActiveRoute","getPathFromState","Object.entries.map$argument_0","<anonymous>","pattern.split.map$argument_0","fromEntries","entries.reduce$argument_0","getParamName","joinPaths","paths.map$argument_0","createConfigItem","createNormalizedConfigs"],"mappings":"AAA;uBCqB;CDW;eE+B;2CCgD;WDG;oBEc,wBF;qBEE;aFQ;aGkC;SH6B;CFmC;oBMG;iBCC;GDO,qBN;qBQE;8CRC;kBSE;yBCE,mBD;cTE;yBWE;CX4C;gCYE;gCTM;KSI;GZC"}],[{"names":["<global>","getActionFromState","createNormalizedConfigItem","createNormalizedConfigs","Object.entries.reduce$argument_0"],"mappings":"AAA;eCyB;CDqG;mCEE;QFS;gCGE;6DCC;GDG,KH"}],[{"names":["<global>","getFocusedRouteNameFromRoute"],"mappings":"AAA;eCO;CD2B"}],[{"names":["<global>","NavigationContainer","React.useImperativeHandle$argument_1","React.useMemo$argument_0","React.useEffect$argument_0"],"mappings":"AAA;6CCqC;iCC0B,0BD;uCEE,4BF;kBGM;GHE;kBGE;GHI;CDqB"}],[{"names":["<global>","ThemeProvider"],"mappings":"AAA;eCS;CDI"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useThenable","promise.then$argument_0","React.useEffect$argument_0","resolve","<anonymous>"],"mappings":"AAA;eCE;eCM;GDE;kBEK;oBCG;KDU;WEM;KFE;GFC;CDG"}],[{"names":["<global>","useLinking","<anonymous>","Promise$argument_0","callback","React.useEffect$argument_0","React.useCallback$argument_0","url.then$argument_0","thenable.then","thenable._catch","listener","state.routes.some$argument_0"],"mappings":"AAA;eCc;oBCM;+BCG;kCDG;QDE;gBCC;uBEC,2CF;KDc;kBIK;WHkB;KGE;GJC;kBIY;GJO;4CKE;wBCO;SDQ;MEW;OFE;MGC;OHE;GLI;kBIE;qBKC;8BCiB,8CD;KL4B;GJG;CDK"}],[{"names":["<global>","extractPathFromURL","host.split.map$argument_0"],"mappings":"AAA;eCE;aCW,uDD;CDY"}],[{"names":["<global>","module.exports"],"mappings":"AAA;iBCE;CDU"}],[{"names":["<global>","useDocumentTitle"],"mappings":"AAA,eC;CDE"}],[{"names":["<global>","useBackButton","React.useEffect$argument_0","BackHandler.addEventListener$argument_1","<anonymous>"],"mappings":"AAA;eCI;kBCG;MCG;ODc;WEG,2BF;GDC;CDC"}],[{"names":["<global>","getScrollableNode","useScrollToTop","React.useEffect$argument_0","current.addListener$argument_1","requestAnimationFrame$argument_0"],"mappings":"AAA;ACgB;CD0B;eEE;kBCM;MCkB;8BCY;SDc;ODC;GDI;CFC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useTheme"],"mappings":"AAA;eCG;CDI"}],[{"names":["<global>","Link","onPress"],"mappings":"AAA;eCsB;kBCG;GDQ;CDU"}],[{"names":["<global>","useLinkProps","onPress"],"mappings":"AAA;eCmB;kBCI;GDuC;CDO"}],[{"names":["<global>","useLinkTo","React.useCallback$argument_0"],"mappings":"AAA;eCQ;ICK;KDoC;CDK"}],[{"names":["<global>","getRootStateForNavigate","useLinkBuilder","React.useCallback$argument_0"],"mappings":"AAA;gCCmB;CDqB;eEM;ICK;KDwB;CFK"}],[{"names":["<global>","ServerContainer","React.useEffect$argument_0","value.getCurrentOptions"],"mappings":"AAA;gCCgB;kBCI;GDI;MEM;OFE;CDsB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","forHorizontalIOS","forVerticalIOS","forModalPresentationIOS","forFadeFromBottomAndroid","forRevealFromBottomAndroid","forScaleFromCenterAndroid","forNoAnimation"],"mappings":"AAA;OCa;CDkD;OEK;CFsB;OGK;CH4E;OIK;CJ8B;OKK;CLsD;OMK;CN4C;OOE;CPE"}],[{"names":["<global>","isIphoneX","ifIphoneX","getStatusBarHeight","getBottomSpace"],"mappings":"AAA;OCE;CDY;OEE;CFK;OGE;CHM;OIE;CJE"}],[{"names":["<global>","conditional"],"mappings":"AAA;eCW;CDqB"}],[{"names":["<global>","forUIKit","forFade","forSlideLeft","forSlideRight","forSlideUp","forNoAnimation"],"mappings":"AAA;OCW;CD6F;OEK;CFmC;OGK;CHmC;OIK;CJmC;OKK;CLiC;OME;CNE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","StackNavigator","<anonymous>","React.useEffect$argument_0","requestAnimationFrame$argument_0"],"mappings":"AAA;ACyB;UCyB;YDG;IEQ;2CDC;8BEK;SFa;OCC,CF;CDY"}],[{"names":["<global>","isArrayEqual","a.every$argument_0","StackView","getDerivedStateFromProps","props.state.routes.map$argument_0","state.previousRoutes.map$argument_0","state.routes.reduce$argument_0","props.state.routes.reduce$argument_0","state.routes.map$argument_0","isAnimationEnabled","getAnimationTypeForReplace","previousRoutes.some$argument_0","closingRouteKeys.filter$argument_0","replacingRouteKeys.filter$argument_0","routes.some$argument_0","openingRouteKeys.filter$argument_0","state.routes.filter$argument_0","routes.reduce$argument_0","getGesturesEnabled","getPreviousRoute","routes.findIndex$argument_0","renderScene","renderHeader","handleOpenRoute","closingRouteKeys.some$argument_0","replacingRouteKeys.every$argument_0","state.routes.some$argument_0","setState$argument_0","state.openingRouteKeys.filter$argument_0","state.closingRouteKeys.filter$argument_0","handleCloseRoute","handleTransitionStart","handleTransitionEnd","handleGestureStart","handleGestureEnd","handleGestureCancel","render","SafeAreaConsumer.props.children","KeyboardManager.props.children","HeaderShownContext.Consumer.props.children"],"mappings":"AAA;qBCuD;mCCC,8BD,CD;eGE;ECC;iCCQ,YD;mCEC,YF;8DGU;SHK;UIQ;WJG;kCKI,kCL;+BMmC;KNI;uCOE;KPI;+BQS,qCR;YSa,qCT;YUG,qCV;2BWG,yCX;cYI,yCZ;gBYa,qCZ;gBSY,yCT;8BWW,yCX;YYY,yCZ;YUG,yCV;+BaiB;mBbG;0DcW;KdK;GDW;+BgBY;GhBgB;6BiBE;MHG;8CGG;mCCG,0BD;GjBG;wBmBE;GnBS;yBoBE;GpBE;4BqBE;4BCK,0BD;+BEC,0BF;yBGE,0BH;oBIM;cXG,gDW;UCI,0BD;UEG,0BF;QJG;GrBE;6B4BE;0BJG,0BI;oBHW;oCXC,0BW;UCE,0BD;UEG,0BF;QGE;G5BE;kC6BE;M7BQ;gC8BE;M9BQ;+B+BE;G/BK;6BgCE;GhCK;gCiCE;GjCK;EkCE;eC0B;mBCE;uBCE;uBDyB;mBDE;eDE;GlCM;CHC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","SafeAreaProvider","React.useCallback$argument_0","useParentSafeAreaInsets","useParentSafeAreaFrame","useSafeAreaInsets","useSafeAreaFrame","withSafeAreaInsets","React.forwardRef$argument_0","SafeAreaConsumer.props.children","useSafeArea"],"mappings":"AAA;OCuB;ICsB;KDyB;CDkB;AGM;CHE;AIE;CJE;OKE;CLQ;OME;CNQ;OOE;0BCG;OCE,qED;GDE;CPC;OUK;CVE"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","PanGestureHandler"],"mappings":"AAA;OCO;CDQ"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","gestureHandlerRootHOC","Wrapper"],"mappings":"AAA;eCK;ECI;GDM;CDS"}],[{"names":["<global>","getStatics","hoistNonReactStatics"],"mappings":"AAA;ACiD;CDQ;AEQ;CFmC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","ForceTouchFallback","ForceTouchFallback#componentDidMount","ForceTouchFallback#render","validatePanGestureHandlerProps","transformPanGestureHandlerProps","managePanProps"],"mappings":"AAA;ACwJ;ECE;GDI;EEC;GFE;CDC;AIgE;CJwD;AKE;CLsG;AME;CNK"}],[{"names":["<global>","findNodeHandle","<anonymous>","UIManager.setJSResponder","UIManager.clearJSResponder","isConfigParam","filterConfig","validProps.forEach$argument_0","transformIntoHandlerTags","handlerIDs.map$argument_0","handlerIDs.map.filter$argument_0","hasUnresolvedRefs","extract","refs.some$argument_0","createHandler","Handler","Handler#constructor","Handler#componentDidMount","setImmediate$argument_0","Handler#componentDidUpdate","Handler#componentWillUnmount","Handler#onGestureHandlerEvent","Handler#onGestureHandlerStateChange","Handler#refHandler","Handler#createGestureHandler","Handler#attachGestureHandler","Handler#updateGestureHandler","Handler#update","Handler#setNativeProps","Handler#render"],"mappings":"AAA;ACoB;CDK;sCEmC;GFE;0CEC;GFE;2BGE;CHG;6BIC;CJG;AKK;CLU;AME;qBCM;GDa;CNE;AQE;WCO,0CD;cEC,uBF;MCK;wEDC;YEE,sCF;CRC;AWK;kBCI;qBCI,8BD;GDC;CXE;ec4B;ECU;ICU;KDW;IEE;2CCS;SDG;KFY;IIE;KJM;IKE;KLW;oCME;KNM;0COG;KPe;yBQE;KRa;mCSE;KTU;mCUE;KVgB;mCWE;KXM;IYE;KZS;IaE;KbQ;IcE;KdgG;GDC;CdE"}],[{"names":["<global>","areEqual","eq"],"mappings":"AAA;ACqB;CDS;AEE;CFwF"}],[{"names":["<global>","reactNativeGestureHandlerModuleWasNotFoundMakeSureYouReRunningYourAppOnTheNativePlatformAndYourCodeIsLinkedProperlyCdIosPodInstallCdForInstallationInstructionsPleaseReferToHttpsDocsSwmansionComReactNativeGestureHandlerDocsInstallation.split.map$argument_0"],"mappings":"AAA;WCS,qBD"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","createNativeWrapper","React.forwardRef$argument_0","Object.keys.reduce$argument_0","useImperativeHandle$argument_1"],"mappings":"AAA;eCsB;ICO;MCG;ODQ;MEQ;OFS;GDW;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","BaseButton","BaseButton#constructor","BaseButton#handleEvent","BaseButton#onHandlerStateChange","BaseButton#onGestureEvent","BaseButton#render","RectButton","RectButton#constructor","RectButton#onActiveStateChange","RectButton#render","BorderlessButton","BorderlessButton#constructor","BorderlessButton#onActiveStateChange","BorderlessButton#render"],"mappings":"AAA;OCmD;ECG;GDG;wBEE;GFoB;iCGM;GHK;2BIE;GJO;EKE;GLW;CDC;OOc;ECQ;GDG;gCEE;GFM;EGE;GH2B;CPC;OWE;ECQ;GDG;gCEE;GFM;EGE;GHW;CXC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","React.forwardRef$argument_0"],"mappings":"AAA;ECO,yDD"}],[{"names":["<global>","GenericTouchable","handlePressIn","setTimeout$argument_0","handleMoveOutside","handleGoToUndetermined","componentDidMount","reset","moveToState","onGestureEvent","onHandlerStateChange","onLongPressDetected","componentWillUnmount","onMoveIn","onMoveOut","render"],"mappings":"AAA;eCkE;ECyB;uCCE;ODG;GDS;EGG;mBDI;SCG;GHI;EIG;wCFG;OEM;GJO;EKE;GLE;EME;GNS;EOG;GPuB;mBQE;GRW;yBSE;GT2B;wBUE;GVI;EWE;GXG;EYE;GZK;EaE;GbO;EcE;GdgC;CDC"}],[{"names":["<global>","TouchableOpacity","getChildStyleOpacityWithDefault","setOpacityTo","onStateChange","render"],"mappings":"AAA;eCiB;oCCS;GDG;iBEI;GFO;kBGE;GHS;EIE;GJe;CDC"}],[{"names":["<global>","TouchableHighlight","constructor","showUnderlay","hasPressHandler","hideUnderlay","renderChildren","onStateChange","render"],"mappings":"AAA;eC0B;ECW;GDM;iBEG;GFa;oBGE;0BHI;iBIE;GJM;EKE;GLW;kBME;GNS;EOE;GPW;CDC"}],[{"names":["<global>","React.forwardRef$argument_0","RNFlatList.props.renderScrollComponent"],"mappings":"AAA;EC0D;6BCI,gDD;GDE"}],[{"names":["<global>","Swipeable","constructor","UNSAFE_componentWillUpdate","updateAnimatedEvent","onTapHandlerStateChange","onHandlerStateChange","handleRelease","animateRow","Animated.spring.start$argument_0","onRowLayout","currentOffset","close","openLeft","openRight","render","View.props.onLayout"],"mappings":"AAA;eC8F;ECU;GDiB;EEE;GFY;gCGW;GH2D;oCIE;GJM;iCKE;GLM;0BME;GNoC;uBOE;aCuB;KDc;GPY;wBSE;GTE;0BUE;GVU;UWE;GXE;aYE;GZG;caE;GbK;EcE;oBCa;8DDC;oBCc;gEDC;GdkC;CDC"}],[{"names":["<global>","DrawerLayout","constructor","UNSAFE_componentWillUpdate","updateAnimatedEvent","gestureOptions.listener","handleContainerLayout","emitStateChanged","openingHandlerStateChange","onTapHandlerStateChange","handleRelease","updateShowing","animateDrawer","Animated.spring.start$argument_0","openDrawer","closeDrawer","renderOverlay","renderDrawer","setPanGestureRef","render"],"mappings":"AAA;eC4F;ECgB;GDe;EEE;GFY;gCGgB;gCC+F;ODK;GHO;kCKE;GLE;6BME;GNK;sCOE;GPc;oCQE;GRU;0BSE;GTkC;0BUE;GV0B;0BWE;aCuC;KDS;GXC;eaE;GbU;gBcE;GdM;0BeE;GfsB;yBgBE;GhBqF;6BiBE;GjBM;EkBE;GlByC;CDC"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getHeaderHeights","routes.reduce$argument_0","getDistanceFromOptions","getProgressFromGesture","CardStack","getDerivedStateFromProps","props.routes.reduce$argument_0","props.routes.map$argument_0","scene.__memo.every$argument_0","constructor","handleLayout","setState$argument_0","handleHeaderLayout","getFocusedRoute","getPreviousScene","scenes.find$argument_0","render","state.scenes.slice.some$argument_0","routes.map$argument_0"],"mappings":"AAA;yBC8F;+CCQ;GDsB;CDC;+BGE;CHY;+BIE;CJ4B;eKE;ECC;wDCQ;KDc;+BEI;6BCkE;WDG;OFM;GDY;EKE;GLkB;yBME;kBCK;KDgB;GNC;+BQE;kBDO;KCa;GRC;4BSE;GTI;6BUE;QCQ,gDD;GVO;EYE;2CCuE;WDU;sBE4C;WFsK;GZK;CLC"}],[{"names":["<global>","enableScreens","screensEnabled","ScreensNativeModules.get__NativeScreen","ScreensNativeModules.get__NativeScreenContainer","ScreensNativeModules.get__NativeScreenStack","ScreensNativeModules.get__NativeScreenStackHeaderConfig","ScreensNativeModules.get__NativeScreenStackHeaderSubview","Screen","Screen#setNativeProps","Screen#setRef","Screen#render","ScreenContainer","ScreenContainer#render","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","module.exports.get__NativeScreen","module.exports.get__NativeScreenContainer","module.exports.get__ScreenStack","module.exports.get__ScreenStackHeaderConfig","module.exports.get__ScreenStackHeaderSubview"],"mappings":"AAA;AC2B;CDO;AEK;CFE;EGc;GHI;EIE;GJK;EKE;GLI;EME;GNK;EOE;GPK;AQG;ECG;GDE;WEE;GFG;EGE;GHmC;CRC;AYE;ECC;GDQ;CZC;yCca;CdM;mCeE;CfQ;kCgBE;ChBQ;oCiBE;CjBQ;EkBqB;GlBE;EmBE;GnBE;EoBE;GpBE;EqBC;GrBE;EsBC;GtBE"}],[{"names":["<global>","WebScreen","WebScreen#render","MaybeScreenContainer","MaybeScreen"],"mappings":"AAA;ACc;ECM;GDW;CDC;oCGO;CHe;2BIE;CJ4B"}],[{"names":["<global>","warnIfHeaderStylesDefined","Object.keys.forEach$argument_0","getDefaultHeaderHeight","HeaderSegment","handleTitleLayout","setTitleLayout$argument_0","handleLeftLabelLayout","memoize$argument_0","<anonymous>"],"mappings":"AAA;kCCmC;8BCC;GDY;CDC;sCGE;CHqB;eIE;4BCW;mBCG;KDU;GDC;gCGE;GHY;IIG;QJqB;QKgB,sEL;CJ0O"}],[{"names":["<global>","HeaderBackButton","handleLabelLayout","shouldTruncateLabel","renderBackImage","renderLabel","handlePress"],"mappings":"AAA;eCiB;4BCsC;GDI;8BEE;GFQ;0BGE;GHgB;sBIE;GJ0D;sBKE,+CL;CD2B"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","MaskedView"],"mappings":"AAA;eCyB;CDM"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","MaskedView","render"],"mappings":"AAA;eCsD;ECG;GDuB;CDC"}],[{"names":["<global>","TouchableItem","handleActiveStateChange","render"],"mappings":"AAA;eCY;oCCS;GDa;EEE;GFY;CDC"}],null,[{"names":["<global>"],"mappings":"AAA"}],null,[{"names":["<global>","HeaderBackground"],"mappings":"AAA;eCgB;CDiB"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","memoize","<anonymous>"],"mappings":"AAA,eC;SCM;GDyB;CDC"}],[{"names":["<global>","CardContainer","handleOpen","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","React.useEffect$argument_0","<anonymous>"],"mappings":"AAA;ACyE;qBC6C;GDK;sBEE;GFK;6BGE;GHK;gCIE;GJK;2BKE;GLI;2BME;GNkB;kBOe;MCG;ODE;WCG;KDK;GPC;CDwE"}],[{"names":["<global>","hasOpacityStyle","Card","defaultProps.overlay","componentDidMount","componentDidUpdate","componentWillUnmount","animate","animation.start$argument_0","getAnimateToValue","setPointerEventsEnabled","handleStartInteraction","handleEndInteraction","handleGestureStateChange","setTimeout$argument_0","memoize$argument_0","gestureActivationCriteria","render"],"mappings":"AAA;wBCiF;CDO;eEE;aCM;cDO;EEG;GFG;EGE;GH6B;EIE;GJG;oBKuB;aCuC;KDiB;GLC;8BOE;GPc;oCQE;GRI;mCSE;GTI;iCUE;GVK;qCWE;oDCkE;WDM;GXO;IaI;Qb2B;IaK;MbyB;EcG;Gd2C;EeI;GfsI;CFC"}],[{"names":["<global>","Object.keys.forEach$argument_0","Color","Color.prototype.toString","Color.prototype.toJSON","Color.prototype.string","Color.prototype.percentString","Color.prototype.array","Color.prototype.object","Color.prototype.unitArray","Color.prototype.unitObject","Color.prototype.round","Color.prototype.alpha","getset$argument_2","Color.prototype.keyword","Color.prototype.hex","Color.prototype.rgbNumber","Color.prototype.luminosity","Color.prototype.contrast","Color.prototype.level","Color.prototype.isDark","Color.prototype.isLight","Color.prototype.negate","Color.prototype.lighten","Color.prototype.darken","Color.prototype.saturate","Color.prototype.desaturate","Color.prototype.whiten","Color.prototype.blacken","Color.prototype.grayscale","Color.prototype.fade","Color.prototype.opaquer","Color.prototype.rotate","Color.prototype.mix","Color.prototype.model","Color.model","roundTo","roundToPlace","<anonymous>","getset","model.forEach$argument_0","maxfn","assertArray","zeroArray"],"mappings":"AAA;6BCmB;CDE;AEI;CF2F;WGG;EHE;SIE;EJE;SKE;ELK;gBME;ENI;QOE;EPE;SQE;ERc;YSE;ETW;aUE;EVW;QWE;EXG;QYE;EZM;qDaO,oDb;Uc2B;EdM;MeE;EfM;YgBE;EhBG;aiBE;EjBW;WkBE;ElBU;QmBE;EnBO;SoBE;EpBK;UqBE;ErBE;SsBE;EtBM;UuBE;EvBI;SwBE;ExBI;WyBE;EzBI;a0BE;E1BI;S2BE;E3BI;U4BE;E5BI;Y6BE;E7BK;O8BE;E9BE;U+BE;E/BE;SgCE;EhCO;MiCE;EjCqB;6BCI;0BiCQ;EjCW;gBkCG;ElCK;CDC;AoCE;CpCE;AqCE;QCC;EDE;CrCC;AuCE;eCG;EDE;QDI;ECmB;CvCC;AyCE;QHC;EGE;CzCC;A0CE;C1CE;A2CE;C3CQ"}],[{"names":["<global>","cs.get","cs.get.rgb","cs.get.hsl","cs.get.hwb","cs.to.hex","cs.to.rgb","cs.to.rgb.percent","cs.to.hsl","cs.to.hwb","cs.to.keyword","clamp","hexDouble"],"mappings":"AAA;SCkB;CDwB;aEE;CFgF;aGE;CHmB;aIE;CJkB;YKE;CLY;YME;CNM;oBOE;CPU;YQE;CRK;YSI;CTS;gBUE;CVE;AWG;CXE;AYE;CZG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","swizzle","swizzle.wrap","<anonymous>"],"mappings":"AAA;+BCO;CDe;eEE;QCC;EDE;CFC"}],[{"names":["<global>","isArrayish"],"mappings":"AAA,iBC;CDQ"}],[{"names":["<global>","wrapRaw","wrappedFn","wrapRounded","models.forEach$argument_0","routeModels.forEach$argument_0"],"mappings":"AAA;ACO;iBCC;EDU;CDQ;AGE;iBDC;ECqB;CHQ;eIE;qBCS;EDK;CJC"}],[{"names":["<global>","convert.rgb.hsl","convert.rgb.hsv","diffc","convert.rgb.hwb","convert.rgb.cmyk","comparativeDistance","convert.rgb.keyword","convert.keyword.rgb","convert.rgb.xyz","convert.rgb.lab","convert.hsl.rgb","convert.hsl.hsv","convert.hsv.rgb","convert.hsv.hsl","convert.hwb.rgb","convert.cmyk.rgb","convert.xyz.rgb","convert.xyz.lab","convert.lab.xyz","convert.lab.lch","convert.lch.lab","convert.rgb.ansi16","convert.hsv.ansi16","convert.rgb.ansi256","convert.ansi16.rgb","convert.ansi256.rgb","convert.rgb.hex","convert.hex.rgb","colorString.split.map$argument_0","convert.rgb.hcg","convert.hsl.hcg","convert.hsv.hcg","convert.hcg.rgb","convert.hcg.hsv","convert.hcg.hsl","convert.hcg.hwb","convert.hwb.hcg","convert.apple.rgb","convert.rgb.apple","convert.gray.rgb","convert.gray.hsv","convert.gray.hwb","convert.gray.cmyk","convert.gray.lab","convert.gray.hex","convert.rgb.gray"],"mappings":"AAA;kBCwD;CDsC;kBEE;aCY;EDE;CF6B;kBIE;CJU;mBKE;CLe;AMK;CNM;sBOE;CPyB;sBQE;CRE;kBSE;CTe;kBUE;CVsB;kBWE;CX+C;kBYE;CZgB;kBaE;Cb0B;kBcE;CdiB;kBeG;CfyC;mBgBE;ChBc;kBiBE;CjB8B;kBkBE;ClBqB;kBmBE;CnBwB;kBoBE;CpBkB;kBqBE;CrBa;qBsBE;CtBsB;qBuBE;CvBI;sBwBE;CxByB;qByBE;CzBoB;sB0BE;C1Be;kB2BE;C3BO;kB4BE;0CCS;GDE;C5BS;kB8BE;C9BgC;kB+BE;C/BiB;kBgCE;ChCY;kBiCE;CjCqC;kBkCE;ClCY;kBmCE;CnCe;kBoCE;CpCK;kBqCE;CrCY;oBsCE;CtCE;oBuCE;CvCE;mBwCE;CxCE;sCyCE;CzCE;mB0CE;C1CE;oB2CE;C3CE;mB4CE;C5CE;mB6CE;C7CM;mB8CE;C9CG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","buildGraph","deriveBFS","link","<anonymous>","wrapConversion","module.exports"],"mappings":"AAA;ACa;CDe;AEG;CFuB;AGE;QCC;EDE;CHC;AKE;CLa;iBME;CNkB"}],[{"names":["<global>","CardSheet","React.useEffect$argument_0"],"mappings":"AAA;6CCa;kBCM;GDU;CDS"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getDistanceForDirection"],"mappings":"AAA;eCG;CDc"}],[{"names":["<global>","getInvertedMultiplier"],"mappings":"AAA;eCG;CDa"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","KeyboardManager","componentWillUnmount","clearKeyboardTimeout","handlePageChangeStart","handlePageChangeConfirm","handlePageChangeCancel","setTimeout$argument_0","render"],"mappings":"AAA;eCc;ECC;GDE;iCEQ;GFK;kCGE;GHoB;oCIE;GJwB;mCKE;0CCmB;SDG;GLM;EOE;GPM;CDC"}],[{"names":["<global>","HeaderContainer","scenes.slice.map$argument_0","<anonymous>"],"mappings":"AAA;eC4C;4BCiB;sBCiE;uBDO;ODqB;CDG"}],[{"names":["<global>","Header","debounce$argument_0","<anonymous>"],"mappings":"AAA;0BCQ;aCqC;KDO;YEc,4DF;CDO"}],[{"names":["<global>","HeaderTitle"],"mappings":"AAA;eCiB;CDgB"}],[{"names":["<global>","debounce","<anonymous>","setTimeout$argument_0"],"mappings":"AAA,eC;SCM;2BCK;ODE;GDE;CDC"}],[{"names":["<global>","SafeAreaProviderCompat","SafeAreaConsumer.props.children"],"mappings":"AAA;eC6B;OCG;ODa;CDG"}],[{"names":["<global>","useCardAnimation"],"mappings":"AAA;eCG;CDU"}],[{"names":["<global>","useFloatingHeaderHeight"],"mappings":"AAA;eCG;CDU"}],[{"names":["<global>","useGestureHandlerRef"],"mappings":"AAA;eCG;CDU"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","BottomTabNavigator"],"mappings":"AAA;ACsB;CD8B"}],[{"names":["<global>","SceneContent","BottomTabView","getDerivedStateFromProps","constructor","renderTabBar","<anonymous>","handleTabBarHeightChange","setState$argument_0","render","routes.map$argument_0"],"mappings":"AAA;AC0C;CDoB;eEE;ECK;GDS;EEE;GFqB;yBGE;eCE,yDD;GHY;qCKE;kBCC;KDM;GLC;EOE;wBCqB;aD+B;GPU;CFC"}],[{"names":["<global>","SafeAreaProviderCompat","SafeAreaConsumer.props.children"],"mappings":"AAA;eC6B;OCG;ODa;CDG"}],[{"names":["<global>","ResourceSavingScene"],"mappings":"AAA;eCkB;CD+D"}],[{"names":["<global>","shouldUseHorizontalLabels","getPaddingBottom","getTabBarHeight","BottomTabBar","React.useEffect$argument_0","React.useState$argument_0","animation.start$argument_0","handleLayout","setLayout$argument_0","routes.map$argument_0","onPress","onLongPress"],"mappings":"AAA;kCC+C;CDkC;yBEE;sEFC;+BGE;CH8B;eIE;kBCuC;GDG;IEK,kDF;kBCG;eEc;OFI;GDgB;uBIO;cCK;KDS;GJC;oBMqE;0BCI;WDa;8BEE;WFK;SNiD;CJI"}],[{"names":["<global>","BottomTabBarItem","<anonymous>","Link.props.onPress","renderLabel","renderIcon"],"mappings":"AAA;eC0H;WCQ;mBCiB;WDQ;GDiB;sBG4B;GH6B;qBIE;GJsB;CD+B"}],[{"names":["<global>","TabBarIcon"],"mappings":"AAA;eC4B;CD8C"}],[{"names":["<global>","Badge","React.useState$argument_0","React.useEffect$argument_0","Animated.timing.start$argument_0"],"mappings":"AAA;eCwB;mCCO,yCD;kBEK;aCS;KDI;GFC;CDgD"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useWindowDimensions","React.useState$argument_0","React.useEffect$argument_0","onChange","setDimensions$argument_0","<anonymous>"],"mappings":"AAA;eCK;qDCC;GDK;kBEE;qBCC;oBCG;ODM;KDC;WGQ,wDH;GFC;CDG"}],[{"names":["<global>","useIsKeyboardShown","React.useEffect$argument_0","handleKeyboardShow","handleKeyboardHide","<anonymous>"],"mappings":"AAA;eCG;kBCG;+BCC,8BD;+BEC,+BF;WGU;KHQ;GDC;CDG"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","useFloatingBottomTabBarHeight"],"mappings":"AAA;eCG;CDU"}],[{"names":["<global>","navigateTo","redirectTo","navigateBack","switchTab","reLaunch","navigate","Promise$argument_0","isTabPage","getCurrentRoute","routes.forEach$argument_0","getRouteEventChannel"],"mappings":"AAA;OCQ;CDE;OEC;CFE;OGC;CHE;OIC;CJE;OKC;CLE;OMC;uBCgD;KDkB;CNC;OQC;CRY;OSC;uBCM;SDU;CTG;oCWC;CXE"}],[{"names":["<global>","isUrl","isFunction","isEmptyObject","successHandler","<anonymous>","errorHandler","getTabItemConfig","getTabConfig","setTabConfig","setTabInitRoute","getTabInitRoute","getTabVisible","getDefalutTabItem","getTabBarPages","tabBar.list.forEach$argument_0","handleUrl"],"mappings":"AAA;OCG;CDoB;OEC;CFE;OGE;CHU;OIC;WCC;KDI;CJC;OMC;WDC;KCI;CNC;OOC;CPI;OQC;CRG;OSC;CTI;OUC;CVE;OWC;CXE;OYC;CZE;OaC;CbK;OcE;wECM;KDG;CdE;OgBE;ChBQ"}],[{"names":["<global>","TabBar","constructor","componentDidMount","Keyboard.addListener$argument_1","componentWillUnmount","Keyboard.removeListener$argument_1","UNSAFE_componentWillReceiveProps","handleKeyboardShow","handleKeyboardHide","setTabBarHidden","Animated.timing.start$argument_0","isLandscape","getDefaultTabBarHeight","buildLink","keys.forEach$argument_0","handleLayout","getTabBarStyle","getTabIconSource","renderContent","React.createElement$argument_1.onLayout","state.routes.map$argument_0","onPress","onLongPress","React.createElement$argument_1.onPress","render"],"mappings":"AAA;OCiC;ICC;KDgB;IEC;yDCI,+BD;yDCC,+BD;wDCG,+BD;wDCC,+BD;KFG;IIC;4DCI,+BD;4DCC,+BD;2DCG,+BD;2DCC,+BD;KJG;IMC;KNS;IOC;KPM;IQC;KRM;ISC;qBCmB;aDM;KTE;IWC;KXG;IYC;KZM;IaE;qBCG;SDE;KbG;IeC;KfW;IgBC;KhBY;IiBC;KjBO;IkBE;+FCI,uBD,qBE;4BCc;aDQ;gCEC;aFK;oFGO;qBHM;SFQ;KlBC;IwBE;KxBqD;CDC"}],[{"names":["<global>","getInitSafeAreaInsets","getStatusBarHeight","getBottomSpace","isIphoneX","ifIphoneX"],"mappings":"AAA;OCC;CDQ;AEC;CFM;AGC;CHE;AIC;CJU;AKC;CLK"}],[{"names":["<global>","TabBarItem","render"],"mappings":"AAA;eC0D;ICE;KDkB;CDC"}],[{"names":["<global>","<anonymous>","Badge","constructor","UNSAFE_componentWillReceiveProps","Animated.spring.start$argument_0","render"],"mappings":"AAA,sCC;CDU;eEY;ICC;KDO;IEC;yBCS;iBDM;KFa;IIE;KJ+B;CFC"}],[{"names":["<global>","HeadTitle","render"],"mappings":"AAA;eCK;ICE;KDe;CDC"}],[{"names":["<global>","LoadingView","LoadingView#constructor","LoadingView#componentDidMount","LoadingView#startAnimation","Animated.timing.start$argument_0","LoadingView#render"],"mappings":"AAA;ACS;ICC;KDK;IEC;KFE;IGC;iBCO,2BD;KHC;IKE;KLa;CDC"}],[{"names":["<global>","BackButton","render"],"mappings":"AAA;eCK;ICE;KDM;CDC"}],[{"names":["<global>","PageProvider","PageProvider#constructor","PageProvider#componentDidMount","props.navigation.addListener$argument_1","PageProvider#componentWillUnmount","PageProvider#handleConfig","PageProvider#isTabBarPage","PageProvider#render"],"mappings":"AAA;OCK;ICC;KDO;IEC;4ECE;SDW;KFC;IIC;KJI;IKC;KLiD;IMC;KNI;IOE;KPE;CDC"}],[{"names":["<global>","setTabBarItemConfig","showTabBar","hideTabBar","showTabBarRedDot","hideTabBarRedDot","setTabBarBadge","removeTabBarBadge","setTabBarItem","setTabBarStyle"],"mappings":"AAA;ACU;CDK;OEC;CFiB;OGC;CHiB;OIC;CJgB;OKC;CLgB;OMC;CNgB;OOC;CPgB;OQC;CRqB;OSC;CTiB"}],[{"names":["<global>","setNavigateConfig","setNavigationBarTitle","setNavigationBarColor","showNavigationBarLoading","hideNavigationBarLoading"],"mappings":"AAA;ACE;CDO;OEC;CFqB;OGC;CH4B;OIC;CJY;OKC;CLY"}],[{"names":["<global>","incrementId","<anonymous>","isFunction","successHandler","errorHandler"],"mappings":"AAA,2BC;WCE,uBD;CDC;OGC;CHE;OIG;WFC;KEI;CJC;OKC;WHC;KGI;CLC"}],[{"names":["<global>","isClassComponent","createReactNativeApp","NewAppComponent","Entry","Entry#render","Object.create$argument_1.onLaunch.value","Object.create$argument_1.onShow.value","Object.create$argument_1.onHide.value","getApp"],"mappings":"AAA;OCK;CDK;OEE;4BCU;eCC;YCC;aDS;SDC;KDC;YIa;aJK;YKK;aLK;YMK;aNK;CFK;OSC;CTE"}],[{"names":["<global>","Provider","Provider#render"],"mappings":"AAA;eCE;ICC;KDE;CDC"}],[{"names":["<global>","_getRequireWildcardCache","_interopRequireWildcard","<anonymous>","Provider","render"],"mappings":"AAA;AC2B,+UD;AEE,2yBF;4BGE;ECK;GDG;WEI;KFM;CHG"}],[{"names":["<global>","_createSuper","_createSuperInternal"],"mappings":"AAA;ACM;SCE;GDY;CDC"}],[{"names":["<global>","LocaleProvider","_react._default.useMemo$argument_0"],"mappings":"AAA;qBCiB;yCCC;GDM;CDK"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","_getRequireWildcardCache","_interopRequireWildcard","<anonymous>","Portal","render","_react._default.createElement$argument_2"],"mappings":"AAA;ACyB,+UD;AEE,2yBF;0BGwB;ECK;GDG;WEI;oGCE;ODI;KFC;CHG"}],[{"names":["<global>","<anonymous>","PortalConsumer","componentDidMount","componentDidUpdate","componentWillUnmount","render"],"mappings":"AAA;kCCmB;ECK;GDG;WEI;KFM;WGG;KHE;WIG;KJE;WKG;KLE;CDG"}],[{"names":["<global>","PortalGuard","add","remove","<anonymous>","PortalHost","_this2._setManager","_this2._mount","_this2._update","_this2._queue.findIndex$argument_0","_this2._unmount","componentDidMount","componentWillUnmount","render"],"mappings":"AAA;kBCgC;aCM;GDI;gBEE;GFE;CDC;8BIkC;ECK;yBCQ;KDE;oBEE;KFc;qBGE;4CCU;SDE;KHQ;sBKE;KLS;GDG;WOI;KP4B;WQG;KRG;WSG;KTa;CJG"}],[{"names":["<global>","<anonymous>","PortalManager","_this.mount","_this.setState$argument_0","_this.update","state.portals.map$argument_0","_this.unmount","state.portals.filter$argument_0","render"],"mappings":"AAA;iCC4B;ECK;kBCS;qBCC;ODO;KDC;mBGE;4BDC;qCEE;WFQ;OCE;KHC;oBKE;4BHC;wCIE;WJE;OGE;KLC;GDG;WQI;oCHC;OGa;KRC;CDG"}],[{"names":["<global>","ThemeProvider","_react._default.useMemo$argument_0","useTheme","WithTheme","_react._default.useCallback$argument_0","_react._default.createElement$argument_2"],"mappings":"AAA;oBCwB;wCCI;GDE;CDK;eGI;CHM;AII;gDCS;GDa;mFEE;GFE"}],[{"names":["<global>","isMergeableObject","isNonNullObject","isSpecial","isReactElement","emptyTarget","cloneUnlessOtherwiseSpecified","defaultArrayMerge","target.concat.map$argument_0","getMergeFunction","getEnumerableOwnPropertySymbols","Object.getOwnPropertySymbols.filter$argument_0","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","getKeys.forEach$argument_0","deepmerge","deepmergeAll","array.reduce$argument_0"],"mappings":"AAA;wBCE;CDG;AEE;CFE;AGE;CHM;AIM;CJE;AKE;CLE;AME;CNI;AOE;kCCC;EDE;CPC;ASE;CTM;AUE;gDCE;GDE;CVE;AYE;CZE;AaE;CbM;AcG;CdI;AeE;0BCG;GDE;yBCE;EDU;CfE;AiBE;CjBmB;gBkBE;qBCK;EDE;ClBC"}],[{"names":["<global>","shallowEqual"],"mappings":"AAA;iBCE;CD2C"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>","getCurrentInstance"],"mappings":"AAA;kCCQ,aD"}],[{"names":["<global>","Events","Events#constructor","Events#on","Events#once","wrapper","Events#off","Events#trigger"],"mappings":"AAA,OC;ICC;KDO;IEC;KFmB;IGC;wBCC;SDG;KHG;IKC;KL0B;IMC;KNgB;CDC"}],[{"names":["<global>","PageEvts","PageEvts#constructor","PageEvts#on","exeList.reduce$argument_0","PageEvts#emit","RouteEvts","RouteEvts#emit","RouteEvts#addEvents","Object.keys.forEach$argument_0"],"mappings":"AAA;ACE;ICC;KDG;IEC;2CCE;SDQ;KFE;IIC;KJG;CDC;AME;ICC;KDM;IEC;oCCG;SDG;KFC;CNC"}],[{"names":["<global>","taroHooks","<anonymous>","React.useLayoutEffect$argument_0","callback","list.filter$argument_0","useRouter","React.useMemo$argument_0","useScope"],"mappings":"AAA;kBCI;WCE;8BCK;6BCQ,mCD;mBDa;kDGO,yBH;aCE;SDC;KDC;CDC;yBMS;oDCC,oBD;CNC;wBQE,eR"}],[{"names":["<global>","pxTransform"],"mappings":"AAA;OCQ;CDY"}],[{"names":["<global>","App","App#componentDidMount","App#componentDidShow","App#componentDidHide","App#componentDidCatchError","App#render"],"mappings":"AAA;ACG;ECE,uBD;EEE,sBF;EGE,sBH;EIE,4BJ;EKG;GLE;CDC"}],[{"names":["<global>","scalePx2dp","ignoreStyleFileCache"],"mappings":"AAA;ACO;CDE;AEG,kCF"}],[{"names":["<global>","Index","Index#componentDidMount","Index#componentWillUnmount","Index#componentDidShow","Index#componentDidHide","Index#render"],"mappings":"AAA;eCI;ECE,wBD;EEE,2BF;EGE,uBH;EIE,uBJ;EKE;GLM;CDC"}],[{"names":["<global>","stringToText","_View","props.children.map$argument_0"],"mappings":"AAA;qBCU;CDG;cEC;qECG,gGD;CFE"}],[{"names":["<global>","extracteTextStyle","Object.keys.forEach$argument_0","omit","fields.forEach$argument_0","dismemberStyle","parseStyles","styles.split.filter$argument_0","styles.split.filter.map$argument_0","style.split._.trim.replace$argument_1","styles.split.filter.map.reduce$argument_0","noop"],"mappings":"AAA;iCCQ;0CCI;SDI;CDG;oBGC;mBCE;KDE;CHE;8BKC;0CHK;SGW;CLM;2BMO;gBCG,wCD;aEC;kDCC,8BD;KFE;gBIC,2FJ;CNC;oBWE,gBX"}],[{"names":["<global>","<anonymous>","_Clickable","_Clickable#constructor","PanResponder.create$argument_0.onStartShouldSetPanResponder","PanResponder.create$argument_0.onShouldBlockNativeResponder","PanResponder.create$argument_0.onPanResponderGrant","PanResponder.create$argument_0.onPanResponderTerminationRequest","PanResponder.create$argument_0.onPanResponderRelease","PanResponder.create$argument_0.onPanResponderTerminate","setStartTimer","setTimeout$argument_0","setStayTimer","getWxAppEvent","touches.map$argument_0","changedTouches.map$argument_0","_Clickable#componentWillUnmount","_Clickable#render"],"mappings":"AAA;eCgB;gBCE;YCC;kDCO;qBDM;kDEC,WF;yCGK;qBHK;sDIK,UJ;2CKC;qBLe;6CMC;qBNI;qCOE;qDCI;yBDE;iBPE;oCSC;oDDK;yBCG;iBTE;qCUC;6CCkB;yBDQ;2DEC;yBFQ;iBVE;aDC;YcC;adG;YeC;af8B;SDC;CDM"}],[{"names":["<global>","<anonymous>","_Text"],"mappings":"AAA;sCCK;CDU;cEG;CFG"}],[{"names":["<global>","scalePx2dp","ignoreStyleFileCache"],"mappings":"AAA;ACO;CDE;AEG,kCF"}],[{"names":["<global>"],"mappings":"AAA"}],[{"names":["<global>"],"mappings":"AAA"}]],"names":["global","__r","metroRequire","__METRO_GLOBAL_PREFIX__","factory","moduleId","dependencyMap","modules","mod","hasError","importedAll","EMPTY","importedDefault","isInitialized","publicModule","exports","__c","clear","__registerSegment","segmentId","moduleDefiner","moduleIds","moduleDefinersBySegmentID","forEach","definingSegmentByModuleID","has","set","hasOwnProperty","Object","create","moduleIdReallyIsNumber","module","guardedLoadModule","metroImportDefault","__esModule","default","metroImportAll","key","call","importDefault","importAll","inGuard","ErrorUtils","returnValue","loadModuleImplementation","e","reportFatalError","ID_MASK_SHIFT","LOCAL_ID_MASK","unpackModuleId","localId","packModuleId","value","Map","length","_definingSegmentByMod","get","undefined","definer","delete","nativeRequire","_unpackModuleId","Error","moduleThrewError","error","_module","moduleObject","id","inspect","stylizeNoColor","str","styleType","arrayToHash","array","hash","val","idx","formatValue","ctx","recurseTimes","formatValueCalls","primitive","formatPrimitive","keys","visibleKeys","isError","indexOf","formatError","isFunction","name","stylize","isRegExp","RegExp","prototype","toString","isDate","Date","ar","output","base","braces","Array","isArray","toUTCString","seen","push","formatArray","map","formatProperty","pop","reduceToSingleString","isUndefined","simple","JSON","stringify","replace","isNumber","isBoolean","isNull","i","l","String","match","desc","getOwnPropertyDescriptor","split","line","join","substr","reduce","prev","cur","numLinesEst","arg","re","isObject","objectToString","d","o","obj","prop","opts","depth","OBJECT_COLUMN_NAME","LOG_LEVELS","trace","info","warn","INSPECTOR_LEVELS","INSPECTOR_FRAMES_TO_SKIP","getNativeLogFunction","level","arguments","firstArg","logLevel","slice","__inspectorLog","groupStack","groupFormat","nativeLoggingHook","repeat","element","n","apply","GROUP_PAD","GROUP_OPEN","GROUP_CLOSE","prefix","msg","console","log","debug","table","rows","data","row","columns","sort","stringRows","columnWidths","k","j","cellStr","Math","max","separatorRow","joinRow","columnWidth","space","cells","cell","group","label","groupEnd","groupCollapsed","assert","expression","defineProperty","enumerable","stub","print","dir","dirxml","profile","profileEnd","_inGuard","_globalHandler","isFatal","setGlobalHandler","fun","getGlobalHandler","reportError","applyWithGuard","context","args","unused_onError","unused_name","applyWithGuardIfNeeded","guard","_ref","guardName","_len","_key","this","entries","object","TypeError","values","_reactNative","r","_runtimeRn","_app","_interopRequireDefault","_index","_app2","_index2","AppComponentConfig","tabBar","list","config","appConfig","_extends2","designWidth","deviceRatio","640","750","828","__taroAppConfig","pagePath","component","createPageConfig","pagesIndexIndex","pagesIndexIndexConfig","AppRegistry","registerComponent","createReactNativeApp","Component","_extends","assign","target","source","require","warnOnce","AccessibilityInfo","ActivityIndicator","Button","DatePickerIOS","DrawerLayoutAndroid","FlatList","Image","ImageBackground","InputAccessoryView","KeyboardAvoidingView","MaskedViewIOS","Modal","Picker","PickerIOS","Pressable","ProgressBarAndroid","ProgressViewIOS","RefreshControl","SafeAreaView","ScrollView","SectionList","SegmentedControlIOS","Slider","StatusBar","Switch","Text","TextInput","Touchable","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","View","VirtualizedList","VirtualizedSectionList","ActionSheetIOS","Alert","Animated","Appearance","AppState","AsyncStorage","BackHandler","Clipboard","DatePickerAndroid","DeviceInfo","DevSettings","Dimensions","Easing","findNodeHandle","I18nManager","ImagePickerIOS","InteractionManager","Keyboard","LayoutAnimation","Linking","LogBox","NativeDialogManagerAndroid","NativeEventEmitter","Networking","PanResponder","PermissionsAndroid","PixelRatio","PushNotificationIOS","Settings","Share","StatusBarIOS","StyleSheet","Systrace","ToastAndroid","TurboModuleRegistry","UIManager","unstable_batchedUpdates","useColorScheme","useWindowDimensions","UTFSequence","Vibration","YellowBox","DeviceEventEmitter","DynamicColorIOS","NativeAppEventEmitter","NativeModules","Platform","PlatformColor","processColor","requireNativeComponent","unstable_RootTagContext","RootTagContext","unstable_enableLogBox","ColorPropType","EdgeInsetsPropType","PointPropType","ViewPropTypes","condition","format","a","b","c","f","argIndex","framesToPop","warnedKeys","message","_RCTDeviceEventEmitter","_NativeAccessibilityManager","CHANGE_EVENT_NAME","announcementFinished","boldTextChanged","grayscaleChanged","invertColorsChanged","reduceMotionChanged","reduceTransparencyChanged","screenReaderChanged","_subscriptions","isBoldTextEnabled","Promise","resolve","reject","NativeAccessibilityManager","getCurrentBoldTextState","isGrayscaleEnabled","getCurrentGrayscaleState","isInvertColorsEnabled","getCurrentInvertColorsState","isReduceMotionEnabled","getCurrentReduceMotionState","isReduceTransparencyEnabled","getCurrentReduceTransparencyState","isScreenReaderEnabled","getCurrentVoiceOverState","fetch","addEventListener","eventName","handler","listener","RCTDeviceEventEmitter","addListener","remove","removeEventListener","bind","setAccessibilityFocus","reactTag","announceForAccessibility","announcement","_EventEmitter2","_EventSubscriptionVendor","_this","_classCallCheck2","sharedSubscriber","EventSubscriptionVendor","_super","eventType","_get2","_getPrototypeOf2","subscription","emitter","removeSubscription","EventEmitter","instance","Constructor","_defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","superPropBase","_get","property","receiver","Reflect","getPrototypeOf","_getPrototypeOf","setPrototypeOf","__proto__","subClass","superClass","constructor","_setPrototypeOf","p","_typeof","assertThisInitialized","self","Symbol","iterator","ReferenceError","_EmitterSubscription","invariant","sparseFilterPredicate","subscriber","_subscriber","addSubscription","EmitterSubscription","removeAllSubscriptions","subscriptions","getSubscriptionsForType","filter","EventSubscription","_classCallCheck","_subscriptionsForType","_currentSubscription","subscriptionsForType","_interopRequireWildcard","schema","requireModule","_invariant","turboModuleProxy","__turboModuleProxy","RN$Bridgeless","legacyModule","BatchedBridge","genModule","moduleID","_config","_slicedToArray","moduleName","constants","methods","promiseMethods","syncMethods","startsWith","methodName","methodID","isPromise","arrayContains","isSync","methodType","genMethod","getConstants","freeze","loadModule","nativeRequireModuleConfig","type","fn","enqueueingFrameError","enqueueNativeCall","errorData","updateErrorWithErrorData","_len2","_key2","lastArg","secondLastArg","hasSuccessCallback","hasErrorCallback","onSuccess","onFail","callbackCount","newArgs","callNativeSyncHook","__fbGenNativeModule","nativeModuleProxy","nativeExtensions","bridgeConfig","__fbBatchedBridgeConfig","defineLazyObjectProperty","remoteModuleConfig","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arr","_i","_s","_e","_arr","_n","_d","next","done","err","arrayLikeToArray","minLen","from","test","len","arr2","stringifySafe","MessageQueue","_lazyCallableModules","_queue","_successCallbacks","_failureCallbacks","_callID","_lastFlush","_eventLoopStartTime","now","_immediatesCallback","callFunctionReturnFlushedQueue","flushedQueue","invokeCallbackAndReturnFlushedQueue","method","__guard","__callFunction","cbID","_this2","__invokeCallback","_this3","__callImmediates","queue","getValue","params","onSucc","processCallbacks","nativeCallSyncHook","nativeFlushQueueImmediate","counterEvent","__spy","__shouldPauseOnThrow","DebuggerInternal","shouldPauseOnThrow","beginEvent","endEvent","moduleMethods","getCallableModule","callID","callback","_toConsumableArray","spyOrToggle","arrayWithoutHoles","iterableToArray","nonIterableSpread","iter","_enabled","_asyncCookie","installReactHook","setEnabled","enabled","isEnabled","profileName","profileNameString","nativeTraceBeginSection","nativeTraceEndSection","beginAsyncEvent","cookie","nativeTraceBeginAsyncSection","endAsyncEvent","nativeTraceEndAsyncSection","nativeTraceCounter","createStringifySafeWithLimits","limits","_limits$maxDepth","maxDepth","Number","POSITIVE_INFINITY","_limits$maxStringLimi","maxStringLimit","_limits$maxArrayLimit","maxArrayLimit","_limits$maxObjectKeys","maxObjectKeysLimit","stack","replacer","shift","substring","retval","concat","_step","_iterator","_createForOfIteratorHelperLoose","unshift","ret","E","valueSet","setValue","newValue","React","PlatformActivityIndicator","ActivityIndicatorWithRef","forwardRef","forwardedRef","sizeStyle","sizeProp","onLayout","style","size","restProps","_objectWithoutProperties","_excluded","styles","sizeSmall","sizeLarge","height","width","nativeProps","ref","_reactJsxRuntime","jsx","compose","container","children","displayName","defaultProps","animating","color","hidesWhenStopped","alignItems","justifyContent","g","Fragment","for","h","m","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","__self","__source","q","$$typeof","_owner","current","jsxs","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","symbols","to","s","StrictMode","Profiler","t","Suspense","u","v","w","x","z","encodeURIComponent","A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","B","C","refs","updater","D","isReactComponent","setState","forceUpdate","F","isPureReactComponent","G","H","I","J","K","L","escape","=",":","M","N","O","P","Q","_status","_result","then","R","S","T","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","IsSomeRendererActing","Children","count","toArray","only","PureComponent","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createElement","createFactory","createRef","render","isValidElement","lazy","_payload","_init","memo","compare","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","version","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","sourceKeys","_NativePlatformConstantsIOS","__constants","OS","Version","osVersion","NativePlatformConstantsIOS","isPad","interfaceIdiom","isTVOS","isTV","isTesting","select","spec","ios","native","getEnforcing","ReactNativeStyleAttributes","flatten","hairlineWidth","roundToNearestPixel","absoluteFill","position","left","right","top","bottom","absoluteFillObject","style1","style2","setStyleAttributePreprocessor","process","scale","fontScale","layoutSize","round","ratio","dimensions","_EventEmitter","_NativeDeviceInfo","eventEmitter","dimensionsInitialized","dim","dims","screen","window","windowPhysicalPixels","screenPhysicalPixels","emit","removeListener","initialDims","update","NativeDeviceInfo","NativeModule","DeprecatedImageStylePropTypes","DeprecatedTextStylePropTypes","DeprecatedViewStylePropTypes","processTransform","sizesDiffer","_Object$keys","transform","shadowOffset","diff","colorAttributes","backgroundColor","borderBottomColor","borderColor","borderLeftColor","borderRightColor","borderTopColor","borderStartColor","borderEndColor","shadowColor","textDecorationColor","tintColor","textShadowColor","overlayColor","DeprecatedColorPropType","DeprecatedLayoutPropTypes","DeprecatedShadowPropTypesIOS","DeprecatedTransformPropTypes","ReactPropTypes","ImageStylePropTypes","resizeMode","oneOf","backfaceVisibility","borderWidth","number","borderRadius","overflow","opacity","string","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","normalizeColor","colorPropType","isRequired","propName","componentName","location","propFullName","_base","normalizeColorObject","hue2rgb","hslToRgb","cachedMatchers","NUMBER","PERCENTAGE","parse255","int","parseInt","parse360","parseFloat","parse1","num","parsePercentage","names","transparent","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","matchers","rgb","rgba","hsl","hsla","hex3","hex4","hex6","hex8","exec","semantic","tuple","dynamic","light","dark","normalizedColor","processedColorObj","processColorObject","LayoutPropTypes","display","oneOfType","start","end","minWidth","maxWidth","minHeight","maxHeight","margin","marginVertical","marginHorizontal","marginTop","marginBottom","marginLeft","marginRight","marginStart","marginEnd","padding","paddingVertical","paddingHorizontal","paddingTop","paddingBottom","paddingLeft","paddingRight","paddingStart","paddingEnd","borderTopWidth","borderStartWidth","borderEndWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","flexDirection","flexWrap","alignSelf","alignContent","flex","flexGrow","flexShrink","flexBasis","aspectRatio","zIndex","direction","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","bool","func","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","shape","exact","checkPropTypes","PropTypes","shadowOpacity","shadowRadius","deprecatedPropType","perspective","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","translateX","translateY","skewX","skewY","transformMatrix","decomposedMatrix","rotation","propType","explanation","getViewManagerConfig","rest","viewManagerName","getConstantsForViewManager","getDefaultEventTypes","lazilyLoadView","createView","viewName","rootTag","updateView","focus","blur","findSubviewIn","point","dispatchViewManagerCommand","commandID","commandArgs","measure","measureInWindow","viewIsDescendantOf","ancestorReactTag","measureLayout","errorCallback","measureLayoutRelativeToParent","setJSResponder","blockNativeResponder","clearJSResponder","configureNextLayoutAnimation","removeSubviewsFromContainerWithID","containerID","replaceExistingNonRootView","newReactTag","setChildren","containerTag","reactTags","manageChildren","moveFromIndices","moveToIndices","addChildReactTags","addAtIndices","removeAtIndices","setLayoutAnimationEnabledExperimental","sendAccessibilityEvent","showPopupMenu","items","success","dismissPopupMenu","_NativeUIManager","UIManagerProperties","viewManagerConfigs","triedLoadingConfig","Set","NativeUIManagerConstants","isNativeUIManagerConstantsSet","NativeUIManager","UIManagerJS","result","add","viewConfig","lazifyViewManagerConfig","Manager","viewManager","commands","index","includes","fontFamily","fontSize","fontStyle","fontWeight","fontVariant","textShadowOffset","textShadowRadius","letterSpacing","lineHeight","textAlign","textAlignVertical","includeFontPadding","textDecorationLine","textDecorationStyle","textTransform","writingDirection","borderTopStartRadius","borderTopEndRadius","borderBottomStartRadius","borderBottomEndRadius","borderStyle","elevation","MatrixMath","createIdentityMatrix","createCopy","createOrthographic","near","far","createFrustum","r_width","r_height","r_depth","createPerspective","fovInRadians","aspect","createTranslate2d","y","mat","reuseTranslate2dCommand","matrixCommand","reuseTranslate3dCommand","createScale","factor","reuseScaleCommand","reuseScale3dCommand","reusePerspectiveCommand","reuseScaleXCommand","reuseScaleYCommand","reuseScaleZCommand","reuseRotateXCommand","radians","cos","sin","reuseRotateYCommand","amount","reuseRotateZCommand","createRotateZ","reuseSkewXCommand","reuseSkewYCommand","multiplyInto","out","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b0","b1","b2","b3","determinant","matrix","_matrix","m00","m01","m02","m03","m10","m11","m12","m13","m20","m21","m22","m23","m30","m31","m32","m33","inverse","det","_matrix2","transpose","multiplyVectorByMatrix","_v","vx","vy","vz","vw","v3Length","sqrt","v3Normalize","vector","im","v3Dot","v3Combine","aScale","bScale","v3Cross","quaternionToDegreesXYZ","_q","qx","qy","qz","qw","qx2","qy2","qz2","unit","conv","PI","atan2","roundTo3Places","asin","decomposeMatrix","quaternion","skew","translation","perspectiveMatrix","rightHandSide","inversePerspectiveMatrix","transposedInversePerspectiveMatrix","rotationDegrees","pdum3","dummySize","one","two","StyleSheetValidation","caller","stylePropTypes","flattenStyle","styleLength","computedStyle","_ViewNativeComponent","TextAncestor","_jsxRuntime","_codegenNativeCommands","NativeViewComponent","registerGeneratedViewConfig","uiViewClassName","__INTERNAL_VIEW_CONFIG","Commands","supportedCommands","_ReactNative","options","commandObj","command","dispatchCommand","ReactNative","_dependencyMap","ReactNativePrivateInterface","Scheduler","invokeGuardedCallbackImpl","funcArgs","onError","caughtError","hasRethrowError","rethrowError","reporter","invokeGuardedCallback","invokeGuardedCallbackAndCatchFirstError","getFiberCurrentPropsFromNode","getInstanceFromNode","getNodeFromInstance","executeDispatch","event","inst","currentTarget","executeDirectDispatch","dispatchListener","_dispatchListeners","dispatchInstance","_dispatchInstances","functionThatReturnsTrue","functionThatReturnsFalse","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","Interface","isDefaultPrevented","defaultPrevented","isPropagationStopped","createOrGetPooledEvent","nativeInst","eventPool","releasePooledEvent","destructor","addEventPoolingTo","EventConstructor","getPooled","release","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","eventPhase","bubbles","cancelable","timeStamp","isTrusted","extend","Class","Super","ResponderSyntheticEvent","touchHistory","isStartish","topLevelType","isMoveish","startDependencies","moveDependencies","endDependencies","touchBank","numberActiveTouches","indexOfSingleActiveTouch","mostRecentTimeStamp","timestampForTouch","touch","timestamp","getTouchIdentifier","identifier","recordTouchStart","touchRecord","touchActive","startPageX","pageX","startPageY","pageY","startTimeStamp","currentPageX","currentPageY","currentTimeStamp","previousPageX","previousPageY","previousTimeStamp","recordTouchMove","recordTouchEnd","ResponderTouchHistoryStore","recordTouchTrack","changedTouches","touches","accumulate","accumulateInto","forEachAccumulated","cb","scope","responderInst","trackedTouchCount","changeResponder","nextResponderInst","blockHostResponder","oldResponderInst","ResponderEventPlugin","GlobalResponderHandler","onChange","eventTypes","startShouldSetResponder","phasedRegistrationNames","bubbled","captured","dependencies","scrollShouldSetResponder","selectionChangeShouldSetResponder","moveShouldSetResponder","responderStart","registrationName","responderMove","responderEnd","responderRelease","responderTerminationRequest","responderGrant","responderReject","responderTerminate","getParent","return","tag","traverseTwoPhase","path","getListener","stateNode","accumulateDirectionalDispatches","phase","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatchesSingleSkipTarget","accumulateTwoPhaseDispatchesSingle","_getResponder","extractEvents","responderIgnoreScroll","shouldSetEventType","JSCompiler_temp","depthA","tempA","tempB","alternate","JSCompiler_temp$jscomp$0","injection","injectGlobalResponderHandler","eventPluginOrder","namesToPlugins","recomputePluginOrdering","pluginName","pluginModule","pluginIndex","plugins","JSCompiler_inline_result","eventName$jscomp$0","eventNameDispatchConfigs","publishRegistrationName","registrationNameModules","getListener$1","customBubblingEventTypes","ReactNativeViewConfigRegistry","customDirectEventTypes","accumulateDirectionalDispatches$1","accumulateTwoPhaseDispatchesSingle$1","accumulateDirectDispatchesSingle$1","pluginName$jscomp$inline_224","injectedNamesToPlugins$jscomp$inline_222","ReactNativeBridgeEventPlugin","bubbleDispatchConfig","directDispatchConfig","isOrderingDirty$jscomp$inline_223","pluginModule$jscomp$inline_225","instanceCache","instanceProps","getInstanceFromTag","batchedUpdatesImpl","bookkeeping","isInsideEventHandler","batchedUpdates","eventQueue","executeDispatchesAndReleaseTopLevel","dispatchListeners","dispatchInstances","EMPTY_NATIVE_EVENT","_receiveRootNodeIDEvent","rootNodeID","nativeEventParam","events","legacyPlugins","possiblePlugin","RCTEventEmitter","register","receiveEvent","receiveTouches","eventTopLevelType","changedIndices","index$0","_nativeTag","canonical","ReactSharedInternals","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_DEBUG_TRACING_MODE_TYPE","REACT_OFFSCREEN_TYPE","REACT_LEGACY_HIDDEN_TYPE","symbolFor","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","getComponentName","innerType","_render","getNearestMountedFiber","fiber","nearestMounted","flags","assertIsMounted","findCurrentFiberUsingSlowPath","parentA","parentB","child","sibling","didFindChild","child$1","findCurrentHostFiber","parent","doesFiberContain","parentFiber","childFiber","parentFiberAlternate","emptyObject","removedKeys","removedKeyCount","deepDifferOptions","unsafelyIgnoreFunctions","defaultDiffer","prevProp","nextProp","deepDiffer","restoreDeletedValuesInNestedArray","updatePayload","validAttributes","attributeConfig","diffNestedProperty","addNestedProperty","clearNestedProperty","diffProperties","minLength","prevProps","nextProps","propKey","propKey$3","mountSafeCallback_NOT_REALLY_SAFE","__isMounted","ReactNativeFiberHostComponent","_children","_proto","TextInputState","blurTextInput","focusTextInput","relativeToNativeNode","relativeNode","setNativeProps","getViewConfigForType","UPDATE_SIGNAL","nextReactTag","allocateTag","recursivelyUncacheFiberNode","finalizeInitialChildren","parentInstance","nativeTags","scheduleTimeout","setTimeout","cancelTimeout","clearTimeout","describeComponentFrame","ownerName","describeFunctionComponentFrame","valueStack","createCursor","defaultValue","cursor","emptyContextObject","contextStackCursor","didPerformWorkStackCursor","previousContext","getMaskedContext","workInProgress","unmaskedContext","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","isContextProvider","childContextTypes","popContext","pushTopLevelContextObject","didChange","processChildContext","parentContext","getChildContext","contextKey","pushContextProvider","__reactInternalMemoizedMergedChildContext","invalidateContextProvider","rendererID","injectedHook","Scheduler_now","unstable_now","return_highestLanePriority","getHighestPriorityLanes","lanes","inputDiscreteLanes","schedulerPriorityToLanePriority","schedulerPriorityLevel","lanePriorityToSchedulerPriority","lanePriority","getNextLanes","root","wipLanes","pendingLanes","nextLanes","nextLanePriority","expiredLanes","suspendedLanes","pingedLanes","nonIdleUnblockedLanes","clz32","entangledLanes","entanglements","getLanesToRetrySynchronouslyOnError","findUpdateLane","getHighestPriorityLane","createLaneMap","initial","laneMap","markRootUpdated","updateLane","eventTime","higherPriorityLanes","eventTimes","LN2","Scheduler_runWithPriority","unstable_runWithPriority","Scheduler_scheduleCallback","unstable_scheduleCallback","Scheduler_cancelCallback","unstable_cancelCallback","Scheduler_shouldYield","unstable_shouldYield","Scheduler_requestPaint","unstable_requestPaint","Scheduler_now$1","Scheduler_getCurrentPriorityLevel","unstable_getCurrentPriorityLevel","Scheduler_ImmediatePriority","unstable_ImmediatePriority","Scheduler_UserBlockingPriority","unstable_UserBlockingPriority","Scheduler_NormalPriority","unstable_NormalPriority","Scheduler_LowPriority","unstable_LowPriority","Scheduler_IdlePriority","unstable_IdlePriority","fakeCallbackNode","requestPaint","syncQueue","immediateQueueCallbackNode","isFlushingSyncQueue","initialTimeMs$1","getCurrentPriorityLevel","reactPriorityToSchedulerPriority","reactPriorityLevel","runWithPriority","scheduleCallback","flushSyncCallbackQueue","flushSyncCallbackQueueImpl","objectIs","is","shallowEqual","objA","objB","keysA","keysB","describeFiber","getStackByFiberInDevAndProd","resolveDefaultProps","baseProps","valueCursor","currentlyRenderingFiber","lastContextDependency","lastContextWithAllBitsObserved","resetContextDependencies","popProvider","providerFiber","currentValue","scheduleWorkOnParentPath","renderLanes","childLanes","prepareToReadContext","firstContext","didReceiveUpdate","readContext","observedBits","responders","hasForceUpdate","initializeUpdateQueue","updateQueue","baseState","memoizedState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","cloneUpdateQueue","createUpdate","lane","payload","enqueueUpdate","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","processUpdateQueue","workInProgress$jscomp$0","pendingQueue","lastPendingUpdate","firstPendingUpdate","currentLastBaseUpdate","updateEventTime","workInProgressRootSkippedLanes","commitUpdateQueue","finishedWork","finishedQueue","effect","emptyRefsObject","applyDerivedStateFromProps","ctor","getDerivedStateFromProps","classComponentUpdater","_reactInternals","requestEventTime","requestUpdateLane","scheduleUpdateOnFiber","checkShouldComponentUpdate","oldProps","newProps","oldState","newState","nextContext","shouldComponentUpdate","constructClassInstance","isLegacyContextConsumer","contextType","state","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","mountClassInstance","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","coerceRef","returnFiber","stringRef","_stringRef","throwOnInvalidObjectType","newChild","ChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","last","lastEffect","nextEffect","firstEffect","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","useFiber","pendingProps","createWorkInProgress","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","textContent","createFiberFromText","mode","updateElement","createFiberFromTypeAndProps","updatePortal","portal","containerInfo","implementation","createFiberFromPortal","updateFragment","fragment","createFiberFromFragment","createChild","updateSlot","oldFiber","updateFromMap","existingChildren","newIdx","reconcileChildrenArray","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","reconcileChildrenIterator","newChildrenIterable","iteratorFn","step","isUnkeyedTopLevelFragment","reconcileChildFibers","mountChildFibers","NO_CONTEXT","contextStackCursor$1","contextFiberStackCursor","rootInstanceStackCursor","requiredContext","pushHostContainer","nextRootInstance","isInAParentText","popHostContainer","pushHostContext","popHostContext","suspenseStackCursor","findFirstSuspended","dehydrated","memoizedProps","revealOrder","workInProgressSources","resetWorkInProgressVersions","_workInProgressVersionPrimary","ReactCurrentDispatcher$1","ReactCurrentBatchConfig$1","currentlyRenderingFiber$1","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","HooksDispatcherOnRerender","ContextOnlyDispatcher","mountWorkInProgressHook","hook","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","basicStateReducer","action","updateReducer","reducer","lastRenderedReducer","baseFirst","newBaseQueueLast","eagerReducer","eagerState","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","readFromUnsubcribedMutableSource","getSnapshot","getVersion","_getVersion","_source","mutableReadLanes","useMutableSource","subscribe","workInProgressRoot","dispatcher","_dispatcher$useState","setSnapshot","snapshot","prevGetSnapshot","prevSource","maybeNewVersion","index$13","latestGetSnapshot","latestSetSnapshot","dispatchAction","updateMutableSource","mountState","initialState","pushEffect","destroy","deps","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","prevEffect","mountEffect","updateEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","mountDebugValue","updateCallback","prevState","updateMemo","nextCreate","startTransition","setPending","priorityLevel","prevTransition","currentState","useDeferredValue","useTransition","useOpaqueIdentifier","unstable_isNewReconciler","initialArg","init","initialValue","_mountState","prevValue","_mountState2","isPending","_updateState","_rerenderState","ReactCurrentOwner$1","reconcileChildren","nextChildren","updateForwardRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateLanes","shouldConstruct","updateSimpleMemoComponent","updateFunctionComponent","updateOffscreenComponent","baseLanes","pushRenderLanes","markRef","updateClassComponent","hasContext","oldContext","hasNewLifecycles","getDerivedStateFromProps$jscomp$0","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","finishClassComponent","shouldUpdate","didCaptureError","getDerivedStateFromError","pushHostRootContext","pendingContext","appendAllChildren","updateHostContainer","updateHostComponent$1","updateHostText$1","SUSPENDED_MARKER","retryLane","updateSuspenseComponent","suspenseContext","showFallback","fallback","unstable_avoidThisFallback","mountSuspenseFallbackChildren","unstable_expectedLoadTime","createFiberFromOffscreen","updateSuspenseFallbackChildren","updateSuspensePrimaryChildren","primaryChildren","fallbackChildren","progressedPrimaryFragment","currentPrimaryChildFragment","primaryChildProps","scheduleWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","lastEffectBeforeRendering","renderState","rendering","renderingStartTime","updateSuspenseListComponent","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$64","completeWork","hydrate","rootContainerInstance","text","workInProgressRootExitStatus","workInProgressRootUpdatedLanes","markRootSuspended$1","workInProgressRootRenderLanes","workInProgressRootRenderTargetTime","popRenderLanes","unwindWork","createCapturedValue","oldText","newText","ReactFiberErrorDialog","showErrorDialog","logCapturedError","boundary","errorInfo","componentStack","errorBoundary","PossiblyWeakMap","WeakMap","createRootErrorUpdate","hasUncaughtError","firstUncaughtError","createClassErrorUpdate","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","PossiblyWeakSet","WeakSet","safelyDetachRef","refError","captureCommitPhaseError","commitBeforeMutationLifeCycles","__reactInternalSnapshotBeforeUpdate","commitLifeCycles","finishedRoot","create$81","_effect","enqueuePendingPassiveHookEffectUnmount","enqueuePendingPassiveHookEffectMount","hideOrUnhideAllChildren","isHidden","commitUnmount","onCommitFiberUnmount","_effect2","componentWillUnmount","unmountError","unmountHostComponents","detachFiberMutation","isHostParent","commitPlacement","isContainer","insertOrAppendPlacementNodeIntoContainer","insertOrAppendPlacementNode","before","isHost","splice","finishedRoot$jscomp$0","currentParent","currentParentIsContainer","currentParentIsValid","node$jscomp$0","commitWork","globalMostRecentFallbackTime","attachSuspenseRetryListeners","wakeables","retryCache","wakeable","retry","resolveRetryWakeable","isSuspenseBoundaryBeingHidden","beginWork$1","ceil","ReactCurrentDispatcher$2","ReactCurrentOwner$2","executionContext","subtreeRenderLanes","subtreeRenderLanesCursor","workInProgressRootFatalError","workInProgressRootIncludedLanes","workInProgressRootPingedLanes","mostRecentlyUpdatedRoot","Infinity","rootDoesHavePassiveEffects","rootWithPendingPassiveEffects","pendingPassiveEffectsRenderPriority","pendingPassiveHookEffectsMount","pendingPassiveHookEffectsUnmount","rootsWithPendingDiscreteUpdates","nestedUpdateCount","rootWithNestedUpdates","currentEventTime","currentEventWipLanes","currentEventPendingLanes","focusedInstanceHandle","shouldFireAfterActiveInstanceBlur","markUpdateLaneFromFiberToRoot","performSyncWorkOnRoot","ensureRootIsScheduled","sourceFiber","currentTime","existingCallbackNode","callbackNode","expirationTimes","index$7","expirationTime","priority","callbackPriority","performConcurrentWorkOnRoot","originalCallbackNode","flushPassiveEffects","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prepareFreshStack","workLoopConcurrent","thrownValue","handleError","renderRootSync","finishedLanes","commitRoot","timeoutHandle","index$6","index$11","interruptedWork","root$jscomp$0","erroredWork","currentSource","hasInvisibleParentBoundary","workInProgress$76","nextState","pingCache","ping","pingSuspendedRoot","completeUnitOfWork","yetAnotherThrownValue","workLoopSync","performUnitOfWork","unitOfWork","completedWork","newChildLanes","renderPriorityLevel","commitRootImpl","remainingLanes","remainingLanes$jscomp$0","noLongerPendingLanes","index$12","commitBeforeMutationEffects","currentRef","error$88","flags$jscomp$0","error$89","onCommitFiberRoot","flushPassiveEffectsImpl","unmountEffects","effect$94","create$98","error$99","captureCommitPhaseErrorOnRoot","rootFiber","errorToIgnore","boundaryFiber","FiberNode","createFiber","resolveLazyComponentTag","owner","fiberTag","elements","content","pendingChildren","FiberRootNode","createPortal","findHostInstance","updateContainer","parentComponent","componentOrHandle","unmountComponentAtNode","roots","context$jscomp$0","dependency","unstable_observedBits","devToolsConfig$jscomp$inline_908","findFiberByHostInstance","bundleType","rendererPackageName","rendererConfig","getInspectorDataForViewTag","getInspectorDataForViewAtPoint","internals$jscomp$inline_1115","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","hook$jscomp$inline_1116","isDisabled","supportsFiber","inject","computeComponentStackForErrorReporting","handle","_internalInstanceHandle","nativeFabricUIManager","findHostInstance_DEPRECATED","uninitializedFiber","unmountComponentAtNodeAndRemoveContainer","removeRootView","GlobalPerformanceLogger","markPoint","currentTimestamp","GLOBAL","env","NODE_ENV","performance","nativePerformanceNow","__RCTProfileIsProfiling","ExceptionsManager","installConsoleErrorReporter","__fbDisableExceptionsManager","handleException","ee","userExceptionDecorator","SyntheticError","inUserExceptionDecorator","preprocessException","_unused","exceptionID","reportException","reportToConsole","NativeExceptionsManager","parseErrorStack","currentExceptionID","originalMessage","namePrefix","jsEngine","isHandledByLogBox","forceRedbox","RN$Express","extraData","rawStack","suppressRedBox","inExceptionHandler","reactConsoleErrorHandler","_errorOriginal","reportErrorsAsExceptions","unstable_setExceptionDecorator","exceptionDecorator","isNativeFunction","construct","_wrapNativeSuper","_cache","Wrapper","Function","isNativeReflectConstruct","_construct","Parent","sham","Proxy","Boolean","valueOf","reportFatalException","exceptionId","reportSoftException","updateExceptionMessage","dismissRedbox","parseHermesStack","convertHermesStack","frames","entry","functionName","file","sourceUrl","lineNumber","line1Based","column","column1Based","virtualOffset0Based","errorStack","stacktraceParser","HermesInternal","parse","frame","RE_FRAME","RE_SKIPPED","parseLine","asFrame","asSkipped","lines","lastMessageLine","UNKNOWN_FUNCTION","chromeRe","chromeEvalRe","parseChrome","parts","isNative","isEval","submatch","winjsRe","parseWinjs","geckoRe","geckoEvalRe","parseGecko","javaScriptCoreRe","parseJSC","nodeRe","parseNode","stackString","parseResult","polyfillGlobal","_global","_global$HermesInterna","hasPromise","polyfillObjectProperty","_ref$configurable","TRUE","valuePromise","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","_0","_V","_W","ex","iterable","all","remaining","res","race","onRejected","noop","LAST_ERROR","IS_ERROR","getThen","tryCallOne","tryCallTwo","_U","_X","doResolve","safeThen","onFulfilled","Handler","deferred","_Y","handleResolved","setImmediate","promise","finale","_Z","reason","finally","regeneratorRuntime","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isNaN","isGeneratorFunction","genFun","mark","awrap","async","reverse","skipTempReset","charAt","stop","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","accidentalStrictMode","globalThis","defineLazyTimer","_NativeTiming","FRAME_DURATION","callbacks","types","timerIDs","immediates","requestIdleCallbacks","requestIdleCallbackTimeouts","GUID","errors","hasEmittedTimeDriftWarning","_getFreeIndex","freeIndex","_allocateCallback","_callTimer","timerID","frameTime","didTimeout","timerIndex","_clearIndex","timeRemaining","_callImmediatesPass","passImmediates","_freeCallback","deleteTimer","ExportedJSTimers","JSTimers","duration","createTimer","setInterval","_len3","_key3","requestAnimationFrame","requestIdleCallback","setSendIdleEvents","timeout","deadline","timeoutId","cancelIdleCallback","clearInterval","clearImmediate","cancelAnimationFrame","callTimers","timersToCall","errorCount","ii","callIdleCallbacks","passIdleCallbacks","callImmediates","emitTimeDriftWarning","warningMessage","callbackID","jsSchedulingTime","repeats","NativeTiming","sendIdleEvents","setImmediatesCallback","Headers","Request","Response","URL","URLSearchParams","AbortController","AbortSignal","BlobManager","EventTarget","RCTNetworking","base64","isAvailable","addNetworkingHandler","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","SUPPORTED_RESPONSE_TYPES","arraybuffer","ArrayBuffer","blob","Blob","document","json","","REQUEST_EVENTS","XHR_EVENTS","XMLHttpRequestEventTarget","XMLHttpRequest","_super2","readyState","status","withCredentials","upload","_aborted","_hasError","_method","_perfKey","_response","_url","_timedOut","_trackingName","_incrementalEvents","_performanceLogger","_reset","responseHeaders","responseURL","_requestId","_cachedResponse","_headers","_responseType","_lowerCaseResponseHeaders","_clearSubscriptions","responseType","toByteArray","buffer","createFromOptions","createFromParts","_","requestId","_interceptor","requestSent","progress","total","dispatchEvent","lengthComputable","loaded","stopTimespan","setResponseHeaders","setReadyState","responseReceived","response","dataReceived","responseText","__didReceiveDataProgress","timeOutError","loadingFailed","loadingFinished","sub","headers","headerName","header","toLowerCase","trackingName","performanceLogger","url","toUpperCase","incrementalEvents","onreadystatechange","onprogress","__didUploadProgress","__didReceiveResponse","__didReceiveData","__didReceiveIncrementalData","__didCompleteResponse","nativeResponseType","friendlyName","startTimespan","sendRequest","__didCreateRequest","abortRequest","lcaseHeaders","interceptor","_NativeBlobModule","BlobRegistry","NativeBlobModule","blobId","random","part","ArrayBufferView","acc","curr","unescape","encodeURI","offset","lastModified","__collector","__blobCollectorProvider","unregister","socketId","addWebSocketHandler","removeWebSocketHandler","sendOverSocket","socketID","withId","_data","_this$data","registry","privateData","wrappers","pd","retv","setCancelFlag","passiveListener","canceled","Event","eventTarget","stopped","immediateStopped","defineRedirectDescriptor","defineCallDescriptor","defineWrapper","BaseEvent","proto","CustomEvent","isFunc","getWrapper","wrapper","wrapEvent","isStopped","setEventPhase","setCurrentTarget","setPassiveListener","composedPath","NONE","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","stopImmediatePropagation","composed","srcElement","initEvent","listenersMap","ATTRIBUTE","getListeners","listeners","defineEventAttributeDescriptor","listenerType","newNode","passive","once","defineEventAttribute","eventTargetPrototype","defineCustomEventTarget","eventNames","CustomEventTarget","optionsIsObj","capture","wrappedEvent","handleEvent","PerformanceLogger","_cookies","getCurrentTimestamp","_global$nativeQPLTime","nativeQPLTimestamp","_timespans","_extras","_points","_pointExtras","_closed","startTime","endTime","startExtras","endExtras","totalTime","getTimespans","getExtras","getPoints","getPointExtras","_this$_timespans$_key","extras","timespan","_console","_NativeEventEmitter2","_NativeNetworkingIOS","_convertRequestBody","disableCallsIntoModule","__disableRCTNetworkingExtraneousModuleCalls","NativeNetworkingIOS","__SECRET_DISABLE_CALLS_INTO_MODULE_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","incrementalUpdates","body","clearCookies","_Platform","DEFAULT_NATIVE_EVENT_EMITTER_OPTIONS","nativeModule","_disableCallsIntoModule","_nativeModule","listenerCount","removeListeners","binaryToBase64","FormData","formData","getParts","isView","Uint8Array","fromByteArray","byteOffset","byteLength","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","charCodeAt","uint8","extraBytes","len2","encodeChunk","lookup","code","_parts","_ref2","content-disposition","fieldName","support","searchParams","arrayBuffer","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","append","consumed","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","readArrayBufferAsText","buf","view","chars","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","rejected","isConsumed","readAsText","decode","oldValue","thisArg","input","upcased","credentials","signal","referrer","cache","reParamSearch","getTime","form","trim","bytes","decodeURIComponent","bodyInit","ok","statusText","redirectStatuses","redirect","RangeError","DOMException","request","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","ontimeout","onabort","open","href","fixUrl","setRequestHeader","send","polyfill","amd","WHATWGFetch","_Blob","_BlobManager","_NativeEventEmitter","_binaryToBase","_NativeWebSocketModule","_WebSocketEvent","_base64Js","_eventTargetShim","CONNECTING","OPEN","CLOSING","CLOSED","nextWebSocketId","WebSocket","protocols","_ref2$headers","unrecognized","_objectWithoutProperties2","origin","_eventEmitter","NativeWebSocketModule","_socketId","_registerEvents","connect","_binaryType","binaryType","_close","sendBinary","statusCode","closeReason","close","ev","WebSocketEvent","protocol","_unregisterEvents","eventInitDict","File","_NativeFileReaderModule","_readyState","_error","NativeFileReaderModule","readAsDataURL","_setReadyState","encoding","BLOB_URL_PREFIX","BLOB_URI_SCHEME","BLOB_URI_HOST","_searchParams","validateBaseUrl","_searchParamsInstance","baseUrl","endsWith","separator","eventTargetShim","abortedFlags","defineProperties","signals","getSignal","controller","alert","_NativeDialogManagerAndroid","_RCTAlertManager","title","buttons","prompt","validButtons","buttonPositive","buttonNegative","buttonNeutral","showAlert","errorMessage","buttonKey","buttonClicked","onPress","dismissed","onDismiss","callbackOrButtons","keyboardType","cancelButtonKey","destructiveButtonKey","btn","btnDef","RCTAlertManager","alertWithArgs","_NativeAlertManager","NativeAlertManager","navigator","registerModule","RN$registerCallableModule","registerLazyCallableModule","_NativeJSCHeapCapture","HeapCapture","captureHeap","nativeCaptureHeap","NativeJSCHeapCapture","captureComplete","SamplingProfiler","poke","token","pokeSamplingProfiler","NativeJSCSamplingProfiler","operationComplete","levelsMap","fatal","warningHandler","RCTLog","logIfNoNativeHook","logToConsole","logFn","setWarningHandler","RCTNativeAppEventEmitter","_NativeJSDevSupport","JSDevSupportModule","getJSHierarchy","NativeJSDevSupport","onFailure","ERROR_CODE_VIEW_NOT_FOUND","ERROR_CODE_EXCEPTION","HMRClientProdShim","setup","enable","disable","registerBundle","__fetchSegment","fetchSegment","errorObject","__getSegment","SegmentFetcher","getSegment","deepFreezeAndThrowOnMutationInDev","registerCallableModule","viewConfigCallbacks","viewConfigs","processEventTypes","bubblingEventTypes","directEventTypes","_RCTSingelineTextInputNativeComponent","currentlyFocusedInputRef","inputs","focusInput","textField","blurInput","currentlyFocusedInput","currentlyFocusedField","focusField","textFieldID","blurField","iOSTextInputCommands","registerInput","unregisterInput","isTextInput","AndroidTextInputNativeComponent","_requireNativeComponent","_AndroidTextInputViewConfig","AndroidTextInputViewConfig","createReactNativeComponentClass","getNativeComponentAttributes","insetsDiffer","matricesDiffer","pointsDiffer","processColorArray","resolveAssetSource","hasAttachedDefaultEventTypes","attachDefaultEventTypes","ViewManagerNames","LazyViewManagersEnabled","merge","genericBubblingEventTypes","genericDirectEventTypes","destination","sourceValue","destinationValue","getDifferForType","typeName","getProcessorForType","NativeProps","baseModuleName","baseModule","dummyInsets","dummyPoint","colors","_customSourceTransformer","_serverURL","_scriptURL","_sourceCodeScriptURL","AssetRegistry","AssetSourceResolver","getSourceCodeScriptURL","sourceCode","SourceCode","scriptURL","getDevServerURL","sourceCodeScriptURL","_coerceLocalScriptURL","lastIndexOf","asset","getAssetByID","resolver","defaultAsset","pickScale","setCustomSourceTransformer","transformer","assets","registerAsset","assetId","_require","getAndroidResourceFolderName","getAndroidResourceIdentifier","getBasePath","getScaledAssetPath","scales","scaleSuffix","getAssetPathInDrawableFolder","serverUrl","jsbundleUrl","isLoadedFromServer","assetServerURL","scaledAssetURLNearBundle","fromSource","__packager_asset","uri","deviceScale","androidScaleSuffix","0.75","1","1.5","2","3","4","getAndroidAssetSuffix","drawableFileTypes","basePath","httpServerLocation","suffix","_ReactNativeViewViewConfig","topBlur","topEndEditing","topFocus","topKeyPress","topSubmitEditing","topTextInput","ReactNativeViewViewConfig","maxFontSizeMultiplier","placeholder","inlineImagePadding","contextMenuHidden","maxLength","selectTextOnFocus","underlineColorAndroid","blurOnSubmit","selectionColor","selection","placeholderTextColor","importantForAutofill","returnKeyType","multiline","autoCompleteType","numberOfLines","returnKeyLabel","onKeyPress","cursorColor","showSoftInputOnFocus","autoCapitalize","autoCorrect","caretHidden","secureTextEntry","textBreakStrategy","onScroll","onContentSizeChange","disableFullscreenUI","allowFontScaling","onSelectionChange","mostRecentEventCount","inlineImageLeft","editable","_ReactNativeViewViewConfigAndroid","ReactNativeViewConfig","Constants","ReactNativeViewViewConfigAndroid","topChange","topPress","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topAccessibilityAction","topAccessibilityEscape","topAccessibilityTap","topLayout","topMagicTap","onGestureHandlerEvent","onGestureHandlerStateChange","accessibilityActions","accessibilityElementsHidden","accessibilityHint","accessibilityIgnoresInvertColors","accessibilityLabel","accessibilityLiveRegion","accessibilityRole","accessibilityStates","accessibilityState","accessibilityValue","accessibilityViewIsModal","accessible","clickable","collapsable","hitSlop","importantForAccessibility","nativeID","needsOffscreenAlphaCompositing","onAccessibilityAction","onAccessibilityEscape","onAccessibilityTap","onMagicTap","pointerEvents","removeClippedSubviews","renderToHardwareTextureAndroid","shouldRasterizeIOS","testID","topSelect","topAssetDidLoad","topClick","topContentSizeChange","topLoadingError","topLoadingFinish","topLoadingStart","topMessage","topMomentumScrollBegin","topMomentumScrollEnd","topScroll","topScrollBeginDrag","topScrollEndDrag","topSelectionChange","onAssetDidLoad","hasTVPreferredFocus","focusable","nativeBackgroundAndroid","nativeForegroundAndroid","nextFocusDown","nextFocusForward","nextFocusLeft","nextFocusRight","nextFocusUp","SinglelineTextInputNativeComponent","_RCTSinglelineTextInputViewConfig","RCTSinglelineTextInputViewConfig","isHighlighted","inputAccessoryViewID","enablesReturnKeyAutomatically","clearButtonMode","scrollEnabled","onTextInput","textContentType","keyboardAppearance","passwordRules","spellCheck","clearTextOnFocus","logListeners","maxDepthOrOptions","maybeOptions","onDifferentFunctionsIgnored","twoKey","unstable_setLogListeners","_ExceptionsManager","capturedError","errorToHandle","isComponentError","MessageChannel","unstable_forceFrameRate","floor","port2","port1","onmessage","postMessage","sortIndex","U","V","W","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","_verifyComponentAttributeEquivalence","mergedViewConfig","IGNORED_KEYS","lefthandObjectDiff","leftObj","rightObj","differentKeys","leftItem","rightItem","objDiff","nativeAttributes","diffKeys","paperComponentName","_UIManager","componentNameInUse","paperComponentNameDeprecated","_options$paperCompone","_this$props","touchSoundDisabled","disabled","buttonStyles","button","textStyles","buttonDisabled","textDisabled","formattedTitle","_TextInjection","_TextNativeComponent","DeprecatedTextPropTypes","nullthrows","PRESS_RECT_OFFSET","TouchableText","Mixin","touchableGetInitialState","createResponderHandlers","_createResponseHandlers","_assertThisInitialized2","responseHandlers","isTouchable","hasTextAncestor","NativeVirtualText","onClick","NativeText","onStartShouldSetResponder","shouldSetResponder","_attachTouchHandlers","onResponderGrant","touchableHandleResponderGrant","onResponderMove","touchableHandleResponderMove","onResponderRelease","touchableHandleResponderRelease","onResponderTerminate","touchableHandleResponderTerminate","onResponderTerminationRequest","touchableHandleResponderTerminationRequest","touchableGetPressRectOffset","touchableHandleActivePressIn","suppressHighlighting","touchableHandleActivePressOut","touchableHandlePress","touchableHandleLongPress","onLongPress","pressRetentionOffset","ellipsizeMode","propTypes","TextToExport","TextInjection","unstable_Text","_ReactNativeViewAttributes","_createReactNativeComponentClass","ReactNativeViewAttributes","UIView","selectable","adjustsFontSizeToFit","minimumFontScale","onTextLayout","onInlineViewLayout","dataDetectorType","topTextLayout","topInlineViewLayout","RCTView","DeprecatedEdgeInsetsPropType","DeprecatedStyleSheetPropType","stylePropType","deprecatedCreateStrictShapeTypeChecker","shapePropType","shapeTypes","checkType","propValue","allKeys","checker","chainedCheckType","BoundingDimensions","Position","extractSingleTouch","hasTouches","hasChangedTouches","States","baseStatesConditions","NOT_RESPONDER","RESPONDER_INACTIVE_PRESS_IN","RESPONDER_INACTIVE_PRESS_OUT","RESPONDER_ACTIVE_PRESS_IN","RESPONDER_ACTIVE_PRESS_OUT","RESPONDER_ACTIVE_LONG_PRESS_IN","RESPONDER_ACTIVE_LONG_PRESS_OUT","ERROR","IsActive","IsPressingIn","IsLongPressingIn","Signals","Transitions","DELAY","RESPONDER_GRANT","RESPONDER_RELEASE","RESPONDER_TERMINATED","ENTER_PRESS_RECT","LEAVE_PRESS_RECT","LONG_PRESS_DETECTED","TouchableMixin","touchableDelayTimeout","longPressDelayTimeout","pressOutDelayTimeout","touchable","touchState","responderID","rejectResponderTermination","touchableHandleStartShouldSetResponder","touchableLongPressCancelsPress","dispatchID","_receiveSignal","delayMS","touchableGetHighlightDelayMS","_handleDelay","longDelayMS","touchableGetLongPressDelayMS","_handleLongDelay","pressInLocation","positionOnActivate","dimensionsOnActivate","pressRectOffset","pressExpandLeft","pressExpandTop","pressExpandRight","pressExpandBottom","touchableGetHitSlop","_getDistanceBetweenPoints","_cancelLongPressDelayTimeout","touchableHandleFocus","onFocus","touchableHandleBlur","onBlur","_remeasureMetricsOnActivation","_handleQueryLayout","globalX","globalY","curState","_performSideEffectsForTransition","_isHighlight","_savePressInLocation","locationX","locationY","aX","aY","bX","bY","deltaX","deltaY","curIsHighlight","newIsHighlight","isInitialTransition","isActiveTransition","_startHighlight","_endHighlight","hasLongPressHandler","pressIsLongButStillCallOnPress","touchableGetPressOutDelayMS","withoutDefaultFocusAndBlur","TouchableMixinWithoutDefaultFocusAndBlur","TOUCH_TARGET_DEBUG","renderDebugView","PooledClass","twoArgumentPooler","getPooledFromElement","offsetWidth","offsetHeight","addPoolingTo","oneArgumentPooler","copyFieldsFrom","instancePool","standardReleaser","poolSize","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","a1","a2","threeArgumentPooler","a3","fourArgumentPooler","a4","_NativeSoundManager","SoundManager","playTouchSound","NativeSoundManager","_Pressability","_processColor","pressability","Pressability","_createPressabilityConfig","delayLongPress","delayPressIn","delayPressOut","minPressDuration","android_disableSound","onPressIn","_dispatchPressedStateChange","_dispatchHotspotUpdate","onPressMove","onPressOut","pressed","hostComponentRef","setPressed","_event$nativeEvent","hotspotUpdate","_this$state$pressabil","getEventHandlers","eventHandlersWithoutBlurAndFocus","getBackgroundProp","background","SelectableBackground","useForeground","configure","rippleRadius","attribute","SelectableBackgroundBorderless","Ripple","borderless","processedColor","canUseNativeForeground","_HoverState","_SoundManager","_Rect","isActiveSignal","isActivationSignal","isPressInSignal","isTerminalSignal","DEFAULT_PRESS_RECT_OFFSETS","_eventHandlers","_hoverInDelayTimeout","_hoverOutDelayTimeout","_isHovered","_longPressDelayTimeout","_pressDelayTimeout","_pressOutDelayTimeout","_responderID","_responderRegion","_touchState","_measureCallback","_cancelHoverInDelayTimeout","_cancelHoverOutDelayTimeout","_cancelPressDelayTimeout","_cancelPressOutDelayTimeout","_createEventHandlers","focusEventHandlers","responderEventHandlers","onStartShouldSetResponder_DEPRECATED","normalizeDelay","_handleLongPress","responderRegion","getTouchFromPressEvent","_touchActivatePosition","hypot","_isTouchWithinResponderRegion","onResponderTerminationRequest_DEPRECATED","mouseEventHandlers","onMouseEnter","isHoverEnabled","onHoverIn","delayHoverIn","onMouseLeave","onHoverOut","delayHoverOut","_Transitions$prevStat","_performTransitionSideEffects","isActivationTransiton","_measureResponderRegion","isPrevActive","isNextActive","_activate","_deactivate","_this$_config","_shouldLongPressCancelPress","_touchActivateTime","_this$_touchActivateT","pressDuration","_pressRectOffset$bott","_pressRectOffset$left","_pressRectOffset$righ","_pressRectOffset$top","normalizeRect","regionBottom","regionLeft","regionRight","regionTop","onLongPressShouldCancelPress_DEPRECATED","min","lastTouchTimestamp","disableHover","createSquare","rectOrSize","_Animated","_Easing","_flattenStyle2","anim","Value","_getChildStyleOpacityWithDefault","_opacityInactive","_opacityActive","toValue","timing","easing","inOut","quad","useNativeDriver","_this$props$activeOpa","_setOpacityTo","activeOpacity","_flattenStyle","hostRef","AnimatedMock","AnimatedImplementation","AnimatedEvent","attachNativeEvent","AnimatedInterpolation","AnimatedNode","AnimatedProps","AnimatedValue","AnimatedValueXY","createAnimatedComponent","emptyAnimation","_startNativeLoop","_isUsingNativeDriver","ValueXY","Interpolation","Node","decay","anyValue","finished","spring","subtract","divide","multiply","modulo","diffClamp","time","sequence","animations","parallel","stagger","loop","animation","iterations","argMapping","forkEvent","unforkEvent","__PropsOnlyForTests","NativeAnimatedHelper","shouldUseNativeDriver","viewRef","eventMappings","traverse","__makeNative","nativeEventPath","animatedValueTag","__getNativeTag","viewTag","mapping","API","addAnimatedEventToView","detach","removeAnimatedEventFromView","_listeners","_argMapping","__addListener","_callListeners","_attachedEvent","__isNative","recMapping","recEvt","mappingKey","_key4","AnimatedWithChildren","NativeAnimatedAPI","_flush","rootNode","animatedStyles","findAnimatedStyles","__getChildren","animatedStyle","_startingValue","_value","_offset","_animation","stopAnimation","_updateValue","setAnimatedNodeValue","setAnimatedNodeOffset","flattenAnimatedNodeOffset","extractAnimatedNodeOffset","stopTracking","__getValue","__isInteraction","createInteractionHandle","previousAnimation","clearInteractionHandle","_tracking","__detach","tracking","flush","linear","createInterpolation","outputRange","createInterpolationFromStringOutputRange","checkInfiniteRange","inputRange","checkValidInputRange","extrapolateLeft","extrapolate","extrapolateRight","range","findRange","interpolate","inputMin","inputMax","outputMin","outputMax","colorToRgba","stringShapeRegex","checkPattern","outputRanges","interpolations","shouldRound","pattern","_parent","_interpolation","parentValue","__addChild","__removeChild","transformDataType","__transformDataType","__createInterpolation","_uniqueId","__nativeTag","dropAnimatedNode","hasListeners","_startListeningToNativeValueUpdates","_stopListeningForNativeValueUpdates","__nativeAnimatedValueListener","__shouldUpdateListenersForNewNativeTag","startListeningToAnimatedNodeValue","nativeEventEmitter","_onAnimatedValueUpdateReceived","__callListeners","stopListeningToAnimatedNodeValue","_this$__nativeTag","assertNativeAnimatedModule","nativeTag","generateNewNodeTag","createAnimatedNode","__getNativeConfig","_NativeAnimatedModule","_NativeAnimatedTurboModule","NativeAnimatedModule","NativeAnimatedTurboModule","NativeAnimatedNonTurboModule","__nativeAnimatedNodeTagCount","__nativeAnimationIdCount","waitingForQueuedOperations","queueOperations","saveValueCallback","setWaitingForIdentifier","unsetWaitingForIdentifier","disableQueue","startOperationBatch","finishOperationBatch","queueOperation","connectAnimatedNodes","parentTag","childTag","disconnectAnimatedNodes","startAnimatingNode","animationId","nodeTag","endCallback","connectAnimatedNodeToView","disconnectAnimatedNodeFromView","restoreDefaultValues","eventMapping","animatedNodeTag","SUPPORTED_STYLES","SUPPORTED_TRANSFORMS","SUPPORTED_INTERPOLATION_PARAMS","_warnedMissingNativeAnimated","addWhitelistedStyleProp","addWhitelistedTransformProp","addWhitelistedInterpolationParam","param","validateStyles","validateTransform","configs","validateInterpolation","generateNewAnimationId","__attach","_step2","_iterator2","TaskQueue","_emitter","Events","interactionStart","interactionComplete","runAfterInteractions","task","tasks","_scheduleUpdate","run","_taskQueue","enqueueTasks","cancel","cancelTasks","_inc","_addInteractionSet","_deleteInteractionSet","setDeadline","_deadline","_interactionSet","onMoreTasks","_nextUpdateHandle","_processUpdate","interactionCount","nextInteractionCount","hasTasksToProcess","processNext","getEventLoopRunningTime","_onMoreTasks","_queueStack","popable","_getCurrentQueue","enqueue","tasksToCancel","gen","_genPromise","stackIdx","stackItem","AnimatedAddition","AnimatedDiffClamp","AnimatedDivision","AnimatedModulo","AnimatedMultiplication","AnimatedSubtraction","AnimatedTracking","DecayAnimation","SpringAnimation","TimingAnimation","_combineCallbacks","onComplete","maybeVectorAnim","configX","configY","_config$key","stopTogether","animatedValue","configuration","singleValue","singleConfig","track","animate","resetAnimation","doneCount","hasEnded","endResult","modulus","_ref$iterations","_ref$resetBeforeItera","resetBeforeIteration","isFinished","iterationsSoFar","restart","animatedEvent","__getHandler","__removeListener","_a","_b","_min","_max","_lastValue","_warnedAboutDivideByZero","_modulus","AnimatedStyle","_props","_callback","__getAnimatedValue","_animatedView","__disconnectAnimatedView","__connectAnimatedView","animatedView","nativeViewTag","propsConfig","AnimatedTransform","_style","updatedStyle","_walkStyleAndGetValues","_walkStyleAndGetAnimatedValues","styleConfig","styleKey","transforms","_transforms","transConfigs","animationClass","animationConfig","_animationClass","_animationConfig","_useNativeDriver","__getNativeAnimationConfig","valueIn","setOffset","flattenOffset","extractOffset","jointCallback","removeAllListeners","Animation","_config$deceleration","_config$isInteraction","_config$iterations","_deceleration","deceleration","_velocity","velocity","isInteraction","__iterations","fromValue","onUpdate","onEnd","__active","_fromValue","_onUpdate","__onEnd","_startTime","__startNativeAnimation","_animationFrame","exp","abs","__debouncedOnEnd","startNativeAnimationNextId","__nativeId","startNativeAnimationWaitId","SpringConfig","_config$overshootClam","_config$restDisplacem","_config$restSpeedThre","_config$velocity","_config$velocity2","_config$delay","_config$stiffness","_config$damping","_config$mass","_overshootClamping","overshootClamping","_restDisplacementThreshold","restDisplacementThreshold","_restSpeedThreshold","restSpeedThreshold","_initialVelocity","_lastVelocity","_toValue","_delay","stiffness","damping","mass","bounciness","speed","tension","friction","_stiffness","_damping","_mass","_config$bounciness","_config$speed","springConfig","fromBouncinessAndSpeed","_config$tension","_config$friction","fromOrigamiTensionAndFriction","_this$_initialVelocit","initialVelocity","_startPosition","_lastPosition","_lastTime","_frameTime","internalState","getInternalState","lastPosition","lastVelocity","lastTime","_timeout","deltaTime","v0","zeta","omega0","omega1","x0","envelope","isOvershooting","isVelocity","isDisplacement","stiffnessFromOrigamiValue","oValue","dampingFromOrigamiValue","normalize","startValue","endValue","projectNormal","linearInterpolation","b3Friction2","pow","b3Friction3","bouncyTension","bouncyFriction","_easeInOut","easeInOut","ease","_config$easing","_config$duration","_easing","_duration","numFrames","bezier","t2","x1","y1","x2","y2","_bezier","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","calcBezier","aT","getSlope","binarySubdivide","_aA","_aB","mX1","mX2","currentX","currentT","aA","aB","newtonRaphsonIterate","_aGuessT","aGuessT","currentSlope","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","guessForT","initialSlope","setAndForwardRef","animatedComponentNextId","AnimatedComponent","_React$Component","_inherits","_invokeAnimatedPropsCallbackOnMount","_eventDetachers","_animatedComponentId","_isFabric","_this$_component$_int","_this$_component$_int2","_this$_component$getN","_this$_component$getN2","_this$_component$getS","_this$_component$getS2","_component","getNativeScrollRef","getScrollResponder","_waitForUpdate","_markUpdateComplete","_animatedPropsCallback","_propsAnimated","_setComponentRef","getForwardedRef","setLocalRef","_prevComponent","getNode","_ref$constructor$name","_createClass","_this$_component","scrollableNode","getScrollableNode","_loop","oldPropsAnimated","__restoreDefaultValues","_props$nativeID","_ref$style","passthroughAnimatedPropExplicitValues","_ref2$style","passthruStyle","passthruProps","_excluded2","mergedStyle","_attachProps","setNativeView","_attachNativeEvents","_detachNativeEvents","FlatListWithEventThrottle","scrollEventThrottle","numColumns","_virtualizedListPairs","_captureRef","_listRef","_getItem","kk","item","_getItemCount","_keyExtractor","keyExtractor","it","_renderer","_this$props2","ListItemComponent","renderItem","columnWrapperStyle","virtualizedListRenderKey","renderer","_defineProperty2","separators","_checkProps","viewabilityConfigCallbackPairs","pair","viewabilityConfig","onViewableItemsChanged","_createOnViewableItemsChanged","scrollToEnd","scrollToIndex","scrollToItem","scrollToOffset","recordInteraction","flashScrollIndicators","getScrollRef","getItem","getItemCount","horizontal","_this$props3","changed","viewableItems","_pushMultiColumnViewable","_this$props4","_VirtualizedListContext","Batchinator","FillRateHelper","ViewabilityHelper","infoLog","computeWindowedRenderLimits","_usedIndexForKey","_keylessItemComponentName","_getScrollMetrics","_scrollMetrics","_getOutermostParentListRef","_isNestedWithSameOrientation","getOutermostParentListRef","_getNestedChildState","existingChildData","_nestedChildLists","_registerAsNestedChild","childList","childListsInCell","_cellKeysToChildListKeys","cellKey","describeNestedLists","_hasInteracted","_unregisterAsNestedChild","_onUpdateSeparators","_cellRefs","updateSeparatorProps","_averageCellLength","_frames","_footerLength","_hasDoneInitialScroll","_hasMore","_hasWarned","_headerLength","_hiPriInProgress","_highestMeasuredFrameIndex","_indicesToKeys","_offsetFromParentVirtualizedList","_prevParentOffset","contentLength","dOffset","dt","visibleLength","_scrollRef","_sentEndForContentLength","_totalCellLength","_totalCellsMeasured","_viewabilityTuples","_captureScrollRef","_defaultRenderScrollComponent","onRefresh","refreshing","refreshControl","progressViewOffset","_onCellUnmount","inLayout","_onLayout","measureLayoutRelativeToContainingList","_selectLength","layout","_scheduleCellsToRenderUpdate","_maybeCallOnEndReached","_onLayoutEmpty","_onLayoutFooter","_triggerRemeasureForChildListsInCell","_getFooterCellKey","_onLayoutHeader","_onContentSizeChange","initialScrollIndex","contentOffset","animated","_convertParentScrollMetrics","metrics","_onScroll","layoutMeasurement","contentSize","_selectOffset","_this$_convertParentS","perf","prevDt","_updateViewableItems","_fillRateHelper","activate","_computeBlankness","_onScrollBeginDrag","viewabilityHelper","onScrollBeginDrag","_onScrollEndDrag","onScrollEndDrag","_onMomentumScrollEnd","onMomentumScrollEnd","_updateCellsToRender","onEndReachedThreshold","isVirtualizationDisabled","_isVirtualizationDisabled","_this$_scrollMetrics","renderAhead","maxToRenderPerBatch","first","_getFrameMetricsApprox","cellKeyForIndex","childListKeys","someChildHasMore","childKey","hasMore","_createViewToken","isViewable","_getFrameMetrics","getItemLayout","windowSize","_updateCellsToRenderBatcher","updateCellsBatchingPeriod","initialNumToRender","storedState","getNestedChildState","_getListKey","veryLast","scrollTo","onScrollToIndexFailed","viewOffset","viewPosition","averageItemLength","highestMeasuredFrameIndex","_this$props5","itemCount","_this$context","listKey","_getCellKey","_this$context2","debugInfo","registerAsNestedChild","parentDebugInfo","unregisterAsNestedChild","dispose","deactivateAndFlush","stickyHeaderIndices","stickyIndicesFromProps","inversionStyle","prevCellKey","_this$props6","CellRendererComponent","ItemSeparatorComponent","stickyOffset","ListHeaderComponent","CellRenderer","fillRateHelper","onUpdateSeparators","_onCellLayout","onUnmount","parentProps","disableVirtualization","nestedContext","_this$props7","ListEmptyComponent","ListFooterComponent","_this$props8","inverted","horizontallyInverted","verticallyInverted","VirtualizedListCellContextProvider","ListHeaderComponentStyle","spacerKey","lastInitialIndex","_this$state","_pushCells","firstAfterInitial","insertedStickySpacer","initBlock","stickyBlock","leadSpace","trailSpace","firstSpace","lastFrame","endFrame","tailSpacerLength","ListFooterComponentStyle","scrollProps","invertStickyHeaders","VirtualizedListContextProvider","getScrollMetrics","_getDebugInfo","renderScrollComponent","_renderDebugOverlay","_this$props9","resetViewableIndices","hiPriInProgress","computeBlankness","_this4","scrollMetrics","framesInLayout","windowTop","frameLast","windowLen","visTop","visLen","debugOverlayBase","debugOverlay","debugOverlayFrame","debugOverlayFrameLast","debugOverlayFrameVis","_this$props10","onEndReached","_this$_scrollMetrics2","distanceFromEnd","threshold","_this$state2","_this$_scrollMetrics3","hiPri","scrollingThreshold","distTop","distBottom","schedule","_this5","VirtualizedListContext","separatorProps","highlighted","leadingItem","_this6","_separators","highlight","_this6$props","unhighlight","_this6$props2","updateProps","_this6$props3","_this$props11","_renderElement","itemSeparator","cellStyle","rowReverse","columnReverse","_ref3","_taskHandle","Info","any_blank_count","any_blank_ms","any_blank_speed_sum","mostly_blank_count","mostly_blank_ms","pixels_blank","pixels_sampled","pixels_scrolled","total_time_spent","sample_count","_minSampleCount","_sampleRate","getFrameMetrics","_anyBlankStartTime","_info","_mostlyBlankStartTime","_samplesStartTime","_resetData","scrollSpeed","blankTop","firstFrame","blankBottom","bottomEdge","blankness","sampleRate","minSampleCount","_PullToRefreshViewNativeComponent","RefreshLayoutConsts","SIZE","_lastNativeRefreshing","_onRefresh","_setNativeRef","_nativeRef","PullToRefreshCommands","setNativeRefreshing","progressBackgroundColor","_codegenNativeComponent","excludedPlatforms","AndroidScrollView","AndroidHorizontalScrollContentView","AndroidHorizontalScrollView","RCTScrollView","RCTScrollContentView","_AnimatedImplementation","_ScrollResponder","_ScrollViewStickyHeader","_StyleSheet","_View","_dismissKeyboard","_processDecelerationRate","_resolveAssetSource","_splitLayoutProps2","_setAndForwardRef","_ScrollViewContext","_ScrollViewNativeComponent","_ScrollContentViewNativeComponent","_AndroidHorizontalScrollViewNativeComponent","_AndroidHorizontalScrollContentViewNativeComponent","createScrollResponder","scrollResponder","ScrollResponder","ScrollViewNativeComponent","AndroidHorizontalScrollViewNativeComponent","AndroidHorizontalScrollContentViewNativeComponent","ScrollContentViewNativeComponent","_scrollResponder","_scrollAnimatedValue","_scrollAnimatedValueAttachment","_stickyHeaderRefs","_headerLayoutYs","layoutHeight","scrollResponderMixinGetInitialState","scrollViewRef","_scrollViewRef","getInnerViewNode","getInnerViewRef","scrollResponderZoomTo","scrollResponderScrollNativeHandleToKeyboard","deprecatedX","deprecatedAnimated","scrollResponderScrollTo","scrollResponderScrollToEnd","scrollResponderFlashScrollIndicators","_handleScroll","keyboardDismissMode","isTouching","scrollResponderHandleScroll","_handleLayout","_handleContentOnLayout","_e$nativeEvent$layout","_innerViewRef","_setInnerViewRef","innerViewRef","_this$props$contentOf","_this$props$contentOf2","_this$props$contentIn","_this$props$contentIn2","contentInset","currentContentInsetTop","nextContentInsetTop","_updateAnimatedNodeAttachment","childArray","_getKeyForIndex","layoutY","previousHeaderIndex","previousHeader","setNextHeaderY","ScrollViewClass","ScrollContentContainerViewClass","contentContainerStyle","contentContainerHorizontal","contentSizeChangeProps","indexOfIndex","nextIndex","StickyHeaderComponent","ScrollViewStickyHeader","_setStickyHeaderRef","nextHeaderLayoutY","_onStickyHeaderLayout","scrollAnimatedValue","scrollViewHeight","HORIZONTAL","VERTICAL","hasStickyHeaders","contentContainer","alwaysBounceHorizontal","alwaysBounceVertical","baseStyle","baseHorizontal","baseVertical","onMomentumScrollBegin","scrollResponderHandleMomentumScrollBegin","scrollResponderHandleMomentumScrollEnd","scrollResponderHandleResponderGrant","onResponderReject","scrollResponderHandleResponderReject","scrollResponderHandleResponderRelease","scrollResponderHandleTerminationRequest","scrollResponderHandleScrollBeginDrag","scrollResponderHandleScrollEndDrag","onScrollShouldSetResponder","scrollResponderHandleScrollShouldSetResponder","scrollResponderHandleStartShouldSetResponder","onStartShouldSetResponderCapture","scrollResponderHandleStartShouldSetResponderCapture","onTouchEnd","scrollResponderHandleTouchEnd","onTouchMove","scrollResponderHandleTouchMove","onTouchStart","scrollResponderHandleTouchStart","onTouchCancel","scrollResponderHandleTouchCancel","scrollBarThumbImage","sendMomentumEvents","snapToStart","snapToEnd","pagingEnabled","snapToInterval","snapToOffsets","android","decelerationRate","_splitLayoutProps","outer","inner","ScrollViewContext","ForwardedScrollView","_ScrollViewCommands","FrameRateLogger","_subscriptionKeyboardWillShow","_subscriptionKeyboardWillHide","_subscriptionKeyboardDidShow","_subscriptionKeyboardDidHide","lastMomentumScrollBeginTime","lastMomentumScrollEndTime","observedScrollSinceBecomingResponder","becameResponderWhileAnimating","disableScrollViewPanResponder","keyboardShouldPersistTaps","scrollResponderKeyboardIsDismissible","scrollResponderIsAnimating","keyboardNeverPersistTaps","hasFocusedTextInput","softKeyboardMayBeOpen","keyboardWillOpenTo","currentlyFocusedTextInput","onScrollResponderKeyboardDismissed","beginScroll","endScroll","scrollResponderGetScrollableNode","nativeScrollRef","rect","zoomToRect","nodeHandle","additionalOffset","preventNegativeScrollOffset","additionalScrollOffset","scrollResponderTextInputFocusError","scrollResponderInputMeasureAndScrollToKeyboard","innerRef","keyboardScreenY","endCoordinates","screenY","scrollOffsetY","scrollResponderKeyboardWillShow","scrollResponderKeyboardWillHide","scrollResponderKeyboardDidShow","scrollResponderKeyboardDidHide","onKeyboardWillShow","onKeyboardWillHide","onKeyboardDidShow","onKeyboardDidHide","_NativeFrameRateLogger","setGlobalOptions","NativeFrameRateLogger","optionsClone","reportStackTraces","setContext","_LayoutAnimation","_NativeKeyboardObserver","KeyboardEventEmitter","NativeKeyboardObserver","dismiss","dismissKeyboard","scheduleLayoutAnimation","configureNext","Types","onAnimationDidEnd","onAnimationDidFail","_global2","_global2$nativeFabric","FabricUIManager","Presets","easeInEaseOut","springDamping","easeIn","easeOut","keyboard","Properties","scaleXY","checkConfig","AnimatedView","measured","_translateY","_shouldRecreateTranslateY","_haveReceivedInitialZeroTranslateY","_debounceTimeout","isFabric","_animatedValueListenerId","_animatedValueListener","_timer","_this$_ref$_internalI","_this$_ref$_internalI2","stickStartPoint","collisionPoint","updateTranslateListener","fill","OUTER_PROPS","_registerGeneratedViewConfig","_ScrollViewViewConfig","ScrollViewViewConfig","topScrollToTop","automaticallyAdjustContentInsets","bounces","bouncesZoom","canCancelContentTouches","centerContent","contentInsetAdjustmentBehavior","directionalLockEnabled","disableIntervalMomentum","endFillColor","fadingEdgeLength","indicatorStyle","maintainVisibleContentPosition","maximumZoomScale","minimumZoomScale","nestedScrollEnabled","onScrollToTop","overScrollMode","persistentScrollbar","pinchGestureEnabled","scrollIndicatorInsets","scrollPerfTag","scrollToOverflowEnabled","scrollsToTop","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","snapToAlignment","zoomScale","AndroidHorizontalScrollViewViewConfig","viewAreaCoveragePercentThreshold","_timers","_viewableIndices","_viewableItems","scrollOffset","viewportHeight","renderRange","itemVisiblePercentThreshold","viewAreaMode","viewablePercentThreshold","viewableIndices","firstVisible","_isViewable","createViewToken","waitForInteraction","computeViewableItems","every","minimumViewTime","_onUpdateSync","viewableIndicesToCheck","prevItems","nextItems","viewable","_ref4","_ref5","itemLength","_isEntirelyVisible","pixels","_getPixelsVisible","visibleHeight","elementsThatOverlapOffsets","offsets","outLength","trailingOffset","newRangeCount","VirtualizeUtils","getFrameMetricsApprox","visibleBegin","visibleEnd","overscanLength","fillPreference","overscanBegin","overscanEnd","_elementsThatOverlapO","_elementsThatOverlapO2","overscanFirst","overscanLast","visible","newCellCount","maxNewCells","firstWillAddMore","firstShouldIncrement","lastWillAddMore","lastShouldIncrement","_NativeImageLoaderIOS","_ImageViewNativeComponent","DeprecatedImagePropType","ImageAnalyticsTagContext","sources","src","analyticTag","internal_analyticTag","getSize","failure","NativeImageLoaderIOS","_slicedToArray2","getSizeWithHeaders","sizes","prefetch","prefetchImage","queryCache","urls","_regenerator","ImageViewNativeComponent","_ImageViewViewConfig","ImageViewViewConfig","topLoadStart","topProgress","topError","topPartialLoad","topLoad","topLoadEnd","blurRadius","capInsets","defaultSource","defaultSrc","fadeDuration","loadingIndicatorSrc","onLoad","onLoadEnd","onLoadStart","onPartialLoad","onProgress","progressiveRenderingEnabled","resizeMethod","shouldNotifyLoadEvents","DeprecatedImageSourcePropType","ImageURISourcePropType","bundle","ImageSourcePropType","ScrollViewWithEventThrottle","SectionListWithEventThrottle","stickySectionHeadersEnabled","_wrapperListRef","scrollToLocation","listRef","getListRef","sections","itemIdx","section","sectionData","_subExtractor","_convertViewable","_onViewableItemsChanged","_assertThisInitialized","_renderItem","infoIndex","renderSectionHeader","renderSectionFooter","SeparatorComponent","_getSeparatorComponent","ItemWithSeparator","LeadingSeparatorComponent","SectionSeparatorComponent","leadingSection","onUpdateSeparator","_onUpdateSeparator","trailingItem","trailingSection","_computeState","itemIndex","sectionIndex","toIndexParams","childProps","isLastItemInList","isLastItemInSection","leadingSeparatorProps","_this3$props","leadingSeparator","_RCTDatePickerNativeComponent","_picker","_onChange","nativeTimeStamp","onDateChange","date","propsTimeStamp","DatePickerCommands","setNativeDate","initialDate","picker","datePickerIOS","locale","maximumDate","minimumDate","minuteInterval","timeZoneOffsetInMinutes","DefaultProps","UnimplementedView","unimplementedView","_viewRef","imageStyle","imageRef","_RCTInputAccessoryViewNativeComponent","interfaceOnly","_frame","_keyboardEvent","_initialFrameHeight","_onKeyboardChange","_updateBottomIfNecesarry","wasFrameNull","_this$_keyboardEvent","_relativeKeyboardHeight","keyboardFrame","keyboardY","keyboardVerticalOffset","behavior","bottomHeight","heightStyle","_RCTMaskedViewNativeComponent","_hasWarnedInvalidRenderMask","maskElement","otherViewProps","_NativeModalManager","_RCTModalHostViewNativeComponent","ModalEventEmitter","NativeModalManager","uniqueModalIdentifier","_confirmProps","_identifier","_eventSubscription","modalID","containerStyles","animationType","presentationStyle","innerChildren","hardwareAccelerated","onRequestClose","onShow","statusBarTranslucent","modal","_shouldSetResponder","supportedOrientations","onOrientationChange","VirtualizedListContextResetter","side","isRTL","_container","_RootTag","_propTypes","AppContainer","inspector","mainKey","_subscription","innerView","appContainer","_mainRef","WrapperComponent","initialProps","fabric","showArchitectureIndicator","createRootTag","_NativeI18nManager","i18nConstants","NativeI18nManager","doLeftAndRightSwapInRTL","allowRTL","shouldAllow","forceRTL","shouldForce","swapLeftAndRightInRTL","flipStyles","PickerItem","MODE_DIALOG","MODE_DROPDOWN","Item","_RCTPickerNativeComponent","selectedIndex","onValueChange","_lastNativeValue","pickerIOS","itemStyle","PickerCommands","setNativeSelectedIndex","selectedValue","processedTextColor","textColor","_RCTPickerViewConfig","RCTPickerNativeComponent","RCTPickerViewConfig","_useAndroidRippleForView","_usePressability","usePressState","forcePressed","_useState","_useState2","MemoedPressable","android_ripple","testOnly_pressed","unstable_pressDelay","android_rippleConfig","_usePressState","_usePressState2","restPropsWithDefaults","viewProps","eventHandlers","rippleConfig","radius","_event$nativeEvent$lo","_event$nativeEvent$lo2","_event$nativeEvent$lo3","_event$nativeEvent$lo4","pressabilityRef","_react","_RCTProgressViewNativeComponent","progressView","ProgressViewIOSWithRef","exported","emulateUnlessSupported","localProps","RCTSafeAreaViewNativeComponent","_RCTSegmentedControlNativeComponent","segmentedControl","SegmentedControlIOSWithRef","_SliderNativeComponent","SliderWithRef","slider","_props$disabled","_props$value","_props$minimumValue","minimumValue","_props$maximumValue","maximumValue","_props$step","onSlidingComplete","onValueChangeEvent","onChangeEvent","onSlidingCompleteEvent","_NativeStatusBarManagerIOS","createStackEntry","barStyle","translucent","hidden","showHideTransition","networkActivityIndicatorVisible","_stackEntry","pushStackEntry","popStackEntry","replaceStackEntry","_defaultProps","NativeStatusBarManagerIOS","setHidden","setStyle","setNetworkActivityIndicatorVisible","_propsStack","_updatePropsStack","newEntry","_updateImmediate","_currentValues","currentHeight","propsStack","defaultValues","mergedProps","setColor","setTranslucent","statusBarStyle","getHeight","withAnimation","_AndroidSwitchNativeComponent","_SwitchNativeComponent","_handleChange","_handleSwitchNativeComponentRef","_nativeSwitchRef","ios_backgroundColor","thumbColor","trackColor","trackColorForFalse","false","trackColorForTrue","true","_props$accessibilityR","platformProps","on","thumbTintColor","trackTintColor","returnsFalse","returnsTrue","_props$accessibilityR2","onTintColor","AndroidSwitchCommands","setNativeValue","SwitchCommands","AndroidTextInputCommands","RCTSinglelineTextInputView","RCTSinglelineTextInputNativeCommands","RCTMultilineTextInputView","RCTMultilineTextInputNativeCommands","DeprecatedTextInputPropTypes","emptyFunctionThatReturnsTrue","InternalTextInput","_props$selection$end","_props$blurOnSubmit","viewCommands","inputRef","setMostRecentEventCount","_useState3","_useState4","lastNativeText","setLastNativeText","_useState5","_useState6","lastNativeSelectionState","setLastNativeSelection","lastNativeSelection","setTextAndSelection","isFocused","getNativeRef","_selection$start","_selection","_selection$end","_selection2","nativeUpdate","inputRefValue","textInput","additionalTouchableProps","RCTTextInputView","multilineInput","dataDetectorTypes","onChangeText","eventCount","onSelectionChangeShouldSetResponder","ExportedForwardRef","State","DeprecatedViewPropTypes","DataDetectorTypes","autoFocus","onEndEditing","onSubmitEditing","DeprecatedAccessibilityRoles","onMoveShouldSetResponder","onMoveShouldSetResponderCapture","PASSTHROUGH_PROPS","createPressabilityConfig","elementProps","_isMounted","extraStyles","_createExtraStyles","_hideUnderlay","_showUnderlay","_this2$props$delayPre","_hideTimeout","underlay","underlayColor","_hasPressHandler","onShowUnderlay","onHideUnderlay","_this$state$extraStyl","_this$state$extraStyl2","_NativeActionSheetManager","showActionSheetWithOptions","RCTActionSheetManager","destructiveButtonIndex","remainingOptions","destructiveButtonIndices","processedTintColor","showShareActionSheetWithOptions","failureCallback","successCallback","_NativeAppearance","NativeAppearance","newAppearance","colorScheme","getColorScheme","nativeColorScheme","addChangeListener","removeChangeListener","wrapperComponentProvider","_createPerformanceLogger","_NativeHeadlessJsTaskSupport","_HeadlessJsTaskError","BugReporting","SceneTracker","renderApplication","runnables","runCount","taskProviders","taskCancelProviders","componentProviderInstrumentationHook","setWrapperComponentProvider","provider","enableArchitectureIndicator","registerConfig","registerRunnable","appKey","componentProvider","scopedPerformanceLogger","appParameters","registerSection","getAppKeys","getSectionKeys","getSections","getRunnable","getRegistry","setComponentProviderInstrumentationHook","runApplication","addSource","setActiveScene","unmountApplicationComponentAtRootTag","registerHeadlessTask","taskKey","taskProvider","registerCancellableHeadlessTask","taskCancelProvider","startHeadlessTask","taskId","NativeHeadlessJsTaskSupport","notifyTaskFinished","HeadlessJsTaskError","notifyTaskRetry","retryPosted","cancelHeadlessTask","_NativeRedBox","_NativeBugReporting","defaultExtras","addFileSource","collectExtraData","_redboxSubscription","_addSource","_extraSources","_fileSources","_maybeInit","fileData","NativeBugReporting","setExtraData","NativeRedBox","files","_activeScene","scene","getActiveScene","addActiveSceneChangedListener","_GlobalPerformanceLogger","_PerformanceLoggerContext","RootComponent","isLogBox","renderable","internal_excludeLogBox","setExtra","PerformanceLoggerContext","exitApp","_eventName","_handler","ReactFabric","_ReactNativePrivateInterface","RN$stopSurface","stopSurface","pluginName$jscomp$inline_221","injectedNamesToPlugins$jscomp$inline_219","isOrderingDirty$jscomp$inline_220","pluginModule$jscomp$inline_222","getInstanceFromInstance","instanceHandle","currentProps","child$0","propKey$2","shim$1","_nativeFabricUIManage","createNode","cloneNode","cloneNodeWithNewChildren","cloneNodeWithNewChildrenAndProps","cloneNodeWithNewProps","createChildNodeSet","createChildSet","appendChildNode","appendChild","appendChildNodeToSet","appendChildToSet","completeRoot","registerEventHandler","fabricMeasure","fabricMeasureInWindow","fabricMeasureLayout","ReactFabricHostComponent","internalInstanceHandle","createTextInstance","hostContext","cloneHiddenInstance","_workInProgressVersionSecondary","appendAllChildrenToContainer","containerChildSet","needsVisibilityToggle","primaryChildParent","portalOrRoot","newChildSet","recyclableInstance","index$5","index$4","index$9","index$10","error$87","instance$jscomp$0","effect$93","create$97","error$98","devToolsConfig$jscomp$inline_865","internals$jscomp$inline_1054","hook$jscomp$inline_1055","_logError","_NativeAppState","NativeAppState","_supportedEvents","handlers","initialAppState","eventUpdated","appStateData","app_state","getCurrentAppState","logError","hasFocus","throwMissingNativeModule","MissingNativeAppStateShim","AppStateInstance","_NativeAsyncLocalStorage","_NativeAsyncSQLiteDBStorage","RCTAsyncStorage","NativeAsyncSQLiteDBStorage","NativeAsyncLocalStorage","_getRequests","_getKeys","_immediate","multiGet","errs","convertErrors","setItem","multiSet","removeItem","multiRemove","mergeItem","multiMerge","convertError","getAllKeys","flushGetRequests","getRequests","getKeys","reqLength","requestResult","getRequest","keyIndex","promiseResult","keyValuePairs","_NativeClipboard","getString","NativeClipboard","setString","_regeneratorRuntime","dateSetAction","dismissedAction","_NativeDevSettings","NativeDevSettings","_menuItems","oldHandler","addMenuItem","reloadWithReason","reload","onFastRefresh","NoopDevSettings","_NativeImagePickerIOS","canRecordVideos","NativeImagePickerIOS","canUseCamera","openCameraDialog","cancelCallback","newConfig","videoMode","unmirrorFrontFacingCamera","openSelectDialog","showImages","showVideos","removePendingVideo","clearAllPendingVideos","_InteractionManager","_NativeLinkingManager","_NativeIntentAndroid","_nullthrows","NativeLinkingManager","_validateURL","NativeIntentAndroid","openURL","canOpenURL","openSettings","getInitialURL","sendIntent","ignoreLogs","patterns","ignoreAllLogs","install","uninstall","TouchHistoryMath","currentCentroidXOfTouchesChangedAfter","currentCentroidYOfTouchesChangedAfter","previousCentroidXOfTouchesChangedAfter","previousCentroidYOfTouchesChangedAfter","currentCentroidX","currentCentroidY","_initializeGestureState","gestureState","moveX","moveY","y0","dx","dy","_accountsForMovesUpTo","_updateGestureStateOnMove","movedAfter","prevX","prevY","nextDX","nextDY","interactionState","stateID","panHandlers","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onStartShouldSetPanResponderCapture","onMoveShouldSetPanResponderCapture","onPanResponderGrant","onShouldBlockNativeResponder","onPanResponderReject","onPanResponderRelease","onResponderStart","onPanResponderStart","onPanResponderMove","onResponderEnd","onPanResponderEnd","onPanResponderTerminate","onPanResponderTerminationRequest","getInteractionHandle","centroidDimension","touchesChangedAfter","isXAxis","ofCurrent","oneTouchData","touchTrack","noCentroid","_NativePermissionsAndroid","PERMISSION_REQUEST_RESULT","GRANTED","DENIED","NEVER_ASK_AGAIN","PERMISSIONS","READ_CALENDAR","WRITE_CALENDAR","CAMERA","READ_CONTACTS","WRITE_CONTACTS","GET_ACCOUNTS","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","ACCESS_BACKGROUND_LOCATION","RECORD_AUDIO","READ_PHONE_STATE","CALL_PHONE","READ_CALL_LOG","WRITE_CALL_LOG","ADD_VOICEMAIL","USE_SIP","PROCESS_OUTGOING_CALLS","BODY_SENSORS","SEND_SMS","RECEIVE_SMS","READ_SMS","RECEIVE_WAP_PUSH","RECEIVE_MMS","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","PermissionsAndroidInstance","RESULTS","permission","rationale","_context2","NativePermissionsAndroid","shouldShowRequestPermissionRationale","requestPermission","permissions","_NativePushNotificationManagerIOS","PushNotificationEmitter","NativePushNotificationManagerIOS","_notifHandlers","nativeNotif","_remoteNotificationCompleteCallbackCalled","_isRemote","remote","_notificationId","notificationId","notifKey","notifVal","_alert","_sound","sound","_badgeCount","badge","_category","category","_contentAvailable","_threadID","applicationIconBadgeNumber","soundName","alertBody","userInfo","fetchResult","onFinishRemoteNotification","details","presentLocalNotification","scheduleLocalNotification","cancelAllLocalNotifications","removeAllDeliveredNotifications","getDeliveredNotifications","identifiers","removeDeliveredNotifications","setApplicationIconBadgeNumber","getApplicationIconBadgeNumber","cancelLocalNotifications","getScheduledLocalNotifications","notifData","registrationInfo","deviceToken","requestedPermissions","requestPermissions","abandonPermissions","checkPermissions","getInitialNotification","notification","FetchResult","NewData","NoData","ResultFailed","_NativeSettingsManager","_settings","NativeSettingsManager","settings","setValues","watchKeys","sid","clearWatch","watchId","_sendObservations","NativeActionSheetManager","subject","excludedActivityTypes","activityType","sharedAction","show","showWithGravity","gravity","showWithGravityAndOffset","xOffset","yOffset","getCurrentValue","_useSubscription","useSubscription","_Appearance","setDimensions","handleChange","_Dimensions","BOM","BULLET","BULLET_SP","MIDDOT","MIDDOT_SP","MIDDOT_KATAKANA","MDASH","MDASH_SP","NDASH","NDASH_SP","NBSP","PIZZA","TRIANGLE_LEFT","TRIANGLE_RIGHT","_NativeVibration","_vibrating","_id","_default_vibration_length","vibrateByPattern","NativeVibration","vibrate","vibrateScheduler","_React$Component2","_PlatformColorValueTypes","DynamicColorIOSPrivate","_page","_current","_hooks","_exportNames","_emmiter","_routerRn","_compute","instances","Page","pageConfig","pageId","_lodash","camelCase","compId","isClassComponent","PageContext","EMPTY_OBJ","ScreenPage","injectPageInstance","Screen","_inherits2","PageScreen","refreshStyle","globalAny","__taroRefreshStyle","appState","screenRef","pageScrollView","setPageInstance","_createClass2","navigation","nextAppState","onAppStateChange","onResize","unSubscribleTabPress","onTabItemTap","unSubscribleFocus","onFocusChange","unSubscribleBlur","onBlurChange","eventCenter","refresh","pullDownRefresh","scrollTop","pageToScroll","setRefreshStyle","off","_ref6","pageRef","_this$props$route","route","_this$props$route$par","_this$props$route$key","onReady","page","_utils","safeExecute","componentDidShow","onHide","componentDidHide","onPullDownRefresh","onReachBottom","onPageScroll","onUnload","getOpenerEventChannel","EventChannel","pageChannel","setPageObject","Current","router","_ref7","_ref7$path","_ref7$scrollTop","_c","handleHooksEvent","_f","_g","_h","_ref8","_pageConfig$onReachBo","onReachBottomDistance","_e$nativeEvent","getTabItem","itemPath","_windowOptions$enable","enablePullDownRefresh","titleColor","PageProvider","currentPath","bgColor","windowOptions","isEnablePullDown","refreshPullDown","createPage","_pageConfig$disableSc","disableScroll","createScrollPage","currentPage","fail","errMsg","trigger","_options$scrollTop","successHandler","errorHandler","textStyle","pages","routes","getCurrentRoute","pagesObj","_EventChannel","incrementId","getLifecyle","lifecyle","lifecycle","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsBreak","rsCombo","rsRegional","rsSurrPair","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","\\","'","\n","\r","
","
","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","asciiToArray","asciiWords","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseSortBy","comparer","baseTimes","baseToPairs","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","escapeHtmlChar","&","<",">","\"","escapeStringChar","chr","hasUnicode","hasUnicodeWord","iteratorToArray","mapToArray","overArg","replaceHolders","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","unescapeHtmlChar","&amp;","&lt;","&gt;","&quot;","&#39;","lastIndex","unicodeWords","runInContext","uid","defaults","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","skip","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","getAllKeysIn","baseConforms","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","computed","valuesIndex","templateSettings","evaluate","variable","imports","getMapData","pairs","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFill","toInteger","toLength","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","getRawTag","baseGt","other","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","baseInverter","baseInvoke","baseIsArguments","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","basePullAt","indexes","previous","baseUnset","baseRange","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","copy","cloneArrayBuffer","cloneDataView","dataView","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","isIterateeCall","createBind","isBind","Ctor","createCtor","createCaseFirst","trailing","createCompounder","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","createPartial","createRange","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrLength","arrStacked","othStacked","arrValue","othValue","compared","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","otherFunc","isOwn","stubArray","getView","getWrapDetails","hasPath","hasFunc","isLength","regexp","insertWrapDetails","ctorString","isMaskable","stubFalse","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","reference","updateWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeWaiting","shouldInvoke","timeSinceLastCall","trailingEdge","debounced","isInvoking","defer","memoized","Cache","negate","overArgs","funcsLength","partial","partialRight","rearg","gt","gte","isInteger","isString","lt","lte","remainder","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","omit","pickBy","toPairs","toPairsIn","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","rangeRight","augend","addend","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","properties","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","mapValues","matches","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","limit","spread","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNil","isSafeInteger","isWeakMap","isWeakSet","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduceRight","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","template","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","newEnd","uniqueId","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","_router","_provider","_rootNavigation","_tabBar","_navigationBar","createTabNavigate","createStackNavigate","_native","_stack","_bottomTabs","_TabBar","_HeadTitle","_BackButton","getTabNames","tabNames","getPageList","pageList","getTabItemOptions","tabBarLabel","getTabItemConfig","tabBarBadge","tabBarVisible","getTabVisible","tabBarTestID","getHeaderView","HeadTitle","headerProps","getStackOptions","headColor","navigationBarTextStyle","navigationBarBackgroundColor","defaultOptions","headerShown","navigationStyle","headerTitle","headerStyle","headerTintColor","cardStyleInterpolator","CardStyleInterpolators","forHorizontalIOS","headerBackTitleVisible","headerPressColorAndroid","headerTitleAlign","headerBackImage","BackButton","rnConfig","screenOptions","tabName","tabItem","getInitRouteName","initPath","rn","handleUrl","pageName","initialRouteName","getInitTabRoute","initTabName","getInitParams","initParams","createTabStack","Tab","createBottomTabNavigator","tabList","userOptions","custom","tabItemOptions","setTabConfig","tabPage","tabNode","initialParams","userTabBarOptions","tabBarOptions","backBehavior","activeTintColor","selectedColor","inactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","tabProps","tabInitRouteName","getTabInitRoute","Navigator","createTabBar","CustomTabBar","getLinkingConfig","prefixes","linking","linkPrefix","screens","tabScreen","tabs","tabPath","tabNav","screeList","createStackNavigator","screenNode","stackProps","tabStack","getCurrentOptions","NavigationContainer","navigationRef","screenChild","stackNav","navParams","navigateConfig","_core","_NavigationContainer","_useBackButton","_useScrollToTop","_DefaultTheme","_DarkTheme","_ThemeProvider","_useTheme","_Link","_useLinking","_useLinkTo","_useLinkProps","_useLinkBuilder","_ServerContainer","_types","_routers","_BaseNavigationContainer","_createNavigatorFactory","_NavigationHelpersContext","_NavigationContext","_NavigationRouteContext","_CurrentRenderContext","_useNavigationBuilder","_useNavigation","_useRoute","_useFocusEffect","_useIsFocused","_useNavigationState","_getStateFromPath","_getPathFromState","_getActionFromState","_getFocusedRouteNameFromRoute","CommonActions","_BaseRouter","_StackRouter","_TabRouter","_DrawerRouter","_nonSecure","getStateForAction","routeNames","stale","nanoid","shouldActionChangeFocus","alphabet","BaseRouter","getInitialState","routeParamList","getRehydratedState","partialState","getStateForRouteNamesChange","getStateForRouteFocus","_action$payload","_action$payload$key","getId","routeGetIdList","_toConsumableArray2","_action$payload$key2","actionCreators","StackActions","popToTop","_ref$backBehavior","history","getRouteHistory","_state$routes","_state$index","_state$history$filter","_state$history","changeIndex","previousKey","TabActions","jumpTo","initialRouteIndex","currentKey","openByDefault","openDrawer","isDrawerOpen","closeDrawer","DrawerActions","toggleDrawer","_EnsureSingleNavigator","_UnhandledActionContext","_NavigationBuilderContext","_NavigationStateContext","_useScheduleUpdate","_useChildListeners2","_useKeyedChildListeners","_useOptionsGetters2","_useEventEmitter","_useSyncState3","NOT_INITIALIZED_ERROR","getPartialState","onStateChange","onUnhandledAction","independent","NavigationStateContext","isDefault","_useSyncState","_useSyncState2","getState","flushUpdates","isFirstMountRef","navigatorKeyRef","getKey","setKey","_useChildListeners","_useKeyedChildListene","keyedListeners","addKeyedListener","canGoBack","_listeners$focus$","handled","resetRoot","_state$key","getRootState","_useOptionsGetters","addOptionsGetter","dangerouslyGetState","dangerouslyGetParent","onDispatchAction","lastEmittedOptionsRef","onOptionsChange","builderContext","scheduleContext","isInitialRef","getIsInitial","onStateChangeRef","defaultOnUnhandledAction","ScheduleUpdateContext","MULTIPLE_NAVIGATOR_ERROR","SingleNavigatorContext","MISSING_CONTEXT_ERROR","_React$useContext","beforeRemove","optionsRef","optionsGettersFromChildRef","NavigationBuilderContext","parentAddOptionsGetter","optionsChangeListener","_navigation$isFocused","_optionsRef$current","hasChildren","getOptionsFromListener","_optionsGettersFromCh","_optionsGettersFromCh2","_navigation$isFocused2","optionsFromListener","getter","listen","listenRef","_items$target","canPreventDefault","stateRef","UNINTIALIZED_STATE","isSchedulingRef","isMountedRef","_React$useState","_React$useState2","trackingState","setTrackingState","checkSerializableWithoutCircularReference","serializable","childResult","_Screen","createRouter","navigatorKey","_useRegisterNavigator","NavigationRouteContext","_extends3","routeConfigs","getRouteConfigsFromChildren","_route$params","_route$params2","_route$params3","initialParamsFromParams","isStateValid","isStateInitialized","getCurrentState","_React$useMemo","_route$params4","_route$params$state","_route$params5","_React$useMemo2","initializedState","isFirstStateInitialization","_isArrayEqual","previousNestedParamsRef","previousParams","navigate","updatedState","initializedStateRef","_route","_route2","descriptors","_useFocusEvents","childListeners","onAction","_useOnAction","actionListeners","beforeRemoveListeners","routerConfigOptions","onRouteFocus","_useOnRouteFocus","_useNavigationHelpers","_useFocusedListenersChildrenAdapter","focusedListeners","_useOnGetState","getStateListeners","_useDescriptors","defaultScreenOptions","_useCurrentRender","NavigationContent","_useComponent","NavigationHelpersContext","PrivateValueStore","_child$type","_child$props","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isForwardRef","isFragment","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","propsRef","setOptions","navigations","_useNavigationCache","_useRouteCache","routeOptions","mergedOptions","clearOptions","_route$key","_toPropertyKey","_SceneView","routeState","currentRoute","setCurrentState","ScreenComponent","getComponent","_StaticContainer","prevPropKeys","nextPropKeys","_prevPropKeys","helpers","SUPPRESS_STATE_ACCESS_WARNING","UnhandledActionContext","parentNavigationHelpers","NavigationContext","op","goBack","onActionParent","onRouteFocusParent","addListenerParent","routerConfigOptionsRef","visitedNavigators","isPrevented","_useOnPreventRemove","shouldPreventRemove","shouldFocus","routeKey","VISITED_ROUTE_KEYS","currentRoutes","nextRoutes","_action$VISITED_ROUTE","nextRouteKeys","removedRoutes","visitedRouteKeys","beforeRemoveAction","_beforeRemoveListener","lastFocusedKeyRef","currentFocusedKey","lastFocusedKey","sourceRouteKey","_listener2","_getStateListeners$ro","childState","CurrentRenderContext","cleanup","unsubscribeFocus","unsubscribeBlur","setIsFocused","valueToReturn","selector","setResult","selectorRef","_checkLegacyPathConfi","_checkLegacyPathConfig","_checkLegacyPathConfi2","legacy","compatOptions","initialRoutes","parentScreens","segment","parseQueryParams","createNestedStateObject","createNormalizedConfigs","localeCompare","aParts","bParts","aWildcardIndex","bWildcardIndex","_extends4","_configs$find","_matchAgainstConfigs","matchAgainstConfigs","regex","remainingPath","_matchAgainstConfigs2","segments","_current2","findFocusedRoute","findParseConfigForRoute","_escapeStringRegexp","queryString","joinPaths","_config$pattern","matchedParams","_config$path","_config$parse","_ret","routeConfig","initials","parentPattern","createConfigItem","nestedConfig","_pattern2","routeName","flatConfig","findInitialRoute","_step3","_iterator3","sameParents","createStateObject","initialRoute","nestedState","nestedStateIndex","_current4","_current3","parseConfig","query","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encoderForArrayFormat","arrayFormat","skipNull","skipEmptyString","encode","arrayFormatSeparator","parserForArrayFormat","isEncodedArray","validateArrayFormatSeparator","strict","keysSorter","removeHash","hashStart","getHash","extract","queryStart","parseValue","parseNumbers","parseBooleans","formatter","_splitOnFirst","_splitOnFirst2","_i2","_Object$keys2","shouldFilter","objectCopy","_i3","_Object$keys3","parseUrl","_splitOnFirst3","_splitOnFirst4","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","_exports$parseUrl","exclude","exclusionFilter","singleMatcher","multiMatcher","decodeComponents","components","tokens","customDecodeURIComponent","replaceMap","%FE%FF","%FF%FE","encodedURI","separatorIndex","allParams","focusedParams","focusedRoute","getActiveRoute","currentOptions","nestedRouteNames","hasNext","_currentOptions$route","_pattern","currentParams","fromEntries","getParamName","nextRoute","_pattern3","_normalizedConfig$scr","normalizedConfig","createNormalizedConfigItem","_config2","_config2$screens","_LinkingContext","_useThenable3","_useLinking2","_useDocumentTitle","_ref$theme","theme","DefaultTheme","_ref$fallback","documentTitle","isLinkingEnabled","refContainer","_useThenable","_useThenable2","isResolved","linkingContext","isReady","onReadyRef","BaseNavigationContainer","_ThemeContext","ThemeContext","primary","card","border","LinkingContext","_React$useState3","_React$useState4","resolved","cancelled","_ref$enabled","_ref$getInitialURL","_ref$subscribe","_ref$getStateFromPath","getStateFromPath","getStateFromPathDefault","_ref$getActionFromSta","getActionFromState","getActionFromStateDefault","isUsingLinking","enabledRef","prefixesRef","configRef","getInitialURLRef","getStateFromPathRef","getActionFromStateRef","_extractPathFromURL","thenable","onfulfilled","rootState","_prefix$match$","_prefix$match","host","prefixRegex","normalizedURL","useNavigation","useRoute","unsubscribe","isFirst","scrollable","scrollToTop","web","linkTo","_e$currentTarget","shouldHandle","metaKey","altKey","ctrlKey","shiftKey","getRootStateForNavigate","getPathFromState","parentState","_ServerContext","HeaderStyleInterpolators","TransitionSpecs","TransitionPresets","_createStackNavigator","_StackView","_Header","_HeaderTitle","_HeaderBackButton","_HeaderBackground","_CardAnimationContext","_HeaderHeightContext","_GestureHandlerRefContext","_useCardAnimation","_useHeaderHeight","_useGestureHandlerRef","Assets","layouts","translateFocused","translateUnfocused","overlayOpacity","cardStyle","overlayStyle","shadowStyle","insets","isLandscape","topOffset","statusBarHeight","_reactNativeIphoneXHelper","isIphoneX","closing","_conditional","containerTranslateY","cardTranslateYFocused","cardTranslateYUnfocused","containerStyle","safe","ifIphoneX","dimen","iphoneXStyle","regularStyle","main","leftLabelOffset","leftLabel","titleLeftOffset","rightOffset","leftButtonStyle","leftLabelStyle","rightButtonStyle","titleStyle","backgroundStyle","FadeInFromBottomAndroidSpec","poly","FadeOutToBottomAndroidSpec","in","RevealFromBottomAndroidSpec","ScaleFromCenterAndroidSpec","_CardStyleInterpolators","_HeaderStyleInterpolators","_TransitionSpecs","SlideFromRightIOS","gestureDirection","transitionSpec","TransitionIOSSpec","headerStyleInterpolator","forFade","ModalSlideFromBottomIOS","forVerticalIOS","ModalPresentationIOS","forModalPresentationIOS","FadeFromBottomAndroid","forFadeFromBottomAndroid","RevealFromBottomAndroid","forRevealFromBottomAndroid","ScaleFromCenterAndroid","forScaleFromCenterAndroid","DefaultTransition","ModalTransition","createNavigatorFactory","gestureEnabled","animationEnabled","useNavigationBuilder","StackRouter","_reactNativeSafeAreaContext","_GestureHandler","_CardStack","_KeyboardManager","_HeaderContainer","_SafeAreaProviderCompat","_HeaderShownContext","GestureHandlerWrapper","GestureHandlerRootView","StackView","previousRoutes","previousDescriptors","openingRouteKeys","closingRouteKeys","replacingRouteKeys","getGesturesEnabled","_descriptor$options","getPreviousRoute","renderScene","renderHeader","handleOpenRoute","handleCloseRoute","handleTransitionStart","handleTransitionEnd","handleGestureStart","handleGestureEnd","_ref9","handleGestureCancel","_ref10","keyboardHandlingEnabled","_this$props3$mode","_this$props3$headerMo","headerMode","_this$state3","SafeAreaConsumer","isParentHeaderShown","onOpenRoute","onCloseRoute","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","_descriptor$options$a","previousFocusedRoute","nextFocusedRoute","isAnimationEnabled","animationTypeForReplace","_routes2","_ref11","_SafeAreaContext","_SafeAreaView","_InitialWindow","_SafeArea","_initialMetrics$inset","_initialMetrics$frame","initialMetrics","initialSafeAreaInsets","parentInsets","SafeAreaInsetsContext","parentFrame","SafeAreaFrameContext","setInsets","setFrame","onInsetsChange","nextFrame","nextInsets","_NativeSafeAreaProvider","WrappedComponent","useSafeAreaInsets","safeArea","SafeAreaContext","RNCSafeAreaProviderConfig","initialWindowMetrics","initialWindowSafeAreaInsets","_GestureHandlerNative","gestureRef","_reactNativeGestureHandler","PanGestureHandler","_Directions","_State","_gestureHandlerRootHOC","_GestureHandlerRootView","_gestureHandlers","_createNativeWrapper","_NativeViewGestureHandler","_GestureButtons","_touchables","_GestureComponents","_Swipeable","_DrawerLayout","RIGHT","LEFT","UP","DOWN","UNDETERMINED","FAILED","BEGAN","CANCELLED","ACTIVE","END","_hoistNonReactStatics","reactIs","REACT_STATICS","getDefaultProps","mixins","KNOWN_STATICS","callee","MEMO_STATICS","TYPE_STATICS","getStatics","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_createHandler","_PlatformConstants","TapGestureHandler","allowedProps","FlingGestureHandler","ForceTouchFallback","forceTouchAvailable","ForceTouchGestureHandler","PlatformConstants","LongPressGestureHandler","transformPanGestureHandlerProps","minDeltaX","activeOffsetXStart","activeOffsetXEnd","maxDeltaX","failOffsetXStart","failOffsetXEnd","minOffsetX","minDeltaY","activeOffsetYStart","activeOffsetYEnd","maxDeltaY","failOffsetYStart","failOffsetYEnd","minOffsetY","activeOffsetX","activeOffsetY","failOffsetX","failOffsetY","transformProps","customNativeProps","PinchGestureHandler","RotationGestureHandler","_ref2$allowedProps","_ref2$config","_ref2$customNativePro","updateEnqueued","handlerTag","onGestureEvent","onHandlerStateChange","stateEventName","stateToPropMappings","eventHandler","refHandler","viewNode","createGestureHandler","RNGestureHandlerModule","attachGestureHandler","newViewTag","updateGestureHandler","handlerIDToTag","hasUnresolvedRefs","filterConfig","dropGestureHandler","handlerID","_areEqual","updates","gestureEventHandler","gestureStateEventHandler","grandChildren","_RNGestureHandlerModule","_NativeModules$UIMana","customGHEventsConfig","UIManagerConstants","_UIManager$getViewMan","_UIManager$setJSRespo","oldSetJSResponder","_UIManager$clearJSRes","oldClearJSResponder","handleSetJSResponder","handleClearJSResponder","validProps","transformIntoHandlerTags","handlerIDs","_handlerID$current","_stateToPropMappings","aStackPool","bStackPool","aStack","bStack","objToStr","className","ignoreCase","ComponentWrapper","gestureHandlerProps","allowedKeys","NATIVE_WRAPPER_PROPS_FILTER","_gestureHandlerRef","NativeViewGestureHandler","nativeViewProps","_GestureHandlerButton","RawButton","GestureHandlerButton","shouldCancelWhenOutside","shouldActivateOnStart","BaseButton","active","pointerInside","lastActive","onActiveStateChange","rippleColor","AnimatedBaseButton","btnStyles","RectButton","resolvedStyle","BorderlessButton","_super3","_excluded3","_TouchableNativeFeedback","_TouchableWithoutFeedback","_TouchableOpacity","_TouchableHighlight","_GenericTouchable","GenericTouchable","TOUCHABLE_STATE","MOVED_OUTSIDE","longPressDetected","STATE","onMoveIn","onMoveOut","moveToState","handlePressIn","shouldCallOnPress","pressOutTimeout","handleGoToUndetermined","onLongPressDetected","pressInTimeout","longPressTimeout","_this$props$onStateCh","_this$props$onPressIn","_this$props$onPressOu","_this$props$onPressOu2","handleMoveOutside","coreProps","disallowInterruption","extraButtonProps","getChildStyleOpacityWithDefault","childStyle","setOpacityTo","_from","_this$props$style","showUnderlay","hasPressHandler","extraChildStyle","extraUnderlayStyle","hideUnderlay","renderChildren","RNScrollView","RNSwitch","RNTextInput","RNDrawerLayoutAndroid","positions","Left","Right","DRAG_TOSS","Swipeable","updateAnimatedEvent","overshootFriction","dragX","rowTranslation","_state$leftWidth","leftWidth","_state$rowWidth","rowWidth","_state$rightOffset","rightWidth","_props$overshootLeft","overshootLeft","_props$overshootRight","overshootRight","transX","showLeftAction","leftActionTranslate","MIN_VALUE","showRightAction","rightActionTranslate","onTapHandlerStateChange","handleRelease","_ev$nativeEvent","velocityX","translationX","_this$state$leftWidth","_this$state$rowWidth","rowState","_this$state$rightOffs","_this$props$leftThres","leftThreshold","_this$props$rightThre","rightThreshold","startOffsetX","currentOffset","animateRow","sign","useNativeAnimations","animationOptions","onSwipeableLeftOpen","onSwipeableRightOpen","onSwipeableClose","onSwipeableOpen","onSwipeableLeftWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","onSwipeableWillOpen","onRowLayout","_this$state3$leftWidt","_this$state3$rowWidth","_this$state$rightOffs2","openLeft","_this$state$leftWidth2","openRight","_this$state$rowWidth2","_this$state$rightOffs3","renderLeftActions","renderRightActions","leftActions","rightActions","childrenContainerStyle","IDLE","DRAGGING","SETTLING","DrawerLayout","accessibilityIsModalView","pointerEventsView","panGestureHandler","drawerShown","drawerPosition","drawerWidth","drawerType","dragXValue","touchXValue","touchX","drawerTranslation","containerWidth","dragOffsetFromOnStartPosition","openValue","gestureOptions","onDrawerSlide","handleContainerLayout","emitStateChanged","drawerWillShow","onDrawerStateChanged","openingHandlerStateChange","hideStatusBar","statusBarAnimation","drawerLockMode","gestureStartX","dragOffsetBasedOnStart","animateDrawer","updateShowing","showing","_this$accessibilityIs","_this$pointerEventsVi","_this$panGestureHandl","minSwipeDistance","edgeWidth","fromLeft","gestureOrientation","nextFramePosition","willShow","onDrawerOpen","onDrawerClose","renderOverlay","dynamicOverlayStyles","overlay","renderDrawer","drawerBackgroundColor","drawerContainerStyle","drawerSlide","containerSlide","reverseContentDirection","dynamicDrawerStyles","drawerTranslateX","closedDrawerOffset","drawerStyles","containerOnBack","containerInFront","drawerContainer","renderNavigationView","setPanGestureRef","onGestureRef","enableTrackpadTwoFingerGesture","_reactNativeScreens","_Screens","_HeaderSegment","_CardContainer","_TransitionPresets","_getDistanceForDirection","FALLBACK_DESCRIPTOR","getHeaderHeights","_ref$options","safeAreaInsets","_options$headerStatus","headerStatusBarHeight","getDefaultHeaderHeight","getDistanceFromOptions","_ref2$gestureDirectio","getProgressFromGesture","gesture","distance","CardStack","handleLayout","headerHeights","handleHeaderLayout","getFocusedRoute","getPreviousScene","scenes","previousRoute","_Dimensions$get","_Dimensions$get$heigh","_Dimensions$get$width","gestures","onPageChangeStart","onPageChangeConfirm","onPageChangeCancel","_this$props$detachIna","detachInactiveScreens","shouldUseActivityState","focusedDescriptor","focusedOptions","focusedHeaderHeight","defaultTransitionPreset","forNoAnimationHeader","_ref6$top","_ref6$right","_ref6$bottom","_ref6$left","activeScreensLimit","_scenes$i$descriptor$","detachPreviousScreen","isFloatHeaderAbsolute","headerTransparent","_options$headerShown","floatingHeader","onContentHeightChange","styleInterpolator","absolute","isScreensEnabled","screensEnabled","MaybeScreenContainer","focused","isScreenActive","sceneForActivity","outputValue","_ref7$headerShown","cardShadowEnabled","cardOverlayEnabled","cardOverlay","gestureResponseDistance","gestureVelocityImpact","_ref7$gestureDirectio","_ref7$transitionSpec","_ref7$cardStyleInterp","forNoAnimationCard","_ref7$headerStyleInte","transitionConfig","nextScene","_ref8$gestureDirectio","_ref8$transitionSpec","_ref8$cardStyleInterp","_ref8$headerStyleInte","_ref9$top","safeAreaInsetTop","_ref9$right","safeAreaInsetRight","_ref9$bottom","safeAreaInsetBottom","_ref9$left","safeAreaInsetLeft","headerHeight","MaybeScreen","onHeaderHeightChange","hasAbsoluteHeader","oldScene","currentGesture","previousGesture","nextGesture","nextDescriptor","previousDescriptor","__memo","ENABLE_SCREENS","NativeScreenValue","NativeScreenContainerValue","NativeScreenStack","NativeScreenStackHeaderConfig","NativeScreenStackHeaderSubview","AnimatedNativeScreen","ScreensNativeModules","NativeScreen","NativeScreenContainer","setRef","onComponentRef","_this$ref","_this$props$enabled","activityState","ScreenContainer","_this$props3$enabled","headerSubview","ScreenStack","ScreenStackHeaderConfig","ScreenStackHeaderSubview","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","enableScreens","shouldEnableScreens","Screens","WebScreen","AnimatedWebScreen","_Screens2","_Screens3","leftLabelLayout","setLeftLabelLayout","titleLayout","setTitleLayout","HeaderShownContext","getInterpolatedStyle","_memoize","currentTitle","previousTitle","onGoBack","_props$headerTitleAli","_props$headerLeft","headerLeft","headerBackground","headerRight","backImage","headerBackTitle","truncatedLabel","headerTruncatedBackTitle","pressColorAndroid","backAccessibilityLabel","headerBackAccessibilityLabel","backAllowFontScaling","headerBackAllowFontScaling","titleAllowFontScaling","headerTitleAllowFontScaling","customTitleStyle","headerTitleStyle","customLeftLabelStyle","headerBackTitleStyle","leftContainerStyle","headerLeftContainerStyle","rightContainerStyle","headerRightContainerStyle","titleContainerStyle","headerTitleContainerStyle","customHeaderStyle","_props$headerStatusBa","defaultHeight","_ref$height","boxShadow","safeStyles","styleProp","_getInterpolatedStyle","leftButton","labelVisible","labelStyle","onLabelLayout","_e$nativeEvent$layout2","screenLayout","rightButton","_ref$labelVisible","customPressColorAndroid","customTintColor","_ref$truncatedLabel","_ref$accessibilityLab","useTheme","initialLabelWidth","setInitialLabelWidth","handleLabelLayout","shouldTruncateLabel","_TouchableItem","accessibilityComponentType","accessibilityTraits","pressColor","icon","iconWithLabel","leftLabelText","labelElement","labelWrapper","_MaskedView","iconMaskContainer","iconMask","iconMaskFillerRect","renderLabel","_MaskedViewNative","isMaskedViewAvailable","RNCMaskedView","MaskedView","TouchableItem","handleActiveStateChange","pressOpacity","hasChanged","_Card","_PreviousSceneContext","EPSILON","setPointerEvents","_scene$progress$next","_scene$progress$next2","isCurrentHeaderShown","previousScene","onOpen","onClose","overlayEnabled","shadowEnabled","onTransition","onGestureBegin","onGestureCanceled","pageOverflowEnabled","contentStyle","_color","_CardSheet","_getInvertedMultiplier","Card","isCurrentlyMounted","isClosing","isSwiping","getAnimateToValue","lastToValue","setPointerEventsEnabled","handleStartInteraction","pendingGestureCallback","handleEndInteraction","_this$contentRef$curr","contentRef","interactionHandle","handleGestureStateChange","GestureState","velocityY","translationY","insetTop","insetRight","insetBottom","insetLeft","swiping","getCardAnimationContext","vertical","customContainerStyle","interpolatedStyle","animationContext","handleGestureEvent","isTransparent","alpha","gestureActivationCriteria","shadow","shadowHorizontal","shadowLeft","shadowRight","shadowVertical","shadowTop","shadowBottom","colorString","_slice","skippedModels","hashedModelKeys","model","labels","limiters","Color","channels","valpha","newArr","zeroArray","hashedKeys","roundTo","places","toFixed","roundToPlace","getset","channel","modifier","maxfn","percentString","percent","unitArray","unitObject","hue","saturationl","lightness","saturationv","chroma","wblack","keyword","hex","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","isDark","isLight","lighten","darken","saturate","desaturate","whiten","hwb","blacken","grayscale","fade","opaquer","degrees","mix","mixinColor","weight","color1","w1","w2","newAlpha","raw","colorNames","swizzle","reverseNames","cs","hexDouble","hexAlpha","i2","hwba","isArrayish","results","conversions","wrapRaw","wrappedFn","conversion","wrapRounded","fromModel","toModel","cssKeywords","reverseKeywords","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","delta","rdif","gdif","bdif","diffc","reversed","currentClosestKeyword","currentClosestDistance","t1","t3","smin","lmin","hi","sl","vmin","wh","bl","z2","hr","ansi","mult","rem","char","integer","mg","pure","buildGraph","graph","models","deriveBFS","adjacents","adjacent","link","wrapConversion","setFill","clientWidth","clientHeight","KeyboardManager","previouslyFocusedTextInput","startTimestamp","clearKeyboardTimeout","keyboardTimeout","handlePageChangeStart","handlePageChangeConfirm","force","handlePageChangeCancel","parentPreviousScene","PreviousSceneContext","_getPreviousScene","_ref2$headerShown","_ref3$headerShown","previousHeaderShown","_ref4$headerShown","nextHeaderShown","isHeaderStatic","forSlideUp","forSlideRight","forSlideLeft","forNoAnimation","_debounce","aria-level","SafeAreaProvider","getStatusBarHeight","getBottomSpace","CardAnimationContext","HeaderHeightContext","StackGestureRefContext","_createBottomTabNavigator","_BottomTabView","_BottomTabBar","_BottomTabBarHeightContext","_useBottomTabBarHeight","sceneContainerStyle","TabRouter","_ResourceSavingScene","_BottomTabBarHeightCallbackContext","SceneContent","BottomTabView","renderTabBar","_this$props$tabBar","handleTabBarHeightChange","tabBarHeight","getTabBarHeight","adaptive","labelPosition","tabStyle","_this$props3$detachIn","unmountOnBlur","isVisible","focusedRouteKey","attached","detached","_safeAreaInsets$top","_safeAreaInsets$right","_safeAreaInsets$botto","_safeAreaInsets$left","_ref3$keyboardHidesTa","keyboardHidesTabBar","iconStyle","showLabel","buildLink","useLinkBuilder","_useWindowDimensions","isKeyboardShown","_useIsKeyboardShown","onHeightChange","BottomTabBarHeightCallbackContext","shouldShowTabBar","visibilityAnimationConfigRef","tabBarVisibilityAnimationConfig","isTabBarHidden","setIsTabBarHidden","visibilityAnimationConfig","_visibilityAnimationC","_visibilityAnimationC2","_visibilityAnimationC3","_visibilityAnimationC4","hide","_React$useState5","_React$useState6","setLayout","defaultInsets","useSafeArea","getPaddingBottom","hasHorizontalLabels","shouldUseHorizontalLabels","tabBarAccessibilityLabel","_BottomTabItem","tabBarButton","tabBarIcon","badgeStyle","tabBarBadgeStyle","_ref$adaptive","maxTabItemWidth","flattenedStyle","_StyleSheet$flatten","customHeight","horizontalLabels","_ref$button","Link","customActiveTintColor","customInactiveTintColor","_ref$activeBackground","_ref$inactiveBackgrou","_ref$showLabel","selected","tab","tabLandscape","tabPortrait","inactiveOpacity","_TabBarIcon","renderIcon","labelBeside","labelBeneath","iconHorizontal","iconVertical","_Badge","badgeHorizontal","badgeVertical","_ref$visible","_ref$size","rendered","setRendered","_ref3$backgroundColor","restStyle","setIsKeyboardShown","handleKeyboardShow","handleKeyboardHide","BottomTabBarHeightContext","option","routeKeys","tabRoutes","routeEvtChannel","isReadyRef","_j","_k","_l","_m","routeParam","states","setTabInitRoute","isTabPage","addEvents","eventChannel","tabPages","getTabBarPages","routeChannel","everythingAfterProtocol","_taroTabItems","__taroTabBarIconConfig","tabItems","tabBarConfig","__taroTabInitRoute","getTabConfig","_taroAppConfig","isEmptyObject","_queryString","_tabBarUtils","_TabBarItem","TabBar","_this$props$userOptio","_userOptions$tabBarVi","tabVisible","getInitSafeAreaInsets","_this$props$keyboardH","_this$props$keyboardH2","curVisible","setTabBarHidden","_Dimensions$get2","_Dimensions$get2$heig","_Dimensions$get2$widt","_this$props2$style","_tabStyle$color","_tabStyle$selectedCol","_tabStyle$backgroundC","_tabStyle$borderStyle","defaultBackground","defalutBorderTopColor","getDefalutTabItem","iconPath","selectedIconPath","isUrl","tabSelfStyle","getTabBarStyle","showRedDot","labelColor","getTabIconSource","linkto","TabBarItem","iconSource","tabBarStyle","needAnimate","showTabBar","getDefaultTabBarHeight","renderContent","withSafeAreaInsets","itemVertical","itemHorizontal","redDot","_this$props$size","_this$props$tabStyle","_this$props$labelStyl","_this$props$allowFont","_this$props$showLabel","Badge","__rest","_Loading","_ref$showLoading","showLoading","Loading","toastLoading","LoadingView","rotateValue","startAnimation","blackArrow","whiteArrow","_this$props$tintColor","imageSource","handleConfig","isTabBarPage","winOptions","winRnOptions","winScreenOptions","_winScreenOptions$tit","_winScreenOptions$hea","_winScreenOptions$hea2","_winScreenOptions$hea3","winRnTitle","navigationBarTitleText","showHeader","screenHeaderStyle","navBarParams","setParams","_this$props$currentPa","_options$animation","_options$animation2","setTabBarItemConfig","setNavigateConfig","frontColor","defaultStyle","oldParams","routerConfig","App","AppCompoent","Entry","_this$props$initPath","_this$props$initParam","TCNProvider","appInst","onLaunch","app","AntProvider","_createSuper2","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_localeProvider","_portal","cacheBabelInterop","cacheNodeInterop","ThemeProvider","Host","possibleConstructorReturn","Derived","hasNativeReflectConstruct","NewTarget","LocaleContext","_default","antLocale","exist","_portalConsumer","_portalHost","PortalContext","manager","PortalConsumer","mount","unmount","_portalManager","addType","removeType","TopViewEventEmitter","PortalGuard","nextKey","PortalHost","_nextKey","_setManager","_manager","_mount","_update","_unmount","PortalManager","_React$PureComponent","portals","WithTheme","themeStyles","stylesRef","getStyles","_shallowequal","_deepmerge","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","propertyIsOnObject","propertyIsUnsafe","mergeObject","arrayMerge","sourceIsArray","deepmerge_1","compareContext","bHasOwnProperty","valueA","valueB","color_text_base","color_text_base_inverse","color_text_secondary","color_text_placeholder","color_text_disabled","color_text_caption","color_text_paragraph","color_link","fill_base","fill_body","fill_tap","fill_disabled","fill_mask","color_icon_base","fill_grey","opacity_disabled","brand_primary","brand_primary_tap","brand_success","brand_warning","brand_error","brand_important","brand_wait","border_color_base","font_size_icontext","font_size_caption_sm","font_size_base","font_size_subhead","font_size_caption","font_size_heading","radius_xs","radius_sm","radius_md","radius_lg","border_width_sm","border_width_md","border_width_lg","h_spacing_sm","h_spacing_md","h_spacing_lg","v_spacing_xs","v_spacing_sm","v_spacing_md","v_spacing_lg","v_spacing_xl","line_height_base","line_height_paragraph","icon_size_xxs","icon_size_xs","icon_size_sm","icon_size_md","icon_size_lg","ease_in_out_quint","actionsheet_item_height","actionsheet_item_font_size","button_height","button_font_size","button_height_sm","button_font_size_sm","primary_button_fill","primary_button_fill_tap","ghost_button_color","ghost_button_fill_tap","warning_button_fill","warning_button_fill_tap","link_button_fill_tap","link_button_font_size","modal_font_size_heading","modal_button_font_size","modal_button_height","list_title_height","list_item_height_sm","list_item_height","input_label_width","input_font_size","input_color_icon","input_color_icon_tap","tabs_color","tabs_height","tabs_font_size_heading","segmented_control_color","segmented_control_height","segmented_control_fill_tap","tab_bar_fill","tab_bar_height","toast_fill","search_bar_fill","search_bar_height","search_bar_input_height","search_bar_font_size","search_color_icon","notice_bar_fill","notice_bar_height","switch_fill","tag_height","tag_small_height","option_height","toast_zindex","action_sheet_zindex","popup_zindex","modal_zindex","rnNavigationRef","eventSplitter","calls","PageEvts","exeList","getRouteEventChannel","taroHooks","fnRef","getPageInstance","useDidShow","useDidHide","usePullDownRefresh","useReachBottom","usePageScroll","useResize","useTabItemTap","deviceWidthDp","_config$designWidth","defaultWidth","_config$deviceRatio","defaultRadio","Index","_styleSheet","_Text","_ClickableSimplified","stringToText","extracteTextStyle","WRAPPER_TYPE_STYLE_REGEX","SYNC_TYPE_STYLE_REGEX","TEXT_STYLE_REGEX","fields","shallowCopy","dismemberStyle","wrapperStyle","innerStyle","parseStyles","styleObj","_Clickable","isHover","panResponder","hoverStyle","evt","getWxAppEvent","setStartTimer","endTimestamp","gapTime","hasMove","setStayTimer","hoverStartTime","startTimer","hoverStayTime","stayTimer","_nativeEvent$touches","_nativeEvent$changedT","dataset","detail","clientX","clientY","otherProps","backgroundTextStyle"],"mappings":"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"}