§
    {ØjŸ‚  ã                   ó¼   — 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mZ ddlm	Z	m
Z
mZ ddlmZ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd	„ Zd
„ Zd„ Z G d„ d¦  «        ZdS )é    N)ÚchainÚisliceé   )ÚhandlersÚtagsÚutil)ÚjsonTFc                 óÜ  — |€–|st          j        dt          d¬¦  «         |rt          j        dt          d¬¦  «         |
rt          j        dt          d¬¦  «         |�t          j        dt          d¬¦  «         |	�t          j        dt          d¬¦  «         |pt          }|pt	          |||||||	||
||||| ¬	¦  «        }|                     |                     | |¬
¦  «        ||¬¦  «        S )a  Return a JSON formatted representation of value, a Python object.

    :param unpicklable: If set to ``False`` then the output will not contain the
        information necessary to turn the JSON data back into Python objects,
        but a simpler JSON stream is produced. It's recommended to set this
        parameter to ``False`` when your code does not rely on two objects
        having the same ``id()`` value, and when it is sufficient for those two
        objects to be equal by ``==``, such as when serializing sklearn
        instances. If you experience (de)serialization being incorrect when you
        use numpy, pandas, or sklearn handlers, this should be set to ``False``.
        If you want the output to not include the dtype for numpy arrays, add::

            jsonpickle.register(
                numpy.generic, UnpicklableNumpyGenericHandler, base=True
            )

        before your pickling code.
    :param make_refs: If set to False jsonpickle's referencing support is
        disabled.  Objects that are id()-identical won't be preserved across
        encode()/decode(), but the resulting JSON stream will be conceptually
        simpler.  jsonpickle detects cyclical objects and will break the cycle
        by calling repr() instead of recursing when make_refs is set False.
    :param keys: If set to True then jsonpickle will encode non-string
        dictionary keys instead of coercing them into strings via `repr()`.
        This is typically what you want if you need to support Integer or
        objects as dictionary keys.
    :param max_depth: If set to a non-negative integer then jsonpickle will
        not recurse deeper than 'max_depth' steps into the object.  Anything
        deeper than 'max_depth' is represented using a Python repr() of the
        object.
    :param reset: Custom pickle handlers that use the `Pickler.flatten` method or
        `jsonpickle.encode` function must call `encode` with `reset=False`
        in order to retain object references during pickling.
        This flag is not typically used outside of a custom handler or
        `__getstate__` implementation.
    :param backend: If set to an instance of jsonpickle.backend.JSONBackend,
        jsonpickle will use that backend for deserialization.
    :param warn: If set to True then jsonpickle will warn when it
        returns None for an object which it cannot pickle
        (e.g. file descriptors).
    :param context: Supply a pre-built Pickler or Unpickler object to the
        `jsonpickle.encode` and `jsonpickle.decode` machinery instead
        of creating a new instance. The `context` represents the currently
        active Pickler and Unpickler objects when custom handlers are
        invoked by jsonpickle.
    :param max_iter: If set to a non-negative integer then jsonpickle will
        consume at most `max_iter` items when pickling iterators.
    :param use_decimal: If set to True jsonpickle will allow Decimal
        instances to pass-through, with the assumption that the simplejson
        backend will be used in `use_decimal` mode.  In order to use this mode
        you will need to configure simplejson::

            jsonpickle.set_encoder_options('simplejson',
                                           use_decimal=True, sort_keys=True)
            jsonpickle.set_decoder_options('simplejson',
                                           use_decimal=True)
            jsonpickle.set_preferred_backend('simplejson')

        NOTE: A side-effect of the above settings is that float values will be
        converted to Decimal when converting to json.
    :param numeric_keys: Only use this option if the backend supports integer
        dict keys natively.  This flag tells jsonpickle to leave numeric keys
        as-is rather than conforming them to json-friendly strings.
        Using ``keys=True`` is the typical solution for integer keys, so only
        use this if you have a specific use case where you want to allow the
        backend to handle serialization of numeric dict keys.
    :param use_base85:
        If possible, use base85 to encode binary data. Base85 bloats binary data
        by 1/4 as opposed to base64, which expands it by 1/3. This argument is
        ignored on Python 2 because it doesn't support it.
    :param fail_safe: If set to a function exceptions are ignored when pickling
        and if a exception happens the function is called and the return value
        is used as the value for the object that caused the error
    :param indent: When `indent` is a non-negative integer, then JSON array
        elements and object members will be pretty-printed with that indent
        level.  An indent level of 0 will only insert newlines. ``None`` is
        the most compact representation.  Since the default item separator is
        ``(', ', ': ')``,  the output might include trailing whitespace when
        ``indent`` is specified.  You can use ``separators=(',', ': ')`` to
        avoid this.  This value is passed directly to the active JSON backend
        library and not used by jsonpickle directly.
    :param separators:
        If ``separators`` is an ``(item_separator, dict_separator)`` tuple
        then it will be used instead of the default ``(', ', ': ')``
        separators.  ``(',', ':')`` is the most compact JSON representation.
        This value is passed directly to the active JSON backend library and
        not used by jsonpickle directly.
    :param include_properties:
        Include the names and values of class properties in the generated json.
        Properties are unpickled properly regardless of this setting, this is
        meant to be used if processing the json outside of Python. Certain types
        such as sets will not pickle due to not having a native-json equivalent.
        Defaults to ``False``.
    :param handle_readonly:
        Handle objects with readonly methods, such as Django's SafeString. This
        basically prevents jsonpickle from raising an exception for such objects.
        You MUST set ``handle_readonly=True`` for the decoding if you encode with
        this flag set to ``True``.

    >>> encode('my string') == '"my string"'
    True
    >>> encode(36) == '36'
    True
    >>> encode({'foo': True}) == '{"foo": true}'
    True
    >>> encode({'foo': [1, 2, [3, 4]]}, max_depth=1)
    '{"foo": "[1, 2, [3, 4]]"}'

    Nz-keys will default to True in jsonpickle 5.0.0é   )Ú
