+
    }c5  c                   s   ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtHtHtHtH	t	 ^RI
Ht ^RIHt R t]'       d   R tMR t ! R	 R
]4      t^R^R^R/t^R^R^R/t/ t/ tR FO  t]! ]4      P.                  t]P3                  4       ]]&    ]]]],          &   ]P3                  4       ]]],          &   KQ  	   ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]!4      t" ! R  R!]"4      t# ! R" R#]"4      t$ ! R$ R%]!4      t% ! R& R']!4      t& ! R( R)]4      t']'t( ! R* R+]4      t) ! R, R-])4      t* ! R. R/])4      t+ ! R0 R1])4      t, ! R2 R3])4      t- ! R4 R5])4      t. ! R6 R7])4      t/ ! R8 R9]/4      t0 ! R: R;]04      t1 ! R< R=]04      t2 ! R> R?]04      t3 ! R@ RA]04      t4 ! RB RC]04      t5 ! RD RE]04      t6 ! RF RG]04      t7 ! RH RI]04      t8 ! RJ RK])4      t9 ! RL RM])4      t: ! RN RO]:4      t; ! RP RQ])4      t< ! RR RS])4      t= ! RT RU])4      t> ! RV RW])4      t? ! RX RY])4      t@ ! RZ R[]@4      tA ! R\ R]])4      tB ! R^ R_])4      tC ! R` Ra]C4      tD ! Rb Rc]4      tE ! Rd Re])4      tF ! Rf Rg])4      tG ! Rh Ri])4      tH ! Rj Rk]4      tI]I! R4      tJ]I! R4      tK]I! R4      tL ! Rl Rm]4      tM]M! Rn4      tN]M! Ro4      tO ! Rp Rq]4      tP]P! 4       tQ ! Rr Rs]4      tR ! Rt Ru])4      tS ! Rv Rw]S4      tT ! Rx Ry]4      tU ! Rz R{]U4      tV ! R| R}]4      tW ! R~ R]U4      tX ! R R]U4      tYR tZR#   ] d     EK  i ; i)    N)array)PY3binary_typebyte2int
indexbytes	iterbytes)X)lockc                 s$    V P                  R 4      # )Zlatin1)Zdecode)Zbs   &5/usr/lib/python3.14/site-packages/Xlib/protocol/rq.pydecode_stringr   $   s    99X    c                 "    V P                  4       # N)Ztobytesar	   r
   encode_arrayr   (   s    yy{r   c                 r   r   )Ztostringr   r	   r
   r   r   +   s    zz|r   c                   s    ] tR t^/tRtR# )BadDataError N__name__
__module____qualname____firstlineno____static_attributes__r   r   r
   r   r   /   s    tr   r   bhlBHLZbhilc                   sL   a  ] tR t^Mt o RtRtRtRt^ tRt	Rt
RtR tR tRtV tR# )Fielda  Field objects represent the data fields of a Struct.

Field objects must have the following attributes:

   name         -- the field name, or None
   structcode   -- the struct codes representing this field
   structvalues -- the number of values encodes by structcode

Additionally, these attributes should either be None or real methods:

   check_value  -- check a value before it is converted to binary
   parse_value  -- parse a value after it has been converted from binary

If one of these attributes are None, no check or additional
parsings will be done one values when converting to or from binary
form.  Otherwise, the methods should have the following behaviour:

   newval = check_value(val)
     Check that VAL is legal when converting to binary form.  The
     value can also be converted to another Python value.  In any
     case, return the possibly new value.  NEWVAL should be a
     single Python value if structvalues is 1, a tuple of
     structvalues elements otherwise.

   newval = parse_value(val, display)
     VAL is an unpacked Python value, which now can be further
     refined.  DISPLAY is the current Display object.  Return the
     new value.  VAL will be a single value if structvalues is 1,
     a tuple of structvalues elements otherwise.

