§
    {Øj=>  ã                   óZ  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ ddlmZ  e ed¦  «        ¦  «        ZeeefZeeehZeeee ed¦  «        hZe	j        e	j        e	j        e	j         e	j!        hZ"ee#eee$e%hez  e"z  Z&ee#eee%hez  Z'd„ Z(d„ Z)d	„ Z*d
„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d „ ZAd!„ ZBd"„ ZCd2d$„ZDd2d%„ZEd&„ ZFd'„ ZGd(„ ZHd)„ ZId*„ ZJd+„ ZKd,„ ZLd-„ ZMd.„ ZN ejO        d¦  «        fd/„ZOd3d1„ZPdS )4zkHelper functions for pickling and unpickling.  Most functions assist in
determining the type of an object.
é    N)ÚIteratoré   )ÚtagsÚ c                 ó,   — t          | t          ¦  «        S )z­Returns True is obj is a reference to a type.

    >>> is_type(1)
    False

    >>> is_type(object)
    True

    >>> class Klass: pass
    >>> is_type(Klass)
    True
    )Ú
isinstanceÚtype©Úobjs    ú„/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/jsonpickle/util.pyÚis_typer   9   s   € õ �c�4Ñ Ô Ð ó    c                 óz  — t          | |¦  «        sdS t          | |¦  «        }t          |t          j        ¦  «        rdS t          |t          j        t          j        f¦  «        sdS t          | ¦  «        r| n| j        }d }t          j
        |¦  «        D ](}t          |¦  «                             |¦  «        }|� nŒ)|€dS t          |t          ¦  «        rdS t          |d¦  «        sdS t          |d¦  «        }t          |t          ¦  «        rt          ||¦  «        S t          | t!          |¦  «        ¦  «        S )NFTÚ__self__)ÚhasattrÚgetattrr   ÚtypesÚBuiltinMethodTypeÚ
MethodTypeÚFunctionTyper   Ú	__class__ÚinspectÚgetmroÚvarsÚgetÚstaticmethodÚclassmethodÚ
issubclassr	   )r   ÚnameÚfuncÚ	base_typeÚoriginalÚsubtypeÚbound_tos          r   Ú
has_methodr%   J   sQ  € å�3˜ÑÔð ØˆuÝ�3˜ÑÔ€Dõ �$�Ô/Ñ0Ô0ð Øˆtõ �d�UÔ-­uÔ/AÐBÑCÔCð Øˆuõ ˜s‘|”|Ð6��¨¬€IØ€Hå”> )Ñ,Ô,ð ð ˆÝ˜‘=”=×$Ò$ TÑ*Ô*ˆØÐØˆEð  ð ÐØˆuõ �(�LÑ)Ô)ð Øˆtõ �4˜Ñ$Ô$ð ØˆuÝ�t˜ZÑ(Ô(€Hõ �(�KÑ(Ô(ð /Ý˜) XÑ.Ô.Ð.õ �c�4 ™>œ>Ñ*Ô*Ð*r   c                 ó†   — t          | t          ¦  «        o,t          | t          t          j        t          j        f¦  «         S )z­Returns True is obj is a reference to an object instance.

    >>> is_object(1)
    True

    >>> is_object(object())
    True

    >>> is_object(lambda x: 1)
    False
    )r   Úobjectr	   r   r   ÚBuiltinFunctionTyper
   s    r   Ú	is_objectr)   y   s>   € õ �c�6Ñ"Ô"ð ­:Ø�d•EÔ&­Ô(AÐBñ,ô ,ð (ð r   c                 ó.   — t          | ¦  «        t          v S )zfDetermines if the object is not a class or a class instance.
    Used for serializing properties.
    )r	   ÚNON_CLASS_TYPESr
   s    r   Úis_not_classr,   Š   s   € õ �‰9Œ9�Ð'Ð'r   c                 ó.   — t          | ¦  «        t          v S )a  Helper method to see if the object is a basic data type. Unicode strings,
    integers, longs, floats, booleans, and None are considered primitive
    and will return True when passed into *is_primitive()*

    >>> is_primitive(3)
    True
    >>> is_primitive([4,4])
    False
    )r	   Ú
