§
    ¥”j‚H  ã            
       ó.  — d Z ddlZddlmZ ddlmZmZmZmZ ddl	m
Z
mZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZ ddlmZmZmZ ddlmZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)  ej*        e+¦  «        Z,g d¢Z-defd„Z.de
j/        de
j/        fd„Z0 G d„ de¦  «        Z1 e1 e¦   «          e#¦   «          2                    ej3        ¦  «         e¦   «          2                    ej3        ¦  «         e¦   «          2                    ej3        ¦  «         e¦   «          2                    ej3        ¦  «         e$¦   «          2                    ej3        ¦  «        g e e ¦   «          e!¦   «          e¦   «         g¬¦  «        ¬¦  «        Z4	  e1g d¬¦  «        Z5dS )zF
Module defining pyHanko's standard difference policy implementation.
é    N)Údefaultdict)ÚIteratorÚListÚOptionalÚUnion)ÚgenericÚmisc)ÚHistoricalResolverÚPdfFileReader)ÚFieldMDPSpecÚMDPPermé   )ÚFormUpdatingRule)Ú
DiffPolicyÚ
DiffResultÚModificationLevelÚSuspiciousModification)ÚCatalogModificationRuleÚObjectStreamRuleÚXrefStreamRule)ÚDSSCompareRuleÚGenericFieldModificationRuleÚSigFieldCreationRuleÚSigFieldModificationRule)ÚDocInfoRuleÚMetadataUpdateRule)ÚApprovalTypeÚContextÚQualifiedWhitelistRuleÚReferenceUpdate)ÚDEFAULT_DIFF_POLICYÚNO_CHANGES_DIFF_POLICYÚStandardDiffPolicyÚhist_revc                 ó  ‡ ‡— ‰                       ¦   «         }‰ j                             ‰ j        dz
  ¦  «        }t	          ¦   «         Št	          ¦   «         }|D ]B}|                     |¦  «        r|                     |¦  «         Œ-‰                     |¦  «         ŒCdt          t          j	                 fˆ ˆfd„} |¦   «         }|rB	 t          |¦  «        }n# t          $ r Y n%w xY w|‰                      |‰ j        ¬¦  «        z  }|°B|S )za
    Within a revision, find new refs that can't be reached from refs in the
    older ones.
    r   Úreturnc               3   óB   •K  — ‰j         V — ‰D ]}  ‰| ¦  «        V — Œd S ©N)Útrailer_view)Ú_refr$   Úupdated_old_refss    €€úr/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/sign/diff_analysis/policies.pyÚ_objs_to_checkz%_find_orphans.<locals>._objs_to_checkR   sF   øè è € àÔ#Ð#Ð#Ð#Ø$ð 	!ð 	!ˆDà�(˜4‘.”.Ð Ð Ð Ð ð	!ð 	!ó    )Úsince_revision)Úexplicit_refs_in_revisionÚreaderÚget_historical_resolverÚrevisionÚsetÚis_ref_availableÚaddr   r   Ú	PdfObjectÚnextÚStopIterationÚcollect_dependencies)	r$   Únew_refsÚpreviousÚcandidate_orphansÚrefr-   Úobj_iterÚobjr+   s	   `       @r,   Ú_find_orphansrA   1   sT  øø€ ð" ×1Ò1Ñ3Ô3€HàŒ×6Ò6°xÔ7HÈ1Ñ7LÑMÔM€Hõ ‘u”uÐå™œÐØð &ð &ˆØ×$Ò$ SÑ)Ô)ð 	&à×!Ò! #Ñ&Ô&Ð&Ð&à× Ò  Ñ%Ô%Ð%Ð%ð!�H¥WÔ%6Ô7ð !ð !ð !ð !ð !ð !ð !ð ˆ~ÑÔ€HØ