stacklevelz@numeric_keys is deprecated, use keys=True (will remove in 5.0.0)zAuse_decimal is deprecated and will be removed in jsonpickle 5.0.0zmbackend is deprecated and will be removed in jsonpickle 5.0.0, use jsonpickle.set_preferred_backend() insteadz>max_iter is deprecated and will be removed in jsonpickle 5.0.0)ÚunpicklableÚ	make_refsÚkeysÚbackendÚ	max_depthÚwarnÚmax_iterÚnumeric_keysÚuse_decimalÚ
use_base85Ú	fail_safeÚinclude_propertiesÚhandle_readonlyÚoriginal_object)Úreset)ÚindentÚ
separators)Úwarningsr   ÚDeprecationWarningr	   ÚPicklerÚencodeÚflatten)Úvaluer   r   r   r   r   r   r   Úcontextr   r   r   r   r   r   r   r   r   s                     ú‡/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/jsonpickle/pickler.pyr!   r!      sg  € ðD €Øð 	ÝŒMØ?Ý"Øðñ ô ð ð
 ð 	ÝŒMØRÝ"Øðñ ô ð ð
 ð 	ÝŒMØSÝ"Øðñ ô ð ð
 ÐÝŒMðAå"Øð	ñ ô ð ð ÐÝŒMØPÝ"Øðñ ô ð ð
 ˆo�€GØð �ØØØØØØØØ!ØØØØ-Ø'Øðñ ô €Gð  �>Š>Ø�Š˜ UˆÑ+Ô+°FÀzð ñ ô ð ó    c                 ó‚   — |s| o:t          | ¦  «        |v o)t          j        | ¦  «         ot          j        | ¦  «         S )z>Detect cyclic structures that would lead to infinite recursion)Úidr   Úis_primitiveÚis_enum)ÚobjÚobjsÚmax_reachedr   s       r%   Ú	_in_cycler.   Ë   sM   € ð 
Ð	;˜Y˜Ð:­2¨c©7¬7°d¨?ð 	"ÝÔ! #Ñ&Ô&Ð&ð	"å”˜SÑ!Ô!Ð!ðr&   c                 óB   — t           j        t          j        | ¦  «        iS )zxReturn a typeref dictionary

    >>> _mktyperef(AssertionError) == {'py/type': 'builtins.AssertionError'}
    True

    )r   ÚTYPEr   Úimportable_name)r+   s    r%   Ú
_mktyperefr2   Ô   s   € õ ŒI•tÔ+¨CÑ0Ô0Ð1Ð1r&   c                 ó6   — t          | t          ¦  «        r| fS | S )z0Converts __slots__ = 'a' into __slots__ = ('a',))Ú
isinstanceÚstr)Ústrings    r%   Ú_wrap_string_slotr7   Þ   s!   € å�&�#ÑÔð ØˆyÐØ€Mr&   c                   óì   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d$d„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd%d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd&d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd'd!„Zd"„ Z d#„ Z!dS )(r    TNFc                 ó¨  — || _         || _        |pt          | _        || _        || _        || _        |
| _        d| _        || _	        i | _
        g | _        || _        |	| _        i | _        || _        | j        r#t           j        | _        t&          j        | _        n"t           j        | _        t&          j        | _        || _        || _        || _        d S ©Néÿÿÿÿ)r   r   r	   r   r   r   r   r   Ú_depthÚ
