+
    Qig  c                   s    ^ RI t ^ RIt^ RIt^ RIHt ^RIHt ^RIHt ^RIHt ^RIH	t	 ^RIH
t
 ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt Rt^ t^t^t^-t^	t ! R R4      t ! R R4      tR# )    N)GLib)cmdnames)debug)focus_manager)keybindings)messages)input_event)settings_manager)AXCollection)AXObject)AXText)AXUtilitiesc                   sN   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	tV tR
# )PriorityQueuezThis class represents a thread **UNSAFE** priority queue where priority
is determined by the given integer priority.  The entries are also
maintained in chronological order.

TODO: experiment with Queue.Queue to make thread safe
c                s    . V n         R # Nqueueself   &5/usr/lib/python3.14/site-packages/orca/liveregions.py__init__ZPriorityQueue.__init__%   s	    
    c                st    \         P                  ! V P                  V\        P                  ! 4       W34       R# )zJAdd a new element to the queue according to 1) priority and
2) timestamp. N)bisectZinsort_leftr   time)r   Zdatapriorityobjs   &&&&r   enqueueZPriorityQueue.enqueue(   s%     	4::$))+t'IJr   c                s8    V P                   P                  ^ 4      # )z2get the highest priority element from the queue.  )r   popr   r   r   dequeueZPriorityQueue.dequeue-   s    zz~~a  r   c                s    . V n         R# )zClear the queue Nr   r   r   r   clearZPriorityQueue.clear1   s	    
r   c                s   a \         P                   ! 4       oV3R lp\        \        WP                  4      4      V n        R# )zBPurge items from the queue that are older than the keepalive time c                 sF   < T ;'       d    V ^,          \         ,           S8  # )   )MSG_KEEPALIVE_TIME)itemcurrenttime   &r   myfilterZ0PriorityQueue.purgeByKeepAlive.<locals>.myfilter9   s     FFDG&88;FFr   N)r   listfilterr   )r   r$   r"   s   & @r   purgeByKeepAliveZPriorityQueue.purgeByKeepAlive5   s+    iik	G &::67
r   c                sZ   a V3R lp\        \        W P                  4      4      V n        R# )z\Purge items from the queue that have a lower than or equal priority
than the given argument c                 s0   < T ;'       d    V ^ ,          S8  # )r     )r!   r   r#   r   r$   Z/PriorityQueue.purgeByPriority.<locals>.myfilterB   s    ..DGh..r   N)r%   r&   r   )r   r   r$   s   &f r   purgeByPriorityZPriorityQueue.purgeByPriority>   s    	/ &::67
r   c                s,    \        V P                  4      # )zReturn the length of the queue )lenr   r   r   r   __len__ZPriorityQueue.__len__G   s    4::r   r   N)__name__
__module____qualname____firstlineno__Z__doc__r   r   r   r   r'   r)   r+   __static_attributes____classdictcell__Z__classdict__   @r   r   r      s3     K
!88 r   r   c                   s   a  ] tR t^Lt o R tR"R ltR#R ltR tR tR$R lt	R$R lt
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR%R ltR tR t R t!R  t"R!t#V t$R# )&LiveRegionManagerc                s   Wn         \        4       V n        R V n        V P	                  R4      V n        \        P                  ! 4       V n        V P                  V P                  V P                  V P                  .V n        . V n        RV n        RV n        RV n        RV n        RV n        RV n        V P+                  4        VP,                  P/                  V P0                  4       VP,                  P3                  V P*                  4       R# )FTN )_scriptr   	msg_queue
_suspendedget_handlers	_handlersr   KeyBindings	_bindingsadvancePolitenesssetLivePolitenessOfftoggleMonitoringreviewLiveAnnouncement	functions	msg_cache_politenessOverrides_restoreOverrideslastliveobj_last_presented_timestamp_last_presented_message
monitoringbookmarkLoadHandler	bookmarksZaddSaveObserverbookmarkSaveHandlerZaddLoadObserver)r   script   &&r   r   ZLiveRegionManager.__init__M   s    &  **40$002 0033//557  %)!!%  )-&')$  	  "(()A)AB(()A)ABr   c                sH   V'       d`   Rp\         P                  ! \         P                  VR4       V P                  P	                  R4       V P                  4        V P                  # V P                  P                  4       '       d   V P                  4        V P                  # )z,Returns the live-region-manager keybindings.z)LIVE REGION MANAGER: Refreshing bindings.T)r   print_message
LEVEL_INFOr<   Zremove_key_grabs_setup_bindingsZis_empty)r   refreshZ
is_desktopmsg   &&& r   get_bindingsZLiveRegionManager.get_bindings}   sz     =C 0 0#t<NN++,WX  " ~~ ^^$$&&  "~~r   c                s    V'       d9   Rp\         P                  ! \         P                  VR4       V P                  4        V P                  # )z)Returns the live-region-manager handlers.z)LIVE REGION MANAGER: Refreshing handlers.T)r   rN   rO   _setup_handlersr:   )r   rQ   rR      && r   r9   ZLiveRegionManager.get_handlers   s:     =C 0 0#t<  "~~r   c                s   / V n         \        P                  ! V P                  \        P
                  V P                  '       * R7      V P                   R&   \        P                  ! V P                  \        P                  V P                  '       * R7      V P                   R&   \        P                  ! V P                  \        P                  V P                  '       * R7      V P                   R&   \        P                  ! V P                  \        P                  V P                  '       * R7      V P                   R&   RV P                   2p\        P                  ! \        P                  VR4       R# )	z5Sets up the live-region-manager input event handlers.)ZenabledadvanceLivePolitenessr>   monitorLiveRegionsr@   z1LIVE REGION MANAGER: Handlers set up. Suspended: TN)r:   r   ZInputEventHandlerr=   r   ZLIVE_REGIONS_ADVANCE_POLITENESSr8   r>   ZLIVE_REGIONS_SET_POLITENESS_OFFr?   ZLIVE_REGIONS_MONITORr@   ZLIVE_REGIONS_REVIEWr   rN   rO   )r   rR   s   & r   rU   Z!LiveRegionManager._setup_handlers   s#     ))&&88"oo-/ 	./ ))))88"oo-/ 	-. ))%%--"oo-/ 	+, ))++,,"oo-/ 	/0 B$//ARSE,,c48r   c                s   \         P                  ! 4       V n        V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  P                  R4      ^V P                  '       * 4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  P                  R4      ^V P                  '       * 4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  P                  R4      ^V P                  '       * 4      4       R
 F{  pV P                  P                  \         P                  ! V\         P
                  \         P                  V P                  P                  R4      ^V P                  '       * 4      4       K}  	  \        P                  ! 4       P                  V P                  V P                  R4      V n        RV P                   2p\         P"                  ! \         P$                  VR4       R	# )z-Sets up the live-region-manager key bindings.Z	backslashrW   r>   rX   r@   Fz1LIVE REGION MANAGER: Bindings set up. Suspended: TN)	ZF1ZF2ZF3ZF4ZF5ZF6ZF7ZF8ZF9)r   r;   r<   addZ
KeyBindingZDEFAULT_MODIFIER_MASKZNO_MODIFIER_MASKr:   getr8   ZSHIFT_MODIFIER_MASKZORCA_SHIFT_MODIFIER_MASKZORCA_MODIFIER_MASKr   get_managerZoverride_key_bindingsr   rN   rO   )r   keyrR   s   &  r   rP   Z!LiveRegionManager._setup_bindings   s    %002""11,,""#:;OO#%	& 	""11//""#9:OO#%	& 	""1144""#78OO#%	& JCNN&&5522NN&&'?@')* J *557MMNNDNNE3 B$//ARSE,,c48r   c                s   RpV'       d   VRV 2,          p\         P                  ! \         P                  VR4       V P                  P                   F   pVP                  P                  VRR7       K"  	  V P                  R4      V n        V P                  R4      V n        V P                  P                   F.  pVP                  P                  W@P                  '       * R7       K0  	  R# )z4Refreshes live region bindings and grabs for script.z2LIVE REGION MANAGER: Refreshing bindings and grabs: T)Zinclude_grabsN)r   rN   rO   r<   Zkey_bindingsZremover9   r:   rT   rY   r8   )r   rL   reasonrR   Zbindings   &&&  r   refresh_bindings_and_grabsZ,LiveRegionManager.refresh_bindings_and_grabs   s     CRx= CE,,c48~~22G&&wd&C 3 **40**40~~22G##G;N#O 3r   c                s    W P                   8X  d   R# RV 2pV'       d   VRV 2,          p\        P                  ! \        P                  VR4       W n         V P	                  VRV 24       R# )zASuspends live region commands independent of the enabled setting.Nz)LIVE REGION MANAGER: Commands suspended: r]   TzSuspended changed to )r8   r   rN   rO   r_   )r   rL   Z	suspendedr^   rR   s   &&&& r   suspend_commandsZ"LiveRegionManager.suspend_commands   se     '9)ERx= CE,,c48#''2G	{0STr   c                s    / pV P                   P                  P                  4       pV P                  P	                  4        F$  w  r4V^ ,          V8X  g   V\
        8w  g   K   WAV&   K&  	  Wn        R# )r    N)r6   rJ   	getURIKeyrC   items	LIVE_NONE)r   Znewpoliteness