If `structcode' is None the Field must have the method
f.parse_binary_value() instead.  See its documentation string for
details.
NFc                s    R # r   r   selfr	   r
   __init__ZField.__init__{   s    r   c                s6    \        RP                  V 4      4      h)a  value, remaindata = f.parse_binary_value(data, display, length, format)

Decode a value for this field from the binary string DATA.
If there are a LengthField and/or a FormatField connected to this
field, their values will be LENGTH and FORMAT, respectively.  If
there are no such fields the parameters will be None.

DISPLAY is the display involved, which is really only used by
the Resource fields.

The decoded value is returned as VALUE, and the remaining part
of DATA shold be returned as REMAINDATA.
z9Neither structcode or parse_binary_value provided for {0})ZRuntimeErrorformatr"   datadisplaylengthr$      &&&&&r
   parse_binary_valueZField.parse_binary_value~   s      ##)6$<1 	1r   r   )r   r   r   r   __doc__namedefault
structcodestructvaluescheck_valueparse_valuekeyword_argsr#   r*   r   __classdictcell__Z__classdict__   @r
   r    r    M   s?     !D DGJLKKL1 1r   r    c                   s&   a  ] tR t^t o R tRtV tR# )Padc                sh    Wn         R V,          V n        RP                  V4      V n        ^ V n        R# )    z{0}xN)sizevaluer$   r.   r/   )r"   r8      &&r
   r#   ZPad.__init__   s*    	T\
 ---r   )r8   r.   r/   r9   Nr   r   r   r   r#   r   r3   r4   r5   r
   r6   r6      s      r   r6   c                   s&   a  ] tR t^t o R tRtV tR# )ConstantFieldc                    Wn         R # r   r9   r"   r9   r:   r
   r#   ZConstantField.__init__   s    
r   r>   Nr;   r4   r5   r
   r<   r<      s      r   r<   c                   s    ] tR t^tRt^tRtR# )Opcoder   r   Nr   r   r   r   r.   r/   r   r   r   r
   r@   r@          JLr   r@   c                   s.   a  ] tR t^t o Rt^tR tRtV tR# )	ReplyCoder   c                s    ^V n         R#    Nr>   r!   r	   r
   r#   ZReplyCode.__init__   s	    
r   r>   N)	r   r   r   r   r.   r/   r#   r   r3   r4   r5   r
   rC   rC      s     JL r   rC   c                   s6   a  ] tR t^t o RtRt^tRtR tRt	V t
R# )LengthFieldaD  A LengthField stores the length of some other Field whose size
may vary, e.g. List and String8.

Its name should be the same as the name of the field whose size
it stores.  The other_fields attribute can be used to specify the
names of other fields whose sizes are stored by this field, so
a single length field can set the length of multiple fields.

The lf.get_binary_value() method of LengthFields is not used, instead
a lf.get_binary_length() should be provided.

Unless LengthField.get_binary_length() is overridden in child classes,
there should also be a lf.calc_length().
r   Nc                s    V# )zZnewlen = lf.calc_length(length)

Return a new length NEWLEN based on the provided LENGTH.
r   r"   r(   r:   r
   calc_lengthZLengthField.calc_length   s	     r   r   )r   r   r   r   r+   r.   r/   other_fieldsrH   r   r3   r4   r5   r
   rF   rF      s%      JLL r   rF   c                   s    ] tR t^tRtR# )TotalLengthFieldr   Nr   r   r   r
   rJ   rJ      s    r   rJ   c                   s.   a  ] tR t^t o Rt^tR tRtV tR# )RequestLengthr   c                s    V^,          # )   r   rG   r:   r
   rH   ZRequestLength.calc_length   s    {r   r   N	r   r   r   r   r.   r/   rH   r   r3   r4   r5   r
   rK   rK      s     JL r   rK   c                   s.   a  ] tR t^t o Rt^tR tRtV tR# )ReplyLengthr   c                s"    V^ ,
          ^,          # )    r   rG   r:   r
   rH   ZReplyLength.calc_length   s    !!r   r   NrM   r4   r5   r
   rN   rN      s     JL" "r   rN   c                   s&   a  ] tR t^t o R tRtV tR# )LengthOfc                s    \        V\        \        34      '       d   V^ ,          V n        VR,          V n        MWn        \
        V,          V n        R# )r    rE   NNN)
isinstancelisttupler,   rI   unsigned_codesr.   r"   r,   r8      &&&r
   r#   ZLengthOf.__init__   s;    dT5M**QDI $RDI(.r   )r,   rI   r.   Nr;   r4   r5   r
   rP   rP      s     / /r   rP   c                   s:   a  ] tR t^t o Rt^tR tR tR tRt	V t
R# )	OddLengthr   c                r=   r   r,   r"   r,   r:   r
   r#   ZOddLength.__init__   s    	r   c                s    V^,          # )   r   rG   r:   r
   rH   ZOddLength.calc_length   s    zr   c                s    V^ 8X  d   R# R# )r    evenoddr   )r"   r9   r'   rW   r
   r1   ZOddLength.parse_value   s    A:r   rY   N)r   r   r   r   r.   r/   r#   rH   r1   r   r3   r4   r5   r
   rX   rX      s#     JL r   rX   c                   s.   a  ] tR t^t o Rt^tR tRtV tR# )FormatFieldzA FormatField encodes the format of some other field, in a manner
similar to LengthFields.

The ff.get_binary_value() method is not used, replaced by
ff.get_binary_format().
c                s6    Wn         \        V,          V n        R # r   )r,   rU   r.   rV   rW   r
   r#   ZFormatField.__init__   s    	(.r   )r,   r.   N)	r   r   r   r   r+   r/   r#   r   r3   r4   r5   r
   r^   r^      s      L/ /r   r^   c                   s*   a  ] tR tRt o RR ltRtV tR# )
ValueFieldi  Nc                s    Wn         W n        R # r   )r,   r-   )r"   r,   r-   rW   r
   r#   ZValueField.__init__  s    	r   )r-   r,   r   r;   r4   r5   r
   r_   r_     s      r   r_   c                       ] tR tRtRt^tRtR# )Int8i  r   r   NrA   r   r   r
   ra   ra     rB   r   ra   c                   r`   )Int16i  r   r   NrA   r   r   r
   rb   rb     rB   r   rb   c                   r`   )Int32i  r   r   NrA   r   r   r
   rc   rc     rB   r   rc   c                   r`   )Card8i  r   r   NrA   r   r   r
   rd   rd     rB   r   rd   c                   r`   )Card16i  r   r   NrA   r   r   r
   re   re     rB   r   re   c                   r`   )Card32i  r   r   NrA   r   r   r
   rf   rf     rB   r   rf   c                   s>   a  ] tR tRt o RtRtR	R ltR tR tRt	V t
R# )
Resourcei!  Z__resource__ZresourceNc                s>    \         P                  WV4       W n        R # r   )rf   r#   codes)r"   r,   rh   r-      &&&&r
   r#   ZResource.__init__%  s    G,
r   c                sp    \        WP                  4      '       d   \        WP                  4      ! 4       # V# r   )Zhasattrcast_functionZgetattrr?   r:   r
   r0   ZResource.check_value)  s,    5,,--5"4"4577Lr   c                s    WP                   9   d   V# VP                  V P                  4      pV'       d	   V! W!4      # V# r   )rh   get_resource_class
class_namer"   r9   r'   c   &&& r
   r1   ZResource.parse_value/  s:     JJL&&t7W$$Lr   )rh   )r   N)r   r   r   r   rj   rl   r#   r0   r1   r   r3   r4   r5   r
   rg   rg   !  s#     "MJ
 
r   rg   c                       ] tR tRtRtRtRtR# )Windowi;  Z
__window__windowr   Nr   r   r   r   rj   rl   r   r   r   r
   rq   rq   ;       MJr   rq   c                   rp   )Pixmapi?  Z