ð 
ð	Ý�x‘.”.ˆCˆCøÝð 	ð 	ð 	ØˆEð	øøøà˜X×:Ò:Ø Ô 1ð ;ñ 
ô 
ñ 	
Ðð ð 
ð Ðs   ÃC Ã
C"Ã!C"Ú
old_objectÚ
new_objectc                 ó$  ‡ ‡— t           j        t           j        t           j        t           j        t           j        t           j        f}|D ]*}t          ‰ |¦  «        rt          ‰|¦  «        o‰‰ k    c S Œ+t           j        t           j	        f}t          ‰ |¦  «        r t          ‰|¦  «        o‰ j
        ‰j
        k    S t          ‰ t           j        ¦  «        rat          ‰t           j        ¦  «        oFt          ‰¦  «        t          ‰ ¦  «        k    o&t          d„ t          ‰ ‰¦  «        D ¦   «         ¦  «        S t          ‰ t           j        ¦  «        r,t          ‰t           j        ¦  «        r‰j        ‰ j        k    sdS t          ‰ t           j        ¦  «        rtt          ‰t           j        ¦  «        r*‰                     ¦   «         ‰                      ¦   «         k    sdS t          ˆˆ fd„‰                     ¦   «         D ¦   «         ¦  «        S t&          ‚)Nc              3   ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r(   )Ú_is_id)Ú.0ÚxÚys      r,   ú	<genexpr>z_is_id.<locals>.<genexpr>}   s.   è è € ÐIÐI¡T Q¨•F˜1˜a‘L”LÐIÐIÐIÐIÐIÐIr.   Fc              3   ó„   •K  — | ]:}t          ‰                     |¦  «        ‰                     |¦  «        ¦  «        V — Œ;d S r(   )rF   Úraw_get)rG   ÚkrC   rB   s     €€r,   rJ   z_is_id.<locals>.<genexpr>Ž   s]   øè è € ð 
ð 
àõ �:×%Ò% aÑ(Ô(¨*×*<Ò*<¸QÑ*?Ô*?Ñ@Ô@ð
ð 
ð 
ð 
ð 
ð 
r.   )r   ÚNumberObjectÚFloatObjectÚBooleanObjectÚ
NameObjectÚ
NullObjectÚIndirectObjectÚ
isinstanceÚTextStringObjectÚByteStringObjectÚoriginal_bytesÚArrayObjectÚlenÚallÚzipÚStreamObjectÚencoded_dataÚDictionaryObjectÚkeysÚNotImplementedError)rB   rC   Ú
primitivesÚprimÚstringss   ``   r,   rF   rF   e   s  øø€ åÔÝÔÝÔÝÔÝÔÝÔð€Jð ð Mð MˆÝ�j $Ñ'Ô'ð 	MÝ˜j¨$Ñ/Ô/ÐL°JÀ*Ò4LÐLÐLÐLð	Mõ Ô'­Ô)AÐB€GÝ�*˜gÑ&Ô&ð 
å�z 7Ñ+Ô+ð GØÔ)¨ZÔ-FÒFð	
õ
 �*�gÔ1Ñ2Ô2ð 
å�z¥7Ô#6Ñ7Ô7ð JÝ�J‘”¥3 z¡?¤?Ò2ðJåÐIÐI­S°¸ZÑ-HÔ-HÐIÑIÔIÑIÔIð	
õ �*�gÔ2Ñ3Ô3ð õ �z¥7Ô#7Ñ8Ô8ð	àÔ'¨:Ô+BÒBÐBà�5Ý�*�gÔ6Ñ7Ô7ð 

å�z¥7Ô#;Ñ<Ô<ð	à—’Ñ!Ô! Z§_¢_Ñ%6Ô%6Ò6Ð6à�5åð 
ð 
ð 
ð 
ð 
à—_’_Ñ&Ô&ð
ñ 
ô 
ñ 
ô 
ð 	
õ Ðr.   c                   óÖ   — e Zd ZdZ	 	 	 ddee         dee         fd„Z	 	 dde	de	d	ee
         d
ee         def
d„Z	 	 ddedeee	f         d	ee
         d