currenturir\   value   &    r   resetZLiveRegionManager.reset  s_     \\++557
3399;JC1v#u	'9%*c" < %2!r   c                sh    V P                   P                  P                  V P                  RR7       R# )zBookmark save callback
politenessZfilenameN)r6   rJ   ZsaveBookmarksToDiskrC   r   r   r   rK   Z%LiveRegionManager.bookmarkSaveHandler  s+    2243L3L=I 	3 	Kr   c                sp    V P                   P                  P                  RR7      ;'       g    / V n        R# )zBookmark load callbackrh   ri   N)r6   rJ   ZreadBookmarksFromDiskrC   r   r   r   rI   Z%LiveRegionManager.bookmarkLoadHandler  s4    
 	44l4K 	 	 	!r   c                s\   R V R2pV P                   f2   VR,          p\        P                  ! \        P                  VR4       R# WP                  8w  d@   VRV P                   R2,          p\        P                  ! \        P                  VR4       R# \
        P
                  ! 4       V P                   ,
          pV^8  d7   VRVR R	2,          p\        P                  ! \        P                  VR4       R# VR
VR R	2,          p\        P                  ! \        P                  VR4       R# )zLIVE REGION MANAGER: Message (z) is duplicate: zFalse, no previous messageTFz+False, message is different (last message: Z)z-False, last message content is same, but was z.4fzs agoz+True, last message content is same and was )rF   r   rN   rO   rG   r   )r   messagerR   Zdelta   &&  r   _is_duplicate_messageZ'LiveRegionManager._is_duplicate_message  s   .wi7GH))1//C 0 0#t<222@A]A]@^^_``C 0 0#t<		d<<<19B5+USSC 0 0#t<<U3KuMME,,c48r   c                sl   V P                  VP                  4      pV\        8X  d   R# V\        8X  d   V P                  '       g   R# M6V\
        8X  d   M*V\        8X  d    V P                  P                  \
        4       V P                  V4      pV'       d   V P                  V4      '       g   W0n        \        P                  ! 4       V n        \        V P                  4      ^ 8X  d"   \        P                   ! ^dV P"                  4       V P                  P%                  W2VP                  4       R# R# R# )zMain live region event handlerN)_getLivevent_typesourceLIVE_OFFrc   rH   LIVE_POLITELIVE_ASSERTIVEr7   r)   _getMessagerl   rG   r   rF   r*   r   Ztimeout_addpumpMessagesr   )r   eventrh   rj   rk   r   handleEventZLiveRegionManager.handleEvent-  s    ++ELL9