__pixmap__Zpixmapr   Nrs   r   r   r
   ru   ru   ?  rt   r   ru   c                   rp   )DrawableiC  Z__drawable__Zdrawabler   Nrs   r   r   r
   rv   rv   C      "MJr   rv   c                   rp   )FontableiG  __fontable__Zfontabler   Nrs   r   r   r
   rx   rx   G  rw   r   rx   c                   rp   )FontiK  Z__font__Zfontr   Nrs   r   r   r
   rz   rz   K  s    MJr   rz   c                   rp   )GCiO  Z__gc__Zgcr   Nrs   r   r   r
   r{   r{   O  s    MJr   r{   c                   rp   )ColormapiS  Z__colormap__colormapr   Nrs   r   r   r
   r|   r|   S  rw   r   r|   c                   rp   )CursoriW  Z
__cursor__Zcursorr   Nrs   r   r   r
   r~   r~   W  rt   r   r~   c                   s.   a  ] tR tRt o ^tRtR tRtV tR# )Booli\  r   c                s    V'       # r   r   r?   r:   r
   r0   ZBool.check_value`  s
    9r   r   N)	r   r   r   r   r/   r.   r0   r   r3   r4   r5   r
   r   r   \  s     LJ r   r   c                   s4   a  ] tR tRt o ^tRR ltR tRtV tR# )Setic  Nc                sb    \         P                  WV4       \        V,          V n        W0n        R # r   )r_   r#   rU   r.   values)r"   r,   r8   r   r-   r)   r
   r#   ZSet.__init__f  s#    D0(.r   c                s|    WP                   9  d,   \        R V P                  : RV: RV P                   : 24      hV# )zfield z: argument z not in )r   Z
ValueErrorr,   r"   valr:   r
   r0   ZSet.check_valuek  s4    kk! $		3= > > 
r   )r.   r   r   )	r   r   r   r   r/   r#   r0   r   r3   r4   r5   r
   r   r   c  s     L
 r   r   c                   &   a  ] tR tRt o R tRtV tR# )Gravityir  c                s~   \         P                  W^\        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  34       R# rD   )r   r#   r   ZForgetGravityZStaticGravityZNorthWestGravityZNorthGravityZNorthEastGravityZWestGravityZCenterGravityZEastGravityZSouthWestGravityZSouthGravityZSouthEastGravityrZ   r:   r
   r#   ZGravity.__init__s  sf    TQ__aoo$%$6$6$%$6$6$%OOQ]]$%$6$6$%$6$6%8 	9r   r   Nr;   r4   r5   r
   r   r   r  s     9 9r   r   c                   s*   a  ] tR tRt o ^tR tRtV tR# )FixedBinaryi|  c                s\    \         P                  W4       R P                  V4      V n        R# )z{0}sN)r_   r#   r$   r.   rV   rW   r
   r#   ZFixedBinary.__init__  s     D' ---r   )r.   N)r   r   r   r   r/   r#   r   r3   r4   r5   r
   r   r   |  s     L. .r   r   c                   :   a  ] tR tRt o RtRR ltR tR tRtV t	R# )Binaryi  Nc                <    \         P                  W4       W n        R # r   r_   r#   padr"   r,   r   rW   r
   r#   ZBinary.__init__      D'r   c                s    Tp\        V4      pV P                  '       d)   VR ^V^,          ,
          ^,          ,          ,           VR3# W#R3# r7   N)lenr   r"   r   Z	val_bytesslen   &&  r
   
pack_valueZBinary.pack_value  sH    	9~888uTAX(:;;T4GGD((r   c                s    Vf   VR3# V P                   '       d    V^V^,          ,
          ^,          ,           pMTpVR V WR  3# Nr   r   r"   r&   r'   r(   r$   r      &&&&& r
   r*   ZBinary.parse_binary_value  sK    >9888a&1*n12DDGV}d5k))r   r   rE   
r   r   r   r   r.   r#   r   r*   r   r3   r4   r5   r
   r   r     s     J)	* 	*r   r   c                   r   )String8i  Nc                r   r   r   r   rW   r
   r#   ZString8.__init__  r   r   c                s    \        V\        4      '       d   TpMVP                  4       p\        V4      pV P                  '       d)   VR ^V^,          ,
          ^,          ,          ,           VR3# W#R3# r   )rR   bytesencoder   r   r   r   r
   r   ZString8.pack_value  s`    c5!!I

I9~888uTAX(:;;T4GGD((r   c                s    Vf   \        V4      R3# V P                  '       d    V^V^,          ,
          ^,          ,           pMTp\        VR V 4      pWaVR  3# r   )r   r   )r"   r&   r'   r(   r$   r   Zdata_str   &&&&&  r
   r*   ZString8.parse_binary_value  s[    > &++888a&1*n12DD gv/de$$r   r   r   r   r4   r5   r
   r   r     s     J
)% %r   r   c                   r   )String16i  Nc                r   r   r   r   rW   r
   r#   ZString16.__init__  r   r   c                s   \        V\        4      '       d   \        \        V4      4      p\	        V4      pV P
                  '       d   RV^,          ,          pMRp\        P                  ! RRV,          ,           .VO5!  V,           VR3# )z'Convert 8-byte string into 16-byte lists     r   >r   N)rR   r   rS   r   r   r   structpack)r"   r   r   r   r   r
   r   ZString16.pack_value  sk    c5!!y~&C3x888TAX&CC{{3t+2c2S8$DDr   c                s2   VR 8X  d   \        V4      ^,          ^,
          pMVR8X  d   \        V4      ^,          pV P                  '       d   W3^,          ,           pMTp\        P                  ! RRV,          ,           VRV^,           4      W^,          R 3# )r]   r\   r   r   N)r   r   r   unpackr   r   r
   r*   ZString16.parse_binary_value  s}    U?Y!^a'FvY!^F888aZ(DD}}S3</kvz1BCTQR()_TTr   r   r   r   r4   r5   r
   r   r     s!     JEU Ur   r   c                   s>   a  ] tR tRt o RtRtRR ltR tR tRt	V t
R# )	Listi  zThe List, FixedList and Object fields store compound data objects.
The type of data objects must be provided as an object with the
following attributes and methods:

...

Nc                sH    \         P                  W4       W n        W0n        R # r   )r_   r#   typer   )r"   r,   r   r   ri   r
   r#   ZList.__init__  s    D'	r   c                sL   VEfG   . pV P                   P                  f;   V'       d1   V P                   P                  W4      w  raVP                  V4       K8  EM"RV P                   P                  ,           p\        P
                  ! V4      p^ p	W,           \        V4      8:  d   \        P                  ! WqWV,            4      p
V P                   P                  ^8X  d
   V
^ ,          p
V P                   P                  f   VP                  V
4       M*VP                  V P                   P                  W4      4       W,           p	K  WR  pEM0R .\        V4      ,          pV P                   P                  f5   \        ^ V4       F#  pV P                   P                  W4      w  W[&   pK%  	  MRV P                   P                  ,           p\        P
                  ! V4      p^ p	\        ^ V4       F  p\        P                  ! WqWV,            4      p
V P                   P                  ^8X  d
   V