ee         deeef         f
d„ZdS )r#   a  
    Run a list of rules to analyse the differences between two revisions.

    :param global_rules:
        The :class:`.QualifiedWhitelistRule` objects encoding the rules to
        apply.
    :param form_rule:
        The :class:`.FormUpdatingRule` that adjudicates changes to form fields
        and their values.
    :param reject_object_freeing:
        Always fail revisions that free objects that existed prior to signing.

        .. note::
            PyHanko resolves freed references to the ``null`` object in PDF,
            and a freeing instruction in a cross-reference section is
            always registered as a change that needs to be approved, regardless
            of the value of this setting.

            It is theoretically possible for a rule to permit deleting content,
            in which case allowing objects to be freed might be reasonable.
            That said, pyHanko takes the conservative default position to reject
            all object freeing instructions as suspect.
    :param ignore_orphaned_objects:
        Some PDF writers create objects that aren't used anywhere (tsk tsk).
        Since those don't affect the "actual" document content, they can usually
        be ignored. If ``True``, newly created orphaned objects will be
        cleared at level :attr:`.ModificationLevel.LTA_UPDATES`.
        Default is ``True``.
    :param ignore_orphaned_objects:
        Some PDF writers overwrite objects with identical copies.
        Pointless and annoying, but also more or less harmless.
    TÚglobal_rulesÚ	form_rulec                 óL   — || _         || _        || _        || _        || _        d S r(   )re   rf   Úreject_object_freeingÚignore_orphaned_objectsÚignore_identical_objects)Úselfre   rf   rh   ri   rj   s         r,   Ú__init__zStandardDiffPolicy.__init__·   s1   € ð )ˆÔØ"ˆŒØ%:ˆÔ"Ø'>ˆÔ$Ø(@ˆÔ%Ð%Ð%r.   NÚoldÚnewÚfield_mdp_specÚdoc_mdpr&   c                 ó¾  ‡‡‡‡‡‡‡— |t           j        k    rt                               d¦  «         | j        r)‰                     ¦   «         }|rt          d|› d�¦  «        ‚‰                     ¦   «         Št          t          ¦  «        Šˆˆfd„}| j
        r7t          ‰¦  «        D ]'}‰t          j                                      |¦  «         Œ(t           |¦   «         ¦  «        Šdt          dt           fˆˆfd„}| j        D ]*}	|	                     ‰‰¦  «        D ]\  }
} ||
|¦  «         ŒŒ+t          ¦   «         }| j        r | j                             ‰‰¦  «        }ˆfd„}|D ]}\  }
} ||
|¦  «         |j        }|�B|j        s; ||¦  «        rt          d	|j        › d
|› d�¦  «        ‚|                     |¦  «         |�|j        st          d	|j        › d�¦  «        ‚Œ~‰‰t          j                 z
  }|‰t          j                 z
  }|‰t          j                 z
  }‰j        j        Š| j        r‹t          ˆˆˆfd„|D ¦   «         ¦  «        }|rlt                               d‰j        › d‰j        › d|› �¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |rätC          j"        dd„ |D ¦   «         ¦  «        }t                               d‰j        |¦  «         d„ ‰ #                    ¦   «         D ¦   «         }d‰j        › dd $                    d„ |D ¦   «         ¦  «        › d�}|rJd‰j        › d‰j        › d�d $                    |¦  «        z   }|›d|›�}t                               |¦  «         t          |¦  «        ‚|rt          j        }