_max_depthÚ_objsÚ_seenÚ	_max_iterÚ_use_decimalÚ
_flattenedr   r   ÚB85Ú
_bytes_tagr   Ú	b85encodeÚ_bytes_encoderÚB64Ú	b64encoder   r   Ú_original_object)Úselfr   r   r   r   r   r   r   r   r   r   r   r   r   r   s                  r%   Ú__init__zPickler.__init__æ   sÇ   € ð" 'ˆÔØ"ˆŒØ�¥$ˆŒØˆŒ	ØˆŒ	Ø(ˆÔØ$ˆŒàˆŒà#ˆŒàˆŒ
àˆŒ
à!ˆŒà'ˆÔàˆŒà.ˆÔàŒ?ð 	1Ý"œhˆDŒOÝ"&¤.ˆDÔÐå"œhˆDŒOÝ"&¤.ˆDÔð #ˆŒØ"4ˆÔà /ˆÔÐÐr&   c                 ó”   — t          | j        di ¦  «                             ¦   «         D ]\  }}|                     dd¦  «        r dS ŒdS )NÚ_encoder_optionsÚ	sort_keysFT)Úgetattrr   ÚvaluesÚget)rJ   Ú_Úoptionss      r%   Ú_determine_sort_keyszPickler._determine_sort_keys  sY   € Ý! $¤,Ð0BÀBÑGÔG×NÒNÑPÔPð 	ð 	‰JˆAˆwØ�{Š{˜;¨Ñ.Ô.ð à�t�tðð ˆur&   c                 ó  — t          |d¦  «        r| j        rt          d¦  «        ‚t          |d¦  «        rQ	 t          t	          |j                             ¦   «         ¦  «        ¦  «        |_        n# t          t          f$ r Y nw xY w|S )NÚ	__slots__z‡Objects with __slots__ cannot have their keys reliably sorted  by jsonpickle! Please sort the keys in the __slots__ definition instead.Ú__dict__)Úhasattrr   Ú	TypeErrorÚdictÚsortedrW   ÚitemsÚAttributeError©rJ   r+   s     r%   Ú_sort_attrszPickler._sort_attrs#  s£   € Ý�3˜Ñ$Ô$ð 	¨¬ð 	õ ðXñô ð õ
 �S˜*Ñ%Ô%ð 	ðÝ#¥F¨3¬<×+=Ò+=Ñ+?Ô+?Ñ$@Ô$@ÑAÔA�”�øÝ�~Ð.ð ð ð à�ðøøøð ˆ
s   ¸8A1 Á1BÂBc                 ó>   — i | _         d| _        g | _        i | _        d S r:   )r>   r<   r?   rB   ©rJ   s    r%   r   zPickler.reset7  s"   € ØˆŒ
ØˆŒØˆŒ
ØˆŒˆˆr&   c                 ó&   — | xj         dz  c_         dS )z&Steps down one level in the namespace.r   N)r<   ra   s    r%   Ú_pushzPickler._push=  s   € àˆŒ�qÑˆŒˆˆr&   c                 ód   — | xj         dz  c_         | j         dk    r|                      ¦   «          |S )zzStep up one level in the namespace and return the value.
        If we're at the root, reset the pickler's state.
        r   r;   )r<   r   )rJ   r#   s     r%   Ú_popzPickler._popA  s3   € ð 	ˆŒ�qÑˆŒØŒ;˜"ÒÐØ�JŠJ‰LŒLˆLØˆr&   c                 óv   — t          |¦  «        }|| j        v}|rt          | j        ¦  «        }|| j        |<   |S )zž
        Log a reference to an in-memory object.
        Return True if this object is new and was assigned
        a new ID. Otherwise return False.
        )r(   r>   Úlen)rJ   r+   ÚobjidÚis_newÚnew_ids        r%   Ú_log_refzPickler._log_refJ  sA   € õ �3‘”ˆØ˜dœjÐ(ˆØð 	'Ý˜œ‘_”_ˆFØ &ˆDŒJ�uÑØˆr&   c                 óT   — |                       |¦  «        }| j         p| j         }|p|S )z~
        Log a reference to an in-memory object, and return
        if that object should be considered newly logged.
        )rk   r   r   )rJ   r+   ri   Úpretend_news       r%   Ú_mkrefzPickler._mkrefW  s5   € ð
 —’˜sÑ#Ô#ˆàÔ*Ð*Ð@°$´.Ð.@ˆØÐ$˜fÐ$r&   c                 óh   — t           j        | j                             t	          |¦  «        ¦  «        iS )z/Return a "py/id" entry for the specified object)r   ÚIDr>   rQ   r(   r^   s     r%   Ú_getrefzPickler._getrefa  s#   € å”˜œŸš­¨3©¬Ñ0Ô0Ð1Ð1r&   c                 óþ   — | j         r| j        r|                      |¦  «        }nX	 | j        t	          |¦  «                 }n<# t
          $ r/ |                      |¦  «        x}| j        t	          |¦  «        <   Y nw xY w|S )z>Flatten an object and its guts into a json-safe representation)r   r   Ú_flatten_implrB   r(   ÚKeyError)rJ   r+   Úresults      r%   Ú_flattenzPickler._flattene  s–   € àÔð 	L ¤ð 	LØ×'Ò'¨Ñ,Ô,ˆFˆFðLØœ­¨C©¬Ô1��øÝð Lð Lð LØ48×4FÒ4FÀsÑ4KÔ4KÐK�˜œ­¨C©¬Ñ1Ð1Ð1ðLøøøàˆs   ¦A Á6A:Á9A:c                 óª   — |r|                       ¦   «          |                      ¦   «         r|                      |¦  «        }|                      |¦  «        S )a¬  Takes an object and returns a JSON-safe representation of it.

        Simply returns any of the basic builtin datatypes

        >>> p = Pickler()
        >>> p.flatten('hello world') == 'hello world'
        True
        >>> p.flatten(49)
        49
        >>> p.flatten(350.0)
        350.0
        >>> p.flatten(True)
        True
        >>> p.flatten(False)
        False
        >>> r = p.flatten(None)
        >>> r is None
        True
        >>> p.flatten(False)
        False
        >>> p.flatten([1, 2, 3, 4])
        [1, 2, 3, 4]
        >>> p.flatten((1,2,))[tags.TUPLE]
        [1, 2]
        >>> p.flatten({'key': 'value'}) == {'key': 'value'}
        True
        )r   rT   r_   rv   )rJ   r+   r   s      r%   r"   zPickler.flattenp  sR   € ð8 ð 	Ø�JŠJ‰LŒLˆLØ×$Ò$Ñ&Ô&ð 	(Ø×"Ò" 3Ñ'Ô'ˆCØ�}Š}˜SÑ!Ô!Ð!r&   c                 ó:   — | j         |                      |¦  «        iS ©N)rD   rF   r^   s     r%   Ú_flatten_bytestringzPickler._flatten_bytestring’  s   € Ø” ×!4Ò!4°SÑ!9Ô!9Ð:Ð:r&   c                 ó„  — t          |¦  «        t          u r|                      |¦  «        S t          |¦  «        t          t          t
          t          t          d ¦  «        fv s!| j        rt          |t          j
        ¦  «        r|S |                      ¦   «          |                      |                      |¦  «        ¦  «        S ry   )ÚtypeÚbytesrz   r5   ÚboolÚintÚfloatrA   r4   ÚdecimalÚDecimalrc   re   Ú_flatten_objr^   s     r%   rs   zPickler._flatten_impl•  s¢   € õ �‰9Œ9�ÐÐØ×+Ò+¨CÑ0Ô0Ð0õ �‰9Œ9��d¥C­µ°T±