^ ,          p
V P                   P                  f   WV&   MV P                   P                  W4      W[&   W,           p	K  	  WR  pV P                  '       d   V\        V4      ^,          R  pWQ3# )N=)r   r.   parse_binaryappendr   calcsizer   r   r/   r1   intranger   )r"   r&   r'   r(   r$   retr   Zscoder   Zposvis   &&&&&       r
   r*   ZList.parse_binary_value  s   >Cyy##+ $		 6 6t EICJJsO  dii222u-jCI-e#Tz-BCAyy--2aDyy,,4

1

499#8#8#DE*CDz &3v;&Cyy##+q&)A#'99#9#9$#HLCFD * dii222u-q&)Ae#Tz-BCAyy--2aDyy,,4!"A!%!6!6q!B*C * Dz888D	A'Dyr   c                s   V P                   P                  '       d   \        V P                   P                  4      ^8X  dy   V P                   P                  e*   V Uu. uF  q P                   P                  V4      NK  	  pp\	        \
        V P                   P                  ,          V4      p\        V4      pMF. pV F-  pVP                  V P                   P                  V4      4       K/  	  RP                  V4      pV P                  '       d1   \        V4      pVR^V^,          ,
          ^,          ,          ,           pV\        V4      R3# u upi )rE   Nr   r7   )r   r.   r   r0   r   struct_to_array_codesr   r   r   joinr   )r"   r   r   r   r&   dlens   &&    r
   r   ZList.pack_value-  s    99C		(<(<$=$Byy$$09<=Ayy,,Q/=+DII,@,@A3GA?DDDII0034  88D>D888t9D%AqLA#566DSXt## >s   #E)r   r   r   )r   r   r   r   r+   r.   r#   r*   r   r   r3   r4   r5   r
   r   r     s&      J
6p$ $r   r   c                   s6   a  ] tR tRt o RR ltR tR tRtV tR# )	FixedListiB  c                s>    \         P                  WW44       W n        R # r   )r   r#   r8   )r"   r,   r8   r   r   r)   r
   r#   ZFixedList.__init__C  s    d$,	r   c                sD    \         P                  WW P                  V4      # r   )r   r*   r8   r%   r)   r
   r*   ZFixedList.parse_binary_valueG  s    &&t7IIvNNr   c                s    \        V4      V P                  8w  d   \        R V P                  ,          4      h\        P                  W4      # )z length mismatch for FixedList %s)r   r8   r   r,   r   r   r   r:   r
   r   ZFixedList.pack_valueJ  s6    s8tyy ADIIMNNt))r   r8   Nr   	r   r   r   r   r#   r*   r   r   r3   r4   r5   r
   r   r   B  s     O* *r   r   c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
ObjectiP  Nc                s    \         P                  WV4       W n        V P                  P                  V n        V P                  P                  V n        R # r   )r_   r#   r   r.   r/   )r"   r,   r   r-   ri   r
   r#   ZObject.__init__Q  s:    D0	)).. II22r   c                8    V P                   P                  W4      # r   )r   r   r%   r)   r
   r*   ZObject.parse_binary_valueW  s    yy%%d44r   c                r   r   )r   r1   )r"   r   r'   rW   r
   r1   ZObject.parse_valueZ  s    yy$$S22r   c                s8    V P                   P                  V4      # r   )r   r   r   r:   r
   r   ZObject.pack_value]  s    yy##C((r   c                sf   \        V\        4      '       d   . p^ pV P                  P                   F  pVP                  '       g   K  VP
                  f
   W,          pMVP                  W,          4      pVP                  ^8X  d   VP                  V4       MVP                  V4       V^,           pK  	  V# \        V\        4      '       d   TpM5\        V\        4      '       d   VP                  pM\        RV,          4      h. pV P                  P                   F  pVP                  '       g   K  VP
                  f   WdP                  ,          pM!VP                  WdP                  ,          4      pVP                  ^8X  d   VP                  V4       K}  VP                  V4       K  	  V# )r    z9Object value must be tuple, dictionary or DictWrapper: %s)rR   rT   r   fieldsr,   r0   r/   r   extenddictDictWrapper_data	TypeError)r"   r   valsr   fr   r&      &&     r
   r0   ZObject.check_value`  s7   c5!!DAYY%%666}},FMM#&1~~*AAAA & Kc4  D[))99DWZ]]^^!!Avvv==(VVAd66l3A>>Q&KKNKKN " r   )r.   r/   r   r   )r   r   r   r   r#   r*   r1   r   r0   r   r3   r4   r5   r
   r   r   P  s#     353)$ $r   r   c                   0   a  ] tR tRt o RtR tR tRtV tR# )PropertyDatai  Nc                s   Vf   \        V4      V^,          ,          pM\        V4      pV^ 8X  d   R pWQ3# V^8X  d+   ^VR V 3pW^V^,          ,
          ^,          ,           R  pWQ3# V^8X  d@   ^\        \        ^,          VR ^V,           4      3pV^W3^,          ,           ,          R  pWQ3# V^ 8X  d0   ^ \        \        ^,          VR ^V,           4      3pV^V,          R  pXV3# r   )r   r   r   array_unsigned_codes)r"   r&   r'   r(   r$   r   r   r
   r*   ZPropertyData.parse_binary_value  s   >Y6Q;/F[FQ;C y q[d7Fm$C1vz>Q"6789D y r\u1!4d;AJ6GHICVqj0123D y	 r\u1!4d;AJ6GHICF
$DDyr   c                s   Vw  r#VR9  d   \        RP                  V4      4      h\        V\        4      '       dC   V^,          p\	        V4      pWT,          '       d   WUV,          ,
          pVRV pMTpWT,          pMW\        V\
        4      '       d   \        V4      pV^,          p\        \        V,          V4      p\        V4      p\	        V4      p\	        V4      p	VR^V	^,          ,
          ^,          ,          ,           pWgV3# )   z Invalid property data format {0}Nr7   )r   i   rO   )
r   r$   rR   r   r   rT   rS   r   r   r   )
r"   r9   fmtr   r8   Zvlenr&   r   r   Zdls
   &&        r
   r   ZPropertyData.pack_value  s    k!AHHMNNc;''!8Ds8D{{Tk)5Dz<D #u%%3i!8D*40#6A?Ds8DYeBF
a/003r   r   	r   r   r   r   r.   r*   r   r   r3   r4   r5   r
   r   r     s     J. r   r   c                   s2   a  ] tR tRt o R tR tR tRtV tR# )FixedPropertyDatai  c                r   r   )r   r#   r8   rV   rW   r
   r#   ZFixedPropertyData.__init__  s    d)	r   c                sb    \         P                  WVV P                  V^,          ,          V4      # )r   )r   r*   r8   r%   r)   r
   r*   Z$FixedPropertyData.parse_binary_value  s-    ..t7/3yyVq[/I6S 	Sr   c                s    \         P                  W4      w  r#p\        V4      V P                  8w  d   \	        R V: 24      hW#V3# )z)Wrong data length for FixedPropertyData: )r   r   r   r8   r   )r"   r9   r&   r   r   s   &&   r
   r   ZFixedPropertyData.pack_value  sG    &11$>Ct9		!"' + , , 3r   r   Nr   r4   r5   r
   r   r     s     S r   r   c                   s>   a  ] tR tRt o RtRtRtR tR tR t	Rt
V tR# )		ValueListi  NTZusekeywordsc                sR   Wn         R P                  \        V,          V4      P                  4       V n        \
        P                  ! V P                  4      V n        . V n        ^pV F<  pVP                   '       g   K  V P                  P                  We34       V^,          pK>  	  R# )z={0}{1}xN)
r,   r$   rU   r   maskcoder   r   maskcodelenr   r   )r"   r,   maskr   r   flagr   s   &&&&*  r
   r#   ZValueList.__init__  sz    	")).*>DKKM!??4==9Avvv""A9-qy r   c                s   ^ pRpWP                   8X  d   TpV P                   F  w  rVVP                  V9   g   K  W6,          pWP                  ,          pVP                  e   VP                  V4      p\        P
                  ! RVP                  ,           V4      pWH,           R^\        V4      ,
          ,          ,           pK  	  \        P
                  ! V P                  V4      V,           RR3# )r    r   Nr   r7   )	r-   r   r,   r0   r   r   r.   r   r   )	r"   Zargkeysr   r&   fieldr   r   ds	   &&&      r
   r   ZValueList.pack_value  s    ,,C;;KEzzS {**o$$0++C0CKKe&6&6 6<x%1s1v:"66 ' {{4==$/$6dBBr   c           
     s   / p\        \        P                  ! V P                  VR V P                   4      ^ ,          4      pWP                  R  pV P
                   F  w  rxWh,          '       g   K  VP                  '       d   \        P                  ! RVP                  ,           VR \        P                  ! RVP                  ,           4       4      p	VP                  ^8X  d
   V	^ ,          p	VP                  e   VP                  W4      p	MVP                  VR,          VR R 4      w  rWVP                  &   VR,          pK  	  \        V4      V3# )Nr   :NrL   N:rL   NN)r   r   r   r   r   r   r.   r   r/   r1   r*   r,   r   )r"   r&   r'   r(   r$   Zrr   r   r   r   r   s   &&&&&      r
   r*   ZValueList.parse_binary_value  s   6==5Fd6F6F0GHKL$$%&;;KE{{###!==u/?/?)?)-.VvsUEUEU?U/V)WYD))Q.#Aw((4$00? $66tBx$PTUGD $%**Bx '" 1~t##r   )r   r   r   r,   )r   r   r   r   r.   r2   r-   r#   r   r*   r   r3   r4   r5   r
   r   r     s)     JLG
!C($ $r   r   c                   r   )KeyboardMappingi  Nc                s   Vf   \        V4      pM^V,          V,          p\        \        ^,          \        VR V 4      4      p. p\	        ^ \        V4      V4       F  pVP                  WhW,            4       K  	  WqVR  3# r   )r   r   r   r   r   r   )	r"   r&   r'   r(   r$   r   r   r   r   s	   &&&&&    r
   r*   Z"KeyboardMapping.parse_binary_value  s{    >t9Dv:&D&q)5et+=>q#a&&)AJJqQZ() * Kr   c                sX   ^ pV F  p\        V\        V4      4      pK  	  \        \        ^,          4      pV FX  pV F  pVP	                  V4       K  	  \        \        V4      V4       F"  pVP	                  \        P                  4       K$  	  KZ  	  \        V4      \        V4      V3# )r    )	maxr   r   r   r   r   r   ZNoSymbolr   r"   r9   Zkeycodesr   r   Zkr   r   r
   r   ZKeyboardMapping.pack_value$  s    A8SV,H  &q)*A 3q68,$ -  AE
H44r   r   r   r4   r5   r
   r   r     s     J 5 5r   r   c                   r   )ModifierMappingi4  Nc                s    \        \        ^,          VR^V,           4      p. p\        ^ ^4       F+  pVP                  WWV,          V^,           V,           4       K-  	  Wa^V,          R 3# rD   )r   r   r   r   )r"   r&   r'   r(   r$   r   r   r   s   &&&&&   r
   r*   Z"ModifierMapping.parse_binary_value7  sh    &q)4V+<=q!AJJqVq1u&678  V%%%r   c                sr   \        V4      ^8w  d   \        R4      h^ pV F  p\        V\        V4      4      pK  	  \        \        ^,          4      pV FJ  pV F  pVP                  V4       K  	  \        \        V4      V4       F  pVP                  ^ 4       K  	  KL  	  \        V4      \        V4      V3# )r   z/ModifierMapping list should have eight elements)r   r   r   r   r   r   r   r   r   r   r
   r   ZModifierMapping.pack_value@  s    u:?PQQA8SV,H  &q)*A 3q68, -  AE
H44r   r   r   r4   r5   r
   r   r   4  s     J&5 5r   r   c                   r   )
EventFieldiR  Nc                s    \        V\        4      '       g   \        V: R V P                  : 24      hVP                  RR3# )z is not an Event for field N)rR   Eventr   r,   _binaryr?   r:   r
   r   ZEventField.pack_valueU  s4    %''E499UVV}}dD((r   c                s    ^RI Hp VP                  P                  \	        V4      ^,          VP
                  4      p\        V4      \        8X  d   V\        V^4      ,          pV! W!R,          R7      VR,          3# )rE   )event:NrO   N)r'   
binarydata:rO   NN)	 r   Zevent_classesgetr   ZAnyEventr   r   r   )r"   r&   r'   r(   r$   r   Zestructr   r
   r*   ZEventField.parse_binary_value[  s_    ''++HTNT,A5>>R=D jq12GCyA49LLr   r   )	r   r   r   r   r.   r   r*   r   r3   r4   r5   r
   r   r   R  s     J)M Mr   r   c                   r   )	ScalarObjik  c                s<    Wn         ^V n        RV n        RV n        R# rD   )r.   r/   r1   r0   )r"   Zcoder:   r
   r#   ZScalarObj.__init__l  s    r   )r0   r1   r.   r/   Nr;   r4   r5   r
   r   r   k  s        r   r   c                   s4   a  ] tR tRt o Rt^tR tR tRtV t	R# )ResourceObjiv  r   c                s     Wn         R V n        R # r   )rl   r0   )r"   rl   r:   r
   r#   ZResourceObj.__init__z  s    $r   c                s\    VP                  V P                  4      pV'       d	   V! W!4      # V# r   )rk   rl   rm   ro   r
   r1   ZResourceObj.parse_value~  s+     &&t7W$$Lr   )r0   rl   N)
r   r   r   r   r.   r/   r#   r1   r   r3   r4   r5   r
   r   r   v  s     JL  r   r   rr   r}   c                   r   )StrClassi  Nc                sT    \        \        V4      4      V,           P                  4       # r   )Zchrr   r   r   r:   r
   r   ZStrClass.pack_value  s    CH#++--r   c                sJ    \        V4      ^,           p\        V^V 4      WR 3# rD   )r   r   )r"   r&   r'   r   ro   r
   r   ZStrClass.parse_binary  s*    ~!T!D\*DK77r   r   )	r   r   r   r   r.   r   r   r   r3   r4   r5   r
   r   r     s     J.8 8r   r   c                   sJ   a  ] tR tRt o RtR tR tR tR
R ltR
R lt	Rt
V tR	# )Structi  a  Struct objects represents a binary data structure.  It can
contain both fields with static and dynamic sizes.  However, all
static fields must appear before all dynamic fields.

Fields are represented by various subclasses of the abstract base
class Field.  The fields of a structure are given as arguments
when instantiating a Struct object.

Struct objects have two public methods:

  to_binary()    -- build a binary representation of the structure
                    with the values given as arguments
  parse_binary() -- convert a binary (string) representation into
                    a Python dictionary or object.

These functions will be generated dynamically for each Struct
object to make conversion as fast as possible.  They are
generated the first time the methods are called.
c                s   Wn         R V n        ^ V n        . V n        RV n        . V n        V P                    F  pVP                  e   V P
                  '       d   Q hV P                  VP                  ,           V n        VP                  ^ 8  d@   V P                  P                  V4       V P                  VP                  ,           V n        K  K  V P
                  P                  V4       K  	  \        P                  ! V P                  4      V n        V P
                  '       d   RV n        ^ V n        R# V P                  R,          V n        V P                  V n        R# )r   NrQ   )r   static_codesstatic_valuesstatic_fieldsstatic_size
var_fieldsr.   r/   r   r   r   )r"   r   r   s   &* r
   r#   ZStruct.__init__  s     A ||'???**$($5$5$D! >>A%&&--a0)-););ann)LD& & &&q)! $ "??4+<+<=???"DO !D"//3DO $ 2 2Dr   c                s   V P                    Uu. uF;  p\        V\        4      '       g   K  VP                  '       g   K/  VP                  NK=  	  pp\	        \        WA4      4      p\        V4      P                  V4      '       dD   RP                  \        V4      P                  V4      4      p\        RP                  V4      4      hVP                  V4       V P                    Ft  pVP                  '       g   K  VP                  V9  g   K*  VP                  f%   \        RP                  VP                  4      4      hVP                  WSP                  &   Kv  	  V P                  p/ p/ p	/ p
V P                   F  pVP                  '       d'   VP!                  WSP                  ,          V4      w  rpM$VP!                  WSP                  ,          4      w  rpWVP                  &   WVP                  &   WVP                  &   V\#        V4      ,          pK  	  . pV P$                   EF  p\        V\&        4      '       dk   \        V\(        4      '       d#   VP+                  VP-                  V4      4       KR  VP+                  VP-                  WP                  ,          4      4       K  \        V\.        4      '       d$   VP+                  WP                  ,          4       K  \        V\0        4      '       d   VP+                  VP2                  4       K  VP4                  ^8X  df   VP6                  e4   VP+                  VP7                  WSP                  ,          4      4       EKB  VP+                  WSP                  ,          4       EKf  VP6                  e4   VP9                  VP7                  WSP                  ,          4      4       EK  VP9                  WSP                  ,          4       EK  	  \:        P<                  ! V P>                  .VO5!  pV P                   Uu. uF  q8VP                  ,          NK  	  ppVRP                  V4      ,           # u upi u upi )a7  data = s.to_binary(...)

Convert Python values into the binary representation.  The
arguments will be all value fields with names, in the order
given when the Struct object was instantiated.  With one
exception: fields with default arguments will be last.

Returns the binary representation as the string DATA.
, z:{0} arguments were passed both positionally and by keywordzMissing required argument {0}r   ) r   rR   r_   r,   r   ZzipZsetZintersectionr   r   r$   Zupdater-   r   r   r2   r   r   r   rF   rJ   r   rH   r^   r<   r9   r/   r0   r   r   r   r   )r"   Zvarargsr   r   ZnamesZ
field_argsZdupesZtotal_lengthZvar_valslengthsformatsr   r   ZfmZ
pack_itemsZstatic_partZ	var_partss   &*,              r
   	to_binaryZStruct.to_binary  s,    "& :Aq*- 23&&  :#e-.
z?''--IIc*o::4@AEX__`efgg$Avvv166399$#$C$J$J166$RSS%&YY
66"	  ''A~~~<<
66(:DAb<<
66(:;b QVVAFFO AFFOCF"L ! 
##A![)) a!122%%ammL&AB%%ammGFFO&DE A{++!!'&&/2 A}--!!!''* >>Q&}}0"))!--
668J*KL #))*VV*<= }}0"))!--
668J*KL"))*VV*<=G $J kk$"3"3AjA/3?!aff%%	?SXXi000[:X @s   QQ Q&Q c                s    \        V4      \        J d   V P                  ! V!  # \        V\        4      '       d   V P                  ! R/ VB # \        V\
        4      '       d   V P                  ! R/ VP                  B # \        RV,          4      h)zThis function allows Struct objects to be used in List and
Object fields.  Each item represents the arguments to pass to
to_binary, either a tuple, a dictionary or a DictWrapper.

z%s is not a tuple or a listr   )r   rT   r   rR   r   r   r   r   r?   r:   r
   r   ZStruct.pack_value1  sr     ;%>>5))t$$>>*E**{++>>0EKK00<FGGr   c                s   / p^ pV P                    F  pVP                  '       g   M\        V\        4      '       d   Mt\        V\        4      '       d   M]VP
                  ^8X  d
   W,          pMWWVP
                  ,            pVP                  e   VP                  WrVR7      pWtVP                  &   WVP
                  ,           pK  	  V'       g   \        V4      # V# )zrThis function is used by List and Object fields to convert
Struct objects with no var_fields into Python values.

rawdict)r   r,   rR   rF   r^   r/   r1   r   )r"   r   r'   r   r   vnor   	field_vals   &&&&    r
   r1   ZStruct.parse_valueC  s     ##A 666A{++A{++ >>Q& #I #NN(: ;I==, !i' RI'AFF&C; $> s##