n|rt          j        }
nt          j        }
tK          |
|¬¦  «        S )NzzStandardDiffPolicy was not designed to support DocMDP level 3 (MDPPerm.ANNOTATE). Unexpected validation results may occur.z	The refs zn were freed in the revision provided. The configured difference analysis policy does not allow object freeing.c               3   ó¬   •K  — ‰                      ¦   «          ‰D ]9} ‰                     | ¦  «        }|r ˆfd„|D ¦   «         }| t          j        |ffV — Œ:d S )Nc                 ó:   •— h | ]}t          j        ‰|¦  «        ’ŒS © )r   Úfrom_absolute)rG   Úprm   s     €r,   ú	<setcomp>zDStandardDiffPolicy.apply.<locals>._init_multi_lut.<locals>.<setcomp>é   s&   ø€ ÐNÐNÐNÀ!¥Ô 5°c¸1Ñ =Ô =ÐNÐNÐNr.   )Ú_load_reverse_xref_cacheÚ_get_usages_of_refr   ÚNONE)Únew_refÚusagesÚcontextsÚ	new_xrefsrm   s      €€r,   Ú_init_multi_lutz1StandardDiffPolicy.apply.<locals>._init_multi_lutä   s†   øè è € Ø×(Ò(Ñ*Ô*Ð*Ø$ð Fð F�Ø×/Ò/°Ñ8Ô8�Øð FØNÐNÐNÐNÀvÐNÑNÔN�HØ!Õ$5Ô$:¸HÐ#EÐEÐEÐEÐEøð	Fð Fr.   Ú_levelÚ_updc                 ó–  •‡— ‰j         }	 ‰|         \  }}‰j        }|t          j        k    rt	          ¦   «         }nF|t          j        k    rt	          ˆfd„|D ¦   «         ¦  «        }n|                     ‰j        ¦  «         t          || ¦  «        } | |f‰|<   |rd S n# t          $ r Y nw xY w‰|           
                    |¦  «         d S )Nc              3   ó<   •K  — | ]}|j         ‰j        k    ¯|V — Œd S r(   )Úrelative_viewÚcontext_checked)rG   Úctxr�   s     €r,   rJ   z?StandardDiffPolicy.apply.<locals>.ingest_ref.<locals>.<genexpr>  s@   øè è € ð !ð !àØÔ,°Ô0DÒDÐDð àDÐDÐDÐDð!ð !r.   )Úupdated_refÚapproval_typer   ÚBLANKET_APPROVEr4   ÚAPPROVE_RELATIVE_CONTEXTÚdiscardr…   ÚmaxÚKeyErrorr6   )r€   r�   r>   Úcurrent_max_levelr|   Úupd_typeÚ	explainedÚold_usages_to_clears    `    €€r,   Ú
ingest_refz,StandardDiffPolicy.apply.<locals>.ingest_refø   s  øø€ ØÔ"ˆCðØ,?ÀÔ,DÑ)Ð! 6ØÔ-�Ø�|Ô;Ò;Ð;å ™UœU�F�FØ¥Ô!FÒFÐFõ !ð !ð !ð !ð !à#)ð!ñ !ô !ñ ô �F�Fð —N’N 4Ô#7Ñ8Ô8Ð8åÐ.°Ñ7Ô7�Ø+1°6¨>Ð# CÑ(Øð ð �Fðøõ ð ð ð Ø�ðøøøà�fÔ×!Ò! #Ñ&Ô&Ð&Ð&Ð&s   ‹BB Â
B+Â*B+c                 ó6   •— ‰d uo‰                      | ¦  «        S r(   )Ú	is_locked)Úfq_namero   s    €r,   r”   z+StandardDiffPolicy.apply.<locals>.is_locked!  s*   ø€ Ø%¨TÐ1ð °n×6NÒ6NØñ7ô 7ð r.   z
Update of z' is not allowed because the form field z is locked.zL is only allowed after an approval signature, not a certification signature.c              3   ó˜   •K  — | ]D}‰                      |‰j        ¦  «        	 ®t           ‰|¦  «         ‰|¦  «        ¦  «        ¯@|V — ŒEd S r(   )Úget_historical_refr3   rF   )rG   Úunex_refrn   rm   Ú
xref_caches     €€€r,   rJ   z+StandardDiffPolicy.apply.<locals>.<genexpr>A  sv   øè è € ð !ð !àØ×0Ò0°¸3¼<ÑHÔHØðå˜3˜3˜x™=œ=¨#¨#¨h©-¬-Ñ8Ô8ðð ðð ð ð ð!ð !r.   z5Found identical overridden objects between revisions ú and z+; following no-op changes will be ignored: ú
c              3   óŽ   K  — | ]@}t          |¦  «        ›d t          |                     ¦   «         ¦  «        dd…         ›d�V — ŒAdS )ú:Ni,  z...)ÚreprÚ
get_object©rG   rH   s     r,   rJ   z+StandardDiffPolicy.apply.<locals>.<genexpr>U  sd   è è € ð ð àõ #' q¡'¤' ' '­4°·²±´Ñ+?Ô+?ÀÀÀÔ+EÐ+EÐ+EÐFðð ð ð ð ð r.   z$Unexplained xrefs in revision %d:
%sc           	      ój   — g | ]0\  }\  }}|¯
d |›dd                      d„ |D ¦   «         ¦  «        › d�‘Œ1S )z - z is also used in ú, c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r(   )Ústr)rG   rv   s     r,   rJ   z6StandardDiffPolicy.apply.<locals>.<listcomp>.<genexpr>_  s(   è è € Ð=Ð=¨�S ™VœVÐ=Ð=Ð=Ð=Ð=Ð=r.   z in the prior revision.)Újoin)rG   r>   Ú_Úpaths_remainings       r,   ú
<listcomp>z,StandardDiffPolicy.apply.<locals>.<listcomp>]  st   € ð %ð %ð %ñ .�CÑ-˜!˜_Ø"ð%ð�cð ð Ø—9’9Ð=Ð=¨_Ð=Ñ=Ô=Ñ=Ô=ðð ð ð%ð %ð %r.   z(There are unexplained xrefs in revision z: r¢   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r(   )rž   r    s     r,   rJ   z+StandardDiffPolicy.apply.<locals>.<genexpr>f  s(   è è € Ð@Ð@¨�T !™WœWÐ@Ð@Ð@Ð@Ð@Ð@r.   ú.zSome objects from revision z were replaced in revision z  without precise justification:
)Úmodification_levelÚchanged_form_fields)&r   ÚANNOTATEÚloggerÚwarningrh   Úrefs_freed_in_revisionr   r0   r   r4   ri   rA   r   ÚLTA_UPDATESr6   Údictr    re   Úapply_qualifiedrf   ÚapplyÚ
field_nameÚvalid_when_lockedr‡   Úvalid_when_certifyingÚFORM_FILLINGÚANNOTATIONSr1   Úxrefsrj   Údebugr3   Údifference_updater	   ÚLazyJoinÚitemsr¥   r   )rk   rm   rn   ro   rp   Úfreedr   r*   r’   ÚruleÚlevelÚupdr¬   Úform_changesr”   Úfurµ   Úunexplained_ltaÚunexplained_formfillÚunexplained_annotÚidentical_objsÚmsgÚunexplained_overridesÚerr_msgÚunchecked_paths_msgr�   r~   r‘   r™   s    ```                     @@@@r,   r´   zStandardDiffPolicy.applyÅ   s–  øøøøøøø€ ð •gÔ&Ò&Ð&Ý�NŠNð%ñô ð ð Ô%ð 	Ø×.Ò.Ñ0Ô0ˆEØð Ý,ð& ð &ð &ð &ñô ð ð ×1Ò1Ñ3Ô3ˆ	å¥Ñ$Ô$ˆ	ð
	Fð 	Fð 	Fð 	Fð 	Fð 	Fð Ô'ð 	CÝ% cÑ*Ô*ð Cð C�ØÕ+Ô7Ô8×<Ò<¸TÑBÔBÐBÐBõ # ? ?Ñ#4Ô#4Ñ5Ô5Ðð	'Õ0ð 	'½ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð@ Ô%ð 	'ð 	'ˆDØ"×2Ò2°3¸Ñ<Ô<ð 'ð '‘
