+now stopwatch _resamplers_frameCallbackScheduled _frameTime _frameTimeAge_lastSampleTime_lastEventTime_handlePointerEvent_handleSampleTimeChanged_samplingInterval_timer addOrDispatchsamplestop_onSampleTimeChanged initInstancesinstance _instanceunlocked_pendingPointerEvents_handlePointerDataPacket_devicePixelRatioForView cancelPointer_flushPointerEventQueue pointerRouter gestureArenapointerSignalResolver _hitTestshandlePointerEvent_handlePointerEventImmediately hitTestInViewhitTest dispatchEvent handleEventresetGestureBindingdebugSamplingClock samplingClock _resamplerresamplingEnabledsamplingOffsetevent hitTestEntry _HandleSampleTimeChangedCallback SamplingClock _Resampler_defaultSamplingOffset_samplingIntervalGestureBinding,FlutterErrorDetailsForPointerEventDispatcher€¥PointerDataPacketOffsetDiagnosticsNodeInformationCollectorGestureArenaManager PointerEvent HitTestEntry HitTestResult HitTestTarget PointerRouterPointerSignalResolvervoidDateTimenowdebugSamplingClock FakeAsync StopwatchMapintPointerEventResamplerboolDurationzeroHandleEventCallbackTimerkindPointerDeviceKindtouch timeStamp putIfAbsentdeviceaddEventSchedulerBindinginstance millisecondsmillisecondsSinceEpoch stopwatchstartisActiveperiodicinMicrosecondselapsedMicroseconds microsecondsvalues resamplersample removeWherehasPendingEventsisDownisEmptycanceladdPostFrameCallbackcurrentSystemFrameTimeStampreset debugLabelstopcleardebugPrintResamplingMargin debugPrintPointerDownEventPointerEventConverterhitTest HitTestable RenderView dispatchEvent handleEventGestureRecognizer addPointer gestureArenaclosedownPointerMoveEventPointerUpEventPointerCancelEventsweep BindingBaseHitTestDispatcheroverride initInstances _instanceplatformDispatcheronPointerDataPacket_handlePointerDataPacketrunAppWidgetsFlutterBindingensureInitialized checkInstanceunlocked_flushPointerEventQueueQueue_pendingPointerEventsaddAllexpanddata_devicePixelRatioForViewlocked FlutterError reportErrorFlutterErrorDetails exceptionerrorstacklibrarycontextErrorDescriptiondoubleviewiddevicePixelRatioscheduleMicrotaskaddFirstpointer isNotEmptyhandlePointerEvent removeFirstPointerSignalEventPointerPanZoomStartEventPointerPanZoomEndEventRendererBinding MouseTrackerPointerHoverEventPointerAddedEventPointerRemovedEventresamplingEnabled _resampler addOrDispatchsamplingOffset samplingClock_handlePointerEventImmediately _hitTests containsKeytoStringminLevelDiagnosticLeveldebug hitTestInViewpositionviewIddebugPrintHitTestResultsremovePointerPanZoomUpdateEventdebugPrintMouseHoverEventsadd Deprecated implicitView pointerRouterpragmarouteeventinformationCollectorDiagnosticsPropertystyleDiagnosticsTreeStyle errorPropertypathentrytarget transformed transform hitTestEntrypointerSignalResolverresolve protected_handleSampleTimeChangedonError BindingBase HitTestableHitTestDispatcher HitTestTargetFlutterErrorDetailsºO¬´ßcØ™“Ø+žðÖ΃ƒ$Offsetƒdart:uiƒRƒ|DiagnosticsNodeInformationCollectorƒ)package:flutter/foundation.dartƒ•ƒ­GestureArenaManagerƒ� arena.dartƒÅƒÖ PointerEventƒ° events.dartƒð„ HitTestEntry HitTestResult HitTestTargetƒÙ hit_test.dart„?„Q PointerRouter„"pointer_router.dart„z„”PointerSignalResolver„Tpointer_signal_resolver.dart �v dart:async�Œdart:collection�½�ÓPointerDataPacket�§�·�ºui�ºdart:ui�Ùpackage:flutter/foundation.dart‚package:flutter/scheduler.dart‚0 arena.dart‚Fconverter.dart‚` debug.dart‚v events.dart‚� hit_test.dart‚¦pointer_router.dart‚Åpointer_signal_resolver.dart‚íresampler.dart¨¿Àa6‚‚=€ˆ€§€©€ß��A�F�i�s�u�‹�¦�Ö�Ø‚‚-‚/‚E‚_‚u‚Œ‚¥‚Ă샃ƒ'ƒ)ƒƒ�ƒ°ƒÙ„"„T„—„™„Ö„Ø… …#…@…e…g…¸…¿…Ѕ׆"†R†«†þ‡‡‡J‡W‡[‡ ‡¹ˆˆˆ(ˆˆˆŠˆÃ‰‰‰X‰�‰ƒ‰©‰Ñ‰Ó‰þŠXŠšŠœŠÑŠ×‹ ‹9‹e‹g‹•‹Ç‹É‹üŒ@ŒBŒdŒ‰Œ‹Œ´ŒÆŒÈ���I�’�ÄŽŽ1Ž3Ž{Ž’ŽºŽÄŽæŽô���#�%�G�M�•�Ò�Ø�!�`�£�¥�ï‘'‘O‘Ÿ‘Ò‘Ù‘Û’#’H’š’¡’£’ã“"“a“™“ß”:”|”̔Ε•O•�•¨•å•ç–*–N–“–•–Ú–÷—@—Š—‘—“—·˜˜A˜J˜L˜�˜²˜´˜ð™™)™8™?™A™Š™¯™ÖššešŽšºšä›0›{›¾›ûœœ\œwœË��!�P�W�\�^�š�«�ôž ž'žAžbžyž~ž€ž¡ž²žÛŸ(ŸRŸ[ŸoŸzŸ›Ÿ Ÿ£Ÿ¥ŸÆŸÊ  c ® Õ¡¡¡8¡<¡‹¡Ô¢¢X¢›¢�¢Ç¢Ì££ £'£,£u£Â¤ ¤V¤£¤õ¥¥ ¥]¥¬¥ì¦9¦‡¦¡¦¦¦ò§D§v§{§¼¨¨*¨/¨E¨J¨–¨ä©'©z©Å©ÊªªBªGª˜ªä«D«Q«k«‡«ž«æ«ë«í¬¬"¬q¬Ã­­P­u­w­„­™­°­Ð­Õ­×®#®%®e®º®ê®õ¯¯h¯r¯ˆ¯¬¯µ¯Ó¯ô°°/°H°p°¾°Ê°Ô°Û°à°â±±W±\±^±¡±¨±ö²@²e²š²Í²Ô³³$³&³J³`³b³’³Ò³Ù³Þ³à´)´a´c´±´Èµ µ µMµjµºµ¼µôµû¶F¶—¶ã·2·€·Ï¸¸*¸1¸€¸Ð¸ð¹5¹7¹„¹‹¹Ý¹äº2ºWº»ºä»5»i»š»°»²»Ð»ø¼1¼@¼G¼I¼‘¼·¼Ï¼û½½½?½b½ˆ½°½×¾¾¾D¾Ã¾Í¾õ¿8¿…¿¸¿Á¿Ô¿ýÀ@ZÀ@eÀ@{À@ˆÀ@³À@ÛÀAÀA?ÀAƒÀAÃÀBÀBeÀB´ÀBÍÀBþÀCÀCÀC]ÀC|ÀC…ÀC™ÀC¤ÀDÀD0ÀD7ÀD<ÀD>ÀD�ÀD«ÀDÌÀEÀE<ÀEAÀECÀEdÀEtÀE°ÀEìÀEñÀF*ÀFyÀF~ÀF€ÀFÏÀFÖÀG%ÀGxÀGÃÀGÊÀHÀH:ÀHaÀH�ÀHÙÀHïÀI=ÀIŠÀIÉÀIëÀJ6ÀJCÀJhÀJŒÀJ¯ÀJèÀK ÀK&ÀKOÀK«ÀKÆÀKéÀLÀLIÀLgÀLƒÀLÃÀLÙÀLíÀLûÀMÀMÀMÀM&ÀMbÀMoÀM½ÀMáÀNÀN=ÀN`ÀN{ÀN¤ÀNñÀO ÀO.ÀOQÀO{ÀO±ÀOÏÀOëÀP+ÀPAÀPxÀP—ÀPºÀPúÀQÀQ$ÀQ2ÀQ>ÀQGÀQNÀQSÀQUÀQxÀQ¶ÀQ×ÀR"ÀRLÀRšÀRÄÀRóÀS ÀS'ÀS,ÀS.ÀSWÀS^ÀS‡ÀSŽÀS½ÀSËÀSëÀTÀTÀT ÀT/ÀTCÀTcÀTžÀT®ÀTÊÀTÓÀTÚÀTßÀTáÀU ÀU'ÀUYÀUgÀU™ÀU›ÀUèÀUùÀVÀVNÀVœÀVÁÀVíÀVþÀW;ÀW\ÀWyÀW‚ÀW–ÀW¡ÀW´ÀW¹ÀW»ÀXÀXÀXFÀXkÀXŠÀX¢ÀX¨ÀXªÀXîÀYÀY ÀYNÀY”ÀYÜÀZÀZ"ÀZeÀZ¥ÀZÖÀZùÀZûÀ[@À[„À[ÉÀ[äÀ\À\À\À\fÀ\ºÀ] À]bÀ]”À]›À]èÀ^0À^hÀ^‡À^™À^­À^ÁÀ^ÒÀ^êÀ_ À_À_%À_'À_uÀ_“À_•À_äÀ`2À`uÀ`•À`œÀ`îÀaÀa3Àa6€º/// @docImport 'package:fake_async/fake_async.dart'; /// @docImport 'package:flutter/rendering.dart'; /// @docImport 'package:flutter/widgets.dart'; /// /// @docImport 'recognizer.dart'; �u�‹�¦�»�º�½�Ó�Ø‚‚/‚E‚_‚u‚Œ‚¥‚Ă샃ƒ$ƒ)ƒRƒ|ƒ�ƒ•ƒ­ƒ°ƒÅƒÖƒÙƒð„„"„?„Q„T„z„”„Ø‚'……2/// Class that implements clock used for sampling.…%>…K…K/// Returns current time.…i�†^†^€Ø/// Returns a new stopwatch that uses the current time as reported by `this`. /// /// See also: /// /// * [GestureBinding.debugSamplingClock], which is used in tests and /// debug builds to observe [FakeAsync].ˆ—�ˆˆˆ*\ˆ*ˆ*ˆ4ˆ5ˆ;ˆ:ˆOˆUˆTˆnˆtˆs ˆÅRˆëˆë‰‰ˆù‰ˆúˆÿ‰Z$‰_‰_‰y‰«#‰´‰´‰Á‰É‰ÊŠ%Š Š ŠŠ#Š$‹(‹‹‹)‹1‹2‹;'‹D‹D‹U‹]‹^‹—-‹±‹±‹þ?Œ%Œ%Œf ŒuŒuŒ¶ Œ½Œ½�‚�$�$�2�@�?�#�7�(�(�/�9�8�H�W�V�œ€à�¡�¡ž‚�ž‡ž‡À\…À\ÀÀ\À€™/// Variant of [FlutterErrorDetails] with extra fields for the gesture /// library's binding's pointer event dispatcher ([GestureBinding.dispatchEvent]).À]‚À^8À^8À^d�/// Creates a [FlutterErrorDetailsForPointerEventDispatcher] object with the given /// arguments setting the object's properties. /// /// The gesture library calls this constructor when catching an exception /// that will subsequently be reported using [FlutterError.onError].À^lÀ^|À^{À^‹ À^’À^‘À^� À^¤À^£À^± À^¸À^·À^Å À^ËÀ^ÊÀ^ÖÀ^ÜÀ^ÛÀ^îÀ^õÀ^ôÀ_ À_À_À_)gÀ_‹À_‹J/// The pointer event that was being routed when the exception was raised.À_—�™Àa$Àa$�c/// The hit test result entry for the object whose handleEvent method threw /// the exception. May be null if no hit test entry is associated with the /// event (e.g. [PointerHoverEvent]s, [PointerAddedEvent]s, and /// [PointerRemovedEvent]s). /// /// The target object itself is given by the [HitTestEntry.target] property of /// the hitTestEntry object.„™;„¡„¡¢�¹}ªêªêˆ/// A binding for the gesture subsystem. /// /// ## Lifecycle of pointer events and the gesture arena /// /// ### [PointerDownEvent] /// /// When a [PointerDownEvent] is received by the [GestureBinding] (from /// [dart:ui.PlatformDispatcher.onPointerDataPacket], as interpreted by the /// [PointerEventConverter]), a [hitTest] is performed to determine which /// [HitTestTarget] nodes are affected. (Other bindings are expected to /// implement [hitTest] to defer to [HitTestable] objects. For example, the /// rendering layer defers to the [RenderView] and the rest of the render object /// hierarchy.) /// /// The affected nodes then are given the event to handle ([dispatchEvent] calls /// [HitTestTarget.handleEvent] for each affected node). If any have relevant /// [GestureRecognizer]s, they provide the event to them using /// [GestureRecognizer.addPointer]. This typically causes the recognizer to /// register with the [PointerRouter] to receive notifications regarding the /// pointer in question. /// /// Once the hit test and dispatching logic is complete, the event is then /// passed to the aforementioned [PointerRouter], which passes it to any objects /// that have registered interest in that event. /// /// Finally, the [gestureArena] is closed for the given pointer /// ([GestureArenaManager.close]), which begins the process of selecting a /// gesture to win that pointer. /// /// ### Other events /// /// A pointer that is [PointerEvent.down] may send further events, such as /// [PointerMoveEvent], [PointerUpEvent], or [PointerCancelEvent]. These are /// sent to the same [HitTestTarget] nodes as were found when the /// [PointerDownEvent] was received (even if they have since been disposed; it is /// the responsibility of those objects to be aware of that possibility). /// /// Then, the events are routed to any still-registered entrants in the /// [PointerRouter]'s table for that pointer. /// /// When a [PointerUpEvent] is received, the [GestureArenaManager.sweep] method /// is invoked to force the gesture arena logic to terminate if necessary. ­R ­i­i­ÙG­ó­ó® ®®®®®³â|´?´?E/// A router that routes all pointer events received from the engine.´O´\´]´e€£´ä´ä^/// The gesture arenas used for disambiguating the meaning of sequences of /// pointer events.´óµµµ€¨µˆµˆV/// The resolver used for determining which widget handles a /// [PointerSignalEvent].µ µµµ¶µ¾ƒt¹¹ƒ /// State for all pointers which are currently down. /// /// This map caches the hit test result done when the pointer goes down /// ([PointerDownEvent] and [PointerPanZoomStartEvent]). This hit test result /// will be used throughout the entire pointer interaction; that is, the /// pointer is seen as pointing to the same place even if it has moved away /// until pointer goes up ([PointerUpEvent] and [PointerPanZoomEndEvent]). /// This matches the expected gesture interaction with a button, and allows /// devices that don't support hovering to perform as few hit tests as /// possible. /// /// On the other hand, hovering requires hit testing on almost every frame. /// This is handled in [RendererBinding] and [MouseTracker], and will ignore /// the results cached here.¹0¹1¹¹/¹¹"ÀX€�ÀX,ÀX,ÀX9ÀXCÀX¤ÀXJÀXoÀXŽÀX¬‚JÀZÝÀZÝ‚ /// Enable pointer event resampling for touch devices by setting /// this to true. /// /// Resampling results in smoother touch event processing at the /// cost of some added latency. Devices with low frequency sensors /// or when the frequency is not a multiple of the display frequency /// (e.g., 120Hz input and 90Hz display) benefit from this. /// /// This is typically set during application initialization but /// can be adjusted dynamically in case the application only /// wants resampling for some period of time.ÀZñÀZý�À[ïÀ[ï€Ü/// Offset relative to current frame time that should be used for /// resampling. The [samplingOffset] is expected to be negative. /// Non-negative [samplingOffset] is allowed but will effectively /// disable resampling.À\«ï�_­­�/// The singleton instance of this object. /// /// Provides access to the features exposed by this mixin. The binding must /// be initialized before using this getter; this is typically done by calling /// [runApp] or [WidgetsFlutterBinding.ensureInitialized].ÀT〴ÀU|ÀU|n/// Overrides the sampling clock for debugging and testing. /// /// This value is ignored in non-debug builds.ÀU[ÀU\ÀU�‚ÀV°ÀV°€ñ/// Provides access to the current [DateTime] and `StopWatch` objects for /// sampling. /// /// Overridden by [debugSamplingClock] for debug builds and testing. Using /// this object under test will maintain synchronization with [FakeAsync].«F€£«X«X«F«G­yZ­‹­‹­y­z®'‚·®,®,®E®[®Z°äv°ì°ì± ± ± ±`�²G²G€Õ/// Dispatch a [PointerCancelEvent] for the given pointer soon. /// /// The pointer event will be dispatched before the next pointer event and /// before the end of the microtask but not within this function call.²U ²Z²Y³(€´³-³-¹9ƒÅ»p»p‚/// Dispatch an event to the targets found by a hit test on its position. /// /// This method sends the given event to [dispatchEvent] based on event types: /// /// * [PointerDownEvent]s and [PointerSignalEvent]s are dispatched to the /// result of a new [hitTest]. /// * [PointerUpEvent]s and [PointerMoveEvent]s are dispatched to the result of hit test of the /// preceding [PointerDownEvent]s. /// * [PointerHoverEvent]s, [PointerAddedEvent]s, and [PointerRemovedEvent]s /// are dispatched without a hit test result.»ƒ»‘»�½‡6½ ½ ½(½6½5ÀD@€ÿÀDÓÀDÓf/// Determine which [HitTestTarget] objects are located at a given position in /// the specified view.ÀDáÀDðÀDïÀD÷ÀDÿÀDþÀE ÀE ÀE ÀD­ÀD®ÀEE�7ÀEøÀEøÀFÀFÀFÀFÀFÀFÀEEÀEFÀEfÀEgÀEqÀEîÀExÀE´ÀF‚ŠÏÀH–ÀH–�¡/// Dispatch an event to [pointerRouter] and the path of a hit test result. /// /// The `event` is routed to [pointerRouter]. If the `hitTestResult` is not /// null, the event is also sent to every [HitTestTarget] in the entries of the /// given [HitTestResult]. Any exceptions from the handlers are caught. /// /// The `hitTestResult` argument may only be null for [PointerAddedEvent]s or /// [PointerRemovedEvent]s.ÀH¤ÀH²ÀH±ÀH¸ÀHÈÀHÇÀH<ÀH=ÀHcÀHdÀHjÀHŒÀHkÀQW�ÓÀQÀQÀQ‹ÀQ™ÀQ˜ÀQŸÀQ­ÀQ¬ÀQWÀQXÀS0€ÖÀSÒÀSÒ/// Reset states of [GestureBinding]. /// /// This clears the hit test records. /// /// This is typically called between tests.ÀS¿ÀSÀÀT €ÑÀTÀT ÕC ä ä ý¡¡¡¡¡¡¢X@¢g¢g¢{¢ƒ¢—¢�¢„¢’€²"package:fake_async/fake_async.dart€èpackage:flutter/rendering.dart�package:flutter/widgets.dart�Orecognizer.dart‚‚=€ˆ€§€©€ß��A�F�i�s�u�‹�¦�Ö�Ø‚‚-‚/‚E‚_‚u‚Œ‚¥‚Ă샃ƒ'ƒ)ƒƒ�ƒ°ƒÙ„"„T„—„™„Ö„Ø… …#…@…e…g…¸…¿…Ѕ׆"†R†«†þ‡‡‡J‡W‡[‡ ‡¹ˆˆˆ(ˆˆˆŠˆÃ‰‰‰X‰�‰ƒ‰©‰Ñ‰Ó‰þŠXŠšŠœŠÑŠ×‹ ‹9‹e‹g‹•‹Ç‹É‹üŒ@ŒBŒdŒ‰Œ‹Œ´ŒÆŒÈ���I�’�ÄŽŽ1Ž3Ž{Ž’ŽºŽÄŽæŽô���#�%�G�M�•�Ò�Ø�!�`�£�¥�ï‘'‘O‘Ÿ‘Ò‘Ù‘Û’#’H’š’¡’£’ã“"“a“™“ß”:”|”̔Ε•O•�•¨•å•ç–*–N–“–•–Ú–÷—@—Š—‘—“—·˜˜A˜J˜L˜�˜²˜´˜ð™™)™8™?™A™Š™¯™ÖššešŽšºšä›0›{›¾›ûœœ\œwœË��!�P�W�\�^�š�«�ôž ž'žAžbžyž~ž€ž¡ž²žÛŸ(ŸRŸ[ŸoŸzŸ›Ÿ Ÿ£Ÿ¥ŸÆŸÊ  c ® Õ¡¡¡8¡<¡‹¡Ô¢¢X¢›¢�¢Ç¢Ì££ £'£,£u£Â¤ ¤V¤£¤õ¥¥ ¥]¥¬¥ì¦9¦‡¦¡¦¦¦ò§D§v§{§¼¨¨*¨/¨E¨J¨–¨ä©'©z©Å©ÊªªBªGª˜ªä«D«Q«k«‡«ž«æ«ë«í¬¬"¬q¬Ã­­P­u­w­„­™­°­Ð­Õ­×®#®%®e®º®ê®õ¯¯h¯r¯ˆ¯¬¯µ¯Ó¯ô°°/°H°p°¾°Ê°Ô°Û°à°â±±W±\±^±¡±¨±ö²@²e²š²Í²Ô³³$³&³J³`³b³’³Ò³Ù³Þ³à´)´a´c´±´Èµ µ µMµjµºµ¼µôµû¶F¶—¶ã·2·€·Ï¸¸*¸1¸€¸Ð¸ð¹5¹7¹„¹‹¹Ý¹äº2ºWº»ºä»5»i»š»°»²»Ð»ø¼1¼@¼G¼I¼‘¼·¼Ï¼û½½½?½b½ˆ½°½×¾¾¾D¾Ã¾Í¾õ¿8¿…¿¸¿Á¿Ô¿ýÀ@ZÀ@eÀ@{À@ˆÀ@³À@ÛÀAÀA?ÀAƒÀAÃÀBÀBeÀB´ÀBÍÀBþÀCÀCÀC]ÀC|ÀC…ÀC™ÀC¤ÀDÀD0ÀD7ÀD<ÀD>ÀD�ÀD«ÀDÌÀEÀE<ÀEAÀECÀEdÀEtÀE°ÀEìÀEñÀF*ÀFyÀF~ÀF€ÀFÏÀFÖÀG%ÀGxÀGÃÀGÊÀHÀH:ÀHaÀH�ÀHÙÀHïÀI=ÀIŠÀIÉÀIëÀJ6ÀJCÀJhÀJŒÀJ¯ÀJèÀK ÀK&ÀKOÀK«ÀKÆÀKéÀLÀLIÀLgÀLƒÀLÃÀLÙÀLíÀLûÀMÀMÀMÀM&ÀMbÀMoÀM½ÀMáÀNÀN=ÀN`ÀN{ÀN¤ÀNñÀO ÀO.ÀOQÀO{ÀO±ÀOÏÀOëÀP+ÀPAÀPxÀP—ÀPºÀPúÀQÀQ$ÀQ2ÀQ>ÀQGÀQNÀQSÀQUÀQxÀQ¶ÀQ×ÀR"ÀRLÀRšÀRÄÀRóÀS ÀS'ÀS,ÀS.ÀSWÀS^ÀS‡ÀSŽÀS½ÀSËÀSëÀTÀTÀT ÀT/ÀTCÀTcÀTžÀT®ÀTÊÀTÓÀTÚÀTßÀTáÀU ÀU'ÀUYÀUgÀU™ÀU›ÀUèÀUùÀVÀVNÀVœÀVÁÀVíÀVþÀW;ÀW\ÀWyÀW‚ÀW–ÀW¡ÀW´ÀW¹ÀW»ÀXÀXÀXFÀXkÀXŠÀX¢ÀX¨ÀXªÀXîÀYÀY ÀYNÀY”ÀYÜÀZÀZ"ÀZeÀZ¥ÀZÖÀZùÀZûÀ[@À[„À[ÉÀ[äÀ\À\À\À\fÀ\ºÀ] À]bÀ]”À]›À]èÀ^0À^hÀ^‡À^™À^­À^ÁÀ^ÒÀ^êÀ_ À_À_%À_'À_uÀ_“À_•À_äÀ`2À`uÀ`•À`œÀ`îÀaÀa3Àa6 SamplingClock _Resampler_defaultSamplingOffset_samplingIntervalGestureBinding,FlutterErrorDetailsForPointerEventDispatcherË"