r   c           	     s   / p\         P                  ! V P                  VRV P                   4      p/ p/ p^ pV P                   EF5  p	V	P
                  '       g   EM\        V	\        4      '       dp   V	P
                  .p
V	P                  '       d   V
P                  V	P                  4       WX,          pV	P                  e   V	P                  W4      pV
 F  pWV&   K	  	  M\        V	\        4      '       d   WX,          WyP
                  &   M[V	P                  ^8X  d
   WX,          pMWXWP                  ,            pV	P                  e   V	P                  W4      pWV	P
                  &   WP                  ,           pEK8  	  WP                  R pV P                   FW  p	V	P                  WVP                  V	P
                  4      VP                  V	P
                  4      4      w  WIP
                  &   pKY  	  V'       g   \!        V4      pWA3# )a  values, remdata = s.parse_binary(data, display, rawdict = False)

Convert a binary representation of the structure into Python values.

DATA is a string or a buffer containing the binary data.
DISPLAY should be a Xlib.protocol.display.Display object if
there are any Resource fields or Lists with ResourceObjs.

The Python values are returned as VALUES.  If RAWDICT is true,
a Python dictionary is returned, where the keys are field
names and the values are the corresponding Python value.  If
RAWDICT is false, a DictWrapper will be returned where all
fields are available as attributes.

REMDATA are the remaining binary data, unused by the Struct object.

N)r   r   r   r   r   r,   rR   rF   rI   r   r1   r^   r/   r   r*   r   r   )r"   r&   r'   r   r   r   r   r   r   r   Zf_namesr   Zf_names   &&&&         r
   r   ZStruct.parse_binaryn  s   & mmD--t4ET5E5E/FG##A
 666
 A{++66(>>>NN1>>2H	==, !i AI%F&/FO & A{++"%( >>Q& #I #NN(: ;I==, !i AI'AFF&CG $J $$%&
 A ! 4 4T5<[[5H5<[[5H!6CK ! c"Cyr   )r   r   r   r   r   r.   r/   r   NF)r   r   r   r   r+   r#   r   r   r1   r   r   r3   r4   r5   r
   r   r     s/     ("3RX1vH$)VK Kr   r   c            	       sj   a  ] tR tRt o ]! ]! R^4      ]! R4      ]! R^ R7      4      tR t	R t
RtV tR# )	TextElements8i  stringdeltar   c                s   R p/ pV EF  p\        V4      \        \        39   d   ^ V3p\        V\        \
        \        34      '       d   \        V\        4      '       d   Vw  rVMVR,          pVR,          pV'       g	   V'       d@   WSR&   VR,          VR&   W P                  P                  ! R/ VB ,           p^ pVR,          pKO  K  \        V\        4      '       d   VP                  4       pV\        P                  ! R^V4      ,           pEK	  	  \        V4      pVR^V^,          ,
          ^,          ,          ,           RR3# )	r   r   r   :N   N:r   NNz>BLr7   Nr   )r   strr   rR   rT   r   r   string_textitemr   rx   ry   r   r   r   )r"   r9   r&   argsr   r   Zm_strr   s   &&      r
   r   ZTextElements8.pack_value  s   AAw3,&F
 !eT;788a''#$LE5gJEhKEu$)M%*4[DN"6"6"@"@""M"MMDE!$KE  % a**(Afkk%a88? D 4yeD1H122D$>>r   c           	     s   . p \        V4      ^8  d    VR3# \        V4      ^8X  dI   VP                  \        P                  ! R\        VR,          4      4      ^ ,          4       VR,          pKn  \        V4      ^ 8X  d   \        V^4      ^ 8X  d   VR,          pK  V P                  P                  W4      w  raVP                  V4       K  )rE   z>L:rE      N:r   NN:r[   NNr   )	r   r   r   r   r   r   r   r   r   )r"   r&   r'   r(   r$   r   r   r   r
   r*   Z TextElements8.parse_binary_value  s    4y1}  rz ~$fmmD%S	2BCAFGBx $1$D!)<)ABx ..;;DJa r   r   N)r   r   r   r   r   rP   ra   r   r   r   r*   r   r3   r4   r5   r
   r   r     s9     hx3"7m%ha8;O'?R r   r   c            	       sT    ] tR tRt]! ]! R^4      ]! R4      ]! R^ R7      4      tRt	R# )TextElements16i  r   r   r   r   N)
r   r   r   r   r   rP   ra   r   r   r   r   r   r
   r   r     s&    hx3"7m&xq9<Or   r   c                   r   )GetAttrDatai	  c                s     V P                   '       d   V P                   V,          # \        V4      h  \         d    \        T4      hi ; ir   )r   ZAttributeErrorKeyError)r"   Zattrr:   r
   __getattr__ZGetAttrData.__getattr__
  sD    	'zzzzz$''$T** 	' &&	's   2 2 2 A	r   N)r   r   r   r   r   r   r3   r4   r5   r
   r   r   	  s     ' 'r   r   c                   sb   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )r   i  c                s"    WP                   R &   R# )r   N)Z__dict__)r"   r   r:   r
   r#   ZDictWrapper.__init__  s    !%gr   c                s(    V P                   V,          # r   r   r"   keyr:   r
   __getitem__ZDictWrapper.__getitem__  s    zz#r   c                "    W P                   V&   R # r   r   r"   r   r9   rW   r
   __setitem__ZDictWrapper.__setitem__      

3r   c                     V P                   V R # r   r   r   r:   r
   __delitem__ZDictWrapper.__delitem__      JJsOr   c                r   r   r   r   rW   r
   __setattr__ZDictWrapper.__setattr__   r   r   c                r   r   r   r   r:   r
   __delattr__ZDictWrapper.__delattr__#  r  r   c                s,    \        V P                  4      # r   )r   r   r!   r	   r
   __str__ZDictWrapper.__str__&  s    4::r   c                sd    V P                   P                  : R \        V P                  4      : R2# )())	__class__r   reprr   r!   r	   r
   __repr__ZDictWrapper.__repr__)  s     >>22D4DEEr   c                ~    \        V\        4      '       d   V P                  VP                  8  # V P                  V8  # r   rR   r   r   r"   Zotherr:   r
   __lt__ZDictWrapper.__lt__,  1    e[))::++::%%r   c                ~    \        V\        4      '       d   V P                  VP                  8  # V P                  V8  # r   r  r  r:   r
   __gt__ZDictWrapper.__gt__2  r  r   c                ~    \        V\        4      '       d   V P                  VP                  8H  # V P                  V8H  # r   r  r  r:   r
   __eq__ZDictWrapper.__eq__8  s1    e[))::,,::&&r   r   N)r   r   r   r   r#   r   r   r  r  r  r  r
  r  r  r  r   r3   r4   r5   r
   r   r     sB     &  F&&' 'r   r   c                   s0   a  ] tR tRt o RR ltR tRtV tR# )Requesti?  Nc                s    W n         V P                  P                  ! V/ VB V n        R V n        VP                  WR J4       R # r   )_errorhandler_requestr   r   _serialsend_request)r"   r'   Zonerrorr   r      &&&*,r
   r#   ZRequest.__init__@  s=    $}}..==T$#67r   c                sN    V P                   e   \        V P                   W4      # ^ # r   )r  call_error_handlerr"   errorr:   r
   