��sØ�
˜5 #Ñ&Ô&Ð&Ð&ð'õ "™eœeÐàŒ>ð 	Øœ>×/Ò/°°SÑ9Ô9ˆLðð ð ð ð ð
 *ð ð ‘	��rØ�
˜5 "Ñ%Ô%Ð%Øœ]�
ØÐ)°"Ô2FÐ)Ø �y Ñ,Ô,ð Ý4ðN¨¬ð Nð NØ6@ðNð Nð Nñô ð ð (×+Ò+¨JÑ7Ô7Ð7ØÐ&¨rÔ/GÐ&Ý0ð& R¤^ð &ð &ð &ñô ð øð $ iÕ0AÔ0MÔ&NÑNˆà˜iÕ(9Ô(FÔGÑGð 	ð ! 9Õ->Ô-JÔ#KÑKð 	ð ”ZÔ%ˆ
ØÔ(ð 	BÝ ð !ð !ð !ð !ð !ð !à /ð!ñ !ô !ñ ô ˆNð ð BÝ—’ðAØ”|ðAð AØ*-¬,ðAð Aà0>ðAð Añô ð ð
 "×3Ò3°NÑCÔCÐCØ$×6Ò6°~ÑFÔFÐFØ×1Ò1°.ÑAÔAÐAàð %	2Ý”-Øðð à.ðñ ô ñô ˆCõ �LŠLØ7¸¼Àsñô ð ð%ð %ð 2E×1JÒ1JÑ1LÔ1Lð	%ñ %ô %Ð!ðD¸3¼<ð Dð DØ—9’9Ð@Ð@Ð.?Ð@Ñ@Ô@Ñ@Ô@ðDð Dð Dð ð %ð 2ð'°#´,ð 'ð 'Ø#&¤<ð'ð 'ð 'à)-¯ªÐ3HÑ)IÔ)IñJð $ð
 '. g gÐ/BÐ/BÐC�Ý—’Ð0Ñ1Ô1Ð1å(¨Ñ1Ô1Ð1Ø!ð 	2Ý%Ô1ˆEˆEØð 	2Ý%Ô2ˆEˆEå%Ô1ˆEåØ$Ð:Mð
ñ 
ô 
ð 	
r.   r1   Úbase_revisionc                 ó  — t          ¦   «         }|j        j        }t          j        }t          |t          ¦  «        r|                     |¦  «        }|}	n	|}|j        }	t          |	dz   |¦  «        D ]Œ}
	 |  
                    ||                     |