!" ??? #;&N*NN**;7""5)455g>>+2(-1YY[D*4>>"a'  d&7&78NN""7E ?7r   c                s   \        V P                  4      ^ 8  Ed'   \        P                  ! \        P                  R4       V P                  P                  4        V P                  P                  4       w  rr4VR,          VR,          8X  d   VR,          pMVR,          VR,          ,           pV P                  '       dD   \        V\        4      '       d   RP                  V4      pV P                  P                  V4       M(Rp\        P                  ! \        P                  VR4       W@n        V P                  V4       V P                  '       g   V P                  P                  4        R\        V P                  4       2p\        P                  ! \        P                  VR4       \        P                  ! \        P                  R4       \        V P                  4      ^ 8  # )	zMain gobject callback for live region support.  Handles both
purging the message queue and outputting any queued messages that
were queued up in the handleEvent() method.
z(
vvvvv PRESENT LIVE REGION MESSAGE vvvvvlabelscontentZ z6INFO: Not presenting message because monitoring is offTz!LIVE REGIONS: messages in queue: z(^^^^^ PRESENT LIVE REGION MESSAGE ^^^^^
)r*   r7   r   rN   rO   r'   r   rH   
isinstancer%   Zjoinr6   present_messagerE   _cacheMessage)r   rh   Z	timestamprj   r   uttsrR   s   &      r   rs   ZLiveRegionManager.pumpMessagesG  se    t~~" 0 02]^NN++-26..2H2H2J/J7 x GI$66y)x(79+==dD))88D>D,,T2N##E$4$4c4@  # t$ NN++-1#dnn2E1FGE,,c48E,,.YZ 4>>"Q&&r   c                s$   . pV P                   P                  P                  4       pV P                   FY  w  r4W28X  g   K  \	        V\
        4      '       g   K%  VP                  V P                   P                  P                  V4      4       K[  	  V# )zPReturn the live objects that are registered and have a politeness
of LIVE_NONE. )r6   rJ   ra   rC   rx   tupleappendZ	pathToObj)r   Zretvalrd   uriobjectidrf   r   getLiveNoneObjectsZ$LiveRegionManager.getLiveNoneObjectsr  sm     \\++557
!66MC Z%%@%@dll44>>xHI 7 r   c                s   \         P                  ! 4       P                  R4      '       g,   V P                  P	                  \
        P                  4       R# \        P                  ! 4       P                  4       pV P                  V4      pV P                  P                  P                  4       p V P                  WT3,          pV\        8X  g   V\         8X  d@   \"        V P                  WT3&   V P                  P	                  \
        P$                  4       R# V\"        8X  d@   \&        V P                  WT3&   V P                  P	                  \
        P(                  4       R# V\&        8X  d@   \        V P                  WT3&   V P                  P	                  \
        P*                  4       R# R#   \         d    T P                  T4      p EL