_set_errorZRequest._set_errorF  s$    )%d&8&8%FFr   )r   r  r  r   )r   r   r   r   r#   r  r   r3   r4   r5   r
   r  r  ?  s     8 r   r  c                   sB   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
ReplyRequestiL  c                s   Wn         V P                  P                  ! V/ VB V n        R V n        R V n        R V n        \        P                  ! 4       V n	        V P                   P                  V R4       V'       g   V P                  4        R # R # )NT)_displayr  r   r   r  r   _errorr   Zallocate_lock_response_lockr  reply)r"   r'   Zdeferr   r   r  r
   r#   ZReplyRequest.__init__M  sm    }}..==
"002""4.JJL r   c                s   V P                   P                  4        V P                  f   V P                  f   V P                  P
                  P                  4        V P                   P                  4        V P                  P                  V P                  R7       V P                   P                  4        K  V P                   P                  4        R V n        V P                  '       d   V P                  hR # )N)request)	r!  acquirer   r   r  Zsend_recv_lockreleaseZsend_and_recvr  r!   r	   r
   r"  ZReplyRequest.replyZ  s    
 	##%jj T[[%8MM((002'')MM''$,,'?'')##% ;;;++ r   c                s    V P                   P                  4        V P                  P                  WP                  R R7      w  V n        pV P                   P                  4        R# )Tr   N)r!  r$  Z_replyr   r  r   r%  )r"   r&   r   s   && r
   _parse_responseZReplyRequest._parse_responsen  sJ    ##%00}}PT0U