PRIMITIVESr
   s    r   Úis_primitiver/   ‘   s   € õ �‰9Œ9�
Ð"Ð"r   c                 óh   — dt           j        v o$t          | t           j        d         j        ¦  «        S )zIs the object an enum?Úenum)ÚsysÚmodulesr   ÚEnumr
   s    r   Úis_enumr5   ž   s(   € à•S”[Ð ÐN¥Z°µS´[ÀÔ5HÔ5MÑ%NÔ%NÐNr   c                 ób   — t          j        dt          ¦  «         t          | ¦  «        t          u S )zoHelper method for testing if the object is a dictionary.

    >>> is_dictionary({'key':'value'})
    True

    ú[This function will be removed in the next release of jsonpickle, 5.0.0! Please migrate now.)ÚwarningsÚwarnÚDeprecationWarningr	   Údictr
   s    r   Úis_dictionaryr<   £   s1   € õ „MØeÝñô ð õ �‰9Œ9�ÐÐr   c                 ó.   — t          | ¦  «        t          v S )zpHelper method to see if the object is a sequence (list, set, or tuple).

    >>> is_sequence([4])
    True

    )r	   ÚSEQUENCES_SETr
   s    r   Úis_sequencer?   ±   s   € õ �‰9Œ9�Ð%Ð%r   c                 ób   — t          j        dt          ¦  «         t          | ¦  «        t          u S )zXHelper method to see if the object is a Python list.

    >>> is_list([4])
    True
    r7   )r8   r9   r:   r	   Úlistr
   s    r   Úis_listrB   »   s1   € õ „MØeÝñô ð õ �‰9Œ9�ÐÐr   c                 ób   — t          j        dt          ¦  «         t          | ¦  «        t          u S )zXHelper method to see if the object is a Python set.

    >>> is_set(set())
    True
    r7   )r8   r9   r:   r	   Úsetr
   s    r   Úis_setrE   È   s1   € õ „MØeÝñô ð õ �‰9Œ9�ÐÐr   c                 ób   — t          j        dt          ¦  «         t          | ¦  «        t          u S )z[Helper method to see if the object is a bytestring.

    >>> is_bytes(b'foo')
    True
    r7   )r8   r9   r:   r	   Úbytesr
   s    r   Úis_bytesrH   Õ   ó1   € õ „MØeÝñô ð õ �‰9Œ9�ÐÐr   c                 ób   — t          j        dt          ¦  «         t          | ¦  «        t          u S )zBDEPRECATED: Helper method to see if the object is a unicode stringr7   )r8   r9   r:   r	   Ústrr
   s    r   Ú
is_unicoderL   â   s/   € å„MØeÝñô ð õ �‰9Œ9�ÐÐr   c                 ób   — t          j        dt          ¦  «         t          | ¦  «        t          u S )z[Helper method to see if the object is a Python tuple.

    >>> is_tuple((1,))
    True
    r7   )r8   r9   r:   r	   Útupler
   s    r   Úis_tuplerO   ë   rI   r   c                 ó‚   — t          | d¦  «        o/t          | j        t          ¦  «        ot	          | ¦  «        t          uS )zÈReturns True if *obj* is a subclass of the dict type. *obj* must be
    a subclass and not the actual builtin dict.

    >>> class Temp(dict): pass
    >>> is_dictionary_subclass(Temp())
    True
    r   )r   r   r   r;   r	   r
   s    r   Úis_dictionary_subclassrQ   ø   s=   € õ 	��[Ñ!Ô!ð 	"Ý�s”}¥dÑ+Ô+ð	"å�‰IŒI�TÐ!ðr   c                 óv   — t          | d¦  «        o)t          | j        t          ¦  «        ot	          | ¦  «         S )zëReturns True if *obj* is a subclass of list, set or tuple.

    *obj* must be a subclass and not the actual builtin, such
    as list, set, tuple, etc..

    >>> class Temp(list): pass
    >>> is_sequence_subclass(Temp())
    True
    r   )r   r   r   Ú	SEQUENCESr?   r
   s    r   Úis_sequence_subclassrT     s=   € õ 	��[Ñ!Ô!ð 	!Ý�s”}¥iÑ0Ô0ð	!å˜CÑ Ô Ð ðr   c                 ó@   — t          | ¦  «        t          j        u rdS dS )zµReturns True if *obj* is a special (weird) class, that is more complex
    than primitive data types, but is not a full object. Including:

        * :class:`~time.struct_time`
    TF)r	   ÚtimeÚstruct_timer
   s    r   Úis_noncomplexrX     s"   € õ ˆC�y„y•DÔ$Ð$Ð$ØˆtØˆ5r   c                 ó.   — t          | ¦  «        t          v S )zÚReturns true if passed a function

    >>> is_function(lambda x: 1)
    True

    >>> is_function(locals)
    True

    >>> def method(): pass
    >>> is_function(method)
    True

    >>> is_function(1)
    False
    )r	   ÚFUNCTION_TYPESr
   s    r   Úis_functionr[   $  s   € õ  �‰9Œ9�Ð&Ð&r   c                 óâ   — t          | d¦  «        oPt          | t          j        t          j        f¦  «        o*t          | d¦  «        ot          | d¦  «        o
| j        dk    pt          | ¦  «        S )z±Return True if `obj` is a module-global function

    >>> import os
    >>> is_module_function(os.path.exists)
    True

    >>> is_module_function(lambda: None)
    False

    r   Ú