i ; i)z0Advance the politeness level of the given objectinferLiveRegionsN)r   r[   get_settingr6   ry   r   LIVE_REGIONS_OFFr   Zget_locus_of_focus_getObjectIdrJ   ra   rC   KeyError_liveStringToTypero   rc   rp   ZLIVE_REGIONS_LEVEL_POLITErq   ZLIVE_REGIONS_LEVEL_ASSERTIVEZLIVE_REGIONS_LEVEL_OFF)r   rL   
inputEventr   r   r~   Zcur_prioritys   &&&    r   r=   Z#LiveRegionManager.advancePoliteness|  sW     ++-99:LMMLL(()B)BC'')<<>$$S)ll$$..0	7
  44c_EL 8#|y'@9DD%%so6LL(()K)KL[(9GD%%so6LL(()N)NO^+9AD%%so6LL(()H)HI ,  	711#6L	7s   /F. .GGc                s    V P                   '       d|   V P                  P                  P                  V P                   ^ 4       V P                  P	                  V P                  P                  P                  V P                   ^ 4      4       R# R# )zVMove the caret to the last announced live region and speak the
contents of that objectN)rE   r6   	utilitiesZset_caret_positionZspeak_contentsZget_object_contents_at_offsetr   r   r   goLastLiveRegionZ"LiveRegionManager.goLastLiveRegion  si     LL""55d6F6FJLL''(>(>(\(\'+'7'7)< = r   c                s   \        VP                  R,          4      p\        P                  ! 4       P	                  R4      '       g,   V P
                  P                  \        P                  4       R# V\        V P                  4      8  d,   V P
                  P                  \        P                  4       R# V P
                  P                  V P                  V) ,          4       R# )z%Speak the given number cached message:r   NNr   N)ZintZkeyval_namer   r[   r   r6   ry   r   r   r*   rB   ZLIVE_REGIONS_NO_MESSAGE)r   rL   r   ZmsgnumrS   r   r@   Z(LiveRegionManager.reviewLiveAnnouncement  s     Z++B/0++-99:LMMLL(()B)BCC''LL(()I)IJLL(()@Ar   c                s   \         P                  ! 4       P                  R4      '       g,   V P                  P	                  \
        P                  4       R# V P                  P                  P                  4       pV P                  P                  P                  4       pV P                  '       d   V P                  P	                  \
        P                  4       V P                  P                  4        \        P                  ! V P                   4      V n        V P                   P%                  4        F  p\&        V P                   V&   K  	  V P)                  V4      pV F(  pV P+                  V4      p\&        V P                   WH3&   K*  	  RV n        R# V P"                  P-                  4        F  w  rWP                   V	&   K  	  V P                  P	                  \
        P.                  4       RV n        R# )zUUser toggle to set all live regions to LIVE_OFF or back to their
original politeness.r   NFT)r   r[   r   r6   ry   r   r   r   active_documentrJ   ra   rH   ZLIVE_REGIONS_ALL_OFFr7   r   copyrC   rD   Zkeysro   getAllLiveRegionsr   rb   ZLIVE_REGIONS_ALL_RESTORED)r   rL   r   docframer~   ZoverrideZmatchesZmatchr   r\   re   s   &&&        r   r>   Z&LiveRegionManager.setLivePolitenessOff  st     ++-99:LMMLL(()B)BC <<))99;ll$$..0 ???LL(()F)FGNN  " &*YYt/H/H%ID" !55::<6>))(3 = ,,X6G ,,U3=E))3/: !
 $DO #44::<