A##%r   c                sz    V P                   P                  4        Wn        V P                   P                  4        ^# r   )r!  r$  r   r%  r  r:   r
   r  ZReplyRequest._set_errors  s.    ##%##%r   c           	     s    R V P                   P                  : RV P                  : RV P                  : RV P                  : R2	# )Z<z
 serial = z	, data = z
, error = r   )r  r   r  r   r   r!   r	   r
   r
  ZReplyRequest.__repr__y  s0    <@NN<S<SUYUaUacgcmcmosozoz{{r   )r   r   r  r   r!  r  Nr   )r   r   r   r   r#   r"  r&  r  r
  r   r3   r4   r5   r
   r  r  L  s%     (&
| |r   r  c                   r   )
r   i}  Nc                s   V'       d   Wn         V P                  P                  WR R7      w  V n        pV P                  R,          ^,          '       V P                  R&   V P                  R,          ^,          V P                  R&   R# V P                  '       d   V P                  VR&   ^ VR&   V P                  P
                  ! R/ VB V n         ^ VR&   W0n        R# )Tr   r   
send_eventZsequence_numberNr   )r   Z_fieldsr   r   Z_coder   )r"   r   r'   r   r&   s   &&&, r
   r#   ZEvent.__init__~  s    %L#||88CG  9  IDJ 04zz&/AD/H+HDJJ|$!%F!3d!:DJJvzzz#zzV&'D"#<<119D9DL!"DJr   c                sP   . pV P                   P                  4        FX  w  r#VR 8X  d   K  VR8X  d#   V P                   R ,          '       d
   V^,          pVP                  V: R\        V4      : 24       KZ  	  RP	                  V4      pV P
                  P                  : RV: R2# )r'  r   z = r   r  r  )r   Zitemsr   r	  r   r  r   )r"   ZkwlistZkwr   Zkwss   &    r
   r
  ZEvent.__repr__  s    zz'')GB\!V|