__module__Ú__name__z<lambda>)r   r   r   r   r(   r^   Úis_cython_functionr
   s    r   Úis_module_functionr`   7  s|   € õ 	��[Ñ!Ô!ð 	'Ý�s�UÔ/µÔ1JÐKÑLÔLð	'å�C˜Ñ&Ô&ð	'õ �C˜Ñ$Ô$ð	'ð ŒL˜JÒ&ð!õ 
˜CÑ	 Ô	 ð!r   c                 ój   — t          j        dt          ¦  «         t          | t          j        ¦  «        S )zWReturns True if passed a module

    >>> import os
    >>> is_module(os)
    True

    r7   )r8   r9   r:   r   r   Ú
ModuleTyper
   s    r   Ú	is_modulerc   L  s3   € õ „MØeÝñô ð õ �c�5Ô+Ñ,Ô,Ð,r   c                 ó`   — | t           j        v rdS t          |¦  «        pt          |¦  «         S )zàReturn True if an object can be pickled

    >>> import os
    >>> is_picklable('os', os)
    True

    >>> def foo(): pass
    >>> is_picklable('foo', foo)
    True

    >>> is_picklable('foo', lambda: None)
    False

    F)r   ÚRESERVEDr`   r[   )r   Úvalues     r   Úis_picklablerg   [  s4   € ð �tŒ}ÐÐØˆuÝ˜eÑ$Ô$Ð>­K¸Ñ,>Ô,>Ð(>Ð>r   c                 óH   — 	 t          | ¦  «         dS # t          $ r Y dS w xY w)z£Tests to see if ``module`` is available on the sys.path

    >>> is_installed('sys')
    True
    >>> is_installed('hopefullythisisnotarealmodule')
    False

    TF)Ú
__import__ÚImportError©Úmodules    r   Úis_installedrm   o  s<   € ðÝ�6ÑÔÐØˆtøÝð ð ð Øˆuˆuðøøøs   ‚ “
! !c                 óB   — t          | d¦  «        ot          | d¦  «        S )NÚ__getitem__Úappend)r   r
   s    r   Úis_list_likerq     s!   € Ý�3˜Ñ&Ô&ÐA­7°3¸Ñ+AÔ+AÐAr   c                 ób   — t          | t          ¦  «        ot          | t          j        ¦  «         S ©N)r   Úabc_iteratorÚioÚIOBaser
   s    r   Úis_iteratorrw   ƒ  s&   € Ý�c�<Ñ(Ô(ÐKµ¸CÅÄÑ1KÔ1KÐ-KÐKr   c                 óV   — 	 t          | ¦  «        j        dk    S # t          $ r Y dS w xY w)NÚcollectionsF)r	   r]   Ú	Exceptionr
   s    r   Úis_collectionsr{   ‡  s=   € ðÝ�C‰yŒyÔ# }Ò4Ð4øÝð ð ð Øˆuˆuðøøøs   ‚ š
(§(c                 óV   — t          | d¦  «        ot          | j        t          ¦  «        S )Nr   )r   r   r   rS   r
   s    r   Úis_reducible_sequence_subclassr}   Ž  s#   € Ý�3˜Ñ$Ô$ÐM­°C´MÅ9Ñ)MÔ)MÐMr   c                 ó¨  — t          | ¦  «        rt          | t          j        ¦  «        sdS t	          | ¦  «        t
          v sŽ| t          u s…t          | ¦  «        svt          | t          j	        ¦  «        s\t          | ¦  «        sMt          | ¦  «        s>t          t          | dd¦  «        t          ¦  «        st          | ¦  «        r| j        dk    rdS dS )zu
    Returns false if of a type which have special casing,
    and should not have their __reduce__ methods used
    TÚ	__slots__NÚdatetimeF)r{   r   ry   Údefaultdictr	   ÚNON_REDUCIBLE_TYPESr'   rQ   r   rb   r}   rq   r   Ú_ITERATOR_TYPEr   r]   r
   s    r   Úis_reducibler„   ’  sÚ   € õ �cÑÔð ¥:¨cµ;Ô3JÑ#KÔ#Kð ØˆtåˆS‰	Œ	Õ(Ð(Ð(Ø•&ˆ=ˆ=Ý! #Ñ&Ô&ð å�c�5Ô+Ñ,Ô,ð õ *¨#Ñ.Ô.ð õ ˜ÑÔð	 õ
 •g˜c ;°Ñ5Ô5µ~ÑFÔFð õ �C‰LŒLð ð !œ^¨zÒ9Ð9àˆuØˆ4r   c                 ó„   — t          | ¦  «        o1t          | d¦  «        o!t          | ¦  «                             d¦  «        S )z>Returns true if the object is a reference to a Cython functionÚ__repr__z<cyfunction )Úcallabler   ÚreprÚ
startswithr
   s    r   r_   r_   ¨  s@   € õ 	�‰Œð 	1Ý�C˜Ñ$Ô$ð	1å�‰IŒI× Ò  Ñ0Ô0ðr   c                 ód   — 	 t          | ||¦  «         dS # t          $ r Y dS t          $ r Y dS w xY w)NFT)ÚsetattrÚAttributeErrorÚ	TypeError)r   Úattrrf   s      r   Úis_readonlyr�   ±  s[   € ð	Ý��T˜5Ñ!Ô!Ð!ØˆuøÝð ð ð àˆtˆtÝð ð ð ð ˆtˆtðøøøs   ‚ •
/¢	/®/Fc                 ó:   — t          | dd¦  «        r	|| j        v n|S )zt
    Returns true if key exists in obj.__dict__; false if not in.
    If obj.__dict__ is absent, return default
    Ú__dict__N)r   r‘   ©r   ÚkeyÚdefaults      r   Úin_dictr•   ¿  s'   € õ
 %,¨C°¸TÑ$BÔ$BÐOˆC�3”<ÐÐÈÐOr   c                 ó:   — t          | dd¦  «        r	|| j        v n|S )zv
    Returns true if key exists in obj.__slots__; false if not in.
    If obj.__slots__ is absent, return default
    r   N)r   r   r’   s      r   Úin_slotsr—   Ç  s'   € õ
 &-¨S°+¸tÑ%DÔ%DÐQˆC�3”=Ð Ð È'ÐQr   c                 óz  — t          | ¦  «        rt          | ¦  «        rdS t          | ¦  «        rdS d}d}d}d}t          | |¦  «        pt	          | |¦  «        }t          | |¦  «        pt	          | |¦  «        }t          | ¦  «        j        D ]?}t          |¦  «        r$|pt          ||¦  «        }|pt          ||¦  «        }|r|r||fc S Œ@t          | ¦  «        }t          t          |¦  «        }t          t          |¦  «        }|st          ||d¦  «        }	|	|ur|	}|st          ||d¦  «        }
|
|ur|
}||fS )zÊ
    Tests if __reduce__ or __reduce_ex__ exists in the object dict or
    in the class dicts of every class in the MRO *except object*.

    Returns a tuple of booleans (has_reduce, has_reduce_ex)
    )FF)FTFÚ
__reduce__Ú__reduce_ex__)	r„   r   rX   r•   r—   r	   Ú__mro__r   r'   )r   Ú
has_reduceÚhas_reduce_exÚREDUCEÚ	REDUCE_EXÚbaseÚclsÚobject_reduceÚobject_reduce_exÚhas_reduce_clsÚhas_reduce_ex_clss              r   rœ   rœ   Ï  sŽ  € õ ˜ÑÔð ¥¨¡¤ð Øˆ~õ
 �SÑÔð Øˆ}à€JØ€Mà€FØ€Iõ ˜˜fÑ%Ô%Ð>­°#°vÑ)>Ô)>€JÝ˜C Ñ+Ô+ÐG­x¸¸YÑ/GÔ/G€Mõ �S‘	”	Ô!ð /ð /ˆÝ˜ÑÔð 	FØ#Ð<¥w¨t°VÑ'<Ô'<ˆJØ)ÐE­W°T¸9Ñ-EÔ-EˆMØð 	/˜-ð 	/Ø Ð.Ð.Ð.Ð.øõ ˆs‰)Œ)€CÝ�F FÑ+Ô+€MÝ�v yÑ1Ô1ÐØð (Ý   f¨eÑ4Ô4ˆØ Ð.Ð.Ø'ˆJàð .Ý# C¨°EÑ:Ô:ÐØÐ$4Ð4Ð4Ø-ˆMà˜Ð&Ð&r   c                 óP   — t          dd¬¦  «        }|                     | | ¦  «        S )a  Rename builtin modules to a consistent module name.

    Prefer the more modern naming.

    This is used so that references to Python's `builtins` module can
    be loaded in both Python 2 and 3.  We remap to the "__builtin__"
    name and unmap it when importing.

    Map the Python2 `exceptions` module to `builtins` because
    `builtins` is a superset and contains everything that is
    available in `exceptions`, which makes the translation simpler.

    See untranslate_module_name() for the reverse operation.
    Úbuiltins©Ú__builtin__Ú
exceptions©r;   r   ©rl   Úlookups     r   Útranslate_module_namer®     s*   € õ ˜j°ZÐ@Ñ@Ô@€FØ�:Š:�f˜fÑ%Ô%Ð%r   c                 óP   — t          dd¬¦  «        }|                     | | ¦  «        S )z�Provide compatibility for pickles created with jsonpickle 0.9.6 and
    earlier, remapping `exceptions` and `__builtin__` to `builtins`.
    r§   r¨   r«   r¬   s     r   Ú_0_9_6_compat_untranslater°     s*   € õ ˜j°ZÐ@Ñ@Ô@€FØ�:Š:�f˜fÑ%Ô%Ð%r   c                 ó    — t          | ¦  «        S )zÌRename module names mention in JSON to names that we can import

    This reverses the translation applied by translate_module_name() to
    a module name available to the current version of Python.

    )r°   rk   s    r   Úuntranslate_module_namer²     s   € õ % VÑ,Ô,Ð,r   c                 óî   — t          | d| j        ¦  «        }t          | j        ¦  «        }|sCt	          | d¦  «        r3t	          | j        d¦  «        r| j        j        }n| j        j        j        }|› d|› �S )a²  
    >>> class Example(object):
    ...     pass

    >>> ex = Example()
    >>> importable_name(ex.__class__) == 'jsonpickle.util.Example'
    True
    >>> importable_name(type(25)) == 'builtins.int'
    True
    >>> importable_name(None.__class__) == 'builtins.NoneType'
    True
    >>> importable_name(False.__class__) == 'builtins.bool'
    True
    >>> importable_name(AttributeError) == 'builtins.AttributeError'
    True

    Ú__qualname__r   r]   ú.)r   r^   r®   r]   r   r   r   )r¡   r   rl   s      r   Úimportable_namer¶   )  s�   € õ& �3˜¨¬Ñ5Ô5€DÝ" 3¤>Ñ2Ô2€FØð ;Ý�3˜
Ñ#Ô#ð 	;Ý�s”| \Ñ2Ô2ð ;ØœÔ0��àœÔ/Ô:�ØÐÐ�tÐÐÐr   c                 óP   — t          j        | ¦  «                             d¦  «        S )zI
    Encode binary data to ascii text in base64. Data must be bytes.
    Úascii)Úbase64Ú	b64encodeÚdecode©Údatas    r   rº   rº   G  ó#   € õ Ô˜DÑ!Ô!×(Ò(¨Ñ1Ô1Ð1r   c                 óf   — 	 t          j        | ¦  «        S # t          t          j        f$ r Y dS w xY w©z.
    Decode payload - must be ascii text.
    r   )r¹   Ú	b64decoder�   ÚbinasciiÚError©Úpayloads    r   rÁ   rÁ   N  sA   € ðÝÔ Ñ(Ô(Ð(øÝ•x”~Ð&ð ð ð Øˆsˆsðøøøs   ‚ –0¯0c                 óP   — t          j        | ¦  «                             d¦  «        S )zI
    Encode binary data to ascii text in base85. Data must be bytes.
    r¸   )r¹   Ú	b85encoder»   r¼   s    r   rÇ   rÇ   X  r¾   r   c                 ó\   — 	 t          j        | ¦  «        S # t          t          f$ r Y dS w xY wrÀ   )r¹   Ú	b85decoder�   Ú
ValueErrorrÄ   s    r   rÉ   rÉ   _  s?   € ðÝÔ Ñ(Ô(Ð(øÝ•zÐ"ð ð ð Øˆsˆsðøøøs   ‚ –+ª+c                 ó2   — t           || ¦  «        ¦  «        S rs   )rK   )r   Úgetters     r   Ú
itemgetterrÍ   i  s   € Ýˆvˆv�c‰{Œ{ÑÔÐr   © c              #   óT   K  — |                       ¦   «         D ]\  }}||v rŒ
||fV — ŒdS )zt
    This can't be easily replaced by dict.items() because this has the exclude parameter.
    Keep it for now.
    N)Úitems)r   ÚexcludeÚkÚvs       r   rÐ   rÐ   m  sH   è è € ð
 —	’	‘”ð ð ‰ˆˆ1Ø�ˆ<ˆ<ØØ�ˆdˆ
ˆ
ˆ
ˆ
ðð r   )F)rÎ   )QÚ__doc__r¹   rÂ   ry   r   ru   Úoperatorr2   rV   r   r8   Úcollections.abcr   rt   r   r   r	   Úiterrƒ   rA   rD   rN   rS   r>   rK   ÚboolÚintÚfloatr.   r   r   Ú
LambdaTyper(   r   rZ   r;   r'   rG   r‚   r+   r   r%   r)   r,   r/   r5   r<   r?   rB   rE   rH   rL   rO   rQ   rT   rX   r[   r`   rc   rg   rm   rq   rw   r{   r}   r„   r_   r�   r•   r—   rœ   r®   r°   r²   r¶   rº   rÁ   rÇ   rÉ   rÍ   rÐ   rÎ   r   r   ú<module>rÜ      sý  ððð ð €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à Ð Ð Ð Ð Ð à��d�d˜2‘h”h‘”€Ø�3˜Ð€	Ø�s˜EÐ"€Ø�4˜˜e T T¨$¡Z¤ZÐ0€
à	ÔØ	ÔØ	ÔØ	ÔØ	Ôð€ð 	ØØØØØðð ñð ñ	ð ð 	ØØØ	Ø	ðð ñ€ð!ð !ð !ð",+ð ,+ð ,+ð^ð ð ð"(ð (ð (ð
#ð 
#ð 
#ðOð Oð Oð
ð ð ð&ð &ð &ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ðð ð ð
ð 
ð 
ðð ð ð ð ð ð"ð ð ð'ð 'ð 'ð&!ð !ð !ð*-ð -ð -ð?ð ?ð ?ð(ð ð ð Bð Bð BðLð Lð Lðð ð ðNð Nð Nðð ð ð,ð ð ðð ð ðPð Pð Pð PðRð Rð Rð Rð2'ð 2'ð 2'ðj&ð &ð &ð&&ð &ð &ð-ð -ð -ðð ð ð<2ð 2ð 2ðð ð ð2ð 2ð 2ðð ð ð /˜8Ô.¨qÑ1Ô1ð ð ð ð ðð ð ð ð ð r   