16))#. =LL(()K)KL"DOr   c                s   . p. ROpV F  pVP                  RV,           4       K  	  \        P                  ! VR7      p\        P                  ! W4      pR\	        V4       R2p\
        P                  ! \
        P                  VR4       V# )offzcontainer-live:)
attributeszLIVE REGIONS: z regions foundT)r   polite	assertive)r}   r	   Zcreate_match_ruleZget_all_matchesr*   r   rN   rO   )r   ZdocumentattrsZlevelsZlevelZruleZresultrR      &&      r   r   Z#LiveRegionManager.getAllLiveRegions  sy    /ELL*U23  --?--h=s6{m>:E,,c48r   c                s^   V P                  V4      pV P                  P                  P                  4       p. pRp\        P
                  ! V4      pV'       dh   V^ ,          p\        P                  ! V4      pVP                  4       \        P                  ! V4      P                  4       8w  d   VP                  V4        V P                  WC3,          p	V P                  V	4      p
V'       g   V
R8w  d'   VP                  \        P                   V
,          4       V#   \         d    Rp
 LFi ; i)zfUsed in conjunction with whereAmI to output description and
politeness of the given live region objectNnone)r   r6   rJ   ra   r   Zget_is_described_byr   Zget_all_textstripr
   get_descriptionr}   rC   _livevent_typeToStringr   r   ZLIVE_REGIONS_LEVEL)r   r   Zargsr   r~   ZresultsZ	targetobjZtargetsZdescriptionZlivepriorityZliveprioritystrs   &&,        r   generateLiveRegionDescriptionZ/LiveRegionManager.generateLiveRegionDescription  s     $$S)ll$$..0 	11#6
I
 !--i8K  "h&>&>s&C&I&I&KK{+	%44c_EL"99,GO o/NN866HI  	%$O	%s    %D D,+D,c                s\   a  V 3R  lpV! V4      '       d   V# \         P                  ! W4      # )c                 sD   < SP                  V 4      P                  R 4      # )Zatomic)_getAttrDictionaryrZ   )Zxr   r#   r   isContainerZ5LiveRegionManager._findContainer.<locals>.isContainer  s    **1-11(;;r   )r
   Zfind_ancestor)r   r   r   s   f& r   _findContainerZ LiveRegionManager._findContainer  s+    	< sJ%%c77r   c                s   V P                  VP                  4      pRpRpVP                  P                  R4      '       d   VP	                  R4      R8w  dv   RVP
                  9  d   VP
                  pMV P                  P                  P                  VP                  VP                  VP                  VP                  ,           4      pM@V P                  VP                  4      pV P                  P                  P                  V4      pV'       g   R# VP                  4       p\        P                  ! VP                  4      ;'       g!    \        P                  ! VP                  4      P                  4       pV'       d	   Wc8w  d   TpVP	                  R4      R8X  d@   WC,           pV P                  P!                  4        V P                  P#                  V4       R# R	V.R