¦  «        ||¬¦  «        }n=# t          $ r0}t                               d|	› d|
› �|¬¦  «         |cY d}~c S d}~ww xY wt          ||j        ¦  «        }||j        z  }Œ�t#          ||¦  «        S )z·
        Implementation of :meth:`.DiffPolicy.review_file` that reviews
        each intermediate revision between the base revision and the current one
        individually.
        r   )rm   rn   ro   rp   z)Error in diff operation between revision rš   )Úexc_infoN)r4   rº   Útotal_revisionsr   rz   rT   Úintr2   r3   Úranger´   r   r®   r¯   rŒ   r«   r¬   r   )rk   r1   rÍ   ro   rp   r¬   Ú	rev_countÚcurrent_maxÚbase_rev_resolverÚbase_revision_nor3   Údiff_resultÚes                r,   Úreview_filezStandardDiffPolicy.review_file}  sc  € õ "™eœeÐà”LÔ0ˆ	Ý'Ô,ˆÝ�m¥SÑ)Ô)ð 	:Ø &× >Ò >¸}Ñ MÔ MÐØ,ÐÐà -ÐØ0Ô9Ðõ" Ð.°Ñ2°IÑ>Ô>ð 	Cð 	CˆHðØ"ŸjšjØ)Ø×6Ò6°xÑ@Ô@Ø#1Ø#ð	 )ñ ô ��øõ *ð ð ð Ý—’ð9Ø'ð9ð 9Ø.6ð9ð 9àð ñ ô ð ð
 ��������øøøøðøøøõ ˜k¨;Ô+IÑJÔJˆKØ ;Ô#BÑBÐÐÝ˜+Ð':Ñ;Ô;Ð;s   Á3,B Â 
CÂ*#CÃCÃC)TTT)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   rl   r
   r   r   r   r´   r   r   rÑ   r   rÙ   rt   r.   r,   r#   r#   •   s?  € € € € € ðð ðJ #Ø $Ø!%ðAð AàÐ1Ô2ðAð Ð,Ô-ðAð Að Að Að$ 26Ø%)ðv
ð v
àðv
ð  ðv
ð ! Ô.ð	v
ð
 ˜'Ô"ðv
ð 
ðv
ð v
ð v
ð v
ðx 26Ø%)ð8<ð 8<àð8<ð ˜SÐ"4Ð4Ô5ð8<ð ! Ô.ð	8<ð
 ˜'Ô"ð8<ð 
ˆzÐ1Ð1Ô	2ð8<ð 8<ð 8<ð 8<ð 8<ð 8<r.   r#   )Úfield_rules)re   rf   )6rÝ   ÚloggingÚcollectionsr   Útypingr   r   r   r   Úpyhanko.pdf_utilsr   r	   Úpyhanko.pdf_utils.readerr
   r   Úpyhanko.sign.fieldsr   r   Úform_rules_apir   Ú
policy_apir   r   r   r   Úrules.file_structure_rulesr   r   r   Úrules.form_field_rulesr   r   r   r   Úrules.metadata_rulesr   r   Ú	rules_apir   r   r   r    Ú	getLoggerrÚ   r®   Ú__all__rA   r7   rF   r#   Úas_qualifiedr±   r!   r"   rt   r.   r,   ú<module>rî      sl  ððð ð €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð BÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ðð ð €ð1Ð.ð 1ð 1ð 1ð 1ðh-�wÔ(ð -°gÔ6Gð -ð -ð -ð -ð``<ð `<ð `<ð `<ð `<˜ñ `<ô `<ð `<ðF	 )Ð(àÐÑ!Ô!Øˆ‰Œ×"Ò"Ð#4Ô#@ÑAÔAØˆÑÔ×%Ò%Ð&7Ô&CÑDÔDØÐÑÔ×'Ò'Ð(9Ô(EÑFÔFØˆÑÔ×%Ò%Ð&7Ô&CÑDÔDØÐÑÔ×)Ò)Ð*;Ô*GÑHÔHðð Ðà Ð Ñ"Ô"Ø$Ð$Ñ&Ô&Ø(Ð(Ñ*Ô*ð
ðñ ô ðñ ô Ð ð"ð* ,Ð+¸ÀtÐLÑLÔLÐ ðð r.   