´
Ð;Ð;Ð;ØÔð <Ý",¨Sµ'´/Ñ"BÔ"Bð <ð ˆJð 	�
Š
‰ŒˆØ�yŠy˜×*Ò*¨3Ñ/Ô/Ñ0Ô0Ð0r&   c                 ó"   — | j         | j        k    S ry   )r<   r=   ra   s    r%   Ú_max_reachedzPickler._max_reached¦  s   € ØŒ{˜dœoÒ-Ð-r&   c                 óJ   — | j         rd|z  }t          j         |¦  «         d S d S )Nz/jsonpickle cannot pickle %r: replaced with None)r   r   )rJ   r+   Úmsgs      r%   Ú_pickle_warningzPickler._pickle_warning©  s6   € ØŒ9ð 	ØCÀcÑIˆCÝŒM˜#ÑÔÐÐÐð	ð 	r&   c                 ó´  — | j                              |¦  «         |                      ¦   «         }	 t          || j        || j        ¦  «        }|rt          }n|                      |¦  «        }|€|                      |¦  «         d S  ||¦  «        S # t          t          f$ r}|‚d }~wt          $ r(}| j        €|‚|                      |¦  «        cY d }~S d }~ww xY wry   )r?   Úappendr…   r.   r>   r   ÚreprÚ_get_flattenerrˆ   ÚKeyboardInterruptÚ
SystemExitÚ	Exceptionr   )rJ   r+   r-   Úin_cycleÚflatten_funcÚes         r%   rƒ   zPickler._flatten_obj®  s  € ØŒ
×Ò˜#ÑÔÐà×'Ò'Ñ)Ô)ˆð	)Ý   d¤j°+¸t¼~ÑNÔNˆHØð 8å#��à#×2Ò2°3Ñ7Ô7�àÐ#Ø×$Ò$ SÑ)Ô)Ð)Ø�tà�< Ñ$Ô$Ð$øå!¥:Ð.ð 	ð 	ð 	ØˆGøøøøÝð 	)ð 	)ð 	)ØŒ~Ð%Ø�à—~’~ aÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(øøøøð		)øøøs0   °AB Â
B ÂCÂ B"Â"CÂ/CÃCÃCc                 ó    ‡ — ˆ fd„|D ¦   «         S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © ©rv   ©Ú.0ÚvrJ   s     €r%   ú
<listcomp>z)Pickler._list_recurse.<locals>.<listcomp>Ê  s%   ø€ Ð.Ð.Ð. Q�—’˜aÑ Ô Ð.Ð.Ð.r&   r•   r^   s   ` r%   Ú_list_recursezPickler._list_recurseÉ  s   ø€ Ø.Ð.Ð.Ð.¨#Ð.Ñ.Ô.Ð.r&   c                 óZ   — | j         r!t          j        t          j        |¦  «        i}nd }|S ry   )r   r   ÚFUNCTIONr   r1   )rJ   r+   Údatas      r%   Ú_flatten_functionzPickler._flatten_functionÌ  s0   € ØÔð 	Ý”M¥4Ô#7¸Ñ#<Ô#<Ð=ˆDˆDàˆDàˆr&   c                 ób   — |                       |¦  «        }| j        r||t          j        <   n|}|S ry   )rv   r   r   ÚSTATE)rJ   r+   rž   Ústates       r%   Ú	_getstatezPickler._getstateÔ  s7   € Ø—’˜cÑ"Ô"ˆØÔð 	Ø$ˆD•”ÑÐàˆDØˆr&   c                 óÐ  — t          j        ||¦  «        s|S | j        rB|d„ t          j        | j        ¦  «        D ¦   «         v rt          j        | j        ||¦  «        r|S |€d}| j        rt          |t          t          f¦  «        rnEt          |t          ¦  «        s0	 t          |¦  «        }n# t          $ r t          |¦  «        }Y nw xY w|                      |¦  «        ||<   |S )z7Flatten a key/value pair into the passed-in dictionary.c                 ó   — h | ]\  }}|’ŒS r•   r•   )r˜   ÚattrÚvals      r%   ú	<setcomp>z2Pickler._flatten_key_value_pair.<locals>.<setcomp>ä  s   € ÐVÐVÐV™y˜t S�dÐVÐVÐVr&   NÚnull)r   Úis_picklabler   ÚinspectÚ
getmembersrI   Úis_readonlyr   r4   r   r€   r5   r‹   r�   rv   ©rJ   Úkr™   rž   s       r%   Ú_flatten_key_value_pairzPickler._flatten_key_value_pairÜ  s
  € åÔ   AÑ&Ô&ð 	ØˆKð Ô ð	àÐVÐV­GÔ,>¸tÔ?TÑ,UÔ,UÐVÑVÔVÐVÐVÝÔ  Ô!6¸¸1Ñ=Ô=ð Wð ˆKàˆ9ØˆAàÔð 	¥¨AµµU¨|Ñ!<Ô!<ð 	ØÝ˜A�sÑ#Ô#ð 	ðÝ˜‘G”G��øÝð ð ð Ý˜‘F”F���ðøøøð —-’- Ñ"Ô"ˆˆQ‰Øˆs   ÂB/ Â/CÃ
Cc                 óî   — | j         }d}|D ]h}	 |                     d¦  «        st          ||¦  «        }nt          |d|j        j        › |› �¦  «        } ||||¦  «         n# t
          $ r Y Œbw xY wd}Œi|S )NFÚ__rR   T)r°   Ú
startswithrO   Ú	__class__Ú__name__r]   )rJ   r+   Úattrsrž   r"   Úokr¯   r#   s           r%   Ú_flatten_obj_attrszPickler._flatten_obj_attrs÷  s®   € ØÔ.ˆØˆØð 
	ð 
	ˆAðØ—|’| DÑ)Ô)ð JÝ# C¨™OœO�E�Eå# CÐ)H¨S¬]Ô-CÐ)HÀQÐ)HÐ)HÑIÔI�EØ�˜˜5 $Ñ'Ô'Ð'Ð'øÝ!ð ð ð à�ðøøøð ˆBˆBØˆ	s   �AA"Á"
A/Á.A/c                 ón  ‡‡	— |€g }t          t          j                             |¦  «        ¦  «        Šˆfd„Š	ˆ	fd„t	          j        |j        ¦  «        D ¦   «         }i }|D ]D}t          ||¦  «        }t          j	        |¦  «        r|||<   Œ,|  
                    |¦  «        ||<   ŒE||t          j        <   |S )Nc                 óP   •— | d                               d¦  «         o	| d         ‰vS )Nr   r²   )r³   )ÚxÚallslots_sets    €r%   Úvalid_propertyz3Pickler._flatten_properties.<locals>.valid_property  s*   ø€ Ø˜”t—’ tÑ,Ô,Ð,ÐI°°1´¸\Ð1IÐIr&   c                 ó6   •— g | ]} ‰|¦  «        ¯|d          ‘ŒS )r   r•   )r˜   r»   r½   s     €r%   rš   z/Pickler._flatten_properties.<locals>.<listcomp>  s<   ø€ ð 
ð 
ð 
Ø¸~¸~ÈaÑ?PÔ?Pð
ØˆaŒDð
ð 
ð 
r&   )ÚsetÚ	itertoolsr   Úfrom_iterabler«   r¬   r´   rO   r   Úis_not_classrv   r   ÚPROPERTY)
rJ   r+   rž   ÚallslotsÚ
propertiesÚproperties_dictÚp_nameÚp_valr¼   r½   s
           @@r%   Ú_flatten_propertieszPickler._flatten_properties  sð   øø€ ØÐàˆHõ �9œ?×8Ò8¸ÑBÔBÑCÔCˆð	Jð 	Jð 	Jð 	Jð 	Jð
ð 
ð 
ð 
Ý!Ô,¨S¬]Ñ;Ô;ð
ñ 
ô 
ˆ
ð ˆØ ð 	?ð 	?ˆFÝ˜C Ñ(Ô(ˆEÝÔ  Ñ'Ô'ð ?Ø*/� Ñ'Ð'à*.¯-ª-¸Ñ*>Ô*>� Ñ'Ð'à-ˆ�TŒ]Ñàˆr&   c                 ó$  — d„ |j                              ¦   «         D ¦   «         }| j        r|                      |||¦  «        }|                      |t          |Ž |¦  «        s0d„ t          |¦  «        D ¦   «         }|                      |||¦  «         |S )zAReturn a json-friendly dict for new-style objects with __slots__.c           
      ób   — g | ],}t          t          |d t          ¦   «         ¦  «        ¦  «        ‘Œ-S )rV   )r7   rO   Útuple)r˜   Úclss     r%   rš   z8Pickler._flatten_newstyle_with_slots.<locals>.<listcomp>%  s@   € ð 
ð 
ð 
àõ �g c¨;½¹¼Ñ@Ô@ÑAÔAð
ð 
ð 
r&   c                 óf   — g | ].}|                      d ¦  «        °|                     d ¦  «        °,|‘Œ/S )r²   )r³   Úendswith)r˜   r»   s     r%   rš   z8Pickler._flatten_newstyle_with_slots.<locals>.<listcomp>/  sN   € ð ð ð Ø¨1¯<ª<¸Ñ+=Ô+=ðØFGÇjÂjÐQUÑFVÔFVðØðð ð r&   )r´   Úmror   rÉ   r¸   r   Údir)rJ   r+   rž   rÄ   r¶   s        r%   Ú_flatten_newstyle_with_slotsz$Pickler._flatten_newstyle_with_slots#  sµ   € ð
ð 
à”}×(Ò(Ñ*Ô*ð
ñ 
ô 
ˆð Ô"ð 	AØ×+Ò+¨C°°xÑ@Ô@ˆDà×&Ò& s­E°8Ð,<¸dÑCÔCð 	6ðð Ý˜s™8œ8ðñ ô ˆEð ×#Ò# C¨°Ñ5Ô5Ð5àˆr&   c           	      ó>  ‡ — i }t          |d¦  «        }t          |d¦  «        }| ot          |d¦  «        }t          j        |d¦  «        }t          j        |d¦  «        }t          j        |d¦  «        }t          j        |¦  «        \  }	}
t	          t          |dd¦  «        ¦  «        }t          t          |¦  «        d	¦  «        o)t          |¦  «        j        t          t          d	d
¦  «        u}|r|j	        }nt          |¦  «        }t          j
        |¦  «        }t          j        |t          j        |¦  «        ¦  «        }|�N‰ j        r||t          j        <    |‰ ¦  «                             ||¦  «        }|€‰                      |¦  «         |S d
}‰ j        r‰                      ||¦  «        }‰ j        �r%|	r(|
s&	 |                     ¦   «         }n9# t*          $ r Y n-w xY w|
r'	 |                     d¦  «        }n# t*          $ r Y nw xY w|r•t/          |t0          ¦  «        r€	 t3          |                     d¦  «        ¦  «        }t6          j        t;          |¦  «                 }|D ](}t          ||¦  «        }‰                      |¦  «        c S �nL# t>          $ r Y �n?w xY w|�r8tA          |¦  «        }dtC          |¦  «        z
  }|r	|d
g|z  z  }t          |d         dd¦  «        dk    rt          j"        |d<   |\  }}}}}|r'|r%t          |d¦  «        st/          |tF          ¦  «        r±|d         rtI          |d         ¦  «        |d<   |d         rtI          |d         ¦  «        |d<   tA          tK          ‰ j        |¦  «        ¦  «        }tC          |¦  «        dz
  }|dk    r||         €|dz  }|dk    r||         ®|d
|dz   …         |t          j&        <   |S |rÍt/          |tN          j(        ¦  «        s³‰ j        r||t          j        <   |r-ˆ fd„| )                    ¦   «         D ¦   «         |t          j*        <   |r6|s4‰                      | +                    ¦   «         ¦  «        |t          j,        <   |r4‰                      | -                    ¦   «         ¦  «        |t          j.        <   |rT	 |                     ¦   «         }|r‰  /                    ||¦  «        S n&# t*          $ r ‰                      |¦  «         Y d
S w xY wt/          |tN          j(        ¦  «        rA‰ j        r)d 0                    |j1        ¬¦  «        |t          j2        <   nt1          |¦  «        }|S t          j3        |¦  «        r‰  4                    |||¬¦  «         |S t          j5        |¦  «        r‰  6                    ||¦  «        S t          j7        |¦  «        rDtA          tK          ‰ j        tq          |‰ j9        ¦  «        ¦  «        ¦  «        |t          j:        <   |S |rXt          j5        |¦  «        r‰  6                    ||¦  «        S t          |dd
¦  «         ‰  4                    |j;        ||¬¦  «        S |r‰  <                    ||¦  «        S |r|S ‰                      |¦  «         d
S )z?Recursively flatten an instance and return a json-friendly dictr´   rW   rV   Ú__getnewargs__Ú__getnewargs_ex__Ú__getinitargs__Ú_jsonpickle_excluder•   Ú__getstate__Nr   ú.é   r   rµ   Ú Ú
__newobj__Ú__setstate__é   é   r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r•   r–   )r˜   ÚargrJ   s     €r%   rš   z1Pickler._flatten_obj_instance.<locals>.<listcomp>«  s2   ø€ ð (ð (ð (Ø+.�D—M’M #Ñ&Ô&ð(ð (ð (r&   z{name}/{name})Úname©ÚexcluderR   )=rX   r   Ú
has_methodÚ
has_reducer¿   rO   r|   rØ   Úobjectr´   r1   r   rQ   r   r   ÚOBJECTr"   rˆ   r   rÉ   Ú
__reduce__rY   Ú__reduce_ex__r4   r5   ÚiterÚsplitÚsysÚmodulesÚnextrv   rt   Úlistrg   ÚNEWOBJrZ   rÌ   ÚmapÚREDUCEÚtypesÚ
ModuleTyperÕ   Ú	NEWARGSEXrÔ   ÚNEWARGSrÖ   ÚINITARGSr£   Úformatrµ   ÚMODULEÚis_dictionary_subclassÚ_flatten_dict_objÚis_sequence_subclassÚ_flatten_sequence_objÚis_iteratorr   r@   ÚITERATORrW   rÒ   )rJ   r+   rž   Ú	has_classÚhas_dictÚ	has_slotsÚhas_getnewargsÚhas_getnewargs_exÚhas_getinitargsræ   Úhas_reduce_exrä   Úhas_own_getstaterÍ   Ú
class_nameÚhandlerru   Ú
reduce_valÚvarpathÚcurmodÚmodnameÚ
rv_as_listÚinsufficiencyÚfÚargsr¢   Ú	listitemsÚ	dictitemsÚreduce_argsÚ
last_indexs   `                             r%   Ú_flatten_obj_instancezPickler._flatten_obj_instance6  s]  ø€ àˆÝ˜C Ñ-Ô-ˆ	Ý˜3 
Ñ+Ô+ˆØ �LÐ>¥W¨S°+Ñ%>Ô%>ˆ	Ýœ¨Ð.>Ñ?Ô?ˆÝ œO¨CÐ1DÑEÔEÐÝœ/¨#Ð/@ÑAÔAˆÝ$(¤O°CÑ$8Ô$8Ñ!ˆ
�MÝ•g˜cÐ#8¸"Ñ=Ô=Ñ>Ô>ˆõ #¥4¨¡9¤9¨nÑ=Ô=ð DÅ$ØñC
ô C
ä
�g¥f¨n¸dÑCÔCðCDÐð ð 	Ø”-ˆCˆCå�s‘)”)ˆCõ Ô)¨#Ñ.Ô.ˆ
Ý”,˜s¥H¤L°Ñ$<Ô$<Ñ=Ô=ˆØÐØÔð /Ø$.�•T”[Ñ!Ø�W˜T‘]”]×*Ò*¨3°Ñ5Ô5ˆFØˆ~Ø×$Ò$ SÑ)Ô)Ð)ØˆMàˆ
àÔ"ð 	7Ø×+Ò+¨C°Ñ6Ô6ˆDàÔñ E	 Øð  -ð ðØ!$§¢Ñ!1Ô!1�J�JøÝ ð ð ð ð �Dð	øøøð ð ðà!$×!2Ò!2°1Ñ!5Ô!5�J�JøÝ ð ð ð ð �Dð	øøøð ð / �j¨µSÑ9Ô9ð / ðÝ" :×#3Ò#3°CÑ#8Ô#8Ñ9Ô9�Gõ !œ[­¨g©¬Ô7�FØ#*ð 5ð 5˜Ý!(¨°Ñ!9Ô!9˜à#Ÿ}š}¨VÑ4Ô4Ð4Ð4Ð4ñ5øõ  ð ð ð à‘Dðøøøð ñ ! õ " *Ñ-Ô-�
Ø !¥C¨
¡O¤OÑ 3�Ø ð 9Ø 4 &¨=Ñ"8Ñ8�Jå˜: aœ=¨*°bÑ9Ô9¸\ÒIÐIÝ$(¤K�J˜q‘Mà7AÑ4��4˜ 	¨9ð ð à(ð õ $ C¨Ñ8Ô8ð õ ' s­DÑ1Ô1ð	 ð " !”}ð =Ý(-¨j¸¬mÑ(<Ô(<˜
 1™à! !”}ð =Ý(-¨j¸¬mÑ(<Ô(<˜
 1™å"&¥s¨4¬=¸*Ñ'EÔ'EÑ"FÔ"F�KÝ!$ [Ñ!1Ô!1°AÑ!5�JØ$¨š/˜/¨k¸*Ô.EÐ.MØ" a™˜
ð %¨š/˜/¨k¸*Ô.EÐ.Mà(3Ð4D°jÀ1±nÐ4DÔ(E�D�œÑ%à�Kàð 	K�Z¨­UÔ-=Ñ>Ô>ð 	KØÔð /Ø$.�•T”[Ñ!à ð ð(ð (ð (ð (Ø25×2GÒ2GÑ2IÔ2Ið(ñ (ô (�•T”^Ñ$ð ð IÐ&7ð IØ%)§]¢]°3×3EÒ3EÑ3GÔ3GÑ%HÔ%H�•T”\Ñ"àð KØ&*§m¢m°C×4GÒ4GÑ4IÔ4IÑ&JÔ&J�•T”]Ñ#àð 
	7ð	7Ø×(Ò(Ñ*Ô*�ð ð 7ØŸ>š>¨%°Ñ6Ô6Ð6ð7øõ ð ð ð ð ×$Ò$ SÑ)Ô)Ð)Ø�t�tð	øøøõ �c�5Ô+Ñ,Ô,ð 	ØÔð  Ø$3×$:Ò$:ÀÄÐ$:Ñ$MÔ$M�•T”[Ñ!Ð!å˜3‘x”x�ØˆKåÔ& sÑ+Ô+ð 	Ø×"Ò" 3¨°gÐ"Ñ>Ô>Ð>ØˆKåÔ$ SÑ)Ô)ð 	9Ø×-Ò-¨c°4Ñ8Ô8Ð8åÔ˜CÑ Ô ð 	å"&¥s¨4¬=½&ÀÀdÄnÑ:UÔ:UÑ'VÔ'VÑ"WÔ"WˆD•”ÑØˆKàð 	OåÔ(¨Ñ-Ô-ð =Ø×1Ò1°#°tÑ<Ô<Ð<õ �C˜˜dÑ#Ô#Ð#Ø×)Ò)¨#¬,¸ÀgÐ)ÑNÔNÐNàð 	@Ø×4Ò4°S¸$Ñ?Ô?Ð?ð ð 	ØˆKà×Ò˜SÑ!Ô!Ð!ØˆtsI   ÇG Ç
G$Ç#G$Ç*H  È 
HÈHÈ(A+J Ê
J$Ê#J$Ò4S! Ó!TÔTc                 ó@  — | j         r?|                      |¦  «        r|                      |¦  «        S |                      |¦  «        S |                      ¦   «         }t          || j        |d¦  «        }|rdS |                      |¦  «         |                      |¦  «        S )z.Reference an existing object or flatten if newFN)r   rn   r  rq   r…   r.   r>   )rJ   r+   r-   r�   s       r%   Ú_ref_obj_instancezPickler._ref_obj_instanceè  s¤   € àÔð 	3Ø�{Š{˜3ÑÔð 7ð ×1Ò1°#Ñ6Ô6Ð6ð —<’< Ñ$Ô$Ð$à×+Ò+Ñ-Ô-ˆKÝ   d¤j°+¸uÑEÔEˆHØð à�tà�KŠK˜ÑÔÐØ×-Ò-¨cÑ2Ô2Ð2r&   c           	      óZ   — t           j        t          |dd| | j        | j        ¬¦  «        z   S )NFT)r   r   r$   r   r   )r   ÚJSON_KEYr!   r   r   )rJ   r¯   s     r%   Ú_escape_keyzPickler._escape_keyý  s8   € ÝŒ}�vØØØØØ”LØ”nð 
ñ  
ô  
ñ 
ð 	
r&   c                 óÆ   — t          j        ||¦  «        s|S | j        rBt          |t          ¦  «        s-|                      |¦  «        }|                      |¦  «        ||<   |S )z'Flatten only non-string key/value pairs)r   rª   r   r4   r5   r  rv   r®   s       r%   Ú"_flatten_non_string_key_value_pairz*Pickler._flatten_non_string_key_value_pair  sd   € åÔ   AÑ&Ô&ð 	ØˆKØŒ9ð 	'�Z¨­3Ñ/Ô/ð 	'Ø× Ò  Ñ#Ô#ˆAØ—m’m AÑ&Ô&ˆD�‰GØˆr&   c                 óä  — t          j        ||¦  «        s|S | j        rLt          |t          ¦  «        s|S |                     t          j        ¦  «        r|                      |¦  «        }nm|€d}| j	        rt          |t          t          f¦  «        rnEt          |t          ¦  «        s0	 t          |¦  «        }n# t          $ r t	          |¦  «        }Y nw xY w|                      |¦  «        ||<   |S )z$Flatten string key/value pairs only.Nr©   )r   rª   r   r4   r5   r³   r   r  r  r   r   r€   r‹   r�   rv   r®   s       r%   Ú_flatten_string_key_value_pairz&Pickler._flatten_string_key_value_pair  sþ   € åÔ   AÑ&Ô&ð 	ØˆKØŒ9ð 	Ý˜a¥Ñ%Ô%ð (Ø�Ø—’�dœmÑ,Ô,ð (Ø×$Ò$ QÑ'Ô'�øàˆyØ�àÔ ð ¥Z°µC½°<Ñ%@Ô%@ð ØÝ ¥3Ñ'Ô'ð ðÝ˜Q™œ�A�AøÝ ð ð ð Ý˜A™œ�A�A�Aðøøøð —-’- Ñ"Ô"ˆˆQ‰Øˆs   Â)B9 Â9CÃCr•   c                 óº  — |€|                      ¦   «         }| j        ra| j        }t          j        ||¬¦  «        D ]\  }} ||||¦  «         Œ| j        }t          j        ||¬¦  «        D ]\  }} ||||¦  «         Œn0| j        }t          j        ||¬¦  «        D ]\  }} ||||¦  «         Œt          |d¦  «        ržt          |j	        ¦  «        rŠ|j	        }t          j
        |¦  «        rt          |¦  «        }nZ|                      |¦  «        r0|                      t          j         |¦   «         ¦  «        ¦  «        }n|                      |¦  «        }||d<   t          |d¦  «        rn| j        rg||j        k    r\|                      |j        ¦  «        r%i }	|                      |j        |	|¬¦  «         |	|d<   n|                      |j        ¦  «        |d<   |S )z8Recursively call flatten() and return json-friendly dictNrã   Údefault_factoryrW   )r´   r   r   r   r\   r  r°   rX   Úcallabler"  Úis_typer2   rn   r  r   ÚCloneFactoryrq   r   rW   rü   )
rJ   r+   rž   rä   r"   r¯   r™   Úfactoryr#   Ú	dict_datas
             r%   rü   zPickler._flatten_dict_obj(  s$  € àˆ<Ø—=’=‘?”?ˆDð Œ9ð 	$àÔ9ˆGÝœ
 3°Ð8Ñ8Ô8ð $ð $‘��1Ø�˜˜1˜dÑ#Ô#Ð#Ð#ð Ô=ˆGÝœ
 3°Ð8Ñ8Ô8ð $ð $‘��1Ø�˜˜1˜dÑ#Ô#Ð#Ð#ð$ð Ô2ˆGÝœ
 3°Ð8Ñ8Ô8ð $ð $‘��1Ø�˜˜1˜dÑ#Ô#Ð#Ð#õ �3Ð)Ñ*Ô*ð 	,­x¸Ô8KÑ/LÔ/Lð 	,ØÔ)ˆGÝŒ|˜GÑ$Ô$ð 2å" 7Ñ+Ô+��ð —;’;˜wÑ'Ô'ð 2ð !×6Ò6µxÔ7LÈWÈWÉYÌYÑ7WÔ7WÑXÔX�E�Eð !ŸLšL¨Ñ1Ô1�EØ&+ˆDÐ"Ñ#õ �3˜
Ñ#Ô#ð 	>¨Ô(8ð 	>¸SÀCÄLÒ=PÐ=PØ�{Š{˜3œ<Ñ(Ô(ð >Ø�	Ø×&Ò& s¤|°YÈÐ&ÑPÔPÐPØ#,��ZÑ Ð à#'§<¢<°´Ñ#=Ô#=��ZÑ àˆr&   c                 óî  ‡ — t          |¦  «        t          t          fv r@‰                      |¦  «        r$t          |¦  «        t          u r‰ j        n‰ j        S ‰ j        S t          |¦  «        t          t          fv r‰ j	        s‰ j        S ˆ fd„S t          j        |¦  «        r‰ j        S t          j        |¦  «        r‰ j        S t          j        |¦  «        rt           S ‰                      |¦  «         d S )Nc                 ó|   •— t          | ¦  «        t          u rt          j        nt          j        ˆfd„| D ¦   «         iS )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r•   r–   r—   s     €r%   rš   z<Pickler._get_flattener.<locals>.<lambda>.<locals>.<listcomp>n  s%   ø€ Ð>Ð>Ð>°Q §¢¨aÑ 0Ô 0Ð>Ð>Ð>r&   )r|   rÌ   r   ÚTUPLEÚSET)r+   rJ   s    €r%   ú<lambda>z(Pickler._get_flattener.<locals>.<lambda>k  s@   ø€ å˜‘9”9¥Ð%Ð%õ ”
�
å”XÐ>Ð>Ð>Ð>¸#Ð>Ñ>Ô>ð € r&   )r|   rð   rZ   rn   r›   rü   rq   rÌ   r¿   r   r   Úis_module_functionrŸ   Ú	is_objectr  r$  r2   rˆ   r^   s   ` r%   rŒ   zPickler._get_flattener^  s	  ø€ Ý�‰9Œ9��t˜Ð$Ð$Ø�{Š{˜3ÑÔð $å*.¨s©)¬)µtÐ*;Ð*;�DÔ&Ð&ÀÔAWðð ”|Ð#õ �#‰YŒY�5¥#˜,Ð&Ð&ØÔ#ð *ØÔ)Ð)ðð ð ð ð õ Ô$ SÑ)Ô)ð 	ØÔ)Ð)åŒ^˜CÑ Ô ð 	ØÔ)Ð)åŒ\˜#ÑÔð 	ÝÐð 	×Ò˜SÑ!Ô!Ð!Øˆtr&   c                 ó¬   ‡ — t          |d¦  «        r‰                      |j        |¦  «         ˆ fd„|D ¦   «         }‰ j        r||t          j        <   n|S |S )z4Return a json-friendly dict for a sequence subclass.rW   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r•   r–   r—   s     €r%   rš   z1Pickler._flatten_sequence_obj.<locals>.<listcomp>‚  s%   ø€ Ð/Ð/Ð/ a�—’˜qÑ!Ô!Ð/Ð/Ð/r&   )rX   rü   rW   r   r   ÚSEQ)rJ   r+   rž   r#   s   `   r%   rþ   zPickler._flatten_sequence_obj~  sh   ø€ å�3˜
Ñ#Ô#ð 	7Ø×"Ò" 3¤<°Ñ6Ô6Ð6Ø/Ð/Ð/Ð/¨3Ð/Ñ/Ô/ˆØÔð 	Ø"ˆD•”‰NˆNàˆLØˆr&   )TTNNFFNFFFNFFN)Try   )Nr•   )"rµ   Ú
__module__Ú__qualname__rK   rT   r_   r   rc   re   rk   rn   rq   rv   r"   rz   rs   r…   rˆ   rƒ   r›   rŸ   r£   r°   r¸   rÉ   rÒ   r  r  r  r  r   rü   rŒ   rþ   r•   r&   r%   r    r    å   s-  € € € € € ð ØØØØØØØØØØØ ØØð40ð 40ð 40ð 40ðlð ð ðð ð ð(ð ð ðð ð ðð ð ðð ð ð%ð %ð %ð2ð 2ð 2ð	ð 	ð 	ð "ð  "ð  "ð  "ðD;ð ;ð ;ð1ð 1ð 1ð".ð .ð .ðð ð ð
)ð )ð )ð6/ð /ð /ðð ð ðð ð ðð ð ð6ð ð ð ð ð ð ð8ð ð ð&pð pð pðd3ð 3ð 3ð*
ð 
ð 
ðð ð ðð ð ð04ð 4ð 4ð 4ðlð ð ð@	ð 	ð 	ð 	ð 	r&   r    )TTFNTNFNNFFFNNNFF)r�   r«   rÀ   rí   rô   r   r   r   rÛ   r   r   r   r   r	   r!   r.   r2   r7   r    r•   r&   r%   ú<module>r5     s?  ðð €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð ð
 ØØ	ØØ
ØØ	ØØØØØØØØØØð%uð uð uð uðpð ð ð2ð 2ð 2ðð ð ðb
ð b
ð b
ð b
ð b
ñ b
ô b
ð b
ð b
ð b
r&   