%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/orca/scripts/web/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/orca/scripts/web/__pycache__/script.cpython-312.pyc

�

g
fջ���dZdZdZdZdZddlZddlmZddlm	Z	dd	lm
Z
dd
lmZddlmZddlm
Z
dd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'dd l(m)Z)dd!l*m+Z+dd"l,m-Z-dd#l.m/Z/Gd$�d%ej`�Z0y)&z$Id$z
$Revision$z$Date$znCopyright (c) 2005-2009 Sun Microsystems Inc.Copyright (c) 2010 Orca Team.Copyright (c) 2014-2015 Igalia, S.L.�LGPL�N)�Gtk)�caret_navigation)�cmdnames)�keybindings)�debug)�
focus_manager)�	guilabels)�input_event)�liveregions)�messages)�
orca_state)�settings)�settings_manager)�speech)�speechserver)�structural_navigation)�ACSS)�default)�
AXDocument)�AXObject)�AXTable)�AXText)�AXUtilities�)�	Bookmarks��BrailleGenerator��SoundGenerator��SpeechGenerator��	Utilitiesc�*��eZdZ�fd�Z�fd�Z�fd�Zd�Z�fd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Z�fd�ZdI�fd�	ZdJ�fd�	Zd�ZdK�fd�	ZdL�fd�	Z�fd�Z�fd�Zd�Zd�Zd�ZdJd�Zd�Z�fd�Z�fd�Z �fd�Z!�fd �Z"�fd!�Z#�fd"�Z$d#�Z%dM�fd$�	Z&dM�fd%�	Z'dN�fd&�	Z(d'�Z)d(�Z*dOd)�Z+dOd*�Z,d+�Z-dJd,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1�Z3d2�Z4d3�Z5d4�Z6d5�Z7d6�Z8d7�Z9d8�Z:d9�Z;d:�Z<d;�Z=d<�Z>d=�Z?d>�Z@d?�ZAd@�ZBdA�ZCdB�ZDdC�ZEdD�ZFdE�ZGdF�ZHdG�ZIdH�ZJ�xZKS)P�Scriptc���t�|�|�g|_d|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_d|_
tj�j!d��$tj�j#dd�tj�j!d��$tj�j#dd�tj�j!d��$tj�j#dd�d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|jFd<d	|jFd
<d|jFd<y)
NF�N����caretNavigationEnabledT�sayAllOnLoad�pageSummaryOnLoadz
text-spelling�invalid�
justificationz
text-align�indentztext-indent)$�super�__init__�_sayAllContents�	_inSayAll�_sayAllIsInterrupted�_loadingDocumentContent�_madeFindAnnouncement�_lastMouseButtonContext�_lastMouseOverObject�_preMouseOverContext�_inMouseOverObject�_inFocusMode�_focusModeIsSticky�_browseModeIsStickyr�
getManager�
getSetting�
setSetting�_changedLinesOnlyCheckButton�"_controlCaretNavigationCheckButton�_minimumFindLengthAdjustment�_minimumFindLengthLabel�_minimumFindLengthSpinButton�_pageSummaryOnLoadCheckButton�_sayAllOnLoadCheckButton�_skipBlankCellsCheckButton� _speakCellCoordinatesCheckButton�_speakCellHeadersCheckButton�_speakCellSpanCheckButton�"_speakResultsDuringFindCheckButton� _structuralNavigationCheckButton�"_autoFocusModeStructNavCheckButton�!_autoFocusModeCaretNavCheckButton�"_autoFocusModeNativeNavCheckButton�_layoutModeCheckButton�attributeNamesDict)�self�app�	__class__s  ��9/usr/lib/python3/dist-packages/orca/scripts/web/script.pyr1zScript.__init__As����
�����!������$)��!�',��$�%*��"�'/��$�$(��!�$,��!�"'���!���"'���#(�� ��&�&�(�3�3�4L�M�U��'�'�)�4�4�5M�t�T��&�&�(�3�3�N�C�K��'�'�)�4�4�^�T�J��&�&�(�3�3�4G�H�P��'�'�)�4�4�5H�$�O�,0��)�26��/�,0��)�'+��$�,0��)�-1��*�(,��%�*.��'�04��-�,0��)�)-��&�26��/�04��-�26��/�15��.�26��/�&*��#�-<����	�*�0?�����-�19����
�.�c���d|jg}tjtj|d�|jj�}d|��}|jj|||�|jj|||�|jj|||�|jj|||�t�|�1�y)z%Called when this script is activated.zWEB: Activating script forTz(script activation, in document content: N)
rTr�printTokens�
LEVEL_INFO�	utilities�inDocumentContent�caretNavigation�suspend_commands�structuralNavigation�liveRegionManager�tableNavigatorr0�activate)rS�tokens�in_doc�reasonrUs    �rVrbzScript.activatens����/����9��
���%�*�*�F�D�9����1�1�3��;�F�8�D�����-�-�d��J��G��!�!�2�2�4�V��V�L����/�/��&�j�&�I����,�,�T�v�:�v�F�
���rWc���g|_d|_d|_d|_d|_d|_d|_|jj�d}|jj|d|�|jj|d|�|jj|d|�|jj|d|�t�|�=�y)z'Called when this script is deactivated.Fr(Nzscript deactivation)r2r5r6r7r8r9r:r[�clearCachedObjectsr]r^r_r`rar0�
deactivate)rSrerUs  �rVrhzScript.deactivate|s���� "���',��$�%*��"�'/��$�$(��!�$,��!�"'������)�)�+�&�����-�-�d�E�6�B��!�!�2�2�4���G����/�/��e�V�D����,�,�T�5�&�A�
���rWc
�&�tj�}tj�j	d�}|t
jk(}|jjd|��}|jD]}|j|��|jjd|��}|jD]}|j|��|jjd|��}|jD]}|j|��|jtjdtjtj|j j#d���|jtjdtjtj|j j#d�d��|jtjdtjtj|j j#d�d	��|jtjd
tjtj$|j j#d���tj�j	d�}|t
jk(rd}nd
}|jtj|tjtj|j j#d���|S)z=Returns the application-specific keybindings for this script.�keyboardLayoutT)�refresh�
is_desktop�a�togglePresentationModeHandler�enableStickyFocusModeHandler��enableStickyBrowseModeHandler���toggleLayoutModeHandler�KP_Multiply�0�moveToMouseOverHandler)r�KeyBindingsrr>r?r�GENERAL_KEYBOARD_LAYOUT_DESKTOPr_�get_bindings�keyBindings�addr]r`�
KeyBinding�defaultModifierMask�ORCA_MODIFIER_MASK�inputEventHandlers�get�NO_MODIFIER_MASK)	rSr{�layout�	isDesktop�structNavBindings�
keyBinding�caretNavBindings�liveRegionBindings�keys	         rV�getAppKeyBindingszScript.getAppKeyBindings�s���"�-�-�/��!�,�,�.�9�9�:J�K���h�F�F�F�	� �5�5�B�B��Y�C�0��+�7�7�	(�J��O�O�J�'�	(� �/�/�<�<��Y�=�0��*�6�6�	(�J��O�O�J�'�	(�"�3�3�@�@��Y�A�0��,�8�8�	(�J��O�O�J�'�	(�	����"�"���/�/��.�.��'�'�+�+�,K�L�	
N�	O�	����"�"���/�/��.�.��'�'�+�+�,J�K��
�	�	����"�"���/�/��.�.��'�'�+�+�,K�L��
�	�	����"�"���/�/��,�,��'�'�+�+�,E�F�	
H�	I�"�,�,�.�9�9�:J�K���X�=�=�=��C��C�����"�"���/�/��.�.��'�'�+�+�,D�E�	
G�	H��rWc�N��t�|��|jj|jjd��|jj|jjd��|jj|jjd��tjtjtj�|jd<tjtjtjd�|jd<tjtj tj"d�|jd<tjtj$tj&�|jd<tjtj(tj*�|jd<tjtj,tj.�|jd<tjtj0tj2�|jd	<tjtj4tj6�|jd
<y)z+Defines InputEventHandlers for this script.T�
sayAllHandlerF�panBrailleLeftHandler�panBrailleRightHandlerrwrnrorqrtN)r0�setupInputEventHandlersr��updater_�get_handlersr]r`r�InputEventHandlerr&�sayAllr�SAY_ALL�panBrailleLeft�PAN_BRAILLE_LEFT�panBrailleRight�PAN_BRAILLE_RIGHT�moveToMouseOver�MOUSE_OVER_MOVE�togglePresentationMode�TOGGLE_PRESENTATION_MODE�enableStickyFocusMode�SET_FOCUS_MODE_STICKY�enableStickyBrowseMode�SET_BROWSE_MODE_STICKY�toggleLayoutMode�TOGGLE_LAYOUT_MODE)rSrUs �rVr�zScript.setupInputEventHandlers�s���	��'�)����&�&�t�'@�'@�'M�'M�d�'S�T����&�&�t�';�';�'H�'H��'N�O����&�&�t�'=�'=�'J�'J�4�'P�Q�
�)�)��
�
�� � �
"�	
����0�
�)�)��%�%��)�)��
�	
��� 7�8�
�)�)��&�&��*�*��
�	
��� 8�9�
�)�)��&�&��(�(�
*�	
��� 8�9�
�)�)��-�-��1�1�
3�	
��� ?�@�
�)�)��,�,��.�.�
0�	
��� >�?�
�)�)��-�-��/�/�
1�	
��� ?�@�
�)�)��'�'��+�+�
-�	
��� 9�:rWc�r�	|jS#t$rt|�|_|jcYSwxYw)z.Returns the "bookmarks" class for this script.)�	bookmarks�AttributeErrorr�rSs rV�getBookmarkszScript.getBookmarkss5��	"��>�>�!���	"�&�t�_�D�N��>�>�!�	"�s��%6�6c��t|�S)z.Returns the braille generator for this script.rr�s rV�getBrailleGeneratorzScript.getBrailleGenerators�� ��%�%rWc�*�tj�S)z5Returns the caret navigation support for this script.)r�CaretNavigationr�s rV�getCaretNavigationzScript.getCaretNavigations�� �/�/�1�1rWc��tjjtjjtjjtjj
tjjtjjtjjtjjtjjtjjtjjtjjtjjtjjtjj tjj"tjj$tjj&tjj(tjj*tjj,tjj.tjj0gS)z?Returns the structural navigation object types for this script.)r�StructuralNavigation�
BLOCKQUOTE�BUTTON�	CHECK_BOX�CHUNK�	CLICKABLE�	COMBO_BOX�	CONTAINER�ENTRY�
FORM_FIELD�HEADING�IFRAME�IMAGE�LANDMARK�LINK�LIST�	LIST_ITEM�LIVE_REGION�	PARAGRAPH�RADIO_BUTTON�	SEPARATOR�TABLE�UNVISITED_LINK�VISITED_LINKr�s rV�#getEnabledStructuralNavigationTypesz*Script.getEnabledStructuralNavigationTypessi��&�:�:�E�E�%�:�:�A�A�%�:�:�D�D�%�:�:�@�@�%�:�:�D�D�%�:�:�D�D�%�:�:�D�D�%�:�:�@�@�%�:�:�E�E�%�:�:�B�B�%�:�:�A�A�%�:�:�@�@�%�:�:�C�C�%�:�:�?�?�%�:�:�?�?�%�:�:�D�D�%�:�:�F�F�%�:�:�D�D�%�:�:�G�G�%�:�:�D�D�%�:�:�@�@�%�:�:�I�I�%�:�:�G�G�-I�	IrWc�,�tj|�S)z0Returns the live region support for this script.)r�LiveRegionManagerr�s rV�getLiveRegionManagerzScript.getLiveRegionManager3s���,�,�T�2�2rWc��t|�S)z,Returns the sound generator for this script.rr�s rV�getSoundGeneratorzScript.getSoundGenerator8s���d�#�#rWc��t|�S)z-Returns the speech generator for this script.r!r�s rV�getSpeechGeneratorzScript.getSpeechGenerator=s���t�$�$rWc��t|�S)z&Returns the utilities for this script.r#r�s rV�getUtilitieszScript.getUtilitiesBs�����rWc��tj�}|jd�tj�}|j	|dddd�tj
dtj�d���}|jd�|j|�tjjdddd�}|jdddd�|j|�tj�}|j|�tj}tj �j#d	�}tj$j'|�|_|j(j+|�|j	|j(dddd�tj,}tj �j#d
�}tj$j'|�|_|j.j+|�|j	|j.dddd�tj0}|j2j4}tj$j'|�|_|j6j+|�|j	|j6dddd�tj8}tj �j#d�}tj$j'|�|_|j:j+|�|j	|j:dd
dd�tj<}tj �j#d�}tj$j'|�|_|j>j+|�|j	|j>dddd�tj@}tj �j#d�}tj$j'|�|_!|jBj+|�|j	|jBdddd�tjD}tj �j#d�}tj$j'|�|_#|jFj+|�|j	|jFdddd�tjH}tj �j#d�}tj$j'|�|_%|jJj+|�|j	|jJdddd�tj�}|j	|dddd�tj
dtjL�d���}|jd�|j|�tjjdddd�}|jdddd�|j|�tj�}	|j|	�tjN}tj �j#d�}tj$j'|�|_(|jPj+|�|	j	|jPdddd�tjR}tj �j#d�}tj$j'|�|_*|jTj+|�|	j	|jTdddd�tjV}tj �j#d�}tj$j'|�|_,|jXj+|�|	j	|jXdddd�tjZ}tj �j#d�}tj$j'|�|_.|j\j+|�|	j	|j\dd
dd�tj�}
|j	|
dddd�tj
dtj^�d���}|jd�|
j|�tjjdddd�}|jdddd�|
j|�tj�}|j|�tj �j#d�}
tj`}|
tbjdk7}tj$j'|�|_3|jfj+|�|j	|jfdddd�tjh}|
tbjjk(}tj$j'|�|_6|jlj+|�|j	|jldddd�tj�}|j	|dddd�tj
tjn��|_8|jpjsdd�|j	|jpdddd�tjttj �j#d�ddd�|_;tjx�|_=|jzj}|jv�|j	|jzdddd�|jpj|jz�|j��|S)z;Return a GtkGrid containing app-unique configuration items.�rrz<b>z</b>)�labelTg�?r*�caretNavTriggersFocusModerp�structNavTriggersFocusModerr�nativeNavTriggersFocusMode�r+�r,��
layoutMode��speakCellCoordinates�
speakCellSpan�speakCellHeaders�skipBlankCells�findResultsVerbosity�findResultsMinimumLength�)Ar�Grid�set_border_width�Frame�attach�Labelr
�PAGE_NAVIGATION�set_use_markup�set_label_widget�	Alignment�new�set_paddingr|�USE_CARET_NAVIGATIONrr>r?�CheckButton�new_with_mnemonicrB�
set_active�AUTO_FOCUS_MODE_CARET_NAVrO�USE_STRUCTURAL_NAVIGATIONr_�enabledrM�AUTO_FOCUS_MODE_STRUCT_NAVrN�AUTO_FOCUS_MODE_NATIVE_NAVrP�READ_PAGE_UPON_LOADrG�PAGE_SUMMARY_UPON_LOADrF�CONTENT_LAYOUT_MODErQ�TABLE_NAVIGATION�TABLE_SPEAK_CELL_COORDINATESrI�TABLE_SPEAK_CELL_SPANSrK�TABLE_ANNOUNCE_CELL_HEADERrJ�TABLE_SKIP_BLANK_CELLSrH�FIND_OPTIONS�FIND_SPEAK_RESULTSr�FIND_SPEAK_NONErL�FIND_ONLY_SPEAK_CHANGED_LINES�FIND_SPEAK_IF_LINE_CHANGEDrA�FIND_MINIMUM_MATCH_LENGTHrD�
set_alignment�
AdjustmentrC�
SpinButtonrE�set_adjustment�set_mnemonic_widget�show_all)rS�grid�generalFramer��generalAlignment�generalGrid�value�
tableFrame�tableAlignment�	tableGrid�	findFrame�
findAlignment�findGrid�	verbosity�hgrids               rV�getAppPreferencesGUIzScript.getAppPreferencesGUIGs5	���x�x�z�����b�!��y�y�{�����L�!�Q��1�-��	�	�#�i�&?�&?�%@�� E�F��
���T�"��%�%�e�,��=�=�,�,�S�#�q�!�<���$�$�Q��2�q�1����)�*��h�h�j�����[�)��.�.�� �+�+�-�8�8�9Q�R���O�O�-�-�e�4�	
�/��/�/�:�:�5�A����4�B�B�A�q�!�Q�O��3�3�� �+�+�-�8�8�9T�U��14���1R�1R�SX�1Y��.��.�.�9�9�%�@����4�A�A�1�a��A�N��3�3���)�)�1�1���O�O�-�-�e�4�	
�-��-�-�8�8��?����4�@�@�!�Q��1�M��4�4�� �+�+�-�8�8�9U�V��25�/�/�2S�2S�TY�2Z��/��/�/�:�:�5�A����4�B�B�A�q�!�Q�O��4�4�� �+�+�-�8�8�9U�V��25�/�/�2S�2S�TY�2Z��/��/�/�:�:�5�A����4�B�B�A�q�!�Q�O��-�-�� �+�+�-�8�8��H��(+���(I�(I�%�(P��%��%�%�0�0��7����4�8�8�!�Q��1�E��0�0�� �+�+�-�8�8�9L�M��-0�_�_�-N�-N�u�-U��*��*�*�5�5�e�<����4�=�=�q�!�Q��J��-�-�� �+�+�-�8�8��F��&)�o�o�&G�&G��&N��#��#�#�.�.�u�5����4�6�6��1�a��C��Y�Y�[�
����J��1�a��+��	�	�#�i�&@�&@�%A�� F�G��
���T�"��#�#�E�*����*�*�3��Q��:���"�"�1�a��Q�/����~�&��H�H�J�	����9�%��6�6�� �+�+�-�8�8�9O�P���O�O�-�-�e�4�	
�-��-�-�8�8��?�����>�>��1�a��K��0�0�� �+�+�-�8�8��I���O�O�-�-�e�4�	
�&��&�&�1�1�%�8�����7�7��A�q�!�D��4�4�� �+�+�-�8�8�9K�L���O�O�-�-�e�4�	
�)��)�)�4�4�U�;�����:�:�A�q�!�Q�G��0�0�� �+�+�-�8�8�9I�J���O�O�-�-�e�4�	
�'��'�'�2�2�5�9�����8�8�!�Q��1�E��I�I�K�	����I�q�!�Q��*��	�	�#�i�&<�&<�%=�T� B�C��
���T�"��"�"�5�)��
�
�)�)�#�s�A�q�9�
��!�!�!�Q��A�.��
�
�m�$��8�8�:�����(�#�$�/�/�1�<�<�=S�T�	��,�,���X�5�5�5���O�O�-�-�e�4�	
�/��/�/�:�:�5�A�����?�?��A�q�!�L��7�7���X�@�@�@���O�O�-�-�e�4�	
�)��)�)�4�4�U�;�����9�9�1�a��A�F����
������q�!�Q��*��i�i�i�A�A�B�	
�$��$�$�2�2�1�c�:�
���T�1�1�1�a��A�>�
�N�N�+�6�6�8�C�C�*�,�-.��A�
7�	
�)�-0�N�N�,<��)��)�)�8�8��-�-�	/�
���T�6�6��1�a��C��$�$�8�8��-�-�	/�	
�
�
���rWc�`�|jj�stj}n;|jj�rtj
}ntj}||jj�|jj�|jj�|jj�|jj�|jj�|jj�|jj�|j j�|j"j�|j$j�|j&j�|j(j�d�S)z7Returns a dictionary with the app-specific preferences.)r�r�r+r,�structuralNavigationEnabledr�r*r�r�r�r�r�r�r�)rL�
get_activerrrAr�FIND_SPEAK_ALLrE�	get_valuerGrFrMrNrBrOrPrIrQrKrJrH)rSrs  rV�getPreferencesFromGUIzScript.getPreferencesFromGUI�sB���6�6�A�A�C� �0�0�I�
�
.�
.�
9�
9�
;� �;�;�I� �/�/�I�%.�(,�(I�(I�(S�(S�(U� �9�9�D�D�F�!%�!C�!C�!N�!N�!P�+/�+P�+P�+[�+[�+]�*.�*Q�*Q�*\�*\�*^�&*�&M�&M�&X�&X�&Z�)-�)O�)O�)Z�)Z�)\�*.�*Q�*Q�*\�*\�*^�$(�$I�$I�$T�$T�$V��5�5�@�@�B�!�;�;�F�F�H� $� A� A� L� L� N�"�=�=�H�H�J�
�	
rWc�&��|jjd�r,|jr tj|j
�r<y|jjd�r tj|j�ryt�|�%|�S)z4Returns True if this object event should be skipped.�object:state-changed:focusedF�object:children-changed)
�type�
startswith�detail1r�is_link�source�	is_dialog�any_datar0�skipObjectEvent)rS�eventrUs  �rVr(zScript.skipObjectEventsk����:�:� � �!?�@�U�]�]��"�"�5�<�<�0��
�Z�Z�
"�
"�#<�
=��$�$�U�^�^�4���w�&�u�-�-rWc���t�|�|�d}tjtj|d�|j
j
�y)Nz"WEB: Flushing live region messagesT)r0�presentationInterruptr�printMessagerZr`�
flushMessages)rS�	killFlash�msgrUs   �rVr+zScript.presentationInterrupts?���
��%�i�0�2��
���5�+�+�S�$�7����,�,�.rWc#�.��K�|jj�s:d|g}tjtj|d�t
�|�||�yd|_tj�jd�}|tjk(}|�|jj�\}}n|}|jj�\}}�fd��d|_d}	|	�sb|r|jj!||�}
n|jj#||�}
|
|_t'|
�D�]t\}}|\}}
}}d|d|d	|d
|
d|dg}tjtj|d�|jj)||
�r�]|
|k(r�c|jj+|�r�|jj-||
�r��|j.j1|gd|�
�}|}�|�\}}t3|�t3|�k7r��t'|�D]�\}}t5j6|||
|�}d|g}tjtj|d�|j8j;|�|j<j?||
|�|||g������w|
dd|
dd}}|jjA||dz
�\}}||k(r$||kr|jjA||�\}}||k(r5||kr0d|d|d|d|g}tjtj|d�n|du}	|	s��bd|_g|_g|_d}tjBtj|d�|jE�y�w)zACreates a generator that can be used to iterate document content.z.WEB: textLines called for non-document contentTNF�sayAllStylec�&��gg}}|D]�}t|t�r.�|�\}}|j|�|j|��At|t�r|j	|��ct|t
�s�t|j	|���||fS�N)�
isinstance�list�extend�str�appendr)�
utterances�elements�voices�u�e�v�_parseUtterancess      �rVr?z*Script.textLines.<locals>._parseUtterances,s����!�2�f�H��
%���a��&�+�A�.�D�A�q��O�O�A�&��M�M�!�$���3�'��O�O�A�&���4�(��M�M�!�$�
%��V�#�#rWzWEB SAY ALL CONTENT:z. �'z' (�-�))�eliminatePauses�priorObj�WEBr)rrprz5WEB: Cycle within object detected in textLines. Last:�, zNext:z0WEB: textLines complete. Verifying SayAll status)#r[r\rrYrZr0�	textLinesr4rr>r?r�SAYALL_STYLE_SENTENCE�getCaretContext�getPriorContextr3�getSentenceContentsAtOffset�getLineContentsAtOffsetr2�	enumerate�isInferredLabelForContents�isLabellingInteractiveElement�isLinkAncestorOfImageInContents�speechGenerator�generateContents�lenr�
SayAllContext�_sayAllContextsr8�eventSynthesizer�scroll_into_view�findNextCaretInOrderr,�inSayAll)rS�obj�offsetrcr1�sayAllBySentence�characterOffsetrD�priorOffset�done�contents�i�content�startOffset�	endOffset�textr9r:r;�element�context�lastObj�
lastOffsetr/r?rUs                        @�rVrGzScript.textLiness�������~�~�/�/�1�F��L�F����e�.�.���=��G��c�6�*��$)��!�&�1�1�3�>�>�}�M��&�(�*H�*H�H���>�#'�>�>�#A�#A�#C� �C��$�O� $��� >� >� @���+�	$���������>�>�E�E�c�?�[���>�>�A�A�#��W��#+�D� �'��1�!
/�
��7�4;�1��[�)�T�0��T�3��T�5�+�s�I�WZ�\���!�!�%�"2�"2�F�D�A��>�>�<�<�W�h�O���)�+���>�>�?�?��D���>�>�A�A�#�x�P��!�1�1�B�B��I�t�h�C�H�
���#3�J�#?� ��&��x�=�C��K�/��"+�H�"5�/�J�A�w�*�8�8��W�k�9�>�G�#�W�-�F��%�%�e�&6�&6���E��(�(�/�/��8��)�)�:�:�3��Y�W�"�F�1�I�.�.�/�5!
/�F#+�2�,�q�/�8�B�<��?�Z�G�#'�>�>�#F�#F�w�PZ�]^�P^�#_� �C���g�~�/�Z�"?�'+�~�~�'J�'J�7�T^�'_�$��_��g�~�/�Z�"?�Q�!�4��W�c�4��Z���!�!�%�"2�"2�F�D�A���$�;�D�g�j���!���!���@��
���5�+�+�S�$�7��
�
��s
�MN�A
Nc�N�|jj|�}|sytj|�}|dkryt	||�}|jj|��}|jj
|||��tj|�}||z
tj�jd�krytj�jd�}|tjk(ry|jr2|tjk(r|jj|||f�ry|jj!||�}|j#|�|j%|�|jj'�}	|	r|j)|	�d|_
y)zAUpdates the context and presents the find results if appropriate.Nr��
documentFramer�r�T)r[�getDocumentForObjectr�get_selection_start_offset�maxrI�setCaretContext�get_selection_end_offsetrr>r?rrr6r�contextsAreOnSameLinerL�
speakContents�
updateBraille�getFindResultsCount�presentMessage)
rSrZr[�document�startrg�endrr`�resultsCounts
          rV�presentFindResultszScript.presentFindResultsxsc���>�>�6�6�s�;�����1�1�#�6���1�9���V�U�#���.�.�0�0�x�0�H�����&�&�s�F�(�&�K��-�-�c�2����;�)�4�4�6�A�A�B\�]�]��$�/�/�1�<�<�=S�T�	���0�0�0���%�%��H�?�?�?��~�~�3�3�G�c�6�]�K���>�>�9�9�#�v�F�����8�$����3���~�~�9�9�;�������-�%)��"rWc���|jj�s:d|g}tjtj|d�t
�|�|||�S|xs"tj�j�}d|g}tjtj|d�tj|j||�|j�y)z�Speaks the contents of the document beginning with the present
        location.  Overridden in this script because the sayAll could have
        been started on an object without text (such as an image).
        z+WEB: SayAll called for non-document contentTz'WEB: SayAll called for document content)
r[r\rrYrZr0r�r	r>�get_locus_of_focusrrG�_Script__sayAllProgressCallback)rS�
inputEventrZr[rcrUs     �rVr�z
Script.sayAll�s�����~�~�/�/�1�C�S�I�F����e�.�.���=��7�>�*�c�6�:�:��D�]�-�-�/�B�B�D��;�S�A��
���%�*�*�F�D�9��
�
�d�n�n�S�&�1�4�3P�3P�Q�rWc����|jj�st�	|�
||�St	j
�j
d�sy	|jd\}}}}tj
�jd|d��|jj||�|jj||�\}}|jd||�y#t$rYywxYw)N�rewindAndFastForwardInSayAllFr��
notify_scriptT)r[r\r0�
_rewindSayAllrr>r?r2�
IndexErrorr	�set_locus_of_focusrp�findPreviousCaretInOrderr�)
rSrg�minCharCountrZrxry�string�prevObj�
prevOffsetrUs
         �rVr�zScript._rewindSayAll�s�����~�~�/�/�1��7�(��,�?�?��*�*�,�7�7�8V�W��	�&*�&:�&:�1�&=�#�C���V�	� � �"�5�5�d�C�u�5�U����&�&�s�E�2�"�n�n�E�E�c�5�Q�������D�'�:�.����	��	�s�C�	C&�%C&c����|jj�st�|�
|�St	j
�j
d�sy	|jd\}}}}tj
�jd|d��|jj||�|jj||�\}}|jd||�y#t$rYywxYw)Nr�Fr)r�T)r[r\r0�_fastForwardSayAllrr>r?r2r�r	r�rprXr�)	rSrgrZrxryr��nextObj�
nextOffsetrUs	        �rVr�zScript._fastForwardSayAll�s�����~�~�/�/�1��7�-�g�6�6��*�*�,�7�7�8V�W��	�&*�&:�&:�2�&>�#�C���V�	� � �"�5�5�d�C�u�5�U����&�&�s�C�0�"�n�n�A�A�#�s�K�������D�'�:�.����	��	�s�C�	C%�$C%c���|jj�st�|�
||�y|tj
jk(�rEttjtj��rd|_tjj}|dk(r|j|�ry|dk(r|j|�ry|j j#�s�|j$j#�s�t'j(�j+|j,|j.�|jj1|j,|j.�|j3|j,�d|_g|_g|_yt'j(�j;d|j,d��t'j(�j+|j,|j.|j<t&j>�|jjA|j,|j.�y)NT�Down�UpFr�)!r[r\r0r~rrT�INTERRUPTEDr4r�lastInputEventr�
KeyboardEventr4�event_stringr�r�r_�'last_input_event_was_navigation_commandrar	r>�emit_region_changedrZ�
currentOffset�setCaretPositionrtr3r2rUr��currentEndOffsetr�rp)rSrg�progressType�lastKeyrUs    �rV�__sayAllProgressCallbackzScript.__sayAllProgressCallback�s�����~�~�/�/�1��G�,�W�l�C���<�5�5�A�A�A��*�3�3�[�5N�5N�O�,0��)�$�3�3�@�@���f�$��)@�)@��)I����_��);�);�G�)D���2�2�Z�Z�\�!�0�0�X�X�Z�!�,�,�.�B�B����W�%:�%:�<��N�N�3�3�G�K�K��AV�AV�W��&�&�w�{�{�3�"�D�N�#%�D� �#%�D� ��� � �"�5�5�d�G�K�K�W\�5�]�� � �"�6�6��K�K��.�.��0H�0H��!�!�	#�	
���&�&�w�{�{�G�4I�4I�JrWc��|jS)z% Returns True if we're in focus mode.)r;r�s rV�inFocusModezScript.inFocusMode�s��� � � rWc��|jS)z-Returns True if we're in 'sticky' focus mode.)r<r�s rV�focusModeIsStickyzScript.focusModeIsSticky�s���&�&�&rWc��|jS)z.Returns True if we're in 'sticky' browse mode.)r=r�s rV�browseModeIsStickyzScript.browseModeIsSticky�s���'�'�'rWc�8�|jr(d}tjtj|d�y|jr(d}tjtj|d�y|j�r(d}tjtj|d�y|jj�xs|jj�}tj�jd�s*|r(d}tjtj|d�y|rtj|�rd}|jj�}tj�jd	�sE|rC|jj!|�s(d
}tjtj|d�ytj�jd�s7|s5|s3d}tjtj|d�|j"S|jj%|�r+d
|dg}tj&tj|d�yt)j*|�xst)j,|�}|j"rF|rD|jj/�r*d|g}tj&tj|d�y|j"r�|jj1|�rm|jj3|�r*d|g}tj&tj|d�yd}tjtj|d�yd|dg}tj&tj|d�y)z0Returns True if we should use focus mode in obj.z2WEB: Using focus mode because focus mode is stickyTz7WEB: Not using focus mode because browse mode is stickyFz2WEB: Not using focus mode because we're in SayAll.r�z4WEB: Not using focus mode due to struct nav settingsNr�z3WEB: Not using focus mode due to caret nav settingsr�z>WEB: Not changing focus/browse mode due to native nav settingszWEB: Using focus mode becausezis a focus mode widgetz5WEB: Staying in focus mode due to arrowing in role ofz/WEB: Forcing browse mode for web app descendantzAWEB: Staying in focus mode because we're inside a web applicationzWEB: Not using focus mode forzdue to lack of cause)r<rr,rZr=rYr_r�rarr>r?r�is_deadr]r[�isNavigableToolTipDescendantr;�isFocusModeWidgetrYrr$�is_radio_button� lastInputEventWasUnmodifiedArrow�isWebAppDescendant�"forceBrowseModeForWebAppDescendant)rSrZr�r/�lastCommandWasStructNav�lastCommandWasCaretNavrc�doNotToggles        rV�useFocusModezScript.useFocusModes����"�"�F�C����u�/�/��d�;���#�#�K�C����u�/�/��d�;���=�=�?�F�C����u�/�/��d�;��
�%�%�M�M�O�
M��"�"�J�J�L�	 � �*�*�,�7�7�8T�U�&�H�C����u�/�/��d�;���x�'�'��0��G�!%�!5�!5�!]�!]�!_���*�*�,�7�7�8S�T�&��>�>�>�>�w�G�G�C����u�/�/��d�;���*�*�,�7�7�8T�U�+�/E�R�C����u�/�/��d�;��$�$�$��>�>�+�+�C�0�5�s�<T�U�F����e�.�.���=��!�)�)�#�.�R�+�2M�2M�c�2R���������1`�1`�1b�M�s�S�F����e�.�.���=��������!B�!B�3�!G��~�~�@�@��E�K�S�Q���!�!�%�"2�"2�F�D�A��U�C����u�/�/��d�;��1�3�8N�O��
���%�*�*�F�D�9�rWc�h�|jj|fi|��}tj|�y)zSpeaks the specified contents.N)rQrRr�speak)rSr`�argsr9s    rVrszScript.speakContentsHs-��;�T�)�)�:�:�8�L�t�L�
����Z� rWc����|jj�s+|jj|�st�	|�|�y|jj
|�}|jj|��\}}|syd}|jj||�rItj|�r4tj|�d}||jk(rd}|||dz|gg}n|jj||�}|sy|d\}}}}|dkDr|xsd}|r$|j||�|j!|�n|j#|�d|j$d<y)	z3Speaks the character at the current caret position.Nrkrrsr�
�char�lastTextUnitSpoken)r]r�r[�$isContentEditableWithEmbeddedObjectsr0�sayCharacter�getTopLevelDocumentForObjectrI�treatAsEndOfLiner�
supports_textr�get_character_at_offset�EMBEDDED_OBJECT_CHARACTER�getCharacterContentsAtOffset�speakMisspelledIndicator�speakCharacterrs�pointOfReference)
rSrZrwr[r`r�rxryr�rUs
         �rVr�zScript.sayCharacterNsP����#�#�K�K�M��>�>�F�F�s�K��G� ��%���>�>�>�>�s�C���n�n�4�4�8�4�L���V������>�>�*�*�3��7�H�<R�<R�SV�<W��1�1�&�9�!�<�D��t�5�5�5����f�f�q�j�$�7�8�H��~�~�B�B�3��O�H���"*�1�+���U�C���1�9��^�t�F���)�)�#�u�5�����'����x�(�6<����2�3rWc�
��|jj|�}|jj�s|st�|�|�y|jj
|�}|jj|��\}}|jj�\}}|dk(r|dz}|jj||d��}|d\}}	}
}|j||	�|j|�d|jd	<y)
z.Speaks the word at the current caret position.Nrk�RightrT��useCacher�wordr�)
r[r�r]r�r0�sayWordr�rI�lastKeyAndModifiers�getWordContentsAtOffsetr�rsr�)
rSrZ�
isEditablerwr[�	keyString�mods�wordContents�textObjrcrdr�rUs
            �rVr�zScript.sayWordss�����^�^�H�H��M�
��#�#�K�K�M�V`��G�O�C� ���>�>�>�>�s�C���n�n�4�4�8�4�L���V��.�.�<�<�>��	�4�����a�K�F��~�~�=�=�c�6�TX�=�Y��0<�Q��-���i���%�%�g�{�;����<�(�6<����2�3rWc�F��|jj�}|jj�xs|jj�}|jj|�}|s|s|st�
|�|�y|jj|�}d}|s|r|jj|��\}}|jj|��\}}|jj||d��}	|j|	|��d|jd<y)z.Speaks the line at the current caret position.NrkTr�)rD�liner�)r]r�r_rar[r�r0�sayLiner�rJrIrLrsr�)rSrZr�r�r�rwrDr^r[r`rUs          �rVr�zScript.sayLine�s���"&�!5�!5�!]�!]�!_���%�%�M�M�O�
M��"�"�J�J�L�	 ��^�^�H�H��M�
�&�*A�:��G�O�C� ���>�>�>�>�s�C����!�Z�$(�N�N�$B�$B�QY�$B�$Z�!�H�k��n�n�4�4�8�4�L���V��>�>�9�9�#�v�PT�9�U�����8�h��7�6<����2�3rWc�*��|jj|�rtj|�rt	�
|�|fi|��ytj|�rt	�
|�|fi|��y|jd�}|jj�s&|jd�stj|�r"|jj�\}}||d<tj|�rt	�
|�|fi|��y|jdd�}d|d|g}tjtj |d�d}|jdd	�}|jj#|||�}	|j%|	�|j&|	fi|��y)
NrD�includeContext�	interruptFzWEB: Presenting objectz. Interrupt:Tr[r)r[r\r�is_documentr0�
presentObject�
is_status_barr�r]r�r�	get_tablerJ�is_entryrrYrZ�getObjectContentsAtOffset�displayContentsrs)rSrZr�rDr^r�rcr�r[r`rUs          �rVr�zScript.presentObject�sa����~�~�/�/��4��8O�8O�PS�8T��G�!�#�.��.���$�$�S�)��G�!�#�.��.���8�8�J�'�����G�G�I��h�h�'�(�G�,=�,=�c�,B�$(�N�N�$B�$B�$D�!�H�k�'�D�������$��G�!�#�.��.���H�H�[�%�0�	�*�C���K��
���%�*�*�F�D�9�
�����(�A�&���>�>�;�;�C���R�����X�&�����8�,�t�,rWc�v��dtj|�vr|j|�yt�|�|�y)z@Try to reposition the cursor without having to do a full update.�N)r�get_all_textrtr0� updateBrailleForNewCaretPosition)rSrZrUs  �rVr�z'Script.updateBrailleForNewCaretPosition�s6����v�*�*�3�/�/����s�#��
��0��5rWc�.��tj�jd�sItj�jd�s&tjtj
dd�y|jrQdtj|�vr:d|g}tjtj
|d�t�|�,|fi|��y|jd|jj|��}|s:d	|g}tjtj
|d�t�|�,|fi|��y|jj|�}|j j#�s�|j$j#�s�|j&j#�sk|sit)j*|�sT|jj-�s:d
|g}tjtj
|d�t�|�,|fi|��y|jj/|d��\}}|dkDr<|r:|jj1|�rt3|tj4|��}|jj7||�}|j9||�
�y)z5Updates the braille display to show the given object.�
enableBraille�enableBrailleMonitor�BRAILLE: disabledTNr�z#WEB: updating braille in focus moderlz-WEB: updating braille for non-document objectz3WEB: updating braille for unhandled navigation type)rl�getReplicantrrk)rr>r?rr,rZr;rr�rYr0rtr�r[r�r�r]r�r_rar�
is_plain_text�&lastInputEventWasCaretNavWithSelectionrI�treatAsTextObject�min�get_character_countrLr�)	rSrZr�rcrw�isContentEditabler[r`rUs	        �rVrtzScript.updateBraille�s��� �*�*�,�7�7��H�#�.�.�0�;�;�<R�S����u�/�/�1D�d�K�������1D�1D�S�1I�!I�;�S�A�F����e�.�.���=��G�!�#�.��.���8�8�O�T�^�^�-X�-X�Y\�-]�^���E�s�K�F����e�.�.���=��G�!�#�.��.�� �N�N�O�O�PS�T���#�#�K�K�M��,�,�T�T�V��&�&�N�N�P�$��+�+�H�5��>�>�H�H�J�K�S�Q�F����e�.�.���=��G�!�#�.��.���n�n�4�4�8�Z^�4�_���V��A�:�+����0P�0P�QT�0U����!;�!;�C�!@�A�F��>�>�9�9�#�v�F�����X�X��>rWc�x�tj�jd�sItj�jd�s&tjtj
dd�y|j
dd��}|jd�}|jj||��}|sy|\}}|D]}|j||��|jr:|jd	jjd
�|jd	_|j|d��|jdd�
�y)zDisplays contents in braille.r�r�r�TN)�clearBraille�addLinerlrkr)� F)�getLinkMask)�panToCursorr�)rr>r?rr,rZ�getNewBrailleLiner��brailleGeneratorrR�addBrailleRegionsToLine�regionsr��rstrip�setBrailleFocus�refreshBraille)rSr`r�r�rwr��
focusedRegion�regions        rVr�zScript.displayContents�s�� �*�*�,�7�7��H�#�.�.�0�;�;�<R�S����u�/�/�1D�d�K���%�%�4��%�F���8�8�O�,���(�(�9�9�(�RZ�9�[����!)�����	7�F��(�(���6�	7��<�<�&*�l�l�2�&6�&=�&=�&D�&D�S�&I�D�L�L���#����]���>�����%��@rWc����|jj�s*|jj�r|j	�st
�|�||�y|jj�}|sy|d\}}}}|jj||�|j|�|jd��r	|jd��r�|jd�y)zPans braille to the left.NrF��	panToLeftT)�flatReviewPresenter�	is_activer[r\�isBrailleBeginningShowingr0r��getPreviousLineContentsr�rt�panBrailleInDirectionr��	rSr�	panAmountr`rZrxryr�rUs	        �rVr�zScript.panBrailleLefts�����#�#�-�-�/��.�.�2�2�4��0�0�2��G�"�:�y�9���>�>�9�9�;����"*�1�+���U�C�����'�'��U�3����3��
�(�(�5�(�9���(�(�5�(�9�	
���E�"�rWc����|jj�s*|jj�r|j	�st
�|�||�y|jj�}|sy|d\}}}}|jj||�|j|�|jd��r	|jd��r�|jd�y)zPans braille to the right.NrTr�F)r�r�r[r\�isBrailleEndShowingr0r��getNextLineContentsr�rtrr�rs	        �rVr�zScript.panBrailleRight&s�����#�#�-�-�/��.�.�2�2�4��*�*�,��G�#�J�	�:���>�>�5�5�7����"*�1�+���U�C�����'�'��U�3����3��
�(�(�4�(�8���(�(�4�(�8�	
���E�"�rWc����|js6|jj��r|jj��rt�|��|||�S|�t
dtj���}|jj��r|�|�tj�||�||fS|jjd��\}}|�k(r|}n|}|jj�|�}tt�fd�|��}t|�dk(rd}	n|jj!�||�}	|	dkDr||	\}
}}}|j"|vr|||fSy)z<To-be-removed. Returns the string, caretOffset, startOffset.Nrrkc���|d�k(S�Nr�)�xrZs �rV�<lambda>z+Script.getTextLineAtCaret.<locals>.<lambda>Us����1����rWrr))rsrr)r;r[r\r�r0�getTextLineAtCaretror�get_caret_offsetr��
get_substringrIrLr5�filterrS�findObjectInContentsr�)
rSrZr[rcrd�
contextObj�
contextOffset�caretOffsetr`�index�	candidater�rUs
 `          �rVrzScript.getTextLineAtCaret@sS������D�N�N�$D�$D�S�$I��n�n�.�.�s�3��7�-�c�6�;�	�R�R��>���F�3�3�C�8�9�F��>�>�+�+�C�0��&�9�+@��'�'��[�)�D�f�k�Y�Y�$(�N�N�$B�$B�QU�$B�$V�!�
�M����'�K� �K��>�>�9�9�#�v�F����4�h�?�@���x�=�A���E��N�N�7�7��V�X�N�E��2�:�8@���5�I�{�I�v��-�-�V�;��{�K�7�7�rWc�^�|js |jtj�y|jr<|j
\}}|jj||�|j�y|j}|jj|d�\}}|sytj|�rtj|�|jj||�}|jj!||�|j#|�|j%|�d|_y)z@Moves the context to/from the mouseover which has just appeared.NrT)r8rvr
�MOUSE_OVER_NOT_FOUNDr:�oldMouseCoordinatesrV�route_to_point�restorePreMouseOverContextr[�findFirstCaretContextr�is_focusabler�
grab_focusr�r�rsrt)rSrr�yrZr[r`s       rVr�zScript.moveToMouseOverbs����(�(����� =� =�>���"�"��+�+�D�A�q��!�!�0�0��A�6��+�+�-���'�'���n�n�:�:�3��B���V����#�#�C�(�����$��>�>�;�;�C��H�����'�'��V�4����8�$����3��"&��rWc���|j\}}|jj||�|j|jj	||��|j|�d|_d|_y)z;Cleans things up after a mouse-over object has been hidden.FN)r9r[r�rsr�rtr:r8)rSrZr[s   rVrz!Script.restorePreMouseOverContext}sd���/�/���V����'�'��V�4����4�>�>�C�C�C��P�Q����3��"'���$(��!rWc���|jr|r|jtj�d|_d|_d|_d}|jj||j|�|jj||j|�|jj||j|�|jj||j|�y)NFTzenable sticky browse mode)r=rvr
�MODE_BROWSE_IS_STICKYr;r<r]r^r_r`ra�rSr�forceMessageres    rVr�zScript.enableStickyBrowseMode�s����'�'�<����� >� >�?�!���"'���#'�� �,�����-�-�d�D�4E�4E�v�N��!�!�2�2�4��9J�9J�F�S����/�/��d�6G�6G��P����,�,�T�4�3D�3D�f�MrWc���|jr|r|jtj�d|_d|_d|_d}|jj||j|�|jj||j|�|jj||j|�|jj||j|�y)NTFzenable sticky focus mode)r<rvr
�MODE_FOCUS_IS_STICKYr;r=r]r^r_r`rar$s    rVr�zScript.enableStickyFocusMode�s����&�&�,����� =� =�>� ���"&���#(�� �+�����-�-�d�D�4E�4E�v�N��!�!�2�2�4��9J�9J�F�S����/�/��d�6G�6G��P����,�,�T�4�3D�3D�f�MrWc��tj�jd�}|r |jtj
�n|jtj�tj�jd|�y)Nr�)rr>r?rvr
�MODE_LAYOUT�MODE_OBJECTr@)rSrr�s   rVr�zScript.toggleLayoutMode�sb��)�4�4�6�A�A�,�O�O�
������ 4� 4�5����� 4� 4�5��#�#�%�0�0��z�JrWc��|jj|�\}}|jr�tj|�}tj|�r|jj|d�nDtj|�r/|jjtj|�d�|js�|jtj�n�|jj|�se|jj�s6|j j�s|j"j�s|rtj$|�|jtj&�|j|_d|_d|_d}|jj-||j|�|j j-||j|�|j.j-||j|�|j"j-||j|�y)Nr)Fztoggling focus/browse mode)r[rIr;r�
get_parentr�is_list_boxrp�is_menur5rvr
�MODE_BROWSE�grabFocusWhenSettingCaretr]r�r_rar�
MODE_FOCUSr<r=r^r`)rSrrlrZr]�parentres       rVr�zScript.togglePresentationMode�s���!%���!?�!?�
�!N���o�����(�(��-�F��&�&�v�.����.�.�v�r�:��$�$�V�,����.�.�x�/B�/B�6�/J�B�O��/�/��#�#�H�$8�$8�9��>�>�;�;�C�@��(�(�P�P�R��0�0�X�X�Z��*�*�R�R�T�!��#�#�C�(����� 3� 3�4� $� 1� 1�1���"'���#(�� �-�����-�-�d�D�4E�4E�v�N��!�!�2�2�4��9J�9J�F�S����/�/��d�6G�6G��P����,�,�T�4�3D�3D�f�MrWc�l�d|d|g}tjtj|d�|rtj|�sy|rtj
|�ry|jj|�}|s|jj|�r|}|�s;d}tjtj|d�d|_
d|_|jj|�}|s|jj|�r|}|r*|s(d}tjtj|d�yd|g}tjtj|d�d}|jj|d|�|jj|d|�|jj|d|�|j j|d|�y|j"j%�r|j"j'�d	}	|jj)|�s@|jj|�r_|t+j,�j/�k(r:|jj1|�
�\}
}|
rtj|
�r|
|}	}t3j4|�rFd}tjtj|d�|jj7|d	�\}}|jj9|�r8t;j<|�}
d	|
cxkrt;j>|�krnn|
}	|jjA||	|�|jC||�
�d}i}|jjE�}|jjE�xs|j jE�}|jjG�rg|re|jHjKd
�rJd}tjtj|d�|jjM||	�}||d<�n:|jjO|�rv|s|rrt3jP|�rtjR|�sHd|dg}tjtj|d�|jjM||	�}�n�|jjU|�rHd|dg}tjtj|d�|jjM|d	�}�nF|jjW�rxtYjZ|�sc|jj]|�sHd|dg}tjtj|d�|jjM||	�}�n�|jj_|�rHd|dg}tjtj|d�|jjM||	�}�nQt3j`|�rHd|dg}tjtj|d�|jjc|d	�}�n�|jje||�rRd|jfdg}tjtj|d�|jjM|d	�}�n�|rb|jHjKd�rG|jji|�r,d|dg}tjtj|d��n"|jjk�rYtj|�sDd}tjtj|d�|jjM||	�}n�|jjk�rf|rd|jHjKd�rId}tjtj|d�|jjM||	�}||d<n/d|dg}tjtj|d�||d<|rvtj
|�rad}tjtj|d�|jmdd�r(d }tjtj|d�y|r|jn|fi|��n2|jpjr|fi|��}tujv|�|jy|�|jj{|�r;|j|s/|jj|�}|j�d|�y|j�s=|j|s1|j�||�|jk7r|j�d|�|jj|�s�d!}|jj||j|�|jj||j|�|jj||j|�|j j||j|�y)"z3Handles changes of focus of interest to the script.zWEB: Focus changing from�toTz/WEB: Locus of focus changed to non-document objFzAWEB: Not refreshing grabs because we weren't in a document beforez.WEB: Refreshing grabs because we left documentz$locus of focus no longer in documentrrkz5WEB: Event source has bogus role. Likely browser bug.Nzobject:text-caret-movedz8WEB: Last input event was mouse button. Generating line.rDzWEB: New focusz"content editable. Generating line.zis anchor. Generating line.z!was scrolled to. Generating line.z has math child. Generating line.zis heading. Generating object.zWEB: Sourcez'is same page fragment. Generating line.zobject:children-changed:removez2is recovery from removed child. Generating speech.zIWEB: Last input event was line nav; oldFocus is invalid. Generating line.r zIWEB: Last input event was line nav and children changed. Generating line.z)is not a special case. Generating speech.zWEB: New focus has since diedrz7WEB: Have matching focused event. Not speaking contentszlocus of focus now in document)DrrYrZr�is_validr�r[r��
isDocumentr,r6r;r]r^r_r`rar�r��quit�inFindContainerr	r>�get_active_windowrIr�is_unknown_or_redundantrr�rrr�rprtr��lastInputEventWasMouseButtonr!r"rLr��
is_table_cell�get_name�isAnchor�lastInputEventWasPageNavrr��
isFeedArticle�isFocusedWithMathChild�
is_headingr��caretMovedToSamePageFragmentr%r��lastInputEventWasLineNav�_getQueuedEventrsrQ�generateSpeechrr��_saveFocusedObjectInfo�inTopLevelWebAppr=r\r�r<r�r�)rSr)�oldFocus�newFocusrcrwr/�oldDocumentrerrrr[�
textOffsetr`r�r�r�r9�announces                    rV�locusOfFocusChangedzScript.locusOfFocusChanged�s���-�h��h�G��
���%�*�*�F�D�9��H�-�-�h�7����(�(��2���>�>�>�>�x�H���D�N�N�5�5�h�?��H��C�C����u�/�/��d�;�).�D�&� %�D���.�.�E�E�h�O�K����� 9� 9�(� C�&����Y���"�"�5�#3�#3�S�$�?��F��T�F����e�.�.���=�;�F�� � �1�1�$��f�E��%�%�6�6�t�T�6�J��"�"�3�3�D�$��G����0�0��t�V�D���#�#�-�-�/��$�$�)�)�+����>�>�)�)�(�3��~�~�(�(��2��}�7�7�9�K�K�M�M�(,���(F�(F�U]�(F�(^�%�J�
��h�/�/�
�;�(2�M�+���.�.�x�8�I�C����u�/�/��d�;�#�~�~�C�C�H�a�P��H�f��>�>�+�+�H�5��0�0��:�J��J�F�&�"<�"<�X�"F�F�(�����&�&�x��h�G����8�8��<�����!%�!5�!5�!]�!]�!_���%�%�M�M�O�
M��"�"�J�J�L�	 ��>�>�6�6�8�U����&�&�'@�A�L�C����u�/�/��d�;��~�~�=�=�h��T�H�'�D���
�^�^�
@�
@��
J�&�*A��-�-�h�7�H�<M�<M�h�<W�&��2V�W�F����e�.�.���=��~�~�=�=�h��T�H�
�^�^�
$�
$�X�
.�&��2O�P�F����e�.�.���=��~�~�=�=�h��J�H�
�^�^�
4�
4�
6��&�&�x�0��^�^�1�1�(�;�&��2U�V�F����e�.�.���=��~�~�=�=�h��T�H�
�^�^�
2�
2�8�
<�&��2T�U�F����e�.�.���=��~�~�=�=�h��T�H�
�
#�
#�H�
-�&��2R�S�F����e�.�.���=��~�~�?�?��!�L�H�
�^�^�
8�
8���
I�#�U�\�\�3\�]�F����e�.�.���=��~�~�=�=�h��J�H�
�u�z�z�,�,�-M�N����1�1�(�;�&��J�L�F����e�.�.���=�
�^�^�
4�
4�
6�x�?P�?P�QY�?Z�]�C����u�/�/��d�;��~�~�=�=�h��T�H�
�^�^�
4�
4�
6�5����&�&�'@�A�]�C����u�/�/��d�;��~�~�=�=�h��T�H�'�D���&��2]�^�F����e�.�.���=�'�D�����(�(��2�1�C����u�/�/��d�;��#�#�$B�D�I�O���"�"�5�#3�#3�S�$�?����D���x�0�4�0�<��-�-�<�<�X�N��N�J��L�L��$��#�#�H�-��>�>�*�*�8�4�T�=U�=U��>�>�;�;�H�E�E�H��&�&�t�X�6���&�&��+�+�� � ��8�4��8I�8I�I��'�'��h�7��~�~�/�/��9�5�F�� � �1�1�$��8I�8I�6�R��%�%�6�6�t�T�=N�=N�PV�W��"�"�3�3�D�$�:K�:K�V�T����0�0��t�7H�7H�&�Q�rWc���|jj|j�s(d}tjtj
|d�y|js(d}tjtj
|d�ytj|j�rVd}tjtj
|d�tj�j||j�yy)z>Callback for object:state-changed:active accessibility events.�,WEB: Event source is not in document contentTFz2WEB: Ignoring because event source is now inactive�8WEB: Event handled: Setting locusOfFocus to event source)r[r\r%rr,rZr#r�is_dialog_or_alertr	r>r��rSr)r/s   rV�onActiveChangedzScript.onActiveChangedfs����~�~�/�/����=�@�C����u�/�/��d�;���}�}�F�C����u�/�/��d�;���)�)�%�,�,�7�L�C����u�/�/��d�;��$�$�&�9�9�%����N��rWc��|jj|j�s(d}tjtj
|d�yy)zCCallback for object:active-descendant-changed accessibility events.rPTF�r[r\r%rr,rZrSs   rV�onActiveDescendantChangedz Script.onActiveDescendantChanged{s=���~�~�/�/����=�@�C����u�/�/��d�;��rWc�(�|jr4|jr(d}tjtj|d�y|j
j
|j�s(d}tjtj|d�ytj�j�}tj|j�sN|j
j||j�s(d}tjtj|d�y|jj�|j
j!t#j$|j��r(d}tjtj|d�y|j
j'�\}}t#j(|�s|j
j+�d}tj,|j�sItj.|j�s*d}d}tjtj|d�n�t1j2|j�s*d}d}tjtj|d�nX|jsL|j4r@t#j(|�r+d}d	|g}tj6tj|d�t9j�j;d
�s�|r�|jr |j=t>j@�n�t#jB|j�rDt>jDt#jB|j�z}|j=|d��n|j=t>jF�|j
jI�}|r7||jk7r(d}tjtj|d�y|j|_|jry|j
jK�t#jL|�rd
}tj�jO�sX|j
j
|�s=tjP|�r(d}tjtj|d�yt9j�j;d�rg|red|jg}tj6tj|d�t1jR|j�}	|	r|j=|	�|j
j'�\}}tjT|j�s�|j
jW|j�rad|dg}tj6tj|d�tj�jY||�|j[d
d�y|j]|�|j4k7r|j_d
�|s(d}tjtj|d�y|j
ja|�rNd|g}tj6tj|d�tj�jY||�y|j
jc|�rdtjP|�rOd|dg}tj6tj|d�tj�jY||�y|dkDrOd|dg}tj6tj|d�tj�jY||�ytjPtj�j��sOd|dg}tj6tj|d�tj�jY||d�|je|�t1jf|j�r(d}tjtj|d�yt9j�j;d�sSd}tjtj|d�|ji|j
jk||��yt9j�j;d�r9d}tjtj|d�|jmd
�yd }tjtj|d�y)!z<Callback for object:state-changed:busy accessibility events.z/WEB: Ignoring: Already loading document contentTrPFz6WEB: Ignoring: Not document and not something we're in�.WEB: Ignoring: Event source is nested documentz<WEB: Not presenting because source is not showing or visiblez,WEB: Not presenting because source lacks URIz)WEB: Not presenting due to focus mode for�onlySpeakDisplayedText)�resetStylesz2WEB: Ignoring: Event source is not active documentNz9WEB: Not presenting content, focus is outside of documentr,zWEB: Getting page summary forzWEB: Setting locusOfFocus tozwith sticky focus modez WEB: Could not get caret contextz.WEB: Setting locus of focus to focusModeWidgetz+WEB: Setting locus of focus to focused linkz. No SayAll.rz*WEB: Setting locus of focus to context objz. No SayAllz(no notification)z*WEB: Not doing SayAll due to page fragmentr+z5WEB: Not doing SayAll due to sayAllOnLoad being False�enableSpeechzWEB: Doing SayAllz5WEB: Not doing SayAll due to enableSpeech being False)7r#r5rr,rZr[r\r%r	r>r}r�is_document_web�isOrDescendsFromr_�
clearCachermrr,rIr5�clearCaretContext�
is_showing�
is_visibler�get_urir;rYrr?rvr
�PAGE_LOADING_STARTr=�PAGE_LOADING_END_NAMED�PAGE_LOADING_END�activeDocumentrgr��
focus_is_dead�
is_focused�get_document_summary�is_busy�isTopLevelWebAppr�r�r�r�r��isLinkrt�get_document_uri_fragmentrsrLr�)
rSr)r/�focusrZr[�
shouldPresentrcrg�summarys
          rV�
onBusyChangedzScript.onBusyChanged�s���=�=�T�9�9�C�C����u�/�/��d�;���~�~�/�/����=�@�C����u�/�/��d�;���(�(�*�=�=�?���*�*�5�<�<�8��>�>�2�2�5�%�,�,�G�J�C����u�/�/��d�;���!�!�,�,�.��>�>�.�.�x�/B�/B�5�<�<�/P�Q�B�C����u�/�/��d�;���n�n�4�4�6���V�� � ��%��N�N�,�,�.��
��&�&�u�|�|�4��8N�8N�u�|�|�8\�!�M�P�C����u�/�/��d�;��#�#�E�L�L�1�!�M�@�C����u�/�/��d�;����4�#4�#4��9J�9J�3�9O�!�M�A�3�G�F����e�.�.���=��*�*�,�7�7�8P�Q�Vc��}�}��#�#�H�$?�$?�@��"�"�5�<�<�0��5�5��8I�8I�%�,�,�8W�W���#�#�C�U�#�;��#�#�H�$=�$=�>����6�6�8���n����<�F�C����u�/�/��d�;��',�}�}��$��=�=�����)�)�+����C� ��C��'�'�)�7�7�9��>�>�3�3�E�:��%�%�e�,�M�C����u�/�/��d�;���&�&�(�3�3�4G�H�]�5�u�|�|�D�F����e�.�.���=� �5�5�e�l�l�C�G���#�#�G�,��n�n�4�4�6���V��"�"�5�<�<�0��~�~�.�.�u�|�|�<�4�c�;S�T�F����e�.�.���=��$�$�&�9�9�%��E��&�&�t�T�2�����S�!�T�%6�%6�6��'�'��-��4�C����u�/�/��d�;���>�>�+�+�C�0�F��L�F����e�.�.���=��$�$�&�9�9�%��E���>�>� � ��%�+�*@�*@��*E�C�S�.�Y�F����e�.�.���=��$�$�&�9�9�%��E���A�:�B�C��W�F����e�.�.���=��$�$�&�9�9�%��E���%�%�m�&>�&>�&@�&S�&S�&U�V�B�C�I\�]�F����e�.�.���=��$�$�&�9�9�%��e�L����3���/�/����=�>�C����u�/�/��d�;��"�,�,�.�9�9�.�I�I�C����u�/�/��d�;����t�~�~�E�E�c�6�R�S���
(�
(�
*�
5�
5�n�
E�%�C����u�/�/��d�;��K�K���
�J�C����u�/�/��d�;�rWc��|jj�tj|j�s(d}tjt
j|d�y|jj|j�}|s�|jj|�r(d}tjt
j|d�y|jj|�r(d}tjt
j|d�yd}tjt
j|d�y|jj|dd�\}}d|d|g}tjt
j|d�|jj�r(d	}tjt
j|d�y|jj�r(d
}tjt
j|d�y|j j�r(d}tjt
j|d�y|jj#��r�d}tjt
j|d�|j|j$f||fk(r(d
}tjt
j|d�y|j|j$f|j&k(r(d}tjt
j|d�y|j|j$f|_d}tjt
j|d�|jj)|j|j$�|jj+|j�}t-j.�j1||j|d�y|jj3�rtd}tjt
j|d�|jj5|j�r(d}tjt
j|d�y|jj7�rd}tjt
j|d�|j9|j|j$�|j;t-j.�j=��y|jj?|�s(d}tjt
j|d�y|jjA|�rNd}tjt
j|d�|jC|j|j$�y|jjE|�rNd}tjt
j|d�|jC|j|j$�yt-j.�j=�}|jjG||j�r\|jjI�sB|jjK�s(d}tjt
j|d�y|jjM||�r(d}tjt
j|d�y|jNrC|jjQ|�r(d}tjt
j|d�y|jjS|�rTd}tjt
j|d�|jU|j�|jW|�y|jjY|j�sGt[j\|j�s(d}tjt
j|d�y|jj_|j|j$�\}}dx}x}	}
tj`|jdd�|jjc�r/d}tjt
j|d�dx}x}	}
�n|jje|�r.d}tjt
j|d�dx}x}	}
n�|jjg�r(d}tjt
j|d�n�|jji|j�r[t[jj|j�r<|j|k7r-d}tjt
j|d�dx}x}	}
d |d|g}tjt
j|d�|jj)|||�t-j.�j1||||	�|
S)!z:Callback for object:text-caret-moved accessibility events.�WEB: Event source is not validT�3WEB: Ignoring event believed to be browser UI noise�@WEB: Ignoring event believed to be browser UI autocomplete noiserPFzWEB: Context: rF�.WEB: Event ignored: Last command was caret nav�/WEB: Event ignored: Last command was struct nav�.WEB: Event ignored: Last command was table navz&WEB: Last input event was mouse buttonz(WEB: Event is for current caret context.z,WEB: Event is for last mouse button context.z1WEB: Event handled: Last command was mouse buttonzWEB: Last input event was Tab.z7WEB: Event ignored: Caret moved in document due to Tab.z+WEB: Event handled: Presenting find results�4WEB: Event ignored: Not from locus of focus documentz6WEB: Event handled: Updating position due to insertionz5WEB: Event handled: Updating position due to deletionz+WEB: Event ignored: Editable combobox noisez&WEB: Event ignored: Autocomplete noisezEWEB: Event ignored: Caret moved outside active grid during focus modez=WEB: Event handled as the value-change event we wish we'd getzJWEB: Event ignored: Was for non-editable object we're treating as textlessz%Updating state for caret moved event.z"WEB: Caret moved due to scrolling.zWEB: Caret moved to fragment.z0WEB: Caret moved due to native caret navigation.z8WEB: Focused text field is not (yet) the locus of focus.z#WEB: Setting context and focus to: )6r[�sanityCheckActiveWindowrr5r%rr,rZr��eventIsBrowserUINoise�!eventIsBrowserUIAutocompleteNoiserIrYr]r�r_rar;r#r7rp�isEntryDescendantr	r>r��lastInputEventWasTabr6r8r{rGr}�eventIsFromLocusOfFocusDocument�textEventIsDueToInsertion�_saveLastCursorPosition�textEventIsDueToDeletion�isItemForEditableComboBox�lastInputEventWasCharNav� lastInputEventWasLineBoundaryNav�eventIsAutocompleteNoiser;�caretMovedOutsideActiveGrid�treatEventAsSpinnerValueChangert�_presentTextAtNewCaretPositionr�r�is_editabler�clear_cacher?rC�lastInputEventWasCaretNav�isTextFieldri)rSr)r/rwrZr[rc�notifyro�force�handleds           rV�onCaretMovedzScript.onCaretMoveds���	
���.�.�0�� � ����.�2�C����u�/�/��d�;���>�>�>�>�u�|�|�L����~�~�3�3�E�:�K���"�"�5�#3�#3�S�$�?���~�~�?�?��F�X���"�"�5�#3�#3�S�$�?��@�C����u�/�/��d�;���n�n�4�4�X�u�e�L���V�"�C��v�6��
���%�*�*�F�D�9����G�G�I�B�C����u�/�/��d�;���$�$�L�L�N�C�C����u�/�/��d�;�����F�F�H�B�C����u�/�/��d�;���>�>�6�6�8�:�C����u�/�/��d�;����e�m�m�,��f�
�=�@���"�"�5�#3�#3�S�$�?�����e�m�m�,��0L�0L�L�D���"�"�5�#3�#3�S�$�?��+0�<�<����+F�D�(�E�C����u�/�/��d�;��N�N�*�*�5�<�<����G����9�9�%�,�,�G�G�F��$�$�&�9�9�%����v�W[�\���>�>�.�.�0�2�C����u�/�/��d�;��~�~�(�(����6�O���"�"�5�#3�#3�S�$�?���>�>�)�)�+�?�C����u�/�/��d�;��#�#�E�L�L�%�-�-�@��'�'�
�(@�(@�(B�(U�(U�(W�X���~�~�=�=�e�D�H�C����u�/�/��d�;���>�>�3�3�E�:�J�C����u�/�/��d�;��(�(����u�}�}�E���>�>�2�2�5�9�I�C����u�/�/��d�;��(�(����u�}�}�E���(�(�*�=�=�?���>�>�3�3�E�5�<�<�H��>�>�:�:�<��>�>�B�B�D�?�C����u�/�/��d�;���>�>�2�2�5�(�C�:�C����u�/�/��d�;��������!K�!K�E�!R�Y�C����u�/�/��d�;���>�>�8�8��?�Q�C����u�/�/��d�;����u�|�|�,��/�/��6���~�~�/�/����=��*�*�5�<�<�8�^�C����u�/�/��d�;���n�n�:�:�5�<�<����W���V�#(�(��(������U�\�\�5�2Y�Z��>�>�2�2�4�6�C����u�/�/��d�;�'+�+�F�+�U�W�
�^�^�
8�
8��
?�1�C����u�/�/��d�;�'+�+�F�+�U�W�
�^�^�
5�
5�
7�D�C����u�/�/��d�;�
�^�^�
'�
'����
5��%�%�e�l�l�3��|�|�u�$�L�C����u�/�/��d�;�'+�+�F�+�U�W�7��d�F�K��
���%�*�*�F�D�9����&�&�s�F�H�=�� � �"�5�5�e�S�&�%�P��rWc�>�|jj|j�s(d}tjtj
|d�y|jj
�\}}||jk7r(d}tjtj
|d�y|jjdd�\}}t|�t|�k(r7||jk(r(d}tjtj
|d�y|jj�rtj|�s(d}tjtj
|d�y|j|dd�	�t|�|jf|jd<y)
z?Callback for object:state-changed:checked accessibility events.rPTFz'WEB: Event source is not context object�
checkedChanger
z)WEB: Ignoring event, state hasn't changedz*WEB: Event is something default can handle)�alreadyFocusedr�)r[r\r%rr,rZrIr�r��hashr#r]r�rr�r�)rSr)r/rZr[�oldObj�oldStates       rV�onCheckedChangedzScript.onCheckedChanged�sI���~�~�/�/����=�@�C����u�/�/��d�;���n�n�4�4�6���V��%�,�,��;�C����u�/�/��d�;���0�0�4�4�_�i�P������<�4��9�$��U�]�]�)B�=�C����u�/�/��d�;���$�$�L�L�N��*�*�3�/�>�C����u�/�/��d�;�����3�t�t��D�15�c��E�M�M�1I����o�.�rWc�*
��tjd�tj�j�rtjd�|jj��r(d}tjtj|d�y|jj�j�}|jj�j�}|�r�|�stj�j�}�j|k(rFd}tjtj|d�|jj!|d���n�tj�j#�rFd}tjtj|d�|jj!|d���nPtj$|�fd��rEd}tjtj|d�|jj!|d��n�d	}tjtj|d�|jj'�n�|r�|jj)��rCd
}tjtj|d�|j*j-��yd}tjtj|d�yd}tjtj|d�y
|j.r(d}tjtj|d�ytj0|�s+d|dg}tj2tj|d�ytj4|�r+d|dg}tj2tj|d�ytj0�j6�s(d}tjtj|d�y|jj9��j6�r(d}tjtj|d�ytj:�j6��rH�j6|jj=�k(r5d�j6dg}tj2tj|d�yd}tjtj|d�|j?�j6d��tj@�j6�}|r�|jjC|�}d|g}tj2tj|d�tj�jE�||�|jjG|d�y|jHr�dtKjJ�|jHz
cxkrdkr�ny
g}	|	jMtNjP�|	jS|jTjW�j6d���tYjZ|	��j6|_.|jj_�|_0yy
)z>Callback for object:children-changed:add accessibility events.�children-changed event.ruT�#WEB: Dumping cache: source is focus��preserveContext�WEB: Dumping cache: dead focusc�"��|�jk(Sr3�r%�rr)s �rVr
z(Script.onChildrenAdded.<locals>.<lambda>������e�l�l�9J�rW�/WEB: Dumping cache: source is ancestor of focus�WEB: Not dumping full cache�'WEB: Event to be handled as live region�:WEB: Ignoring because live region event not to be handled.�,WEB: Could not get document for event sourceF�7WEB: Ignoring because document content is being loaded.zWEB: Ignoring becausez
is not valid.zis busy.z,WEB: Ignoring because any data is not valid.zAWEB: Event handled by updating locusOfFocus and context to child.z
WEB: Ignoringz(is last queued live region)zWEB: Presenting event.any_data�r�z.WEB: Setting locusOfFocus and caret context torr�r�)1r�clear_cache_nowr�is_table_relatedr%rr[r|rr,rZ�isLiveRegionr�r	r>r}�	dumpCacherh�
find_ancestorrg�handleAsLiveRegionr`�handleEventr5r5rYrkr'�handleEventFromContextReplicant�is_alert�lastQueuedLiveRegionr��get_focused_objectr�r�rp�lastMouseRoutingTime�timer8r
�NEW_ITEM_ADDEDr6rQrFrr�r8rI�preMouseOverContext)
rSr)r/r�rwrorc�focusedr�r9s
 `        rV�onChildrenAddedzScript.onChildrenAdded�s����	� � �!:�;��'�'����5��#�#�$=�>��>�>�/�/��6�G�C����u�/�/��d�;���~�~�2�2�5�<�<�@���>�>�>�>�u�|�|�L���L�!�,�,�.�A�A�C�E��|�|�u�$�;���"�"�5�#3�#3�S�$�?����(�(��4�(�H��)�)�+�9�9�;�6���"�"�5�#3�#3�S�$�?����(�(��4�(�H��'�'��/J�K�G���"�"�5�#3�#3�S�$�?����(�(��4�(�H�3���"�"�5�#3�#3�S�$�?����1�1�3�
��~�~�0�0��7�?���"�"�5�#3�#3�S�$�?��&�&�2�2�5�9��S���"�"�5�#3�#3�S�$�?��@�C����u�/�/��d�;���'�'�K�C����u�/�/��d�;��� � ��*�-�x��I�F����e�.�.���=�����x�(�-�x��D�F����e�.�.���=��� � ����0�@�C����u�/�/��d�;���>�>�9�9�%����P�U�C����u�/�/��d�;��������/��~�~����!D�!D�!F�F�)�5�>�>�;Y�Z���!�!�%�"2�"2�F�D�A��2�C����u�/�/��d�;����u�~�~���>�!�4�4�U�^�^�D�G��!�^�^�=�=�g�F�F��J�G�T���!�!�%�"2�"2�F�D�A��(�(�*�=�=�e�W�f�U����.�.�w��:���$�$��T�Y�Y�[�4�;T�;T�-T�)X�WX�)X���J����h�5�5�6����d�2�2�A�A�%�.�.�X\�A�]�^��L�L��$�(-���D�%�'+�~�~�'E�'E�'G�D�$��rWc���tjd�tj�j�rtjd�|jj�j�s(d}tjtj|d�y|jr(d}tjtj|d�y|jj�j�rk|jj��r(d}tjtj|d�yd}tjtj|d�y|jj�j�}|�r}tj �j#�}�j|k(rFd}tjtj|d�|jj%|d�	��ntj �j'�rEd
}tjtj|d�|jj%|d�	�n�tj(|�fd��rEd}tjtj|d�|jj%|d�	�nAd
}tjtj|d�|jj+�|jj��r(d}tjtj|d�yy)zBCallback for object:children-changed:removed accessibility events.r�z-WEB: Event source is not in document content.TFr�z1WEB: Event handled for removed live-region child.z'WEB: Ignoring removal from live region.r�r�r�c�"��|�jk(Sr3r�r�s �rVr
z*Script.onChildrenRemoved.<locals>.<lambda>]r�rWr�r�z%WEB: Event handled for removed child.)rr�rr�r%rr[r\rr,rZr5r��handleEventForRemovedChildr�r	r>r}r�rhr�rg)rSr)r/rwros `   rV�onChildrenRemovedzScript.onChildrenRemoved8sc���	� � �!:�;��'�'����5��#�#�$=�>��~�~�/�/����=�A�C����u�/�/��d�;���'�'�K�C����u�/�/��d�;���>�>�&�&�u�|�|�4��~�~�8�8��?�I���"�"�5�#3�#3�S�$�?��@���"�"�5�#3�#3�S�$�?���>�>�>�>�u�|�|�L���!�,�,�.�A�A�C�E��|�|�u�$�;���"�"�5�#3�#3�S�$�?����(�(��4�(�H��)�)�+�9�9�;�6���"�"�5�#3�#3�S�$�?����(�(��4�(�H��'�'��/J�K�G���"�"�5�#3�#3�S�$�?����(�(��4�(�H�3���"�"�5�#3�#3�S�$�?����1�1�3��>�>�4�4�U�;�9�C����u�/�/��d�;��rWc��|jj|j�s(d}tjtj
|d�yt
j�j�}|jtj|�k7r(d}tjtj
|d�ytj�|jd<|jtj�|jj!|�}|r+|j|jj#|d��y)z:Callback for object:column-reordered accessibility events.rPTF�WEB: focus is not in this table�last-table-sort-time)r[r\r%rr,rZr	r>r}rr�r�r�rvr
�TABLE_REORDERED_COLUMNS�containingTableHeader�getSortOrderDescription�rSr)r/ro�headers     rV�onColumnReorderedzScript.onColumnReorderedms����~�~�/�/����=�@�C����u�/�/��d�;���(�(�*�=�=�?���<�<�7�,�,�U�3�3�3�C����u�/�/��d�;��8<�	�	�����4�5����H�<�<�=����5�5�e�<��������� F� F�v�t� T�U�rWc�T�|jjtj|j��r(d}tjt
j|d�yd}tjt
j|d�d|_|jj�y)z9Callback for document:load-complete accessibility events.rYTz6WEB: Updating loading state and resetting live regionsF)r[rmrr,r%rr,rZr5r`�resetrSs   rV�onDocumentLoadCompletezScript.onDocumentLoadComplete�s���>�>�.�.�x�/B�/B�5�<�<�/P�Q�B�C����u�/�/��d�;��F��
���5�+�+�S�$�7�',��$����$�$�&�rWc� �|jjtj|j��r(d}tjt
j|d�yd}tjt
j|d�d|_y)z8Callback for document:load-stopped accessibility events.rYT�WEB: Updating loading stateF�	r[rmrr,r%rr,rZr5rSs   rV�onDocumentLoadStoppedzScript.onDocumentLoadStopped�sm���>�>�.�.�x�/B�/B�5�<�<�/P�Q�B�C����u�/�/��d�;��+��
���5�+�+�S�$�7�',��$�rWc� �|jjtj|j��r(d}tjt
j|d�yd}tjt
j|d�d|_y)z2Callback for document:reload accessibility events.rYTr�r�rSs   rV�onDocumentReloadzScript.onDocumentReload�sm���>�>�.�.�x�/B�/B�5�<�<�/P�Q�B�C����u�/�/��d�;��+��
���5�+�+�S�$�7�'+��$�rWc���tj|j�s(d}tjtj
|d�y|jj|j�s(d}tjtj
|d�ytj�j�}|jjd��\}}d|d|g}tjtj
|d�tj|�s\|j|k(rMd}tjtj
|d�|jj|jd	�y)
z@Callback for object:state-changed:expanded accessibility events.rtTrPF)�searchIfNeeded�WEB: Caret context isrFz*WEB: Setting caret context to event sourcer)rr5r%rr,rZr[r\r	r>r}rIrYrp)rSr)r/rorZr[rcs       rV�onExpandedChangedzScript.onExpandedChanged�s��� � ����.�2�C����u�/�/��d�;���~�~�/�/����=�@�C����u�/�/��d�;���(�(�*�=�=�?���n�n�4�4�E�4�J���V�)�3��f�=��
���%�*�*�F�D�9�� � ��%�%�,�,�%�*?�>�C����u�/�/��d�;��N�N�*�*�5�<�<��;�rWc��|jj|j�r(d}tjtj
|d�yy)z)Callback for focus: accessibility events.z<WEB: Ignoring because object:state-changed-focused expected.TFrVrSs   rV�onFocuszScript.onFocus�s=���>�>�+�+�E�L�L�9�P�C����u�/�/��d�;��rWc�����js(d}tjtj|d�yt	j
�j�s(d}tjtj|d�y|jj�j�}|s(d}tjtj|d�ytj�j�}|jj|�}||k7r+d|d|g}tjtj|d�|jj�j�r�|jr(d}tjtj|d�n�tj �j�rAt	j"|�fd	��r(d
}tjtj|d�yd}tjtj|d�tj�j%��j�ytj&�j�r(d}tjtj|d�ytj(�j�rVd
}tjtj|d�tj�j%��j�y|jj+��j�r(d}tjtj|d�y|jj-�\}}d|d|g}tjtj|d�t	j
|�r||k7�r�d|dg}tjtj|d�|jj/�|jj1�j�\}}|�r*|jj3|�}	d|d|g}tjtj|d�tj�j%�||	�|	s�|��d}
|j4j7||j8|
�|j:j7||j8|
�|j<j7||j8|
�|j>j7||j8|
�|jjA||�n'd}tjtj|d�|j4jC�r(d}tjtj|d�y|j:jC�r(d}tjtj|d�y|j>jC�r(d}tjtj|d�ytjD�j�rtjF�j�s(d}tjtj|d�ytjH�j�s(d}tjtj|d�y|s(d}tjtj|d�y|jjK�rhd}tjtj|d�tj�j%�|�|jjA||�ytjF|�}t	jL|dd�tjF|�}||k7r,d|d|g}tjtj|d�y|jjO|�rd }
np|jjQ|�r|rd!}
nP|jjS|�rd"}
n2|�jk(r"tUjV�j�rd#}
nyd$|d%|
d&g}tjtj|d�tj�j%�|�y)'z?Callback for object:state-changed:focused accessibility events.z-WEB: Ignoring because event source lost focusTrtr�FzWEB: document changed fromr4z@WEB: Web app descendant claimed focus, but browse mode is stickyc�"��|�jk(Sr3r�r�s �rVr
z)Script.onFocusedChanged.<locals>.<lambda>�s���!�u�|�|�:K�rWz<WEB: Event believed to be side effect of tooltip navigation.z>WEB: Event handled: Setting locusOfFocus to web app descendantzWEB: Event source is editablerQzBWEB: Event handled by updating locusOfFocus and context to source.r�rFzWEB: Clearing context - objz is not valid or document changedz"WEB: Updating focus and context toz,updating locus of focus without notificationz$WEB: Search for caret context failedrwrxryz6WEB: Event ignored: Source is not focusable or focusedz@WEB: Deferring to other scripts for handling non-document source�'WEB: Unable to get valid context objectz2WEB: Event handled: Focus changed due to scrollingzSanity-checking focused state.zWEB: Focused state ofz
changed tozContext is anchorz!Context is not a non-focused linkz$Context is child of current fragmentzDocument URI is fragmentz+WEB: Event handled: Setting locusOfFocus to�(rB),r#rr,rZrr5r%r[rmr	r>r}rYr�r=r�is_tool_tipr�r�r�rRr�rIr`�searchForCaretContextr8r]r^r;r_r`rarpr�rrir�r?r�r>rm�isChildOfCurrentFragmentrrn)rSr)r/rwro�prevDocumentrcrZr[r�re�
wasFocused�	isFocused�causes `            rV�onFocusedChangedzScript.onFocusedChanged�s�����}�}�A�C����u�/�/��d�;��� � ����.�2�C����u�/�/��d�;���>�>�6�6�u�|�|�D���@�C����u�/�/��d�;���(�(�*�=�=�?���~�~�:�:�5�A���8�#�2�L�$��Q�F����e�.�.���=��>�>�,�,�U�\�\�:��'�'�X���"�"�5�#3�#3�S�$�?��(�(����6��(�(��0K�L�T���"�"�5�#3�#3�S�$�?��V���"�"�5�#3�#3�S�$�?��(�(�*�=�=�e�U�\�\�R���"�"�5�<�<�0�1�C����u�/�/��d�;���)�)�%�,�,�7�L�C����u�/�/��d�;��$�$�&�9�9�%����N���>�>�9�9�%����N�V�C����u�/�/��d�;���n�n�4�4�6���V�)�3��f�=��
���%�*�*�F�D�9�� � ��%���)A�3�S�:\�]�F����e�.�.���=��N�N�,�,�.��.�.�>�>�u�|�|�L�K�C������7�7��>��>��T�6�R���!�!�%�"2�"2�F�D�A��(�(�*�=�=�e�S�&�Q��,�"6�K�F��(�(�9�9�$��@Q�@Q�SY�Z��-�-�>�>�t�T�EV�EV�X^�_��*�*�;�;�D�$�BS�BS�U[�\��'�'�8�8��t�?P�?P�RX�Y����.�.�s�F�;�<���"�"�5�#3�#3�S�$�?����G�G�I�B�C����u�/�/��d�;���$�$�L�L�N�C�C����u�/�/��d�;�����F�F�H�B�C����u�/�/��d�;���(�(����6�;�;Q�;Q�RW�R^�R^�;_�J�C����u�/�/��d�;���&�&�u�|�|�4�T�C����u�/�/��d�;���;�C����u�/�/��d�;���>�>�2�2�4�F�C����u�/�/��d�;��$�$�&�9�9�%��E��N�N�*�*�3��7��!�+�+�C�0�
����S�%�)I�J��*�*�3�/�	���"�-�s�L�)�L�F����e�.�.���=���>�>�"�"�3�'�'�E��.�.�'�'��,�Y�7�E�
�^�^�
4�
4�S�
9�:�E�
����
%�*�*N�*N�u�|�|�*\�.�E��?��c�5�RU�V��
���%�*�*�F�D�9�� � �"�5�5�e�S�A�rWc��y)z/Callback for mouse:button accessibility events.Fr)rSr)s  rV�
onMouseButtonzScript.onMouseButton^s��rWc��|jj|�r(d}tjtj|d�yy)z;Callback for object:property-change:accessible-name events.ruTF)r[r|rr,rZrSs   rV�
onNameChangedzScript.onNameChangedcs9���>�>�/�/��6�G�C����u�/�/��d�;��rWc��|jj|j�s(d}tjtj
|d�yt
j�j�}|jtj|�k7r(d}tjtj
|d�ytj�|jd<|jtj�|jj!|�}|r+|j|jj#|d��y)z7Callback for object:row-reordered accessibility events.rPTFr�r�)r[r\r%rr,rZr	r>r}rr�r�r�rvr
�TABLE_REORDERED_ROWSr�r�r�s     rV�onRowReorderedzScript.onRowReorderedms����~�~�/�/����=�@�C����u�/�/��d�;���(�(�*�=�=�?���<�<�7�,�,�U�3�3�3�C����u�/�/��d�;��8<�	�	�����4�5����H�9�9�:����5�5�e�<��������� F� F�v�t� T�U�rWc��|jj|�r(d}tjtj|d�ytj�j�}|jj|�rRd}tjtj|d�|jr|j|j|d��y|jj|j�s(d}tjtj|d�y||jk7r(d}tjtj|d�yy)z@Callback for object:state-changed:selected accessibility events.rvTz0WEB: Event believed to be browser UI page switch)rDr�rPFz6WEB: Ignoring because event source is not locusOfFocus)
r[r}rr,rZr	r>r}�eventIsBrowserUIPageSwitchr#r�r%r\)rSr)r/ros    rV�onSelectedChangedzScript.onSelectedChanged�s���>�>�;�;�E�B�T�C����u�/�/��d�;���(�(�*�=�=�?���>�>�4�4�U�;�D�C����u�/�/��d�;��}�}��"�"�5�<�<�%�4�"�P���~�~�/�/����=�@�C����u�/�/��d�;���E�L�L� �J�C����u�/�/��d�;��rWc���|jj|�r(d}tjtj|d�y|jj|�r(d}tjtj|d�y|jj
|j�s(d}tjtj|d�y|jj
tj�j��s(d}tjtj|d�y|jj|�s(d}tjtj|d�y|jj|j�r}|jrItj|jdd�d	}tjtj|d�yd
}tjtj|d�y|jj!|�r(d}tjtj|d�y|jj#�\}}|jj%||j�}|rC|jj'|�r(d}tjtj|d�yy)
z;Callback for object:selection-changed accessibility events.rvTz9WEB: Ignoring event believed to be browser UI page switchrPFz;WEB: Event ignored: locusOfFocus is not in document contentrzz-Workaround for missing events on descendants.z?WEB: Event source is web app descendant and we're in focus modez@WEB: Event source is web app descendant and we're in browse modezWEB: Event ignored: IrrelevantzHWEB: Ignoring: Common ancestor of context and event source is text block)r[r}rr,rZr�r\r%r	r>r}r�r�r;rr��&eventIsIrrelevantSelectionChangedEventrI�commonAncestor�isTextBlockElement)rSr)r/rZr[�ancestors      rV�onSelectionChangedzScript.onSelectionChanged�s,���>�>�;�;�E�B�T�C����u�/�/��d�;���>�>�4�4�U�;�M�C����u�/�/��d�;���~�~�/�/����=�@�C����u�/�/��d�;���~�~�/�/�
�0H�0H�0J�0]�0]�0_�`�O�C����u�/�/��d�;���~�~�=�=�e�D�H�C����u�/�/��d�;���>�>�,�,�U�\�\�:�� � ��$�$�U�\�\�%)�%T�V�X���"�"�5�#3�#3�S�$�?��T�C����u�/�/��d�;���>�>�@�@��G�2�C����u�/�/��d�;���n�n�4�4�6���V��>�>�0�0��e�l�l�C������9�9�(�C�\�C����u�/�/��d�;��rWc��|jrj|jj|j�rEd}t	j
tj|d�|j|jd��y|jj|j�s(d}t	j
tj|d�yy)z?Callback for object:state-changed:showing accessibility events.z+WEB: Event handled: Presenting event sourceTr�rPF)	r#r[�isTopLevelBrowserUIAlertr%rr,rZr�r\rSs   rV�onShowingChangedzScript.onShowingChanged�s����=�=�T�^�^�D�D�U�\�\�R�?�C����u�/�/��d�;����u�|�|�t��<���~�~�/�/����=�@�C����u�/�/��d�;��rWc�`�d}tjtj|d�i|_y)zACallback for object:text-attributes-changed accessibility events.z$WEB: Clearing cached text attributesTF)rr,rZ�_currentTextAttrsrSs   rV�onTextAttributesChangedzScript.onTextAttributesChanged�s,��5��
���5�+�+�S�$�7�!#���rWc�|
��tj�j�s(d}tjtj
|d�y|jj�r(d}tjtj
|d�y|jj�j�r(d}tjtj
|d�y|jj��r(d}tjtj
|d�y|jj�j�s(d}tjtj
|d�y|jj��r(d}tjtj
|d�y|jj��r(d	}tjtj
|d�yd
}tjtj
|d�|jj�|jj��r(d}tjtj
|d�y|jj��r(d}tjtj
|d�y|jj!d�
�\}}|rS|�jk7rDtj"|�fd��s+d|dg}tj$tj
|d�ytj|�s�|jj'|�r(d}tjtj
|d�y|jj!d�
�\}}|r&t)j*�j-�|d��tj|�s'd}tjtj
|d�|jj/�j�}|rDd|g}tj$tj
|d�|j0j3|�t5j6�j�s�|jj9�j�s�|j:rVtj|j<�s7d}tjtj
|d�|j?�d}tjtj
|d�yy)z=Callback for object:text-changed:delete accessibility events.rtTz2WEB: Deletion is believed to be due to page switchz'WEB: Ignoring deletion from live regionrurPF�1WEB: Ignoring: Event believed to be spinner noisez5WEB: Ignoring event believed to be autocomplete noisez0WEB: Clearing content cache due to text deletionz7WEB: Event believed to be due to editable text deletionz8WEB: Ignoring event believed to be due to text insertion)r�c�"��|�jk(Sr3r�r�s �rVr
z&Script.onTextDeleted.<locals>.<lambda>&	r�rWz$WEB: Ignoring event because it isn'tzor its ancestorz4WEB: Focused link deleted. Taking no further action.r�r��-WEB: Clearing structural navigation cache forz$WEB: Restoring pre-mouseover contextz(WEB: Done processing non-editable source) rr5r%rr,rZr[�lastInputEventWasPageSwitchr�r|r\�eventIsSpinnerNoiser��clearContentCacher�r�rIr�rYrmr	r>r�rmr_r_rr�r�r:r8r)rSr)r/rZr[rcrws `     rV�
onTextDeletedzScript.onTextDeleted�s����� � ����.�2�C����u�/�/��d�;���>�>�5�5�7�F�C����u�/�/��d�;���>�>�&�&�u�|�|�4�;�C����u�/�/��d�;���>�>�/�/��6�G�C����u�/�/��d�;���~�~�/�/����=�@�C����u�/�/��d�;���>�>�-�-�e�4�E�C����u�/�/��d�;���>�>�2�2�5�9�I�C����u�/�/��d�;��@��
���5�+�+�S�$�7����(�(�*��>�>�2�2�5�9�K�C����u�/�/��d�;���>�>�3�3�E�:�L�C����u�/�/��d�;���n�n�4�4�%�4�H���V��3�%�,�,�&��)�)�#�/J�K�<�c�CT�U�F����e�.�.���=��� � ��%��~�~�$�$�S�)�L���"�"�5�#3�#3�S�$�?���.�.�8�8�d�8�K�K�C����(�(�*�=�=�e�S�X]�=�^�� � ��%�;�C����u�/�/��d�;��>�>�6�6�u�|�|�D���E�x�P�F����e�.�.���=��%�%�0�0��:��&�&�u�|�|�4��>�>�F�F�u�|�|�T��&�&�x�/@�/@��AZ�AZ�/[�<���"�"�5�#3�#3�S�$�?��/�/�1�<�C����u�/�/��d�;��rWc��tj|j�s(d}tjtj
|d�y|jj�r(d}tjtj
|d�y|jj|�rCd}tjtj
|d�|jj|�y|jj|j�r(d}tjtj
|d�y|jj|�r(d}tjtj
|d�y|jj|�r(d}tjtj
|d�y|jj|j�s(d}tjtj
|d�y	|jj|�r(d
}tjtj
|d�y|jj!|�r(d}tjtj
|d�yd}tjtj
|d�|jj#�|jj%|j�}t'j(�j+�r�d
}tjtj
|d�|jj-|d��t/j0|j�r�d}tjtj
|d�t'j(�j3d|jd��yd|g}tj4tj
|d�|j6j9|�|jj;|j�s(d}tjtj
|d�y|jt'j(�j=�k(}t/j>|j�s�|s(d}tjtj
|d�y|jjA|j�rXd}tjtj
|d�t'j(�j3d|jd��y|sft/jB|j�rGt/j0|j�r(d}tjtj
|d�yy	)z=Callback for object:text-changed:insert accessibility events.rtTz3WEB: Insertion is believed to be due to page switchr�r�z1WEB: Ignoring: Event was for embedded object charrurPFr��6WEB: Ignoring: Event believed to be autocomplete noisez1WEB: Clearing content cache due to text insertionr�r�rQNr�r��0WEB: Ignoring: Event source is not a text objectz:WEB: Done processing non-editable, non-locusOfFocus sourcez@WEB: Event handled: Re-setting locusOfFocus to changed clickable�FWEB: Focused entry is not the locus of focus. Waiting for focus event.)"rr5r%rr,rZr[r�r�r`r�r��eventIsEOCAddedr|r\rr�rr�r	r>rhr�rrir�rYr_r_r�r}r��isClickableElement�
is_text_input)rSr)r/rwrc�
sourceIsFocuss      rV�onTextInsertedzScript.onTextInsertedL	s)��� � ����.�2�C����u�/�/��d�;���>�>�5�5�7�G�C����u�/�/��d�;���>�>�,�,�U�3�;�C����u�/�/��d�;��"�"�.�.�u�5���>�>�&�&�u�|�|�4�N�C����u�/�/��d�;���>�>�)�)�%�0�E�C����u�/�/��d�;���>�>�/�/��6�G�C����u�/�/��d�;���~�~�/�/����=�@�C����u�/�/��d�;���>�>�-�-�e�4�E�C����u�/�/��d�;���>�>�2�2�5�9�J�C����u�/�/��d�;��A��
���5�+�+�S�$�7����(�(�*��>�>�>�>�u�|�|�L���#�#�%�3�3�5�2�C����u�/�/��d�;��N�N�$�$�X�t�$�D��%�%�e�l�l�3�P���"�"�5�#3�#3�S�$�?��(�(�*�=�=�d�E�L�L�X\�=�]��F�x�P�F����e�.�.���=��%�%�0�0��:��~�~�/�/����=�D�C����u�/�/��d�;�����
�(@�(@�(B�(U�(U�(W�W�
��&�&�u�|�|�4� �R���"�"�5�#3�#3�S�$�?���~�~�0�0����>�X���"�"�5�#3�#3�S�$�?��(�(�*�=�=�d�E�L�L�X\�=�]����!:�!:�5�<�<�!H��%�%�e�l�l�3�Z�C����u�/�/��d�;��rWc�F�tj|j�s(d}tjtj
|d�y|jj|�r(d}tjtj
|d�y|jj|j�s(d}tjtj
|d�ytj�j�}|jj|�s(d}tjtj
|d�y|jj|�r(d}tjtj
|d�y|jj|�r(d}tjtj
|d�y|jj|�r(d	}tjtj
|d�y|jj|j�s(d
}tjtj
|d�y|j|k7rft!j"|j�rGt!j$|j�r(d}tjtj
|d�y|jj'|j�r(d}tjtj
|d�yt)j*|j�d
}||j,k(r\|jj/�sB|jj1�s(d}tjtj
|d�yy)z@Callback for object:text-selection-changed accessibility events.rtTrurPFz.WEB: Locus of focus is not in document contentrr�z1WEB: Ignoring event for non-navigable text objectrrz.WEB: In content editable with embedded objectsrzCWEB: Ignoring: Not selecting and event offset is at embedded object)rr5r%rr,rZr[r|r\r	r>r}r�r�$textEventIsForNonNavigableTextObjectr�rr	rir�rr�r�r��lastInputEventWasCommand)rSr)r/ror�s     rV�onTextSelectionChangedzScript.onTextSelectionChanged�	s���� � ����.�2�C����u�/�/��d�;���>�>�/�/��6�G�C����u�/�/��d�;���~�~�/�/����=�@�C����u�/�/��d�;���(�(�*�=�=�?���~�~�/�/��6�B�C����u�/�/��d�;���>�>�2�2�5�9�J�C����u�/�/��d�;���>�>�-�-�e�4�E�C����u�/�/��d�;���>�>�>�>�u�E�E�C����u�/�/��d�;���~�~�/�/����=�D�C����u�/�/��d�;���<�<�5� �[�%>�%>�u�|�|�%L��%�%�e�l�l�3�Z�C����u�/�/��d�;���>�>�>�>�u�|�|�L�B�C����u�/�/��d�;���-�-�e�l�l�;�A�>���4�1�1�1��>�>�H�H�J��>�>�:�:�<�W�C����u�/�/��d�;��rWc�R�d}tjtj|d�y)z2Callback for window:activate accessibility events.z$WEB: Deferring to app/toolkit scriptTF)rr,rZrSs   rV�onWindowActivatedzScript.onWindowActivated�	s$��5��
���5�+�+�S�$�7�rWc�`�d}tjtj|d�d|_y)z4Callback for window:deactivate accessibility events.zWEB: Clearing command stateTr(F)rr,rZr7rSs   rV�onWindowDeactivatedzScript.onWindowDeactivated�	s,��,��
���5�+�+�S�$�7�'/��$�rWc�J�|j|j|jd�S)N�r;r<r=rr�s rV�getTransferableAttributesz Script.getTransferableAttributes�	s'�� $� 1� 1�&*�&=�&=�'+�'?�'?�
�	
rW)Tr3)NN)�
r
)NNN)F)L�__name__�
__module__�__qualname__r1rbrhr�r�r�r�r�r�r�r�r�r�rrr(r+rGr{r�r�r�r~r�r�r�r�rsr�r�r�r�r�rtr�r�r�rr�rr�r�r�r�rNrTrWrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�
__classcell__)rUs@rVr&r&?s����+:�Z��$C�J0-�d"�&�
2�
I�63�
$�
%�
�
^�@
�6
.�/�a�F$*�L�"�&�&K�>!�
'�
(�
C�J!�#=�J=�(=�.-�@6�+?�ZA�0�4�4 �D'�6)�N�N�K�N�:^�@�*�J�Xa�F�<d�L3�j�,����0	�N�`�
��,�87�r� �Z�x^�@?�B��
rWr&)1�__id__�__version__�__date__�
__copyright__�__license__r��
gi.repositoryr�orcarrrrr	r
rrr
rrrrrr�	orca.acssr�orca.scriptsr�orca.ax_documentr�orca.ax_objectr�
orca.ax_tabler�orca.ax_textr�orca.ax_utilitiesrr�r�braille_generatorr�sound_generatorr �speech_generatorr"�script_utilitiesr$r&rrWrV�<module>r.s���,������7�
�����!�����������!���&�� �'�#�!��)� �/�+�-�'�A'
�W�^�^�A'
rW

Zerion Mini Shell 1.0