< 8 8DjMMr4956 * ii>>22C88r   c                r  r   rR   r   r   r  r:   r
   r  ZEvent.__lt__  1    eU##::++::%%r   c                r  r   r(  r  r:   r
   r  ZEvent.__gt__  r)  r   c                r  r   r(  r  r:   r
   r  ZEvent.__eq__  s1    eU##::,,::&&r   )r   r   )NN)r   r   r   r   r#   r
  r  r  r  r   r3   r4   r5   r
   r   r   }  s#     (
9&&' 'r   r   c                 s     V ! W4      #    \         P                  P                  R 4       \        P                  ! 4         ^ # ; i)z#Exception raised by error handler.
)sysZstderrZwrite	tracebackZ	print_exc)Zhandlerr  r#  rW   r
   r  r    s;    u&&

?@s	   
 6A)[r*  r+  r   r   Zsixr   r   r   r   r   r   r   Zsupportr   r   r   Z	Exceptionr   Zsigned_codesrU   r   r   rn   Zitemsizer8   Zupperr   Zobjectr    r6   r<   r@   rC   rF   rJ   rK   rN   rP   rX   r^   ZFormatr_   ra   rb   rc   rd   re   rf   rg   rq   ru   rv   rx   rz   r{   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZCard8ObjZ	Card16ObjZ	Card32Objr   Z	WindowObjZColormapObjr   ZStrr   r   r   r   r   r  r  r   r  r   r   r
   <module>r,     s  .     B A    $9 # CCC)c1c1c+   	A8D!"45l40167gginT23 
@1F @1F% E 
]  % 8	{ 	$ "" "/{ / "/% / 
 : J J J Z Z 
v 4X X x x 8  x X 
: * 9c 9.* .*Z *8%j %B Uz  UHZ$: Z$z* *4Z 4n7: 7t &<$ <$~5j 5B5j 5<M M2    cNcN	cN	& " !	*%8v 8 jbV bJ	BJ BL<] <'& ')'+ )'Xf .|; .|b1'K 1'hU+  s   	&MMM