V./# )z4Gets the message associated with a given live event.r5   zobject:text-changed:insertzcontainer-atomicZtrueu   ￼NZchannelZnotifyrw   rv   )r   rn   ZtypeZ
startswithrZ   Zany_datar6   r   Zexpand_eocsZdetail1Zdetail2r   r   r
   Zget_namer   Zinterrupt_presentationry   )r   rt   r   rw   rv   Z	containerZnamer{   r   r   rr   ZLiveRegionManager._getMessage  sl   ''5
 ::  !=>>yy+,65>>1#nnG"ll44@@emmU]]U]]5RTG !//=	,,00<<YG--/
 !!%,,/YY83K3KELL3Y``bDOF 99Y8+#DLL//1LL((.7)Xvh77r   c                sV    V P                   P                  4        R V n        RV n        R# )r5   N)r7   r   rG   rF   r   r   r   flushMessagesZLiveRegionManager.flushMessages>  s$     (*$)-&r   c                s    V P                   P                  V4       \        V P                   4      \        8  d   V P                   P	                  ^ 4       R# R# )z6Cache a message in our cache list of length CACHE_SIZEN)rB   r}   r*   
CACHE_SIZEr   )r   r{   rM   r   rz   ZLiveRegionManager._cacheMessageI  s<    d#t~~+NNq! ,r   c                s6   V P                  V4      pV P                  P                  P                  4       pW23V P                  9   d   V P                  W23,          # V P                  V4      pV\        8X  d"   V P                  '       d   W@P                  W23&   V# )zReturns the live politeness setting for a given object. Also,
registers LIVE_NONE objects in politeness overrides when monitoring.)r   r6   rJ   ra   rC   r   rc   rH   )r   r   r   r~   Zlivetypes   &&   r   rm   Z#LiveRegionManager._getLivevent_typeO  s     $$S)ll$$..0?d777,,c_==--c2H 9$=E))3/:Or   c                s    V P                  V4      pVf   V P                  V4      #  VR,          #   \         d    T P                  T4      u # i ; i)zJReturns the HTML 'id' or a path to the object is an HTML id is
unavailableZid)r   _getPathr   )r   r   r   rV   r   r   ZLiveRegionManager._getObjectId`  sU     '',===%%	&; 	&==%%	&s   1 AANc                s    T;'       g    V P                  V4      p VR,          R8X  d   \        # VR,          R8X  d   \        # VR,          R8X  d   \        # \        #   \
         d
    \        u # i ; i)z.Returns the politeness enum for a given objectzcontainer-liver   r   r   )r   ro   rp   rq   rc   r   )r   r   r   r   rS   r   r   Z#LiveRegionManager._liveStringToTypek  su    ::d55c:
	%&%/'(H4""'(K7%%   		s"   A A A A A32A3c                sn    V\         8X  d   R# V\        8X  d   R# V\        8X  d   R# V\        8X  d   R# R# )z@Returns the politeness level as a string given a politeness enumr   r   r   r   Zunknown)ro   rp   rq   rc   )r   rh   rM   r   r   Z(LiveRegionManager._livevent_typeToStringz  s1    !;&>)9$r   c                s.    \         P                  ! V4      # r   )r
   Zget_attributes_dict)r   r   rM   r   r   Z$LiveRegionManager._getAttrDictionary  s    ++C00r   c                s<   V P                   P                  P                  4       p. p W8X  g   \        P                  ! V4      f   VP                  4        \        V4      # VP                  \        P                  ! V4      4       \        P                  ! V4      pKw  )zVReturns, as a tuple of integers, the path from the given object
to the document frame.)	r6   r   r   r
   Z
get_parentZreverser|   r}   Zget_index_in_parent)r   r   r   Zpathrk   r   r   ZLiveRegionManager._getPath  ss     <<))99;("5"5c":"BT{"KK44S9:%%c*Cr   c                s   \         P                  ! 4       P                  R 4      '       gQ   \         P                  ! 4       P                  R R4       V P                  P                  \        P                  4       R# \         P                  ! 4       P                  R R4       V P                  4        V P                  P                  \        P                  4       R# )r   TFN)
r   r[   r   Zset_settingr6   ry   r   ZLIVE_REGIONS_MONITORING_ONr   ZLIVE_REGIONS_MONITORING_OFF)r   rL   r   s   &&&r   r?   Z"LiveRegionManager.toggleMonitoring  s    ++-99:LMM((*667I4PLL(()L)LM((*667I5Q LL(()M)MNr   )r<   r:   rG   rF   rC   rD   r6   r8   rA   rE   rH   rB   r7   )FT)F)r5   r   )%r,   r-   r.   r/   r   rT   r9   rU   rP   r_   r`   rg   rK   rI   rl   ru   rs   r   r=   r   r@   r>   r   r   r   rr   r   rz   rm   r   r   r   r   r   r?   r0   r1   r2   r3   r   r4   r4   L   s     .C`9@/9bP"U2K
&F4)'VJ<=B+#Z!F8'8R	.""	&1
+O Or   r4   i)r   r   r   Zgi.repositoryr   r5   r   r   r   r   r   r   r   Zax_collectionr	   Z	ax_objectr
   Zax_textr   Zax_utilitiesr   ro   rc   rp   rq   r    r   r   r4   r(   r   r   <module>r      sn               '   %	   
+ +\Q	O Q	Or   