ó
    �®žjC( ã                  ó˜  • % S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSK	J
r
Jr  SSKJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJr  SSKJr  SSKJrJrJrJrJ r J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(J)r)J*r*  SSK+J,r,  SSK-J.r.  SSK/J0r0  SSK1J2r2  Sr3S\4S'   Sr5S\4S'    SSK6J7r7J8r8  SSK9J:r:  SSK;J<r<  Sr3Sr?\R€                  " \A5      rBSrCS\4S '   \ " S! S"\
5      5       rD " S# S$\,5      rE " S% S&\5      rF " S' S(\F5      rG " S) S*\F5      rH " S+ S,\F5      rI " S- S.\F5      rJ " S/ S05      rK " S1 S25      rLg! \= a  r>\>r5 Sr>C>N�Sr>C>ff = f)3aÁ  Backend to parse patents from the United States Patent Office (USPTO).

The parsers included in this module can handle patent grants published since 1976 and
patent applications since 2001.
The original files can be found in https://bulkdata.uspto.gov.

Security Note:
    This module uses defusedxml.sax.make_parser() with security settings to protect
    against XML External Entity (XXE) attacks and entity expansion attacks (Billion
    Laughs/CWE-776). The parser is configured with:

    - feature_external_ges: False (blocks external general entity resolution)
    - feature_external_pes: False (blocks external parameter entity resolution)
    - forbid_dtd: False (allows DTD declarations required by USPTO XML format)
    - forbid_entities: False (allows entity declarations including NDATA)
    - forbid_external: False (allows SYSTEM declarations in DTD)

    Security Analysis:
    1. XXE Prevention: While external entities can be declared (forbid_external=False),
       they are never resolved or fetched due to feature_external_ges=False and
       feature_external_pes=False. This prevents XXE attacks.

    2. Billion Laughs Mitigation: defusedxml's built-in entity expansion limits
       (MAX_ENTITY_EXPANSION=10,000) prevent exponential entity expansion from
       causing memory exhaustion. While not completely blocking entity expansion,
       this limit prevents the worst-case denial-of-service scenarios.

    3. NDATA Entities: USPTO files use NDATA entities for image references
       (e.g., <!ENTITY img SYSTEM "file.tif" NDATA TIF>). These are unparsed
       entities that don't expand inline and aren't fetched due to the external
       entity resolution being disabled.

    This configuration balances security with USPTO format compatibility. The key
    insight is that defusedxml distinguishes between entity declaration (allowed)
    and entity resolution/fetched (blocked), providing protection while allowing
    the required DTD structure.
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚEnumÚunique)ÚBytesIOÚStringIO)ÚPath)ÚFinal)ÚSAXParseException)ÚContentHandlerÚfeature_external_gesÚfeature_external_pes)ÚAttributesImpl)ÚDocItemÚDocItemLabelÚDoclingDocumentÚDocumentOriginÚ	TableCellÚ	TableDataÚTextItem)ÚLevelNumber)ÚNonNegativeInt)ÚSelfÚ	TypedDictÚoverride)ÚDeclarativeDocumentBackend)ÚInputFormat)ÚInputDocument)ÚDocumentLoadErrorFÚboolÚ_BS4_AVAILABLEzImportError | NoneÚ_BS4_IMPORT_ERROR)ÚBeautifulSoupÚTag)ÚDefusedXmlException)Úmake_parserTzœThe 'beautifulsoup4' and 'defusedxml' packages are required to process USPTO patent files. Install them with `pip install 'docling-slim[format-xml-uspto]'`.z&<?xml version="1.0" encoding="UTF-8"?>ú
Final[str]ÚXML_DECLARATIONc                  óH   • \ rS rSrSrSrSr\S	S j5       r\S
S j5       r	Sr
g)ÚPatentHeadingé_   zGText of docling headings for tagged sections in USPTO patent documents.)ÚABSTRACTé   )ÚCLAIMSr.   c                ó<   • [         R                  U 5      nXl        U$ ©N©ÚobjectÚ__new__Ú_value_©ÚclsÚvalueÚ_Úobjs       Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/backend/xml/uspto_backend.pyr4   ÚPatentHeading.__new__f   s   € ä�n‰n˜SÓ!ˆØŒØˆ
ó    c                ó   • X l         g r1   ©Úlevel)Úselfr9   r@   s      r;   Ú__init__ÚPatentHeading.__init__l   s   € à"'�
r=   r?   N©r8   ÚstrÚreturnr   )r@   r   rF   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r-   r/   r   r4   rB   Ú__static_attributes__© r=   r;   r+   r+   _   s5   † áQà€HØ€Fàóó ðð
 ó(ó ó(r=   r+   c                  ó¸   ^ • \ rS rSr\S
U 4S jj5       rSS jr\SS j5       r\\SS j5       5       r	\SS j5       r
\\SS j5       5       r\SS j5       rS	rU =r$ )ÚPatentUsptoDocumentBackendéq   c                ó   >• [         (       d  [        [        5      [        e[        TU ]  X5        SU l        S U l         [        U R                  [        5      (       aµ  U R                  R                  5       R                  S5      =n(       a„  UR                  S5      (       d  UR                  S5      S:X  a  U R                  U5        U =R                  U-  sl        U R                  R                  5       R                  S5      =n(       a  Mƒ  g g [        U R                  [         5      (       a�  [#        U R                  SS9 nUR                  5       =n(       a[  UR                  S5      (       d  US:X  a  U R                  U5        U =R                  U-  sl        UR                  5       =n(       a  M[  S S S 5        g g ! , (       d  f       g = f! [$         a  n['        SU R(                   S	35      UeS nAff = f)
NÚ zutf-8z	<!DOCTYPEú
ÚPATN)ÚencodingzPATN
z6Could not initialize USPTO backend for file with hash Ú.)r"   ÚImportErrorÚ_INSTALL_HINTr#   ÚsuperrB   Úpatent_contentÚparserÚ
isinstanceÚpath_or_streamr   ÚreadlineÚdecodeÚ
startswithÚrstripÚ_set_parserr
   ÚopenÚ	Exceptionr    Údocument_hash)rA   Úin_docr^   ÚlineÚfile_objÚexcÚ	__class__s         €r;   rB   Ú#PatentUsptoDocumentBackend.__init__r   s§  ø€ çŠ~ÜœmÓ,Ô2CÐCÜ‰Ñ˜Ô0à#%ˆÔØ*.ˆŒð	Ü˜$×-Ñ-¬w×7Ñ7Ø"×1Ñ1×:Ñ:Ó<×CÑCÀGÓLÐL�dÕLØ—‘ {×3Ñ3°t·{±{À6Ó7JÈfÓ7TØ×(Ñ(¨Ô.Ø×'Ò'¨4Ñ/Õ'ð #×1Ñ1×:Ñ:Ó<×CÑCÀGÓLÐL�d×LÑLô ˜D×/Ñ/´×6Ñ6Ü˜$×-Ñ-¸Ò@ÀHØ"*×"3Ñ"3Ó"5Ð5˜$Õ5ØŸ?™?¨;×7Ñ7¸4À8Ó;KØ ×,Ñ,¨TÔ2Ø×+Ò+¨tÑ3Õ+ð #+×"3Ñ"3Ó"5Ð5˜$×5÷ AÐ@ð 7ß@Õ@ûô
 ó 	Ü#ØHÈ×I[ÑI[ÐH\Ð\]Ð^óàðûð	ús=   ¿CG Ä3G ÅA1GÆ9G Ç
GÇG ÇG Ç
G=ÇG8Ç8G=c                óV  ^• UR                  S5      R                  5       mTS:X  a  [        5       U l        g ST;   a  [	        5       U l        g ST;   a  [	        5       U l        g ST;   a  [        5       U l        g [        U4S jS 5       5      (       a  [        5       U l        g S U l        g )NrT   Úpatnzus-patent-application-v4zus-patent-grant-v4zus-grant-025c              3  ó.   >#   • U  H
  nUT;   v •  M     g 7fr1   rN   )Ú.0ÚitemÚdoctype_lines     €r;   Ú	<genexpr>Ú9PatentUsptoDocumentBackend._set_parser.<locals>.<genexpr>–   s   øé € ð 
âD�ð �LÖ ÚDùs   ƒ)úpatent-application-publicationzpap-v1)rb   ÚlowerÚPatentUsptoGrantApsr\   ÚPatentUsptoIceÚPatentUsptoGrantV2ÚallÚPatentUsptoAppV1)rA   Údoctyperr   s     @r;   rc   Ú&PatentUsptoDocumentBackend._set_parserŒ   s�   ø€ Ø—~‘~ fÓ-×3Ñ3Ó5ˆØ˜6Ó!Ü-Ó/ˆD�KØ'¨<Ó7Ü(Ó*ˆD�KØ! \Ó1Ü(Ó*ˆD�KØ˜|Ó+Ü,Ó.ˆD�KÜô 
áDó
÷ 
ñ 
ô +Ó,ˆD�KàˆD�Kr=   c                ód   • [        U R                  5      =(       a    [        U R                  5      $ r1   )r!   r[   r\   ©rA   s    r;   Úis_validÚ#PatentUsptoDocumentBackend.is_validž   s!   € ä�D×'Ñ'Ó(×>¬T°$·+±+Ó->Ð>r=   c                ó   • g)NFrN   ©r7   s    r;   Úsupports_paginationÚ.PatentUsptoDocumentBackend.supports_pagination¢   s   € ð r=   c                ó   • g r1   rN   r   s    r;   ÚunloadÚ!PatentUsptoDocumentBackend.unload§   s   € àr=   c                ó$   • [         R                  1$ r1   )r   Ú	XML_USPTOrƒ   s    r;   Úsupported_formatsÚ,PatentUsptoDocumentBackend.supported_formats«   s   € ô ×%Ñ%Ð&Ð&r=   c                ó,  • U R                   bØ  U R                   R                  U R                  5      nUc0  [        SU R                   SU R
                  R                   S35      eU R
                  R                  =(       d    SUl        [        U R                   [        5      (       a  SOSn[        UU R                  U R
                  R                  =(       d    SS9Ul
        U$ [        SU R                   SU R
                  R                   S	35      e)
NzFailed to convert doc (hash=z, name=z).Úfilez
text/plainzapplication/xml)ÚmimetypeÚbinary_hashÚfilenamezCannot convert doc (hash=z%) because the backend failed to init.)r\   Úparser[   ÚRuntimeErrorrf   rŽ   Únamer]   rw   r   Úorigin)rA   ÚdocÚ	mime_types      r;   ÚconvertÚ"PatentUsptoDocumentBackend.convert°   s  € à�;‰;Ñ"Ø—+‘+×#Ñ# D×$7Ñ$7Ó8ˆCØ‰{Ü"Ø2°4×3EÑ3EÐ2Fð GØ ŸI™IŸN™NÐ+¨2ð/óð ð —y‘y—~‘~×/¨ˆCŒHô ˜dŸk™kÔ+>×?Ñ?ñ à&ð ô
 (Ø"Ø ×.Ñ.ØŸ™Ÿ™×1¨6ñˆCŒJð ˆJäØ+¨D×,>Ñ,>Ð+?ð @ØŸ	™	Ÿ™Ð'Ð'LðNóð r=   )r\   r[   )rg   r   r^   zBytesIO | PathrF   rG   )r|   rE   rF   rG   )rF   r!   ©rF   rG   )rF   zset[InputFormat])rF   r   )rH   rI   rJ   rK   r   rB   rc   r€   Úclassmethodr„   r‡   r‹   r˜   rM   Ú__classcell__)rk   s   @r;   rP   rP   q   sŽ   ø† Øöó ðô2ð$ ó?ó ð?ð Øóó ó ðð óó ðð Øó'ó ó ð'ð óó ör=   rP   c                  ó,   • \ rS rSrSr\SS j5       rSrg)ÚPatentUsptoéÍ   z5Parser of patent documents from the US Patent Office.c                ó   • g)zžParse a USPTO patent.

Parameters:
    patent_content: The content of a single patent in a USPTO file.

Returns:
    The patent parsed as a docling document.
NrN   )rA   r[   s     r;   r’   ÚPatentUspto.parseÐ   s   � r=   rN   N©r[   rE   rF   zDoclingDocument | None)rH   rI   rJ   rK   rL   r   r’   rM   rN   r=   r;   rž   rž   Í   s   † Ù?àóó ór=   rž   c                  óB   • \ rS rSrSrS	S jrS
S jr " S S\5      rSr	g)rx   éÜ   zëParser of patent documents from the US Patent Office (ICE).

The compatible formats are:
- Patent Grant Full Text Data/XML Version 4.x ICE (from January 2005)
- Patent Application Full Text Data/XML Version 4.x ICE (from January 2005)
c                ó¬   • [         R                  5       U l        [        R                  " S[        R
                  [        R                  -  5      U l        g)z*Build an instance of PatentUsptoIce class.ú^(<table .*?</table>)N)rx   ÚPatentHandlerÚhandlerÚreÚcompileÚ	MULTILINEÚDOTALLÚpatternr   s    r;   rB   ÚPatentUsptoIce.__init__ä   s2   € ä%×3Ñ3Ó5ˆŒÜ—z’zÐ":¼B¿L¹LÌ2Ï9É9Ñ<TÓUˆ�r=   c                óÎ  •  [        5       nUR                  [        S5        UR                  [        S5        SUl        SUl        SUl        UR                  U R                  5        UR                  [        U5      5        U R                  R                   nU(       Ga  ["        R$                  " U R&                  U5      n/ n[        R)                  S[+        U5       S35        U HC  n	[-        [.        S-   U	-   5      n
 U
R                  5       nU(       a  UR1                  U5        MC  ME     [+        U5      [+        UR2                  5      :w  a:  [        R                  S	[+        UR2                  5       S
[+        U5       S35        U$ [5        U5       H  u  pÞXæR2                  U   l        M     U$ ! [         a"  n[        R                  SU 35         S nAg S nAf[         a"  n[        R                  SU 35         S nAg S nAf[         a"  n[        R                  SU 35         S nAg S nAff = f! [         a$  n[        R                  SU 35         S nAGMx  S nAff = f©NFz1Error in parsing USPTO document (malformed XML): z;Error in parsing USPTO document (security issue detected): z,Unexpected error in parsing USPTO document: zFound z# tables to be parsed with XmlTable.Ú
zError in parsing USPTO tables: zNumber of referenced (z) and parsed (z) tables differ.©r'   Ú
setFeaturer   r   Ú
forbid_dtdÚforbid_entitiesÚforbid_externalÚsetContentHandlerr¨   r’   r	   r   Ú_logÚerrorr&   re   r–   r©   Úfindallr­   ÚdebugÚlenÚXmlTabler)   ÚappendÚtablesÚ	enumerateÚdata©rA   r[   r\   Úexc_saxÚexc_defusedrj   r–   Ú
raw_tablesÚparsed_tablesÚtableÚtable_parserÚ
table_dataÚ	exc_tableÚidxrq   s                  r;   r’   ÚPatentUsptoIce.parseé   s  € ð	Ü “]ˆFØ×ÑÔ2°EÔ:Ø×ÑÔ2°EÔ:Ø %ˆFÔØ%*ˆFÔ"Ø%*ˆFÔ"Ø×$Ñ$ T§\¡\Ô2Ø�L‰Lœ .Ó1Ô2ð �l‰l×ÑˆßÜŸš D§L¡L°.ÓAˆJØ-/ˆMÜ�J‰J˜¤ J£Ð0Ð0SÐTÔUÛ#�Ü'¬¸$Ñ(>ÀÑ(FÓG�ðNØ!-×!3Ñ!3Ó!5�JÞ!Ø%×,Ñ,¨ZÖ8ñ "ñ	 $ô �=Ó!¤S¨¯©£_Ó4Ü—
‘
Ø,¬S°·±«_Ð,=ð >Ü˜MÓ*Ð+Ð+;ð=ôð ˆ
ô "+¨=Ö!9‘I�CØ+/—J‘J˜s‘OÖ(ñ ":ð ˆ
øôE !ó 	Ü�J‰JÐJÈ7È)ÐTÔUÜûÜ"ó 	Ü�J‰JØMÈkÈ]Ð[ôô ûÜó 	Ü�J‰JÐEÀcÀUÐKÔLÜûð	ûô !ó NÜ—J‘JÐ!@ÀÀÐL×MÓMûðNúóH   ‚B F3 Ä (H6Æ3
H3Æ=GÇH3Ç'HÈH3ÈH.È.H3È6
I$É IÉI$c                  óè   • \ rS rSr% SrSrS\S'   SrS\S'   \ " S S	\	5      5       r
\SS
 j5       r\S 5       r\S 5       r\S 5       r\S 5       r      SS jrSS jrSS jrSS jrSS jrSrg)ÚPatentUsptoIce.PatentHandleri  ú(SAX ContentHandler for patent documents.zus-patent-applicationr(   ÚAPP_DOC_ELEMENTzus-patent-grantÚGRANT_DOC_ELEMENTc                  ót   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSr\SS j5       r\SS j5       rSrg)Ú$PatentUsptoIce.PatentHandler.Elementi  úERepresents an element of interest in the patent application document.)ÚabstractT)zinvention-titleT)ÚclaimsF©ÚclaimF©z
claim-textT)ÚpT©ÚheadingT)ÚdescriptionF©rÇ   F)zdescription-of-drawingsT)ÚsupT)ÚsubT)ÚmathsFc                ó<   • [         R                  U 5      nXl        U$ r1   r2   r6   s       r;   r4   Ú,PatentUsptoIce.PatentHandler.Element.__new__/  ó   € ä—n‘n SÓ)�Ø#”Ø�
r=   c                ó   • X l         g r1   ©Úis_text©rA   r9   rè   s      r;   rB   Ú-PatentUsptoIce.PatentHandler.Element.__init__5  ó   € à%,•r=   rç   NrD   ©rè   r!   rF   rG   )rH   rI   rJ   rK   rL   r-   ÚTITLEr/   ÚCLAIMÚ
CLAIM_TEXTÚ	PARAGRAPHÚHEADINGÚDESCRIPTIONÚTABLEÚDRAWINGSÚSTYLE_SUPERSCRIPTÚSTYLE_SUBSCRIPTÚMATHSr   r4   rB   rM   rN   r=   r;   ÚElementrÔ     sm   † áWà'ˆHØ+ˆEØ$ˆFØ"ˆEØ+ˆJØ!ˆIØ%ˆGØ.ˆKØ"ˆEØ6ˆHØ +ÐØ)ˆOØ"ˆEàóó ðð
 ó-ó ó-r=   rø   c                ó„   • SU l         SU l        SS0U l        U   U   U   U   U   U R                  5         [	        5       U l        g©z(Build an instance of the patent handler.Né   ©r–   r@   ÚparentsÚ_clean_dataÚ
HtmlEntityÚ
style_htmlr   s    r;   rB   Ú%PatentUsptoIce.PatentHandler.__init__9  óA   € ð 04ˆDŒHà&'ˆDŒJà?@À$¸iˆDŒLáÙÙÙÙØ×ÑÔä(›lˆD�Or=   c                óˆ   • UU R                   U R                  4;   a  [        SS9U l        SU l        U R                  X5        g©ziSignal the start of an element.

Args:
    tag: The element tag.
    attributes: The element attributes.
rŽ   ©r”   rS   N)rÑ   rÒ   r   r–   ÚtextÚ_start_registered_elements©rA   ÚtagÚ
attributess      r;   ÚstartElementÚ)PatentUsptoIce.PatentHandler.startElementL  sF   € ð Ø×$Ñ$Ø×&Ñ&ðó ô +°Ñ7�”Ø�”	Ø×+Ñ+¨CÕ<r=   c                ó¢  • U R                   (       Ga=  U R                   S   nU R                  U5      nUR                  (       Ga
  U R                  R	                  SU S35      n[
        R                  " U5      nXT:X  a  [        R                  SU 35        gUU R                  R                  U R                  R                  4;   aq  [        U R                   5      S:  a  gU R                   S   nU R                  U5      nUR                  (       a%  U =R                  U R                  XR5      -  sl        ggU =R                  U-  sl        ggg©z¯Receive notification of a skipped entity.

HTML entities will be skipped by the parser. This method will unescape them
and add them to the text.

Args:
    name: Entity name.
éÿÿÿÿÚ&Ú;zUnrecognized HTML entity: Nr.   éþÿÿÿ©Úpropertyrø   rè   r   Úget_greek_from_iso8879ÚhtmlÚunescaper¸   r»   rõ   rö   r¼   r  Ú_apply_style©rA   r”   Úelm_valÚelementÚescapedÚ	unescapedÚ
parent_valÚparents           r;   ÚskippedEntityÚ*PatentUsptoIce.PatentHandler.skippedEntity\  s  € ð �}�}ˆ}ØŸ-™-¨Ñ+�ØŸ,™, wÓ/�Ø—?—?�?Ø"Ÿo™o×DÑDÀqÈÈÈaÀ[ÓQ�GÜ $§¢¨gÓ 6�IØ Ó+ÜŸ
™
Ð%?À¸vÐ#FÔGØàØŸ™×6Ñ6ØŸ™×4Ñ4ð#ó ô
 ˜tŸ}™}Ó-°Ó1Ø"Ø%)§]¡]°2Ñ%6˜
Ø!%§¡¨jÓ!9˜Ø!Ÿ>Ÿ>Ø ŸIšI¨×):Ñ):¸9Ó)NÑNžIð *ð Ÿ	š	 YÑ.ž	ð' #ð r=   c                ó~   • UU R                   U R                  4;   a  U R                  5         U R                  U5        g©z?Signal the end of an element.

Args:
    tag: The element tag.
N)rÑ   rÒ   rþ   Ú_end_registered_element©rA   r	  s     r;   Ú
endElementÚ'PatentUsptoIce.PatentHandler.endElement~  s?   € ð Ø×$Ñ$Ø×&Ñ&ðó ð × Ñ Ô"Ø×(Ñ(¨Õ-r=   c                óø  • U R                   (       aé  U R                   S   nU R                  U5      nUR                  (       a·  UU R                  R                  U R                  R                  4;   aq  [        U R                   5      S:  a  gU R                   S   nU R                  U5      nUR                  (       a%  U =R                  U R                  X5      -  sl        ggU =R                  U-  sl        ggg©zZReceive notification of character data.

Args:
    content: Data reported by the handler.
r  r.   Nr  ©r  rø   rè   rõ   rö   r¼   r  r  ©rA   Úcontentr  r  r  r  s         r;   Ú
charactersÚ'PatentUsptoIce.PatentHandler.charactersŒ  óÆ   € ð �}�}ØŸ-™-¨Ñ+�ØŸ,™, wÓ/�Ø—?—?ØØŸ™×6Ñ6ØŸ™×4Ñ4ð#ó ô
 ˜tŸ}™}Ó-°Ó1Ø"Ø%)§]¡]°2Ñ%6˜
Ø!%§¡¨jÓ!9˜Ø!Ÿ>Ÿ>Ø ŸIšI¨×):Ñ):¸7Ó)LÑLžIð *ð Ÿ	š	 WÑ,ž	ð #ð r=   c                ó  • XR                    Vs/ s H  o3R                  PM     sn;   GaS  XR                   R                  R                  :X  a{  U R                  (       aj  U R                  S   U:X  aW  U R                  R                  5       (       a8  U =R                  SU R                  R                  5       -   -  sl        SU l        O™XR                   R                  R                  :X  av  UR                  SS5      nUR                  5       (       a  [        U5      OSn[        U R                  R                  5       5      nUS-   U R                  ;   a  US-   OUU l        U R                  R                  U5        g g s  snf )Nr  Ú rS   r@   rû   ©rø   r8   rï   r  r  ÚstriprÙ   rñ   ÚgetÚ	isnumericÚintÚminrý   Úkeysr@   r¾   ©rA   r	  r
  ÚmemberÚ
level_attrÚ	new_levelÚ	max_levels          r;   r  Ú7PatentUsptoIce.PatentHandler._start_registered_elements¥  s  € ð ·,²,Ó?²,¨—|”|±,Ñ?Ô?ð Ÿ<™<×2Ñ2×8Ñ8Ó8ØŸŸØŸ™ bÑ)¨SÓ0ØŸ	™	Ÿ™×)Ñ)à—J’J #¨¯	©	¯©Ó(9Ñ"9Ñ9•JØ "�D•IØŸL™L×0Ñ0×6Ñ6Ó6Ø&0§n¡n°W¸bÓ&A�JØ8B×8LÑ8L×8NÑ8N¤S¨¤_ÐTU�IÜ # D§L¡L×$5Ñ$5Ó$7Ó 8�Ið +4°a©-¸D¿L¹LÓ)H˜	 AšÈið ”Jð —‘×$Ñ$ SÕ)ð' @ùÒ?s   �E?c                ó  • XR                    Vs/ s H  o"R                  PM     sn;   aV  U R                  (       aD  U R                  R                  5       nU R	                  X0R
                  R                  5       5        g g g s  snf r1   )rø   r8   r  ÚpopÚ_add_propertyr  r3  )rA   r	  rq   Úcurrent_tags       r;   r$  Ú4PatentUsptoIce.PatentHandler._end_registered_element½  s[   € Ø¯lªlÓ;ªl d—z”z©lÑ;Ó;ÀÇÇØ"Ÿm™m×/Ñ/Ó1�Ø×"Ñ" ;·	±	·±Ó0AÕBð ANÐ;ùÒ;s   �Bc                ó¢
  • U(       a  U R                   (       d  g XR                  R                  R                  :X  ao  U(       a`  U R                   R	                  U R
                  U R                     US9U R
                  U R                  S-   '   U =R                  S-  sl        SU l        g XR                  R                  R                  :X  aÌ  U R                  (       aº  [        R                  R                  n[        R                  R                  U R
                  ;   a  [        R                  R                  OSnU R                   R                  UUU R
                  U   S9nU R                   R                  [        R                  U R                  US9  g g XR                  R                  R                  :X  aM  [         R"                  " SSU5      R%                  5       nU(       a  U =R&                  SU-   -  sl        SU l        g XR                  R(                  R                  :X  aL  U R&                  (       a;  U R*                  R-                  U R&                  R%                  5       5        SU l        g XR                  R.                  R                  :X  aÓ  U R*                  (       aÂ  [        R.                  R                  n[        R.                  R                  U R
                  ;   a  [        R.                  R                  OSnU R                   R                  UUU R
                  U   S9nU R*                   H+  nU R                   R                  [        R                  X&S9  M-     g XR                  R                  R                  :X  aÀ  U(       a¹  [         R"                  " SSU5      nU R                  R                  R                  U R0                  ;   a+  U R                  (       a  U R                  S-   U-   OUU l	        O@U R                   R                  [        R                  UU R
                  U R                     S9  SU l        g XR                  R2                  R                  :X  az  U(       as  U R                   R                  UU R                  U R
                  U R                     S9U R
                  U R                  S-   '   U =R                  S-  sl        SU l        g XR                  R4                  R                  :X  a=  [7        S	S	/ S
9nU R                   R9                  UU R
                  U R                     S9  g g )N©r  r  rû   rS   ©r@   r  ©Úlabelr  r  ú\s+r1  ©r  r@   r  r   ©Únum_rowsÚnum_colsÚtable_cells©rÁ   r  )r–   rø   rí   r8   Ú	add_titlerý   r@   r  r-   rÖ   r+   Úadd_headingÚadd_textr   rð   rï   r©   rá   r3  rÙ   rî   r×   r¾   r/   r  rñ   ró   r   Ú	add_table)rA   r”   r  Úheading_textÚheading_levelÚabstract_itemÚclaims_itemÚempty_tables           r;   rA  Ú*PatentUsptoIce.PatentHandler._add_propertyÂ  sö  € Þ˜tŸxŸxØà—|‘|×)Ñ)×/Ñ/Ó/ÞØ37·8±8×3EÑ3EØ#Ÿ|™|¨D¯J©JÑ7Ø!ð 4Fð 4�D—L‘L §¡¨a¡Ñ0ð —J’J !‘O•JØ�•	àŸ™×.Ñ.×4Ñ4Ó4Ø—=—=Ü#0×#9Ñ#9×#?Ñ#?�Lô )×1Ñ1×7Ñ7¸4¿<¹<ÓGô &×.Ñ.×4Ò4àð "ð
 %)§H¡H×$8Ñ$8Ø$Ø+Ø#Ÿ|™|¨MÑ:ð %9ð %�Mð
 —H‘H×%Ñ%Ü*×4Ñ4Ø!Ÿ]™]Ø,ð &ò ð !ð$ Ÿ™×0Ñ0×6Ñ6Ó6Ü—v’v˜f c¨4Ó0×6Ñ6Ó8�ÞØ—J’J #¨¡*Ñ,•JØ�•	àŸ™×+Ñ+×1Ñ1Ó1°d·j·jØ—‘×"Ñ" 4§:¡:×#3Ñ#3Ó#5Ô6Ø�•
àŸ™×,Ñ,×2Ñ2Ó2°t·{·{Ü,×3Ñ3×9Ñ9�ô %×+Ñ+×1Ñ1°T·\±\ÓAô "×(Ñ(×.Ò.àð ð
 #Ÿh™h×2Ñ2Ø Ø'ØŸ<™<¨Ñ6ð 3ð �ð
 !ŸKœK�DØ—H‘H×%Ñ%Ü*×4Ñ4¸4ð &ó ò (ð
 Ÿ™×/Ñ/×5Ñ5Ó5¾$ä—v’v˜f c¨4Ó0�Ø—<‘<×(Ñ(×.Ñ.°$·-±-Ó?à8<¿¿˜Ÿ™¨Ñ,¨tÒ3È4ð •Mð —H‘H×%Ñ%Ü*×4Ñ4Ø!Ø#Ÿ|™|¨D¯J©JÑ7ð &ñ ð
 �•	àŸ™×-Ñ-×3Ñ3Ó3¾Ø/3¯x©x×/CÑ/CØØŸ*™*ØŸ<™<¨¯
©
Ñ3ð 0Dð 0�—‘˜TŸZ™Z¨!™^Ñ,ð
 —
’
˜a‘•
Ø�•	àŸ™×+Ñ+×1Ñ1Ó1ä'°¸QÈBÑO�Ø—‘×"Ñ"Ø$ØŸ<™<¨¯
©
Ñ3ð #ò ð 2r=   c                óV  • UnX R                   R                  R                  :X  a1  [        R                  " U R
                  R                  U5      5      nU$ X R                   R                  R                  :X  a/  [        R                  " U R
                  R                  U5      5      nU$ ©a+  Apply an HTML style to text.

Args:
    text: A string containing plain text.
    style_tag: An HTML tag name for styling text. If the tag name is not
      recognized as one of the supported styles, the method will return
      the original `text`.

Returns:
    A string after applying the style.
)	rø   rõ   r8   r  r  r   Úget_superscriptrö   Úget_subscript©rA   r  Ú	style_tagÚ	formatteds       r;   r  Ú)PatentUsptoIce.PatentHandler._apply_style  s   € ð ˆIàŸL™L×:Ñ:×@Ñ@Ó@Ü ŸMšM¨$¯/©/×*IÑ*IÈ$Ó*OÓP�	ð Ðð Ÿl™l×:Ñ:×@Ñ@Ó@Ü ŸMšM¨$¯/©/×*GÑ*GÈÓ*MÓN�	àÐr=   c                ó<   • / U l         SU l        / U l        SU l        g©z%Reset the variables from stream data.rS   N)r  rÙ   r×   rÖ   r   s    r;   rþ   Ú(PatentUsptoIce.PatentHandler._clean_data2  s   € àˆDŒMØˆDŒJØˆDŒKØˆD�Mr=   ©	rÖ   rÙ   r×   r–   r@   rý   r  r   r  Nrš   ©r	  rE   r
  r   rF   rG   ©r	  rE   rF   rG   ©r”   rE   r  rE   rF   rG   ©r  rE   r_  rE   rF   rE   )rH   rI   rJ   rK   rL   rÑ   Ú__annotations__rÒ   r   r   rø   r   rB   r  r   r&  r-  r  r$  rA  r  rþ   rM   rN   r=   r;   r§   rÏ     sÌ   ‡ Ù6à&=ˆ˜Ó=Ø(9Ð˜:Ó9à	ô	-�dó 	-ó 
ð	-ð6 
ó	+ó 
ð	+ð$ 
ñ	=ó 
ð	=ð 
ñ	/ó 
ð	/ðB 
ñ	.ó 
ð	.ð 
ñ	-ó 
ð	-ð0	*Øð	*Ø(6ð	*àô	*ô0	Cô
Y	ôv	÷*	r=   r§   ©r¨   r­   Nrš   r¢   )
rH   rI   rJ   rK   rL   rB   r’   r   r§   rM   rN   r=   r;   rx   rx   Ü   s!   † ñôVô
,ô\`˜÷ `r=   rx   c                  óV   • \ rS rSrSr\S	S j5       r\S
S j5       r " S S\5      r	Sr
g)ry   i:  z´Parser of patent documents from the US Patent Office (grants v2.5).

The compatible format is:
- Patent Grant Full Text Data/XML Version 2.5 (from January 2002 till December 2004)
c                ó¬   • [         R                  5       U l        [        R                  " S[        R
                  [        R                  -  5      U l        g)z.Build an instance of PatentUsptoGrantV2 class.r¦   N)ry   r§   r¨   r©   rª   r«   r¬   r­   r   s    r;   rB   ÚPatentUsptoGrantV2.__init__A  s4   € ô *×7Ñ7Ó9ˆŒÜ—z’zÐ":¼B¿L¹LÌ2Ï9É9Ñ<TÓUˆ�r=   c                óÎ  •  [        5       nUR                  [        S5        UR                  [        S5        SUl        SUl        SUl        UR                  U R                  5        UR                  [        U5      5        U R                  R                   nU(       Ga  ["        R$                  " U R&                  U5      n/ n[        R)                  S[+        U5       S35        U HC  n	[-        [.        S-   U	-   5      n
 U
R                  5       nU(       a  UR1                  U5        MC  ME     [+        U5      [+        UR2                  5      :w  a:  [        R                  S	[+        UR2                  5       S
[+        U5       S35        U$ [5        U5       H  u  pÞXæR2                  U   l        M     U$ ! [         a"  n[        R                  SU 35         S nAg S nAf[         a"  n[        R                  SU 35         S nAg S nAf[         a"  n[        R                  SU 35         S nAg S nAff = f! [         a$  n[        R                  SU 35         S nAGMx  S nAff = fr°   r²   rÂ   s                  r;   r’   ÚPatentUsptoGrantV2.parseG  ó  € ð	Ü “]ˆFØ×ÑÔ2°EÔ:Ø×ÑÔ2°EÔ:Ø %ˆFÔØ%*ˆFÔ"Ø%*ˆFÔ"Ø×$Ñ$ T§\¡\Ô2Ø�L‰Lœ .Ó1Ô2ð �l‰l×ÑˆßÜŸš D§L¡L°.ÓAˆJØ-/ˆMÜ�J‰J˜¤ J£Ð0Ð0SÐTÔUÛ#�Ü'¬¸$Ñ(>ÀÑ(FÓG�ðNØ!-×!3Ñ!3Ó!5�JÞ!Ø%×,Ñ,¨ZÖ8ñ "ñ	 $ô �=Ó!¤S¨¯©£_Ó4Ü—
‘
Ø,¬S°·±«_Ð,=ð >Ü˜MÓ*Ð+Ð+;ð=ôð ˆ
ô "+¨=Ö!9‘I�CØ+/—J‘J˜s‘OÖ(ñ ":ð ˆ
øôE !ó 	Ü�J‰JÐJÈ7È)ÐTÔUÜûÜ"ó 	Ü�J‰JØMÈkÈ]Ð[ôô ûÜó 	Ü�J‰JÐEÀcÀUÐKÔLÜûð	ûô !ó NÜ—J‘JÐ!@ÀÀÐL×MÓMûðNúrÍ   c                  óè   • \ rS rSr% SrSrS\S'   SrS\S'   \ " S S	\	5      5       r
\SS
 j5       r\S 5       r\S 5       r\S 5       r\S 5       r      SS jrSS jrSS jrSS jrSS jrSrg)Ú PatentUsptoGrantV2.PatentHandleriv  rÐ   ÚPATDOCr(   rÒ   zWhat is claimed is:ÚCLAIM_STATEMENTc                  óx   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSr\SS j5       r\SS j5       rSrg)Ú(PatentUsptoGrantV2.PatentHandler.Elementi|  rÕ   )ÚPDATT)ÚSDOABF)ÚSDOCLF)ÚB540F)ÚCLF)ÚCLMF)ÚPARAT)ÚHT)ÚDRWDESCF)ÚSPF)ÚSBF)ÚITALICF)ÚCWUFrß   c                ó<   • [         R                  U 5      nXl        U$ r1   r2   r6   s       r;   r4   Ú0PatentUsptoGrantV2.PatentHandler.Element.__new__�  rå   r=   c                ó   • X l         g r1   rç   ré   s      r;   rB   Ú1PatentUsptoGrantV2.PatentHandler.Element.__init__•  rë   r=   rç   NrD   rì   )rH   rI   rJ   rK   rL   rx  r-   rz  rí   r/   rî   rð   rñ   rô   rõ   rö   ÚSTYLE_ITALICr„  ró   r   r4   rB   rM   rN   r=   r;   rø   rw  |  sr   † áWàˆDØ'ˆHØ$ˆEØ#ˆEØ"ˆFØ"ˆEØ&ˆIØ!ˆGØ)ˆHØ -ÐØ+ˆOØ,ˆLØ ˆCØ$ˆEàóó ðð
 ó-ó ó-r=   rø   c                ó„   • SU l         SU l        SS0U l        U   U   U   U   U   U R                  5         [	        5       U l        grú   rü   r   s    r;   rB   Ú)PatentUsptoGrantV2.PatentHandler.__init__™  r  r=   c                ón   • XR                   :X  a  [        SS9U l        SU l        U R	                  X5        gr  )rÒ   r   r–   r  r  r  s      r;   r  Ú-PatentUsptoGrantV2.PatentHandler.startElement¬  s1   € ð ×,Ñ,Ó,Ü*°Ñ7�”Ø�”	Ø×+Ñ+¨CÕ<r=   c                ó¢  • U R                   (       Ga=  U R                   S   nU R                  U5      nUR                  (       Ga
  U R                  R	                  SU S35      n[
        R                  " U5      nXT:X  a  [        R                  SU-   5        gUU R                  R                  U R                  R                  4;   aq  [        U R                   5      S:  a  gU R                   S   nU R                  U5      nUR                  (       a%  U =R                  U R                  XR5      -  sl        ggU =R                  U-  sl        gggr  r  r  s           r;   r   Ú.PatentUsptoGrantV2.PatentHandler.skippedEntity¹  ó  € ð �}�}ˆ}ØŸ-™-¨Ñ+�ØŸ,™, wÓ/�Ø—?—?�?Ø"Ÿo™o×DÑDÀqÈÈÈaÀ[ÓQ�GÜ $§¢¨gÓ 6�IØ Ó+ÜŸ
™
Ð#?À$Ñ#FÔGØàØŸ™×6Ñ6ØŸ™×4Ñ4ð#ó ô
 ˜tŸ}™}Ó-°Ó1Ø"Ø%)§]¡]°2Ñ%6˜
Ø!%§¡¨jÓ!9˜Ø!Ÿ>Ÿ>Ø ŸIšI¨×):Ñ):¸9Ó)NÑNžIð *ð Ÿ	š	 YÑ.ž	ð' #ð r=   c                ód   • XR                   :X  a  U R                  5         U R                  U5        gr#  )rÒ   rþ   r$  r%  s     r;   r&  Ú+PatentUsptoGrantV2.PatentHandler.endElementÛ  s*   € ð ×,Ñ,Ó,Ø× Ñ Ô"Ø×(Ñ(¨Õ-r=   c                óø  • U R                   (       aé  U R                   S   nU R                  U5      nUR                  (       a·  UU R                  R                  U R                  R                  4;   aq  [        U R                   5      S:  a  gU R                   S   nU R                  U5      nUR                  (       a%  U =R                  U R                  X5      -  sl        ggU =R                  U-  sl        gggr)  r*  r+  s         r;   r-  Ú+PatentUsptoGrantV2.PatentHandler.charactersæ  r/  r=   c                ó&  • XR                    Vs/ s H  o3R                  PM     sn;   aã  XR                   R                  R                  :X  a¤  U R                   R                  R                  U R                  ;  av  UR                  SS5      nUR                  5       (       a  [        U5      OSn[        U R                  R                  5       5      nUS-   U R                  ;   a  US-   OUU l        U R                  R                  U5        g g s  snf )NÚLVLrS   rû   )rø   r8   rñ   rz  r  r4  r5  r6  r7  rý   r8  r@   r¾   r9  s          r;   r  Ú;PatentUsptoGrantV2.PatentHandler._start_registered_elementsÿ  sÐ   € ð ·,²,Ó?²,¨—|”|±,Ñ?Ó?àŸ<™<×/Ñ/×5Ñ5Ó5ØŸ™×*Ñ*×0Ñ0¸¿¹ÓEà&0§n¡n°U¸BÓ&?�JØ8B×8LÑ8L×8NÑ8N¤S¨¤_ÐTU�IÜ # D§L¡L×$5Ñ$5Ó$7Ó 8�Ið +4°a©-¸D¿L¹LÓ)H˜	 AšÈið ”Jð —‘×$Ñ$ SÕ)ð @ùÒ?s   �Dc                óð   • XR                    Vs/ s H  o"R                  PM     sn;   aH  U R                  (       a6  U R                  R                  5       nU R	                  X0R
                  5        g g g s  snf r1   ©rø   r8   r  r@  rA  r  ©rA   r	  ÚelmrB  s       r;   r$  Ú8PatentUsptoGrantV2.PatentHandler._end_registered_element  óS   € Ø¯LªLÓ9ªL S—y”y©LÑ9Ó9¸d¿m¿mØ"Ÿm™m×/Ñ/Ó1�Ø×"Ñ" ;·	±	Õ:ð ?LÐ9ùÒ9ó   �A3c                óZ  • U(       a  U R                   (       d  g XR                  R                  R                  :X  Ga  U(       Ga
  U R                  (       d  SU l        g U R                  S   nU R                  X#5      nU R                  R                  R                  U R                  ;   a‡  UR                  5       (       ar  UR                  5       nU R                   R                  U R                  U R                     US9U R                  U R                  S-   '   U =R                  S-  sl        GOU R                  R                  R                  U R                  ;   a  U =R                  U-  sl        GOÏU R                  R                  R                  U R                  ;   a  U =R                  U-  sl        GOŠU R                  R                   R                  U R                  ;   ar  U R                  R                  R                  U R                  ;  aD  U R                  R                  R                  U R                  ;  a  U =R"                  U-  sl        OêU R                  R$                  R                  U R                  ;   a¼  U R                  R&                  R                  U R                  ;  aŽ  UR                  5       (       ay  U R                   R)                  UR                  5       U R                  U R                  U R                     S9U R                  U R                  S-   '   U =R                  S-  sl        SU l        g XR                  R                  R                  :X  aZ  U R                  R                  5       (       a;  U R*                  R-                  U R                  R                  5       5        SU l        g XR                  R.                  R                  :X  aÓ  U R*                  (       aÂ  [0        R.                  R                  n[0        R.                  R                  U R                  ;   a  [0        R.                  R                  OSnU R                   R)                  UUU R                  U   S9nU R*                   H+  nU R                   R3                  [4        R                   X'S9  M-     g XR                  R                  R                  :X  aè  U R                  R                  5       (       aÉ  U R                  R                  5       n[0        R                  R                  n[0        R                  R                  U R                  ;   a  [0        R                  R                  OSnU R                   R)                  UUU R                  U   S9n	U R                   R3                  [4        R                   X‰S9  g XR                  R                   R                  :X  aÛ  U R"                  R                  5       n
U
(       ao  U R                  R                  R                  U R                  ;  aA  U R                   R3                  [4        R                   U
U R                  U R                     S9  OCU R                  R                  R                  U R                  ;   a  U =R                  S-  sl        SU l        g XR                  R6                  R                  :X  a=  [9        S	S	/ S
9nU R                   R;                  UU R                  U R                     S9  g g )NrS   r  rE  rû   rJ  rF  rG  r1  r   rK  rO  )r–   rø   rx  r8   r  r  r  rí   r3  rP  rý   r@   r-   rÖ   rî   rÙ   rð   Ú	paragraphrñ   rz  rQ  r×   r¾   r/   r+   rR  r   ró   r   rS  )rA   r”   r  ÚwrapperÚtitlerT  rU  rW  rÖ   rV  r   rX  s               r;   rA  Ú.PatentUsptoGrantV2.PatentHandler._add_property  s  € Þ˜tŸxŸxØØ—|‘|×(Ñ(×.Ñ.Ô.·4Ø—}—}Ø "�D”IØàŸ-™-¨Ñ+�Ø×(Ñ(¨Ó7�à—<‘<×%Ñ%×+Ñ+¨t¯}©}Ó<ÀÇÁÇÁØ ŸJ™J›L�EØ37·8±8×3EÑ3EØ#Ÿ|™|¨D¯J©JÑ7Ø"ð 4Fð 4�D—L‘L §¡¨a¡Ñ0ð —J’J !‘O—Jà—\‘\×*Ñ*×0Ñ0°D·M±MÓAØ—M’M TÑ)—Mà—\‘\×'Ñ'×-Ñ-°·±Ó>Ø—J’J $Ñ&—Jð —L‘L×*Ñ*×0Ñ0°D·M±MÓAØŸ™×*Ñ*×0Ñ0¸¿¹ÓEØŸ™×-Ñ-×3Ñ3¸4¿=¹=ÓHà—N’N dÑ*–Nð —L‘L×(Ñ(×.Ñ.°$·-±-Ó?ØŸ™×*Ñ*×0Ñ0¸¿¹ÓEØŸ
™
Ÿ™à37·8±8×3GÑ3GØ!ŸZ™Z›\Ø"Ÿj™jØ#Ÿ|™|¨D¯J©JÑ7ð 4Hð 4�D—L‘L §¡¨a¡Ñ0ð
 —J’J !‘O•Jà�•	àŸ™×+Ñ+×1Ñ1Ó1°d·j±j×6FÑ6F×6HÑ6HØ—‘×"Ñ" 4§:¡:×#3Ñ#3Ó#5Ô6Ø�•
àŸ™×,Ñ,×2Ñ2Ó2°t·{·{Ü,×3Ñ3×9Ñ9�ô %×+Ñ+×1Ñ1°T·\±\ÓAô "×(Ñ(×.Ò.àð ð
 #Ÿh™h×2Ñ2Ø Ø'ØŸ<™<¨Ñ6ð 3ð �ð
 !ŸKœK�DØ—H‘H×%Ñ%Ü*×4Ñ4¸4ð &ó ò (ð
 Ÿ™×.Ñ.×4Ñ4Ó4¸¿¹×9LÑ9L×9NÑ9NØŸ=™=×.Ñ.Ó0�Ü,×5Ñ5×;Ñ;�ô %×-Ñ-×3Ñ3°t·|±|ÓCô "×*Ñ*×0Ò0àð ð
 !%§¡× 4Ñ 4Ø Ø'ØŸ<™<¨Ñ6ð !5ð !�ð
 —‘×!Ñ!Ü&×0Ñ0°xð "ò ð Ÿ™×/Ñ/×5Ñ5Ó5Ø ŸN™N×0Ñ0Ó2�	Þ §¡×!3Ñ!3×!9Ñ!9ÀÇÁÓ!NØ—H‘H×%Ñ%Ü*×4Ñ4Ø&Ø#Ÿ|™|¨D¯J©JÑ7ð &ò ð
 —\‘\×'Ñ'×-Ñ-°·±Ó>à—J’J #Ñ%•JØ!#�•àŸ™×+Ñ+×1Ñ1Ó1ä'°¸QÈBÑO�Ø—‘×"Ñ"Ø$ØŸ<™<¨¯
©
Ñ3ð #ò ð 2r=   c                óþ  • UnX R                   R                  R                  :X  a1  [        R                  " U R
                  R                  U5      5      nU$ X R                   R                  R                  :X  a1  [        R                  " U R
                  R                  U5      5      nU$ X R                   R                  R                  :X  a/  [        R                  " U R
                  R                  U5      5      nU$ r[  )rø   rõ   r8   r  r  r   r\  rö   r]  r‰  Úget_math_italicr^  s       r;   r  Ú-PatentUsptoGrantV2.PatentHandler._apply_style€  s¼   € ð ˆIàŸL™L×:Ñ:×@Ñ@Ó@Ü ŸMšM¨$¯/©/×*IÑ*IÈ$Ó*OÓP�	ð Ðð Ÿl™l×:Ñ:×@Ñ@Ó@Ü ŸMšM¨$¯/©/×*GÑ*GÈÓ*MÓN�	ð Ðð Ÿl™l×7Ñ7×=Ñ=Ó=Ü ŸMšM¨$¯/©/×*IÑ*IÈ$Ó*OÓP�	àÐr=   c                óX   • SU l         / U l        SU l        / U l        SU l        SU l        grc  )r  r  rÙ   r×   r   rÖ   r   s    r;   rþ   Ú,PatentUsptoGrantV2.PatentHandler._clean_data—  s,   € àˆDŒIØˆDŒMØˆDŒJØˆDŒKØˆDŒNØˆD�Mr=   )
rÖ   rÙ   r×   r–   r@   r   rý   r  r   r  Nrš   rf  rg  rh  ri  )rH   rI   rJ   rK   rL   rÒ   rj  ru  r   r   rø   r   rB   r  r   r&  r-  r  r$  rA  r  rþ   rM   rN   r=   r;   r§   rs  v  sË   ‡ Ù6à(0Ð˜:Ó0Ø&;ˆ˜Ó;à	ô	-�dó 	-ó 
ð	-ð8 
ó	+ó 
ð	+ð$ 
ñ
	=ó 
ð
	=ð 
ñ	/ó 
ð	/ðB 
ñ	.ó 
ð	.ð 
ñ	-ó 
ð	-ð0	*Øð	*Ø(6ð	*àô	*ô"	;ô
i	ôV	÷.	r=   r§   rk  Nrš   r¢   ©rH   rI   rJ   rK   rL   r   rB   r’   r   r§   rM   rN   r=   r;   ry   ry   :  s@   † ñð óVó ðVð
 ó,ó ð,ô\h˜÷ hr=   ry   c                  ó”   • \ rS rSrSr\ " S S\5      5       r\ " S S\5      5       r\	SS j5       r
SS jrSS	 jrSS
 jrSS jrSrg)rw   i¡  z¨Parser of patents documents from the US Patent Office (grants APS).

The compatible format is:
- Patent Grant Full Text Data/APS (from January 1976 till December 2001)
c                  ó,   • \ rS rSrSrSrSrSrSrSr	Sr
g	)
ÚPatentUsptoGrantAps.Sectioni¨  z-Represent a section in a patent APS document.ÚABSTÚBSUMÚDETDÚCLMSÚDRWDrN   N)rH   rI   rJ   rK   rL   r-   ÚSUMMARYÚDETAILSr/   rô   rM   rN   r=   r;   ÚSectionr¬  ¨  s   † á;àˆØˆØˆØˆØ‹r=   r´  c                  ó\   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrg)ÚPatentUsptoGrantAps.Fieldi²  z+Represent a field in a patent APS document.ÚWKUÚTTLÚPARÚPA1ÚPA2ÚPA3ÚPALÚPACÚNUMÚNAMÚICLÚISDÚAPDÚPNOÚAPNÚAPTÚCNTrN   N)rH   rI   rJ   rK   rL   Ú
DOC_NUMBERrí   rð   ÚPARAGRAPH_1ÚPARAGRAPH_2ÚPARAGRAPH_3ÚTEXTÚCAPTIONÚNUMBERÚNAMEÚIPCÚISSUEDÚFILEDÚPATENT_NUMBERÚAPPLICATION_NUMBERÚAPPLICATION_TYPEÚCOUNTRYrM   rN   r=   r;   ÚFieldr¶  ²  s\   † á9àˆ
ØˆØˆ	ØˆØˆØˆØˆØˆØˆØˆØˆØˆØˆØˆØ"ÐØ ÐØ‹r=   r×  c                ó2   • SU l         SU l        SS0U l        g)z/Build an instance of PatentUsptoGrantAps class.Nrû   ©r–   r@   rý   r   s    r;   rB   ÚPatentUsptoGrantAps.__init__È  s   € ð ,0ˆŒà"#ˆŒ
à;<¸d¸)ˆ�r=   c                óF  • U R                   (       a+  U R                  U R                     nUb  UR                  O/ nOgU R                   R                   Vs/ s H2  n[        U[        5      (       d  M  UR                  5       U;   d  M0  UPM4     nnU(       a  US   $ gs  snf )z‡Get the last text item at the current document level.

Returns:
    The text item or None, if the current level parent has no children.Nr  )r–   rý   r@   ÚchildrenÚtextsr]   r   Úget_ref)rA   r  rÜ  rq   Ú	text_lists        r;   Úget_last_text_itemÚ&PatentUsptoGrantAps.get_last_text_itemÑ  sŽ   € ð
 �8�8Ø—\‘\ $§*¡*Ñ-ˆFØ*0Ñ*<�v—’À"‰Hàð Ÿ™Ÿšó%
â&�Ü˜$¤×)ó à.2¯l©l«nÀÑ.H÷ Ù&ð 	ð %
ö Ø˜R‘=Ð àùò%
s   ÁBÁ3BÂ	Bc                ó6  • U R                   c  gXR                  R                  R                  :X  a  [        R                  nO5XR                  R
                  R                  :X  a  [        R
                  nOgUR                  U R                  ;   a  UR                  OSU l        U R                   R                  UR                  U R                  U R                  U R                     S9U R                  U R                  S-   '   U =R                  S-  sl        g)zÚStore the section heading in the docling document.

Only the predefined sections from PatentHeading will be handled.
The other sections are created by the Field.CAPTION field.

Args:
    section: A patent section name.Nrû   rF  )	r–   r´  r-   r8   r+   r/   r@   rý   rQ  )rA   ÚsectionrÝ   s      r;   Ústore_sectionÚ!PatentUsptoGrantAps.store_sectionæ  sÉ   € ð �8‰8ÑØØŸ™×-Ñ-×3Ñ3Ó3Ü#×,Ñ,‰GØŸ™×+Ñ+×1Ñ1Ó1Ü#×*Ñ*‰Gàà&-§m¡m°t·|±|Ó&C�W—]’]ÈˆŒ
Ø'+§x¡x×';Ñ';Ø�M‰MØ—*‘*Ø—<‘< §
¡
Ñ+ð (<ð (
ˆ�‰�T—Z‘Z !‘^Ñ$ð
 	�
Š
�a‰Ž
r=   c                óN  • U R                   (       a5  U(       a.  U[        R                   Vs/ s H  oDR                  PM     sn;  a  gX R                  R                  R                  :X  aa  U R                   R                  U R                  U R                     US9U R                  U R                  S-   '   U =R                  S-  sl        gX R                  R                  R                  :X  a”  XR                  R                  R                  :X  aq  U R                  5       nU(       a  U=R                  SU-   -  sl        gU R                   R                  [        R                  UU R                  U R                     S9  gX R                  R                   R                  :X  ad  XR                  R"                  R                  :X  aA  U R                   R                  [        R                  SU R                  U R                     S9  gUU R                  R                  R                  U R                  R$                  R                  U R                  R&                  R                  U R                  R(                  R                  4;   a¾  XR                  R"                  R                  :X  a›  U R                  5       nUc@  U R                   R                  [        R                  SU R                  U R                     S9nU=R                  UR                  (       a  SUR+                  5        3OUR+                  5       -  sl        gX R                  R,                  R                  :X  Ga  UU R                  R.                  R                  U R                  R0                  R                  U R                  R2                  R                  4;   a©  [4        R                  nUR                  U R                  ;   a  UR                  OSU l        U R                   R7                  UU R                  U R                  U R                     S9U R                  U R                  S-   '   U =R                  S-  sl        gUU R                  R                  R                  U R                  R$                  R                  U R                  R&                  R                  U R                  R(                  R                  4;   a¥  UU R                  R.                  R                  U R                  R0                  R                  U R                  R2                  R                  4;   aA  U R                   R                  [        R                  UU R                  U R                     S9  gggs  snf )zªStore the key value within a document section in the docling document.

Args:
    section: A patent section name.
    field: A field name.
    value: A field value name.
NrE  rû   r1  rG  rS   rF  )r–   rw   r×  r8   rí   rP  rý   r@   rÌ  r´  r-   rà  r  rR  r   rð   rÎ  r/   rÉ  rÊ  rË  r3  rÍ  r²  r³  rô   r+   rQ  )rA   rã  Úfieldr8   rq   Ú	abst_itemÚ
last_claimÚ	head_items           r;   Ústore_contentÚ!PatentUsptoGrantAps.store_content   s  € ð ——ÞØÔ4G×4MÒ4MÓNÒ4M¨DŸZœZÑ4MÑNÓNàà—J‘J×$Ñ$×*Ñ*Ó*Ø+/¯8©8×+=Ñ+=Ø—|‘| D§J¡JÑ/°eð ,>ð ,ˆD�L‰L˜Ÿ™ a™Ñ(ð �JŠJ˜!‰OŽJà—j‘j—o‘o×+Ñ+Ó+°¿<¹<×;PÑ;P×;VÑ;VÓ0VØ×/Ñ/Ó1ˆIÞØ—’ #¨¡+Ñ-–à—‘×!Ñ!Ü&×0Ñ0ØØŸ<™<¨¯
©
Ñ3ð "ò ð —j‘j×'Ñ'×-Ñ-Ó-°'¿\¹\×=PÑ=P×=VÑ=VÓ2VØ�H‰H×ÑÜ"×,Ñ,ØØ—|‘| D§J¡JÑ/ð ò ð à—
‘
×$Ñ$×*Ñ*Ø—
‘
×&Ñ&×,Ñ,Ø—
‘
×&Ñ&×,Ñ,Ø—
‘
×&Ñ&×,Ñ,ð	óð Ÿ<™<×.Ñ.×4Ñ4Ó4à×0Ñ0Ó2ˆJØÑ!Ø!ŸX™X×.Ñ.Ü&×0Ñ0ØØŸ<™<¨¯
©
Ñ3ð /ð �
ð �OŠO°j·o·o  5§;¡;£= /Ñ2È5Ï;É;Ë=ÑXŽOà—j‘j×(Ñ(×.Ñ.Ô.°7Ø�L‰L× Ñ ×&Ñ&Ø�L‰L× Ñ ×&Ñ&Ø�L‰L×!Ñ!×'Ñ'ð?
ó 4
ô &×.Ñ.ˆIØ,5¯O©O¸t¿|¹|Ó,K˜ŸšÐQRˆDŒJØ+/¯8©8×+?Ñ+?ØØ—j‘jØ—|‘| D§J¡JÑ/ð ,@ð ,ˆD�L‰L˜Ÿ™ a™Ñ(ð
 �JŠJ˜!‰OŽJàØ�J‰J× Ñ ×&Ñ&Ø�J‰J×"Ñ"×(Ñ(Ø�J‰J×"Ñ"×(Ñ(Ø�J‰J×"Ñ"×(Ñ(ð	
ó 
ð
 Ø�L‰L× Ñ ×&Ñ&Ø�L‰L× Ñ ×&Ñ&Ø�L‰L×!Ñ!×'Ñ'ð
ó 
ð
 �H‰H×ÑÜ"×,Ñ,ØØ—|‘| D§J¡JÑ/ð ò ð
ð
ùò Os   ¬V"c                ó¨  • [        SS9=U l        U l        SnSnSnSnUR                  5        Hö  n[        R                  " SUSS9nU(       aE  U(       a>  [        U5      S:X  d  [        U5      S:X  a   US   (       a  U R                  X#U5        SnSn[        U5      S:X  a/  US   nU R                  U5        [        R                  S	U 35        ON[        U5      S:X  a?  US   (       a  US   nUS   nO*[        R                  " S
US   5      (       d  USUS   -   -  nUS-  nMø     U(       a  U(       a  U R                  X#U5        U R                  $ )NrŽ   r  rS   r   z\s{2,}rû   )Úmaxsplitr.   zParsing section z^##STR\d+##$r1  )r   r–   Ú
splitlinesr©   Úsplitr¼   rë  rä  r¸   r»   Úmatch)rA   r[   rã  Úkeyr8   Úline_numrh   Úcolss           r;   r’   ÚPatentUsptoGrantAps.parseZ  s3  € Ü-°6Ñ:Ð:ˆŒ�4”8ØˆØˆØˆØˆØ"×-Ñ-Ö/ˆDÜ—8’8˜I t°aÑ8ˆDÞ–u¤# d£)¨q£.´S¸³YÀ!³^ÈÈQÏØ×"Ñ" 7°Ô7Ø�Ø�Ü�4‹y˜A‹~Ø˜q™'�Ø×"Ñ" 7Ô+Ü—
‘
Ð-¨g¨YÐ7Õ8Ü�T“˜a“Ø˜—7Ø˜q™'�CØ  ™G‘EÜŸš /°4¸±7×;Ñ;Ø˜S 4¨¡7™]Ñ*�EØ˜‰MŠHñ! 0ö" –5Ø×Ñ˜w¨UÔ3ð �x‰xˆr=   rÙ  Nrš   )rF   zTextItem | None)rã  rE   rF   rG   )rã  rE   rç  rE   r8   rE   rF   rG   r¢   )rH   rI   rJ   rK   rL   r   r   r´  r×  r   rB   rà  rä  rë  r’   rM   rN   r=   r;   rw   rw   ¡  si   † ñð ô�$ó ó ðð ô�ó ó ðð* óDó ðDôô*ô4X÷tr=   rw   c                  óV   • \ rS rSrSr\S	S j5       r\S
S j5       r " S S\5      r	Sr
g)r{   ix  z¿Parser of patent documents from the US Patent Office (applications v1.x)

The compatible format is:
- Patent Application Full Text Data/XML Version 1.x (from March 2001 till December
  2004)
c                ó¬   • [         R                  5       U l        [        R                  " S[        R
                  [        R                  -  5      U l        g)z,Build an instance of PatentUsptoAppV1 class.r¦   N)r{   r§   r¨   r©   rª   r«   r¬   r­   r   s    r;   rB   ÚPatentUsptoAppV1.__init__€  s4   € ô (×5Ñ5Ó7ˆŒÜ—z’zÐ":¼B¿L¹LÌ2Ï9É9Ñ<TÓUˆ�r=   c                óÎ  •  [        5       nUR                  [        S5        UR                  [        S5        SUl        SUl        SUl        UR                  U R                  5        UR                  [        U5      5        U R                  R                   nU(       Ga  ["        R$                  " U R&                  U5      n/ n[        R)                  S[+        U5       S35        U HC  n	[-        [.        S-   U	-   5      n
 U
R                  5       nU(       a  UR1                  U5        MC  ME     [+        U5      [+        UR2                  5      :w  a:  [        R                  S	[+        UR2                  5       S
[+        U5       S35        U$ [5        U5       H  u  pÞXæR2                  U   l        M     U$ ! [         a"  n[        R                  SU 35         S nAg S nAf[         a"  n[        R                  SU 35         S nAg S nAf[         a"  n[        R                  SU 35         S nAg S nAff = f! [         a$  n[        R                  SU 35         S nAGMx  S nAff = fr°   r²   rÂ   s                  r;   r’   ÚPatentUsptoAppV1.parse†  rq  rÍ   c                  óÖ   • \ rS rSr% SrSrS\S'   \ " S S\5      5       r	\
SS j5       r\
S	 5       r\
S
 5       r\
S 5       r\
S 5       r      SS jrSS jrSS jrSS jrS rSrg)ÚPatentUsptoAppV1.PatentHandleriµ  rÐ   ru   r(   rÑ   c                  ót   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSr\SS j5       r\SS j5       rSrg)Ú&PatentUsptoAppV1.PatentHandler.Elementiº  rÕ   )zbrief-description-of-drawingsF)zsubdoc-abstractF)ztitle-of-inventionT)zsubdoc-claimsFrØ   rÚ   )ÚnumberF)r   TrÜ   )ÚsuperscriptT)Ú	subscriptTrß   )zmath-cwuFc                ó<   • [         R                  U 5      nXl        U$ r1   r2   r6   s       r;   r4   Ú.PatentUsptoAppV1.PatentHandler.Element.__new__Î  rå   r=   c                ó   • X l         g r1   rç   ré   s      r;   rB   Ú/PatentUsptoAppV1.PatentHandler.Element.__init__Ô  rë   r=   rç   NrD   rì   )rH   rI   rJ   rK   rL   rô   r-   rí   r/   rî   rï   rÎ  rð   rñ   rõ   rö   ró   ÚMATHr   r4   rB   rM   rN   r=   r;   rø   rþ  º  sm   † áWà=ˆHØ/ˆHØ.ˆEØ+ˆFØ"ˆEØ+ˆJØ&ˆFØ)ˆIØ%ˆGØ 3ÐØ/ˆOà"ˆEà$ˆDàóó ðð
 ó-ó ó-r=   rø   c                ó„   • SU l         SU l        SS0U l        U   U   U   U   U   U R                  5         [	        5       U l        grú   rü   r   s    r;   rB   Ú'PatentUsptoAppV1.PatentHandler.__init__Ø  r  r=   c                ón   • XR                   :X  a  [        SS9U l        SU l        U R	                  X5        gr  )rÑ   r   r–   r  r  r  s      r;   r  Ú+PatentUsptoAppV1.PatentHandler.startElementë  s1   € ð ×*Ñ*Ó*Ü*°Ñ7�”Ø�”	Ø×+Ñ+¨CÕ<r=   c                ó¢  • U R                   (       Ga=  U R                   S   nU R                  U5      nUR                  (       Ga
  U R                  R	                  SU S35      n[
        R                  " U5      nXT:X  a  [        R                  SU-   5        gUU R                  R                  U R                  R                  4;   aq  [        U R                   5      S:  a  gU R                   S   nU R                  U5      nUR                  (       a%  U =R                  U R                  XR5      -  sl        ggU =R                  U-  sl        gggr  r  r  s           r;   r   Ú,PatentUsptoAppV1.PatentHandler.skippedEntityø  r�  r=   c                ód   • XR                   :X  a  U R                  5         U R                  U5        gr#  )rÑ   rþ   r$  r%  s     r;   r&  Ú)PatentUsptoAppV1.PatentHandler.endElement  s*   € ð ×*Ñ*Ó*Ø× Ñ Ô"Ø×(Ñ(¨Õ-r=   c                óø  • U R                   (       aé  U R                   S   nU R                  U5      nUR                  (       a·  UU R                  R                  U R                  R                  4;   aq  [        U R                   5      S:  a  gU R                   S   nU R                  U5      nUR                  (       a%  U =R                  U R                  X5      -  sl        ggU =R                  U-  sl        gggr)  r*  r+  s         r;   r-  Ú)PatentUsptoAppV1.PatentHandler.characters%  r/  r=   c                ó
  • XR                    Vs/ s H  o3R                  PM     sn;   GaT  XR                   R                  R                  :X  a|  U R                  (       ak  U R                  S   U:X  aX  U R                  R                  5       (       a9  U =R                  SU R                  R                  S5      -   -  sl        SU l        O™XR                   R                  R                  :X  av  UR                  SS5      nUR                  5       (       a  [        U5      OSn[        U R                  R                  5       5      nUS-   U R                  ;   a  US-   OUU l        U R                  R                  U5        g g s  snf )Nr  r1  r±   rS   Úlvlrû   r2  r9  s          r;   r  Ú9PatentUsptoAppV1.PatentHandler._start_registered_elements>  s  € ð ·,²,Ó?²,¨—|”|±,Ñ?Ô?ð Ÿ<™<×2Ñ2×8Ñ8Ó8ØŸŸØŸ™ bÑ)¨SÓ0ØŸ	™	Ÿ™×)Ñ)à—J’J #¨¯	©	¯©¸Ó(=Ñ"=Ñ=•JØ "�D•IØŸL™L×0Ñ0×6Ñ6Ó6Ø&0§n¡n°U¸BÓ&?�JØ8B×8LÑ8L×8NÑ8N¤S¨¤_ÐTU�IÜ # D§L¡L×$5Ñ$5Ó$7Ó 8�Ið +4°a©-¸D¿L¹LÓ)H˜	 AšÈið ”Jð —‘×$Ñ$ SÕ)ð' @ùÒ?s   �F c                óð   • XR                    Vs/ s H  o"R                  PM     sn;   aH  U R                  (       a6  U R                  R                  5       nU R	                  X0R
                  5        g g g s  snf r1   r™  rš  s       r;   r$  Ú6PatentUsptoAppV1.PatentHandler._end_registered_elementV  r�  rž  c                óT  • U(       a  U R                   (       d  g XR                  R                  R                  :X  aŽ  UR	                  5       nU(       ao  U R                   R                  U R                  U R                     [        R                  US9U R                  U R                  S-   '   U =R                  S-  sl        SU l	        g XR                  R                  R                  :X  aé  U R                  R	                  5       nU(       aÀ  [        R                  R                  n[        R                  R                  U R                  ;   a  [        R                  R                  OSnU R                   R                  UUU R                  U   S9nU R                   R                  [        R                  U R                  US9  SU l        SU l	        g XR                  R                  R                  :X  a=  U(       a.  U =R                   U R                  R	                  S5      -  sl        SU l	        g XR                  R"                  R                  :X  aD  U R                   R	                  5       nU(       a  U R$                  R'                  U5        SU l        g XR                  R(                  R                  :X  aÓ  U R$                  (       aÂ  [        R(                  R                  n[        R(                  R                  U R                  ;   a  [        R(                  R                  OSnU R                   R                  UUU R                  U   S9n	U R$                   H+  nU R                   R                  [        R                  X)S9  M-     g UU R                  R                  R                  U R                  R*                  R                  4;   Gap  U(       aW  U R                  R                  R                  U R,                  ;   a)  U R                  (       a  U R                  U-   OUU l        GO
UR	                  5       (       aõ  [.        R0                  " SSU5      R	                  5       nXR                  R*                  R                  :X  al  U R                   R                  UU R                  U R                  U R                     S	9U R                  U R                  S-   '   U =R                  S-  sl        O@U R                   R                  [        R                  UU R                  U R                     S9  SU l	        g XR                  R2                  R                  :X  a=  [5        S
S
/ S9n
U R                   R7                  U
U R                  U R                     S9  g g )N)r  rH  r  rû   rS   rF  rG  r±   rI  r1  rJ  r   rK  rO  )r–   rø   rí   r8   r3  rR  rý   r@   r   r  r-   rÖ   r+   rQ  rð   rï   rÙ   rî   r×   r¾   r/   rñ   r  r©   rá   ró   r   rS  )rA   r”   r  r¢  rÖ   rT  rU  rV  rÙ   rW  rX  s              r;   rA  Ú,PatentUsptoAppV1.PatentHandler._add_property[  s2  € Þ˜tŸxŸxØà—|‘|×)Ñ)×/Ñ/Ó/ØŸ
™
›�ÞØ37·8±8×3DÑ3DØ#Ÿ|™|¨D¯J©JÑ7Ü*×0Ñ0Ø"ð 4Eð 4�D—L‘L §¡¨a¡Ñ0ð
 —J’J !‘O•JØ�•	ØŸ™×.Ñ.×4Ñ4Ó4ØŸ=™=×.Ñ.Ó0�ÞÜ#0×#9Ñ#9×#?Ñ#?�Lô )×1Ñ1×7Ñ7¸4¿<¹<ÓGô &×.Ñ.×4Ò4àð "ð
 %)§H¡H×$8Ñ$8Ø$Ø+Ø#Ÿ|™|¨MÑ:ð %9ð %�Mð
 —H‘H×%Ñ%Ü*×4Ñ4Ø!Ÿ]™]Ø,ð &ñ ð
 %'�D”MØ�•	ØŸ™×0Ñ0×6Ñ6Ó6ÞØ—J’J $§)¡)§/¡/°$Ó"7Ñ7•JØ�•	àŸ™×+Ñ+×1Ñ1Ó1ØŸ
™
×(Ñ(Ó*�ÞØ—K‘K×&Ñ& uÔ-Ø�•
àŸ™×,Ñ,×2Ñ2Ó2°t·{·{Ü,×3Ñ3×9Ñ9�ô %×+Ñ+×1Ñ1°T·\±\ÓAô "×(Ñ(×.Ò.àð ð
 #Ÿh™h×2Ñ2Ø Ø'ØŸ<™<¨Ñ6ð 3ð �ð
 !ŸKœK�DØ—H‘H×%Ñ%Ü*×4Ñ4¸4ð &ó ò (ð
 Ø—‘×&Ñ&×,Ñ,Ø—‘×$Ñ$×*Ñ*ðô ö ˜DŸL™L×1Ñ1×7Ñ7¸4¿=¹=ÓHØ>B¿m¿m T§]¡]°TÒ%9ÐQU�D–MØ—Z‘Z—\‘\ÜŸ6š6 &¨#¨tÓ4×:Ñ:Ó<�DØŸ|™|×3Ñ3×9Ñ9Ó9Ø7;·x±x×7KÑ7KØ!%Ø"&§*¡*Ø#'§<¡<°·
±
Ñ#;ð 8Lð 8˜Ÿ™ T§Z¡Z°!¡^Ñ4ð
 Ÿ
š
 a™ž
àŸ™×)Ñ)Ü".×"8Ñ"8Ø!%Ø#'§<¡<°·
±
Ñ#;ð *ñ ð
 �•	àŸ™×+Ñ+×1Ñ1Ó1ä'°¸QÈBÑO�Ø—‘×"Ñ"Ø$ØŸ<™<¨¯
©
Ñ3ð #ò ð 2r=   c                ó~  • [         R                  " U5      nX R                  R                  R                  :X  a1  [         R                  " U R
                  R                  U5      5      nU$ X R                  R                  R                  :X  a/  [         R                  " U R
                  R                  U5      5      nU$ r[  )	r  r  rø   rõ   r8   r   r\  rö   r]  r^  s       r;   r  Ú+PatentUsptoAppV1.PatentHandler._apply_style¹  sˆ   € ô Ÿš dÓ+ˆIàŸL™L×:Ñ:×@Ñ@Ó@Ü ŸMšM¨$¯/©/×*IÑ*IÈ)Ó*TÓU�	ð Ðð Ÿl™l×:Ñ:×@Ñ@Ó@Ü ŸMšM¨$¯/©/×*GÑ*GÈ	Ó*RÓS�	àÐr=   c                óJ   • / U l         SU l        SU l        / U l        SU l        grc  )r  rÖ   rÙ   r×   r  r   s    r;   rþ   Ú*PatentUsptoAppV1.PatentHandler._clean_dataÎ  s%   € àˆDŒMØˆDŒMØˆDŒJØˆDŒKØˆD�Ir=   re  Nrš   rf  rg  rh  ri  )rH   rI   rJ   rK   rL   rÑ   rj  r   r   rø   r   rB   r  r   r&  r-  r  r$  rA  r  rþ   rM   rN   r=   r;   r§   rü  µ  sÀ   ‡ Ù6à&Fˆ˜ÓFà	ô	-�dó 	-ó 
ð	-ð: 
ó	+ó 
ð	+ð$ 
ñ
	=ó 
ð
	=ð 
ñ	/ó 
ð	/ðB 
ñ	.ó 
ð	.ð 
ñ	-ó 
ð	-ð0	*Øð	*Ø(6ð	*àô	*ô0	;ô
\	ô|	õ*	r=   r§   rk  Nrš   r¢   r©  rN   r=   r;   r{   r{   x  s@   † ñð óVó ðVð
 ó,ó ð,ô\_˜÷ _r=   r{   c                  óŒ   • \ rS rSrSr " S S\5      r " S S\5      r " S S\5      rSS	 jr	SS
 jr
SS jrSS jrSS jrSrg)r½   i×  z«Provide a table parser for xml tables in USPTO patent documents.

The OASIS Open XML Exchange Table Model can be downloaded from:
http://oasis-open.org/specs/soextblx.dtd
c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚXmlTable.ColInfoiÞ  r6  Úncolsz
list[dict]ÚcolinforN   N©rH   rI   rJ   rK   rj  rM   rN   r=   r;   ÚColInfor  Þ  s   ‡ Ø‹
ØÖr=   r"  c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚXmlTable.MinColInfoTypeiâ  ú	list[int]ÚoffsetÚcolwidthrN   Nr!  rN   r=   r;   ÚMinColInfoTyper$  â  s   ‡ ØÓØÖr=   r(  c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚXmlTable.ColInfoTypeiæ  r%  Ú
cell_rangeÚ
cell_offstrN   Nr!  rN   r=   r;   ÚColInfoTyper*  æ  s   ‡ ØÓØÖr=   r-  c                óL   • SU l         SU l        SU l        [        USS9U l        g)ao  Initialize the table parser with the xml content.

Args:
    input: The xml content.

Security Note:
    This parser uses BeautifulSoup with lxml, which can be vulnerable to XXE.
    However, the input here comes from table strings extracted AFTER the main
    document has been safely parsed by defusedxml, so the content is already
    sanitized and safe to parse.
r.   r   rS   Úxml)ÚfeaturesN)Úmax_nbr_messagesÚnbr_messagesÚ
empty_textr$   Ú_soup)rA   Úinputs     r;   rB   ÚXmlTable.__init__ê  s)   € ð !"ˆÔØˆÔØˆŒÜ" 5°5Ñ9ˆ�
r=   c           	     ó   • 0 n[        U5      S:X  a  U$ [        U5       H¾  u  p4/ / / S/S.X#'   SnUS    HŽ  nUS   n[        R                  " SSU[        R                  S9n[        R                  " SSU[        R                  S9n [        U5      nX#   S   R                  U5        X#   S	   R                  U5        XW-  nM�     X#   S	   R                  U5        MÀ     / / S
.nUS   S	   US	'   / n	UR                  5        H[  u  p:[        U
S   5       H$  u  p·US:X  d  M  U	R                  U
S	   U   5        M&     [        [        U
S	   US	   -   5      5      US	'   M]     [        [        U	5      5      n	[        US	   U	-   5      US	'   [        [        US	   5      S-
  5       H)  nUS   R                  US	   US-      US	   U   -
  5        M+     UR                  5        HÍ  u  p:SnSn[        S[        US	   5      5       H¨  nUS	   U   nU
S	   U   nXõ:X  ak  [        U
S	   5      US-   :X  a  [        US	   5      US-   :”  a  US-  nMI  U
S   R                  U5        U
S   R                  U
S   S   U-   5        SnUS-  nMƒ  Xõ:  a  US-  nM�  [        R                  S5        0 s  s  $    MÏ     U$ ! [         a    [        U5      n GN9f = f)z•Create a unified range along the table groups.

Args:
    tgs: Table group column specifications.

Returns:
    Unified group column specifications.
r   )r&  r'  r+  r,  r   r'  ÚptrS   )ÚflagsÚmmr&  )r&  r'  rû   r+  r,  r  z$A USPTO XML table has wrong offsets.)r¼   rÀ   r©   rá   ÚIr6  ÚBaseExceptionÚfloatr¾   ÚitemsÚsortedÚsetÚlistÚranger¸   r»   )rA   Útgsr   ÚitgÚtgÚoffstÚinfoÚcwÚmin_colinfoÚ	offset_w0ÚcolÚicÚiÚrange_Úmin_iÚ	min_offsts                   r;   Ú_create_tg_rangeÚXmlTable._create_tg_rangeû  s  € ð 46ˆäˆs‹8�q‹=ØˆNä  –~‰GˆCàØØ Ø ˜cñ	ˆG‰Lð ˆEØ˜9œ�Ø˜*Ñ%�Ü—V’V˜D " b´·±Ñ5�Ü—V’V˜D " b´·±Ñ5�ð#Ü˜R›�Bð ‘˜ZÑ(×/Ñ/°Ô3Ø‘˜XÑ&×-Ñ-¨eÔ4Ø‘’ñ &ð ‰L˜Ñ"×)Ñ)¨%Ö0ñ' &ð* ;=È"Ñ/Mˆà '¨¡
¨8Ñ 4ˆ�HÑØˆ	ØŸ™ž‰HˆCä# C¨
¡OÖ4‘�Ø˜•7Ø×$Ñ$ S¨¡]°2Ñ%6Ö7ñ 5ô %+¬3¨s°8©}¸{È8Ñ?TÑ/TÓ+UÓ$VˆK˜Ó!ñ (ô œ˜Y›Ó(ˆ	Ü & {°8Ñ'<¸yÑ'HÓ Iˆ�HÑä”s˜; xÑ0Ó1°AÑ5Ö6ˆAØ˜
Ñ#×*Ñ*Ø˜HÑ% a¨!¡eÑ,¨{¸8Ñ/DÀQÑ/GÑGöñ 7ð
  Ÿ™ž‰HˆCØˆAØˆFÜ˜q¤# k°(Ñ&;Ó"<Ö=�Ø'¨Ñ1°%Ñ8�	Ø˜H™ aÑ(�ØÓ%ä˜C ™MÓ*¨a°!©eÓ3Ü ¨HÑ 5Ó6¸À¹ÓBà !™šà˜LÑ)×0Ñ0°Ô8Ø˜LÑ)×0Ñ0°°\Ñ1BÀ2Ñ1FÈÑ1OÔPØ!"˜Ø˜Q™šØÓ&Ø˜a‘K’Fä—J‘JÐEÔFØ”Ió% >ñ (ð. ˆøôg %ó #Ü˜r›“Bð#ús   ÂJ4Ê4KËKc                óh   • SnUR                  5        H  n[        U[        US   5      5      nM     U$ )z�Get the maximum number of columns across table groups.

Args:
    tgs_info: Unified group column specifications.

Return:
    The maximum number of columns.
r   r'  )ÚvaluesÚmaxr¼   )rA   Útgs_infoÚ	ncols_maxÚrowinfos       r;   Ú_get_max_ncolsÚXmlTable._get_max_ncolsL  s8   € ð ˆ	Ø—‘Ö(ˆGÜ˜I¤s¨7°:Ñ+>Ó'?Ó@ŠIñ )ð Ðr=   c                ó¤  • / nU" S5      nU(       aå  U Hß  n[        U[        5      (       d  M  UR                  S5      n[        U[        5      (       a   UR	                  5       (       a  [        U5      OSnU/ S.nU" S5      nU(       aX  U HR  n	[        U	[        5      (       d  M  U	R                  S5      n
U	R                  S5      nUS   R                  X«S	.5        MT     UR                  U5        Má     U R                  U5      nU(       d  [        S
S
/ S9nU$ U R                  U5      n/ nS
nSnU" S5      nU(       Ga  [        U5       GHó  u  nn[        U[        5      (       d  M  UU   nU" SS/5      nU(       d  M6  U GH¶  n[        U[        5      (       d  M  U" SS/5      nUR                  SL=(       a    UR                  R                  S:H  nS
n/ nSnU(       Ga5  Sn[        U5       GH×  u  nn[        U[        5      (       d  M  UR                  5       R                  5       nUR                  S5      nUR                  S5      n[        U[        5      (       a   UR	                  5       (       a  [        U5      OUS-   n[        U[        5      (       a#  UR	                  5       (       a  [        U5      n S
n!OUS-   n Sn![        US   5      n"US:  d  UU":”  d  U U":”  aH  SnU =R                   S-  sl        U R                   U R"                  ::  a  [$        R'                  S5          O�US   US-
     US   U S-
     U!-
  /n#U(       a  UOU R(                  n$U$U R(                  :w  a  Sn[+        U#S
   U#S   S-   5       H?  n%US-  nUR                  [-        UU$UUS-   SU#S
   U#S   S-   U#S   U#S
   -
  S-   S95        MA     GMÚ     U(       a  / nS
n[+        Xn5       H2  n%UR                  [-        UU R(                  UUS-   SU%U%S-   SS95        M4     U(       a  GM   UR/                  U5        US-  nGM¹     GMö     [        UXïS9nU$ )zfParse the content of a table tag.

Args:
    The table element.

Returns:
    A docling table object.
Útgrouprô  rû   )r  r   ÚcolspecÚcolnamer'  r   )r^  r'  r   rK  TÚrowÚtrÚentryÚtdNÚtheadFÚnamestÚnameendr.   r,  z&USPTO table has # entries != # columns)Úcolumn_headerr  Ústart_row_offset_idxÚend_row_offset_idxÚrow_spanÚstart_col_offset_idxÚend_col_offset_idxÚcol_span)r]   r%   r4  rE   r5  r6  r¾   rQ  r   rY  rÀ   r  r”   Úget_textr3  r¼   r2  r1  r¸   r»   r3  rB  r   Úextend)&rA   rÇ   Ú	tgs_alignÚtg_secsÚtg_secÚcol_valr  Útg_alignÚcs_secsÚcs_secr^  r'  Ú	tgs_rangeÚdl_tablerW  rÉ   Úi_row_globalÚis_row_emptyrD  Útg_rangeÚrow_secsÚrow_secÚ
entry_secsÚ	is_headerÚ	local_rowÚwrong_nbr_colsÚientryÚ	entry_secr  rd  re  ÚstartÚendÚshiftÚn_offstrN  Ú	cell_textÚireps&                                         r;   Ú_parse_tableÚXmlTable._parse_table[  sf  € ð -/ˆ	Ù˜“/ˆÞÛ!�Ü! &¬#×.Ñ.ÙØ Ÿ*™* VÓ,�ô " '¬3×/Ñ/°G×4EÑ4E×4GÑ4Gô ˜”Làð ð
 8=ÈÑ-L�Ù  Ó+�ÞÛ")˜Ü)¨&´#×6Ñ6Ù$Ø"(§*¡*¨YÓ"7˜Ø#)§:¡:¨jÓ#9˜Ø  Ñ+×2Ñ2Ø(/ÑFöñ #*ð × Ñ  Ö*ñ+ "ð0 ×)Ñ)¨)Ó4ˆ	ö Ü ¨!°aÀRÑHˆHØˆOà×'Ñ'¨	Ó2ˆ	ð ')ˆ
ØˆØ!ˆÙ˜“/ˆßÜ(¨×1‘��VÜ! &¬#×.Ñ.ÙØ$ S™>�Ù! 5¨$ -Ó0�ç�8Ü#+˜Ü)¨'´3×7Ñ7Ù$Ù%,¨g°t¨_Ó%=˜
à#ŸN™N°$Ð6÷ ?Ø '§¡× 3Ñ 3°wÑ >ð "ð
 !"˜Ø57˜	Ø'+˜ß%Ø-2˜NÜ5>¸z×5JÑ 1 ¨	Ü'1°)¼S×'AÑ'AÙ$,Ø'0×'9Ñ'9Ó';×'AÑ'AÓ'C ð *3¯©°xÓ)@ Ø*3¯-©-¸	Ó*B ô (2°&¼#×'>Ñ'>À6×CSÑCS×CUÑCUô %(¨¤Kà)/°!©ð !&ô
 $.¨g´s×#;Ñ#;À×@QÑ@Q×@SÑ@SÜ*-¨g«, CØ,-¡Eà*0°1©* CØ,- Eä*-¨h°|Ñ.DÓ*E Ø#(¨1£9°¸³À3ÈÃ=Ø59 NØ$(×$5Ò$5¸Ñ$:Õ$5Ø'+×'8Ñ'8¸D×<QÑ<QÓ'QÜ(,¯
©
Ø,Tô)*ñ %*ð %-¨\Ñ$:¸5À1¹9Ñ$EØ$,¨\Ñ$:¸3À¹7Ñ$CÀeÑ$Kð*" ö 59©D¸d¿o¹o 	Ø#,°·±Ó#?Ø38 LÜ,1°&¸±)¸VÀA¹YÈ¹]Ö,K DØ$)¨Q¡J EØ$-×$4Ñ$4Ü(1Ø:CØ1:ØAMØ?KÈaÑ?OØ56ØAGÈÁØ?EÀa¹yÈ1¹}Ø5;¸A±YÀÈÁÑ5JÈQÑ5Nñ	)*ö%&ô -LñO 6Köl  .à,. 	Ø() ô ).¨eÖ(? Ø )× 0Ñ 0Ü$-Ø6?Ø-1¯_©_Ø=IØ;GÈ!Ñ;KØ12Ø=AØ;?À!¹8Ø12ñ	%&ö!"ñ )@÷  ,™|Ø&×-Ñ-¨iÔ8Ø(¨AÑ-›Lôu $,ñ  2ôF Ø!¨Iñ
ˆð ˆr=   c                óô   • U R                   R                  S5      n[        U[        5      (       aH  U R	                  U5      nUR
                  S:X  d  UR                  S:X  a  [        R                  S5        U$ g)zOParse the first table from an xml content.

Returns:
    A docling table data.
rÇ   r   zThe parsed USPTO table is emptyN)	r4  Úfindr]   r%   r‰  rL  rM  r¸   Úwarning)rA   rã  rÇ   s      r;   r’   ÚXmlTable.parse÷  s_   € ð —*‘*—/‘/ 'Ó*ˆÜ�gœs×#Ñ#Ø×%Ñ% gÓ.ˆEØ�~‰~ Ó" e§n¡n¸Ó&9Ü—‘Ð>Ô?ØˆLàr=   )r4  r3  r1  r2  N)r5  rE   rF   rG   )rC  zlist[ColInfo]rF   údict[int, ColInfoType])rV  r�  rF   r   )rÇ   r%   rF   r   )rF   zTableData | None)rH   rI   rJ   rK   rL   r   r"  r(  r-  rB   rQ  rY  r‰  r’   rM   rN   r=   r;   r½   r½   ×  sH   † ñô�)ô ô˜ô ô�nô ô:ô"OôbôZ÷xr=   r½   c                  óF   • \ rS rSrSrS rS
S jrS
S jrS
S jrS
S jr	Sr
g	)rÿ   i  zÌProvide utility functions to get the HTML entities of styled characters.

This class has been developed from:
https://unicode-table.com/en/html-entities/
https://www.w3.org/TR/WD-math-970515/table03.html
c                óÆ  • [         R                  0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#S$S%.E5      U l        [         R                  0 SS&_SS'_SS(_SS)_S	S*_SS+_SS,_SS-_SS._SS/_SS0_SS1_SS1_SS2_SS3_SS4_S S5_S6S7S8S9.E5      U l        [         R                  0 S:S;_S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_SHSI_SJSK_SLSM_SNSO_SPSQ_SRSS_STSU_SVSW_SXSY_SZS[_0 S\S]_S^S__S`Sa_SbSc_SdSe_SfSg_ShSi_SjSk_SlSm_S Sn_SoSp_SqSr_SsSt_SuSv_SwSx_SySz_S{S|_E0 S}S~_SS€_S�S‚_SƒS„_S…S†_S‡Sˆ_S‰SŠ_S‹SŒ_S�SŽ_S�S�_S‘S’_S“S”_S•S–_S—S˜_S™Sš_S›Sœ_S�Sž_ESŸS 0E5      U l        0 S¡S¢_S£S¤_S¥S¦_S§S¨_S©Sª_S«S¬_S­S®_S¯S°_S±S²_S³S´_SµS¶_S·S¸_S¹Sº_S»S¼_S½S¾_S¿SÀ_SÁSÂ_0 SÃSÄ_SÅSÆ_SÇSÈ_SÉSÊ_SËSÌ_SÍSÎ_SÏSÐ_SÑSÒ_SÓSÔ_SÕSÖ_S×SØ_SÙSÚ_SÛSÜ_SÝSÞ_SßSà_SáSâ_SãSä_ESåSæSçSèSéSêSëSìSíSîSïSðSñSòSó.EU l        gô)õz>Initialize this class by loading the HTML entity dictionaries.Ú1z&sup1;Ú2z&sup2;Ú3z&sup3;Ú4z&#8308;Ú5z&#8309;Ú6z&#8310;Ú7z&#8311;Ú8z&#8312;Ú9z&#8313;Ú0z&#8304;Ú+z&#8314;Ú-z&#8315;u   âˆ’Ú=z&#8316;Ú(z&#8317;Ú)z&#8318;Úaz&#170;z&#186;z&#8305;z&#8319;)ÚorM  Únz&#8321;z&#8322;z&#8323;z&#8324;z&#8325;z&#8326;z&#8327;z&#8328;z&#8329;z&#8320;z&#8330;z&#8331;z&#8332;z&#8333;z&#8334;z&#8336;z&#8337;z&#8338;z&#8339;)Úer¢  ÚxÚAz	&#119860;ÚBz	&#119861;ÚCz	&#119862;ÚDz	&#119863;ÚEz	&#119864;ÚFz	&#119865;ÚGz	&#119866;r  z	&#119867;r;  z	&#119868;ÚJz	&#119869;ÚKz	&#119870;ÚLz	&#119871;ÚMz	&#119872;ÚNz	&#119873;ÚOz	&#119874;ÚPz	&#119875;ÚQz	&#119876;ÚRz	&#119877;ÚSz	&#119878;ÚTz	&#119879;ÚUz	&#119880;ÚVz	&#119881;ÚWz	&#119882;ÚXz	&#119883;ÚYz	&#119884;ÚZz	&#119885;z	&#119886;Úbz	&#119887;Úcz	&#119888;Údz	&#119889;r¤  z	&#119890;Úfz	&#119891;Úgz	&#119892;Úhz	&#119893;rM  z	&#119894;Újz	&#119895;Úkz	&#119896;Úlz	&#119897;Úmz	&#119898;r£  z	&#119899;r¢  z	&#119900;rÛ   z	&#119901;Úqz	&#119902;Úrz	&#119903;Úsz	&#119904;Útz	&#119905;Úuz	&#119906;Úvz	&#119907;Úwz	&#119908;r¥  z	&#119909;Úyz	&#119910;Úzz	&#119911;z&Agr;z&Alpha;z&Bgr;z&Beta;z&Ggr;z&Gamma;z&Dgr;z&Delta;z&Egr;z	&Epsilon;z&Zgr;z&Zeta;z&EEgr;z&Eta;z&THgr;z&Theta;z&Igr;z&Iota;z&Kgr;z&Kappa;z&Lgr;z&Lambda;z&Mgr;z&Mu;z&Ngr;z&Nu;z&Xgr;z&Xi;z&Ogr;z	&Omicron;z&Pgr;z&Pi;z&Rgr;z&Rho;z&Sgr;z&Sigma;z&Tgr;z&Tau;z&Ugr;z	&Upsilon;z&PHgr;z&Phi;z&KHgr;z&Chi;z&PSgr;z&Psi;z&OHgr;z&Omega;z&agr;z&alpha;z&bgr;z&beta;z&ggr;z&gamma;z&dgr;z&delta;z&egr;z	&epsilon;z&zgr;z&zeta;z&eegr;z&eta;z&thgr;z&theta;z&igr;z&iota;z&kgr;z&kappa;z&lambda;z&mu;z&nu;z&xi;z	&omicron;z&pi;z&rho;z&sigmaf;z&tau;z	&upsilon;z&phi;z&chi;z&psi;z&omega;)z&lgr;z&mgr;z&ngr;z&xgr;z&ogr;z&pgr;z&rgr;z&sgr;z&tgr;z&ugr;z&phgr;z&khgr;z&psgr;z&ohgr;N)rE   Ú	maketransr   r  Úmathematical_italicÚlookup_iso8879r   s    r;   rB   ÚHtmlEntity.__init__  se  € äŸ=™=ðØ�Xðà�Xðð �Xðð �Yð	ð
 �Yðð �Yðð �Yðð �Yðð �Yðð �Yðð �Yðð �Yðð �yðð �Yðð �Yðð  �Yð!ð" �Xð#ð$ ØØò)ó
ˆÔô0 Ÿ™ðØ�Yðà�Yðð �Yðð �Yð	ð
 �Yðð �Yðð �Yðð �Yðð �Yðð �Yðð �Yðð �Yðð �yðð �Yðð �Yðð  �Yð!ð" �Yð#ð$ ØØò)ó
ˆŒô0 $'§=¡=ð5Ø�[ð5à�[ð5ð �[ð5ð �[ð	5ð
 �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð �[ð5ð  �[ð!5ð" �[ñ#5ð$ �[ð%5ð& �[ð'5ð( �[ð)5ð* �[ð+5ð, �[ð-5ð. �[ð/5ð0 �[ð15ð2 �[ð35ð4 �[ð55ð6 �[ð75ð8 �[ð95ð: �[ð;5ð< �[ð=5ð> �[ð?5ð@ �[ðA5ðB �[ðC5ðD �[òE5ðF �[ðG5ðH �[ðI5ðJ �[ðK5ðL �[ðM5ðN �[ðO5ðP �[ðQ5ðR �[ðS5ðT �[ðU5ðV �[ðW5ðX �[ðY5ðZ �[ð[5ð\ �[ð]5ð^ �[ð_5ð` �[ða5ðb �[ðc5ðd �[ðe5ðf �[ñg5ðh �[ñi5ó7$
ˆÔ ðr1
Ø�Yð1
à�Xð1
ð �Yð1
ð �Yð	1
ð
 �[ð1
ð �Xð1
ð �gð1
ð �ið1
ð �Xð1
ð �Yð1
ð �Zð1
ð �Vð1
ð �Vð1
ð �Vð1
ð �[ð1
ð  �Vð!1
ð" �Wñ#1
ð$ �Yð%1
ð& �Wð'1
ð( �[ð)1
ð* �gð+1
ð, �gð-1
ð. �gð/1
ð0 �ið11
ð2 �Yð31
ð4 �Xð51
ð6 �Yð71
ð8 �Yð91
ð: �[ð;1
ð< �Xð=1
ð> �gð?1
ð@ �iðA1
ðB �XðC1
ðD �YñE1
ðF  ØØØØ ØØØØØ ØØØØòa1
ˆÕr=   c                ó8   • UR                  U R                  5      $ )zŒGet a text in superscript as HTML entities.

Args:
    text: The text to transform.

Returns:
    The text in superscript as HTML entities.
)Ú	translater   ©rA   r  s     r;   r\  ÚHtmlEntity.get_superscript­  s   € ð �~‰~˜d×.Ñ.Ó/Ð/r=   c                ó8   • UR                  U R                  5      $ )z‚Get a text in subscript as HTML entities.

Args:
    The text to transform.

Returns:
    The text in subscript as HTML entities.
)rÖ  r  r×  s     r;   r]  ÚHtmlEntity.get_subscript¸  s   € ð �~‰~˜dŸn™nÓ-Ð-r=   c                ó8   • UR                  U R                  5      $ )z}Get a text in italic as HTML entities.

Args:
    The text to transform.

Returns:
    The text in italics as HTML entities.
)rÖ  rÒ  r×  s     r;   r¥  ÚHtmlEntity.get_math_italicÃ  s   € ð �~‰~˜d×6Ñ6Ó7Ð7r=   c                ó8   • U R                   R                  X5      $ )zïGet an HTML entity of a greek letter in ISO 8879.

Args:
    The text to transform, as an ISO 8879 entity.

Returns:
    The HTML entity representing a greek letter. If the input text is not
      supported, the original text is returned.
)rÓ  r4  r×  s     r;   r  Ú!HtmlEntity.get_greek_from_iso8879Î  s   € ð ×"Ñ"×&Ñ& tÓ2Ð2r=   )rÓ  rÒ  r  r   N)r  rE   rF   rE   )rH   rI   rJ   rK   rL   rB   r\  r]  r¥  r  rM   rN   r=   r;   rÿ   rÿ     s"   † ñò\
ô|	0ô	.ô	8÷
3r=   rÿ   )MrL   Ú
__future__r   r  Úloggingr©   Úabcr   r   Úenumr   r   Úior   r	   Úpathlibr
   Útypingr   Úxml.saxr   Úxml.sax.handlerr   r   r   Úxml.sax.xmlreaderr   Údocling_core.types.docr   r   r   r   r   r   r   Údocling_core.types.doc.documentr   Úpydanticr   Útyping_extensionsr   r   r   Ú docling.backend.abstract_backendr   Údocling.datamodel.base_modelsr   Údocling.datamodel.documentr   Údocling.exceptionsr    r"   rj  r#   Úbs4r$   r%   Údefusedxml.commonr&   Údefusedxml.saxr'   rX   r¤  rY   Ú	getLoggerrH   r¸   r)   r+   rP   rž   rx   ry   rw   r{   r½   rÿ   rN   r=   r;   Ú<module>rõ     sR  ðò$õL #ã Û Û 	ß #ß ß  Ý Ý Ý %ß VÑ VÝ ,÷÷ ñ õ 8Ý #ß 7Ñ 7å GÝ 5Ý 4Ý 0à€�Ó Ø(,Ð Ð%Ó ,ðß&Ý5Ý*à€Nð
Hð ð
 ×Ò˜Ó"€àF€�Ó Fð ô(�Dó (ó ð(ô"YÐ!;ô Yôx�#ô ô[�[ô [ô|
d˜ô dôNT˜+ô Tôn\�{ô \÷~
mñ m÷`	Q3ò Q3øðk5 ó ØÕûðús   ÂD7 Ä7E	Ä=EÅE	