
    F j7h                    *   S 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
  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  S
SKJrJr  S
SKJr  S
SK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.J/r/J0r0J1r1  S
SK2J3r3J4r4J5r5J6r6  S
SK7J8r8J9r9  S
SK:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrEJFrGJHrI  S
SKJJKrKJLrL   SSKMJNrN  SSKPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrY  \Q(       a0  S
SKJZrZJ[r[  S
SK\J]r]J^r^  S
SKJ_r_J`r`  S
SK&Jara  S
SKbJcrc  S
S KdJere  S
S!KfJgrg  \R                  " \i5      rjS"S#S$S%.rk " S& S'\5      rl " S( S)\l5      rm " S* S+\@5      rn " S, S-\@5      ro " S. S/\@5      rp " S0 S1\@5      rq " S2 S35      rr " S4 S5\@5      rs " S6 S7\@5      rt " S8 S9\>5      ru " S: S;\>5      rv " S< S=\>5      rw " S> S?\>5      rx " S@ SA5      ry " SB SC\@5      rz " SD SE\@5      r{ " SF SG\@5      r| " SH SI\l5      r} " SJ SK5      r~\X\\\<SLSMSNSO4   r " SP SQ5      r " SR SS5      r   SmST\+SU\SV\SW\SX\SY\SZ\S[\V\   S\\4S] jjrS^\)S\\4S_ jrS`\\\4   S\\4Sa jrSb\\\4   S\\4Sc jrSnSd\Se\S\\4Sf jjrSg\\-  Sh\S\\>4Si jrSjSkSh\S\\>4Sl jrg! \O a    SrN GNf = f)oai  
This module contains the serialization logic that produces a PDF document from a FPDF instance.
Most of the code in this module is used when FPDF.output() is called.

The contents of this module are internal to fpdf2, and not part of the public API.
They may change at any time without prior warning or any deprecation period,
in non-backward-compatible ways.
    N)ABCabstractmethod)OrderedDictdefaultdict)contextmanager)datetimetimezone)escape)BytesIO)subset   )AnnotationDictPDFAnnotation)ImageSoftMaskPaintSoftMask)	Transform)OutputIntentSubTypePageLabelStylePDFResourceTypeSignatureFlag)FPDFException)	Type3Font)
CORE_FONTSCoreFontTTFFont)RasterImageInfo)TotalPagesSubstitutionFragment)OutlineDictionaryOutlineItemDictionarybuild_outline_objs)GradientMeshShadingPatternShading)	Signaturesign_content)DestinationXYZNamePDFArrayPDFContentStreamPDFDate	PDFObject	PDFStringRawbuild_obj_dictcreate_dictionary_stringcreate_list_stringiobj_ref)	int2romanint_to_letters)signer)	TYPE_CHECKINGAny	ItemsViewIteratorLiteralOptionalSequenceUnioncast)
BlendGroupGraphicsStyle)EncryptionDictionaryStandardSecurityHandler)
PageLayoutPageMode)PDFFontDescriptor)FPDF)ViewerPreferences)
Transition)z/Fit)z/FitHnull)/XYZrI   rI   1)fullpage	fullwidthrealc                   <    \ rS rSr\ SS\S   S\4S jj5       rSrg)	ContentWithoutIDY   N_security_handlerrB   returnc                     [         eN)NotImplementedErrorselfrR   s     \/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/fpdf/output.py	serializeContentWithoutID.serialize[   s
     "!     rU   )	__name__
__module____qualname____firstlineno__r   r;   strrZ   __static_attributes__r]   r\   rY   rP   rP   Y   s-    GK"!)*C!D"	" "r\   rP   c                   H    \ rS rSrSrS\SS4S jr SS\S   S\4S	 jjrS
r	g)	PDFHeaderb   u  
Emit the PDF file header as required by ISO 32000-1, §7.5.2 “File header”.

The header consists of:
  1) A line starting with the literal "%PDF-" followed by the file version
  2) If the file contains binary data an immediate second line that is a comment
     starting with "%" and containing at least four bytes with values ≥ 128 (non-ASCII).
     This helps file-transfer tools treat the content as binary rather than text.
pdf_versionrS   Nc                     Xl         g rU   rg   )rX   rg   s     rY   __init__PDFHeader.__init__m   s    &r\   rR   rB   c                 "    SU R                    S3$ )Nz%PDF-u
   
%éëñ¿ri   rW   s     rY   rZ   PDFHeader.serializep   s     t''(44r\   ri   rU   )
r^   r_   r`   ra   __doc__rb   rj   r;   rZ   rc   r]   r\   rY   re   re   b   sA    'C 'D ' HL5!)*C!D5	5 5r\   re   c                   `   ^  \ rS rSr   SS\S\S\\   S\\   S\\   SS4U 4S	 jjjrS
rU =r	$ )PDFFontv   Nsubtype	base_fontencodingd_wwrS   c                   > [         TU ]  5         [        S5      U l        [        U5      U l        [        U5      U l        U(       a  [        U5      OS U l        X@l        XPl        S U l	        S U l
        S U l        S U l        S U l        g )NFont)superrj   r(   typerr   rs   rt   ru   rv   descendant_fonts
to_unicodec_i_d_system_infofont_descriptorc_i_d_to_g_i_d_map)rX   rr   rs   rt   ru   rv   	__class__s         rY   rj   PDFFont.__init__w   sq     	L	G}i*2X486::>>B>Br\   )rs   r}   r   ru   r{   rt   r~   rr   r|   rz   rv   )NNN)
r^   r_   r`   ra   rb   r;   floatrj   rc   __classcell__r   s   @rY   rp   rp   v   sf    
 #'#CC C 3-	C
 e_C C=C 
C Cr\   rp   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )CIDSystemInfo   c                 l   > [         TU ]  5         [        SSS9U l        [        SSS9U l        SU l        g )NAdobeTencryptUCSr   )ry   rj   r-   registryordering
supplement)rX   r   s    rY   rj   CIDSystemInfo.__init__   s1    !'48!%6r\   )r   r   r   rS   N)r^   r_   r`   ra   rj   rc   r   r   s   @rY   r   r      s     r\   r   c                      ^  \ rS rSrSU 4S jjr\S\4S j5       r\S\4S j5       r\S\4S j5       r	S\
\S	4   S
\
\S4   S\
\S4   SS4S jrS\4S jrSrU =r$ )PDFType3Font   rS   Nc           	        > [         TU ]  5         Xl        [        S5      U l        [        SUR
                  R                   35      U l        [        S5      U l        SU R                  R
                  R                  S   R                  U R                  R                  -  S SU R                  R
                  R                  S   R                  U R                  R                  -  S SU R                  R
                  R                  S   R                  U R                  R                  -  S SU R                  R
                  R                  S   R                  U R                  R                  -  S S3	U l        S	U l        [!        S
 UR"                   5       5      U l        ['        S UR"                   5       5      U l        S U l        S U l        g )Nrx   MPDFAA+Type3[headz.0f ]z[0.001 0 0 0.001 0 0]c              3   8   #    U  H  oR                   v   M     g 7frU   unicode.0gs     rY   	<genexpr>(PDFType3Font.__init__.<locals>.<genexpr>   s     >Aii   c              3   8   #    U  H  oR                   v   M     g 7frU   r   r   s     rY   r   r      s     =1YYr   )ry   rj   _font3r(   rz   rs   namerr   ttfontxMinscaleyMinxMaxyMax
font_b_boxfont_matrixminglyphs
first_charmax	last_char	resourcesr|   )rX   font3r   s     rY   rj   PDFType3Font.__init__   sk   L	75??#7#7"89:	G}%%,,V499DKK<M<MMcR%%,,V499DKK<M<MMcR%%,,V499DKK<M<MMcR%%,,V499DKK<M<MMcRRSU 	 3>>>===(,)-r\   c                     [        U R                  R                   Vs0 s H   nSUR                   3UR                   S3_M"     sn5      $ s  snf )N/ 0 R)pdf_dictr   r   
glyph_nameobj_id)rX   r   s     rY   
char_procsPDFType3Font.char_procs   sK    <@KK<N<NO<NqqAHH:T!22<NO
 	
Os   'Ac                 r    [        [        S5      [        S5      [        S5      U R                  5       05      $ )N/Typez	/Encodingz/Differences)r   r(   differences_tablerX   s    rY   rt   PDFType3Font.encoding   s5    WtK0^$d&<&<&>
 	
r\   c                 v   [        U R                  R                  S S9nUS   R                  nUS   R                  nS/US-   U-
  -  nU HA  n[	        UR
                  U R                  R                  -  S-   5      XER                  U-
  '   MC     [        U Vs/ s H  n[        U5      PM     sn5      $ s  snf )Nc                     U R                   $ rU   r   glyphs    rY   <lambda>%PDFType3Font.widths.<locals>.<lambda>       U]]r\   keyr   r   gMbP?)	sortedr   r   r   roundglyph_widthr   pdf_listrb   )rX   sorted_glyphsmin_unicodemax_unicodewidthsr   r   s          rY   r   PDFType3Font.widths   s    t{{117RS#A&..#B'// a+56 #E27!!DKK$5$55=3F==;./ # VDVk[)VDEEDs   B6img_objs_per_index
PDFXObjectgfxstate_objs_per_namePDFExtGStatepattern_objs_per_namer#   c                   ^ ^ SnSR                  U4S jT R                  R                   5       5      nU[        U5      S:  a  SU S3OS-  nSR                  U 4S jUR	                  5        5       5      nU[        U5      S:  a  S	U S3OS-  nSR                  U 4S
 jUR	                  5        5       5      nU[        U5      S:  a  SU S3OS-  nUS-  nUT l        g )N<<r   c              3   P   >#    U  H  nS U STU   R                    S3v   M     g7f)/Ir   r   N)id)r   imgr   s     rY   r   2PDFType3Font.generate_resources.<locals>.<genexpr>   s4      
. Q)#.112$7.s   #&r   z/XObject <<>> c              3      >#    U  H6  u  pUTR                   R                  ;   d  M!  S U SUR                   S3v   M8     g7fr   r   r   N)r   graphics_style_usedr   )r   r   gfxstate_objrX   s      rY   r   r      sC      
&D"t{{666 -avQ|'t,&D
    AAz/ExtGState <<c              3      >#    U  H6  u  pUTR                   R                  ;   d  M!  S U SUR                   S3v   M8     g7fr   )r   patterns_usedr   )r   r   patternrX   s      rY   r   r      sA      
!>t{{000 (avQwzzl$'!>r   z/Pattern <<)joinr   images_usedlenitemsr   )rX   r   r   r   r   objectsext_g_stater   s   ``      rY   generate_resourcesPDFType3Font.generate_resources   s     	(( 
{{..
 
 	#g,2B{7)2.J	hh 
&<&B&B&D
 

 	K8H18L}[M4RTT	(( 
!6!<!<!>
 

 	#g,2B{7)2.J	T	"r\   c                 |    [        U R                  R                  S S9nSSR                  S U 5       5      -   S-   $ )Nc                     U R                   $ rU   r   r   s    rY   r   0PDFType3Font.differences_table.<locals>.<lambda>   r   r\   r   r   
c              3   V   #    U  H  oR                    S UR                   3v   M!     g7f)z /N)r   r   )r   r   s     rY   r   1PDFType3Font.differences_table.<locals>.<genexpr>   s'      DQ5==/E$4$4#56Ms   ')r   )r   r   r   r   )rX   r   s     rY   r   PDFType3Font.differences_table   sI    t{{117RSii DQ  		
r\   )
r   r   r   r   r   r   r   rr   r|   rz   )r   r   rS   N)r^   r_   r`   ra   rj   propertyrb   r   rt   r   dictintr   r   rc   r   r   s   @rY   r   r      s    .$ 
C 
 

 
# 
 
 F F F # l!23# !%S.%8 9#  $CN3	#
 
#<
3 
 
r\   r   c                   p   ^  \ rS rSrS\\   S\\   S\\   S\\   S\\   S\\   S\S	S
4U 4S jjrSrU =r	$ )PDFInfo   titlesubjectauthorkeywordscreatorproducercreation_daterS   Nc                 J  > [         TU ]  5         U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        U(       a8  [        U[        [        [        45      (       a  SR                  S U 5       5      nU(       a
  [        USS9OS U l
        U(       a8  [        U[        [        [        45      (       a  SR                  S U 5       5      nU(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        Xpl        g )NTr   z; c              3   8   #    U  H  n[        U5      v   M     g 7frU   rb   )r   as     rY   r   #PDFInfo.__init__.<locals>.<genexpr>   s     6v!s1vvvr   , c              3   8   #    U  H  n[        U5      v   M     g 7frU   r  )r   keywords     rY   r   r    s      FX'WXr   )ry   rj   r-   r  r  
isinstancelisttuplesetr   r  r  r  r  r	  )	rX   r  r  r  r  r  r  r	  r   s	           rY   rj   PDFInfo.__init__   s     	7<Yud3$
;By$7j$s);<<YY6v66F9?i5T
8dE3-?@@yy FX FFH=E	(D94;By$7=E	(D94*r\   )r  r	  r  r  r  r  r  )
r^   r_   r`   ra   r;   rb   r+   rj   rc   r   r   s   @rY   r  r     ss    +}+ #+ 	+
 3-+ #+ 3-+ + 
+ +r\   r  c                   P    \ rS rSrS\S\4S jr  SS\S   S\\   S	\4S
 jjr	Sr
g)AcroFormi
  fields	sig_flagsc                     Xl         X l        g rU   r  r  )rX   r  r  s      rY   rj   AcroForm.__init__  s    "r\   NrR   rB   _obj_idrS   c           
      |    [        [        U 5       Vs0 s H  o3[        X5      _M     snUUS9n[        USS9$ s  snf )NrR   r  r   
field_joinr/   dirgetattrr   rX   rR   r  r   obj_dicts        rY   rZ   AcroForm.serialize  sF    
 "03D	:	'$$$	:/

 S11	 ;s   9r  NN)r^   r_   r`   ra   r)   r   rj   r;   rb   rZ   rc   r]   r\   rY   r  r  
  sO    #x #C # BF!%
2#$=>
2 #
2 
	
2 
2r\   r  c                   d   ^  \ rS rSr    SS\\   S\S   S\S   S\S	   S
S4
U 4S jjjrSrU =r$ )
PDFCatalogi  Nlangpage_layoutrC   	page_moderD   viewer_preferencesrG   rS   c                 2  > [         TU ]  5         [        S5      U l        U(       a  [	        U5      OS U l        X l        X0l        X@l        S U l	        S U l
        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        g )NCatalog)ry   rj   r(   rz   r-   r,  r-  r.  r/  pages	acro_formopen_action	mark_infometadatanamesoutlinesoutput_intentsstruct_tree_roota_fpage_labels)rX   r,  r-  r.  r/  r   s        rY   rj   PDFCatalog.__init__  s     	O	'+IdO	&""4 	
 .2*.(,26$(
592659"&*.r\   )r;  r3  r,  r5  r6  r7  r4  r8  r9  r<  r-  r.  r2  r:  rz   r/  NNNN	r^   r_   r`   ra   r;   rb   rj   rc   r   r   s   @rY   r+  r+    s_     #.2*.<@/sm/ l+/ J'	/
 %%89/ 
/ /r\   r+  c                   l   ^  \ rS rSrS\\   S\\   S\\   S\\   S\\   S\\   SS	4U 4S
 jjrSrU =r$ )PDFResourcesi9  proc_setfontx_objectr   shadingr   rS   Nc                 j   > [         TU ]  5         Xl        X l        X0l        X@l        XPl        X`l        g rU   )ry   rj   rB  rC  rD  r   rE  r   )rX   rB  rC  rD  r   rE  r   r   s          rY   rj   PDFResources.__init__:  s/     	 	 &r\   )r   rC  r   rB  rE  rD  r?  r   s   @rY   rA  rA  9  si    3- sm 3-	
 c] # # 
 r\   rA  c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )PDFFontStreamiL  contentsrS   Nc                 B   > [         TU ]  USS9  [        U5      U l        g NTrJ  compress)ry   rj   r   length1rX   rJ  r   s     rY   rj   PDFFontStream.__init__M  s     (T:8}r\   )rO  )r^   r_   r`   ra   bytesrj   rc   r   r   s   @rY   rI  rI  L  s    % %4 % %r\   rI  c                   4   ^  \ rS rSrS\SS4U 4S jjrSrU =r$ )PDFXmpMetadataiR  rJ  rS   Nc                 ~   > [         TU ]  UR                  S5      S9  [        S5      U l        [        S5      U l        g )Nzutf-8rJ  MetadataXML)ry   rj   encoder(   rz   rr   rP  s     rY   rj   PDFXmpMetadata.__init__S  s3    (//'":;$	E{r\   )rr   rz   )r^   r_   r`   ra   rb   rj   rc   r   r   s   @rY   rT  rT  R  s    # # # #r\   rT  c                      ^  \ rS rSrSr    SS\S\S\S\S\\	-  S-  S	\
S
\\   S\\   S\\   S\SS4U 4S jjjrSrU =r$ )r   iY  )_id	_contentsfilterlengthrz   rr   widthheightcolor_spacebits_per_componentdecodedecode_parmss_mask
image_maskNrJ  rr   r`  ra  rb  rc  
img_filterrd  re  rg  rS   c                   > [         TU ]  US9  [        S5      U l        [        U5      U l        X0l        X@l        XPl        X`l        [        U5      U l	        Xl
        Xl        S U l        U
(       a  SU l        g S U l        g )NrV  XObjectT)ry   rj   r(   rz   rr   r`  ra  rb  rc  r^  rd  re  rf  rg  )rX   rJ  rr   r`  ra  rb  rc  rh  rd  re  rg  r   s              rY   rj   PDFXObject.__init__k  sn     	(+O	G}
&"4:&(,0",$$r\   )rc  rb  rd  re  r^  ra  rg  rf  rr   rz   r`  )NNNF)r^   r_   r`   ra   	__slots__rR  rb   r   r)   r(   r   r;   boolrj   rc   r   r   s   @rY   r   r   Y  s    I2 %) $&* 77 7 	7
 7 _t+7  7 SM7 7 sm7 7 
7 7r\   r   c                   @   ^  \ rS rSrSrSrS\S\S\4U 4S jjr	Sr
U =r$ )	PDFICCProfilei  z
Holds values for ICC Profile Stream
Args:
    contents (str): stream content
    n (int): [1|3|4], # the numbers for colors 1=Gray, 3=RGB, 4=CMYK
    alternate (str): ['DeviceGray'|'DeviceRGB'|'DeviceCMYK']
)r\  r]  r^  r_  n	alternaterJ  rp  rq  c                 N   > [         TU ]  USS9  X l        [        U5      U l        g rL  )ry   rj   rp  r(   rq  )rX   rJ  rp  rq  r   s       rY   rj   PDFICCProfile.__init__  s'     	(T:ir\   )rq  rp  )r^   r_   r`   ra   rn   rl  rR  r   rb   rj   rc   r   r   s   @rY   ro  ro    s5    I)) ) 	) )r\   ro  c                       \ rS rSrSrSrS\\   S\\   S\\	   SS4S	 jr
\S\\   4S
 j5       r\S\\   4S j5       rS\4S jrS\4S jrS\\\4   4S jrS\\   4S jrS\4S jrS\	4S jrSrg)PDFPageLabeli  z?
This will be displayed by some PDF readers to identify pages.
_style_prefixstlabel_stylelabel_prefixlabel_startrS   Nc                 (    Xl         X l        X0l        g rU   rv  )rX   rz  r{  r|  s       rY   rj   PDFPageLabel.__init__  s     1<&2!,r\   c                 f    U R                   (       a  [        U R                   R                  5      $ S $ rU   )rw  r(   valuer   s    rY   sPDFPageLabel.s  s"    *.++tDKK%%&?4?r\   c                 R    U R                   (       a  [        U R                   5      $ S $ rU   )rx  r-   r   s    rY   pPDFPageLabel.p  s    *.,,y&@D@r\   c                 V    SU R                    SU R                   SU R                   S3$ )NzPDFPageLabel(r  )rv  r   s    rY   __repr__PDFPageLabel.__repr__  s)    t{{m2dll^2dggYaHHr\   c                 (   U R                   (       a  U R                   OSnU R                  (       Ga`  U R                  [        R                  :X  a  U[	        U R
                  5      -  nU$ U R                  [        R                  :X  a#  U[        U R
                  =(       d    S5      -  nU$ U R                  [        R                  :X  a1  U[        U R
                  =(       d    S5      R                  5       -  nU$ U R                  [        R                  :X  a(  U R
                  =(       d    SS-
  nU[        U5      -  nU$ U R                  [        R                  :X  a4  U R
                  =(       d    SS-
  nU[        U5      R                  5       -  nU$ )Nr   r   )rx  rw  r   NUMBERrb   ry  UPPER_ROMANr3   LOWER_ROMANlowerUPPER_LETTERr4   LOWER_LETTER)rX   retstarts      rY   __str__PDFPageLabel.__str__  s3   "lldll;;;{{n333s477|# 
  : ::yA.. 
  : ::yA.4466 
  ; ;;A*~e,, 
  ; ;;A*~e,2244
r\   c           
      h    [        [        U 5       Vs0 s H  o[        X5      _M     sn5      $ s  snf rU   )r/   r$  r%  )rX   r   s     rY   rZ   PDFPageLabel.serialize  s+    #d)L)3GD$66)LMMLs   /c                     U R                   $ rU   )rw  r   s    rY   	get_stylePDFPageLabel.get_style      {{r\   c                 ,    U R                   =(       d    S$ )Nr   )rx  r   s    rY   
get_prefixPDFPageLabel.get_prefix  s    ||!r!r\   c                 ,    U R                   =(       d    S$ Nr   )ry  r   s    rY   	get_startPDFPageLabel.get_start  s    ww|!r\   )rx  rw  ry  )r^   r_   r`   ra   rn   rl  r;   r   rb   r   rj   r   r(   r  r-   r  r  r  r   r7   rZ   r  r  r  rc   r]   r\   rY   ru  ru    s     ,I-n-- sm- c]	-
 
- @8D> @ @ A8I& A AI# I "N4S> N8N3 "C "3 r\   ru  c                   "  ^  \ rS rSrSrS\\   S\S   S\\-  S\	4U 4S jjr
S	\	4S
 jrS\	S	S4S jrS	\\\4   4S jrS\S\S	S4S jrS\\   S\\   S	S4S jrS	\\   4S jrS	\4S jrS	\\   4S jrS\S	S4S jrS\\-  S	S4S jrSrU =r$ )PDFPagei  )r\  rz   rJ  durtransannotsgroup	media_boxstruct_parentsr   parent_index	_width_pt
_height_pt_page_label_text_substitution_fragmentsduration
transitionrH   rJ  indexc                 "  > [         TU ]  5         [        S5      U l        X0l        U(       a  UOS U l        X l        [        5       U l        S U l	        S U l
        S U l        S U l        S U l        X@l        S U l        S U l        S U l        / U l        g )NPage)ry   rj   r(   rz   rJ  r  r  r)   r  r  r  r  r   r  r  r  r  r  r  )rX   r  r  rJ  r  r   s        rY   rj   PDFPage.__init__  s     	L	 '8T
*2*$(
(,-1 	  	 *.+/37RT)r\   rS   c                     U R                   $ rU   r  r   s    rY   r  PDFPage.index  r  r\   iNc                     Xl         g rU   r  )rX   r  s     rY   	set_indexPDFPage.set_index  s    r\   c                 |    U R                   b  U R                  c  [        S5      eU R                   U R                  4$ )zGReturn a pair (width, height) in the unit specified to FPDF constructorzPage dimensions are null)r  r  
ValueErrorr   s    rY   
dimensionsPDFPage.dimensions  s4    >>!T__%<788~~t..r\   width_pt	height_ptc                      XsU l         U l        g)zHAccepts a pair (width, height) in the unit specified to FPDF constructorN)r  r  )rX   r  r  s      rY   set_dimensionsPDFPage.set_dimensions  s    *2'r\   previous_page_label
page_labelc                    U(       at  U(       am  UR                  5       UR                  5       :X  aK  UR                  5       UR                  5       :X  a)  UR                  (       d  UR                  5       S-   Ul        U(       a$  UR                  b  UR                  S:X  a  SUl        U(       aA  U(       d:  [	        UR                  5       UR                  5       UR                  5       S-   5      nX l        g )Nr   r   )r  r  ry  r  ru  r  )rX   r  r  s      rY   set_page_labelPDFPage.set_page_label  s      $$&*=*G*G*II%%'+>+I+I+KKMM/99;a?JM}}$
(: !
z%#--/#..0#--/!3J &r\   c                     U R                   $ rU   )r  r   s    rY   get_page_labelPDFPage.get_page_label9  s    r\   c                     U R                   (       d  [        U R                  5       5      $ [        U R                   5      $ rU   )r  rb   r  r   s    rY   	get_labelPDFPage.get_label<  s+    (,(8(8s4::< Sc$BRBR>SSr\   c                     U R                   $ rU   )r  r   s    rY   get_text_substitutionsPDFPage.get_text_substitutions?  s    000r\   fragmentc                 :    U R                   R                  U5        g rU   )r  append)rX   r  s     rY   add_text_substitutionPDFPage.add_text_substitutionB  s    ))00:r\   
annotationc                 r    U R                   c  [        5       U l         U R                   R                  U5        g rU   )r  r)   r  )rX   r  s     rY   add_annotationPDFPage.add_annotationE  s'    ;;"*DK:&r\   )r  r  r  r  r  r  rJ  r  r  r  r  r   r  r  rz   )r^   r_   r`   ra   rl  r;   r   	bytearrayr*   r   rj   r  r  r  r  r  ru  r  r  rb   r  r<   r   r  r  r   r   r  rc   r   r   s   @rY   r  r    s%   I&U5/U \*U ..	U
 U:s 3 4 /E%,/ />u > >4 >&%l3& \*& 
	&6  6  T3 T11O(P 1;.L ;QU ;'-)G 'D ' 'r\   r  c                   8   ^  \ rS rSrS\S\SS4U 4S jjrSrU =r$ )PDFPagesRootiK  countr  rS   Nc                 h   > [         TU ]  5         [        S5      U l        Xl        X l        S U l        g )NPages)ry   rj   r(   rz   r  r  kids)rX   r  r  r   s      rY   rj   PDFPagesRoot.__init__L  s-    M	
" 		r\   )r  r  r  rz   )	r^   r_   r`   ra   r   rb   rj   rc   r   r   s   @rY   r  r  K  s"    
c 
c 
d 
 
r\   r  c                   h   ^  \ rS rSrS\SS4U 4S jjr  SS\\\\4      S\S   S\4S	 jjr	S
r
U =r$ )r   iV  dict_as_strrS   Nc                 .   > [         TU ]  5         Xl        g rU   )ry   rj   _dict_as_str)rX   r  r   s     rY   rj   PDFExtGState.__init__W  s    'r\   r'  rR   rB   c                 :    U R                    SU R                   S3$ )Nz 0 obj
z
endobj)r   r  )rX   r'  rR   s      rY   rZ   PDFExtGState.serialize\  s"    
 ''(4#4#4"5X>>r\   )r  r)  )r^   r_   r`   ra   rb   rj   r;   r   r7   rZ   rc   r   r   s   @rY   r   r   V  sW    (C (D ( .2AE?4S>*? $$=>? 
	? ?r\   r   c                   @    \ rS rSrSrS
S jr SS\S   S\4S jjrS	r	g)PDFXrefAndTrailerid  z$Cross-reference table & file trailerrS   Nc                 b    Xl         UR                  S-   U l        S U l        S U l        S U l        g r  )output_builderr   r  catalog_objinfo_objencryption_obj)rX   r  s     rY   rj   PDFXrefAndTrailer.__init__g  s1    ,#**Q.
15+/@Dr\   rR   rB   c                    U R                   c  [        S5      eU R                  n[        [	        UR
                  5      5      n/ nUR                  S5        UR                  SU R                   35        UR                  S5        [        SU R                  5       H%  nUR                  UR                  U   S S35        M'     UR                  S5        UR                  S	5        UR                  S
U R                   35        UR                  S[        U R                   R                  5       35        U R                  (       a1  UR                  S[        U R                  R                  5       35        UR                  nU R                  (       aW  UR                  S[        U R                  R                  5       35        UR                  c   eUR                  R                   nO1UR!                  5       nUS:X  a  UR#                  UR
                  5      nUb  UR                  SU S35        UR                  S5        UR                  S5        UR                  U5        UR                  S5        SR%                  U5      $ )Nz"Invalid state for XREF production.xrefz0 z0000000000 65535 f r   010z	 00000 n trailerr   z/Size z/Root z/Info z	/Encrypt r   z/ID [r   r   	startxrefz%%EOFr   )r  r   r  rb   r   bufferr  r  rangeoffsetspdf_refr   r  fpdfr  rR   file_id_default_file_idr   )rX   rR   builderr  outr   r  r  s           rY   rZ   PDFXrefAndTrailer.serializeo  s    # DEE%%GNN+,	

6

R

|$%

()Atzz*FJJ'//&1#6i@A +

9

4

VDJJ<()

VGD$4$4$7$789:;==JJ(8(8 9:;<||JJ74+>+>+A+A#B"CDE))555373I3I3Q3QGllnG"}//?JJwiq)*

4

;

9

7yy~r\   )r  r  r  r  r  )r  OutputProducerrS   NrU   )
r^   r_   r`   ra   rn   rj   r;   rb   rZ   rc   r]   r\   rY   r  r  d  s2    *E HL"!)*C!D"	" "r\   r  c                       \ rS rSrSrSr    SSSS\\   S\\   S	\\   S
\\   S\\   SS4S jjr	  SS\S   S\\
   S\4S jjrSrg)OutputIntentDictionaryi  ar  
The optional OutputIntents (PDF 1.4) entry in the document
catalog dictionary holds an array of output intent dictionaries,
each describing the colour reproduction characteristics of a possible
output device.

Args:
    subtype (OutputIntentSubType, required): PDFA, PDFX or ISOPDF
    output_condition_identifier (str, required): see the Name in
        https://www.color.org/registry.xalter
    output_condition (str, optional): see the Definition in
        https://www.color.org/registry.xalter
    registry_name (str, optional): "https://www.color.org"
    dest_output_profile (PDFICCProfile, required/optional):
        PDFICCProfile | None # (required if
        output_condition_identifier does not specify a standard
        production condition; optional otherwise)
    info (str, required/optional see dest_output_profile): human
        readable description of profile
)rz   r  output_condition_identifieroutput_conditionregistry_namedest_output_profileinfoNrr   zOutputIntentSubType | strr  r  r  r	  r
  rS   c                    [        S5      U l        [        [        R                  " U5      R                  5      U l        U(       a  [        U5      OS U l        U(       a  [        U5      OS U l        U(       a  [        U5      OS U l	        U(       a  [        U[        5      (       a  UOS U l        U(       a  [        U5      U l        g S U l        g )NOutputIntent)r(   rz   r   coercer  r  r-   r  r  r  r  ro  r	  r
  )rX   rr   r  r  r  r	  r
  s          rY   rj   OutputIntentDictionary.__init__  s     (	)009??@ + 12 	( ,<I&' 	 :GY}5D #z2E}'U'U   	 
 (,IdO		r\   rR   rB   r  c           
      ~    [        [        U 5       Vs0 s H  o3[        X5      _M     snUUS9n[        U5      $ s  snf )Nr   r#  r&  s        rY   rZ    OutputIntentDictionary.serialize  sD    
 "03D	:	'$$$	:/

 !!	 ;s   :)r	  r
  r  r  r  r  rz   r>  r)  )r^   r_   r`   ra   rn   rl  r;   rb   ro  rj   r   rZ   rc   r]   r\   rY   r  r    s    *I +/'+7;"6,6 &.c]6 #3-	6
  }6 &m46 sm6 
6: BF!%
"#$=>
" #
" 
	
" 
"r\   r  r!   r#   r$   r"   c            	          \ rS rSrSr\R                  " S5      r\R                  " S5      r\R                  " S5      r	\R                  " S5      r
\R                  " S5      rS"S
 jrS\S\S\\   S\\   4S jrSSS\\   4S jrS\\-  S\4S jrSSS\4S jrS\S\\\\4      4S jrS\S\SS	4S jrS\S\\\4   4S jrS\S\S\\   4S jrS\S\\   4S jr \!S\S\4S j5       r" S#S\S\S\#\$-  4S  jjr%S!r&g	)$ResourceCatalogi  zKManage the indexing of resources and association to the pages they are usedz/(GS\d+) gsz
/I(\d+) Doz/(P\d+)\s+scnz/(P\d+)\s+SCNz!/F(\d+)\s+[-+]?\d+(?:\.\d+)?\s+TfrS   Nc                     [        [        5      U l        [        [        5      U l        [        5       U l        / U l        / U l        SU l	        0 U l
        SU l        g )Nr   r   )r   r   r   r  resources_per_pager   graphics_stylessoft_mask_xobjectsform_xobjectslast_reserved_object_idfont_registrynext_xobject_indexr   s    rY   rj   ResourceCatalog.__init__  sX    JUK

  	 1<:<AC,-$<>'(r\   resource_typeresourcepage_numberc                    U[         R                  [         R                  4;   aj  U R                  U   nU R	                  U5      nX$;  a  U [        U5      S-    3XB'   Ub!  U R                  X14   R                  XB   5        [        XB   5      $ U[         R                  :X  a.  [        U[        5      (       a  X R                  :  a
  US-   U l        [        (       a  Uc   eU R                  X14   R                  U5        g r  )r   PATTERNSHADINGr   _get_prefixr   r  addrb   X_OBJECTr  r   r  r6   )rX   r  r  r  r   prefixs         rY   r#  ResourceCatalog.add  s     _44o6M6MNN~~m4H%%m4F'(.xH0A/B%C"&''(DEII& x)** _5558S))333&.lD#=*** <=AA(Kr\   styler@   c                    UR                  5       nUc  g[        U5      nX0R                  ;  aM  [        U R	                  [
        R                  5       [        U R                  5       35      nX@R                  U'   U R                  U   $ )z
Graphics style can be added without associating to a page number right away,
like when rendering a svg image.
The method that adds image to the page will call the add method for the page association.
N)rZ   rb   r  r(   r"  r   EXT_G_STATEr   )rX   r'  
style_dict	style_strr   s        rY   register_graphics_style'ResourceCatalog.register_graphics_style  s     %*OO$5

O	000##O$?$?@A#dFZFZB[A\]D /3  +##I..r\   	soft_maskc                     U =R                   S-  sl         [        X5      nU R                   Ul        U R                  R	                  U5        UR                  $ )z5Register a soft mask xobject and return its object idr   )r  soft_mask_path_to_xobjectr   r  r  )rX   r.  xobjects      rY   register_soft_mask"ResourceCatalog.register_soft_mask'  sH    $$)$+I<11
&&w/zzr\   blend_groupr?   c                     [        X5      nU R                  nU =R                  S-  sl        U R                  R                  X245        U$ )zBRegister a blend group Form XObject and return its resource index.r   )blend_group_to_xobjectr  r  r  )rX   r4  r1  r  s       rY   register_blend_form#ResourceCatalog.register_blend_form/  sD    (;''1$!!5"23r\   renderedc                 N   [        5       nU R                  R                  U5       H3  nUR                  [        R
                  UR                  S5      45        M5     U R                  R                  U5       H3  nUR                  [        R                  UR                  S5      45        M5     U R                  R                  U5       H3  nUR                  [        R                  UR                  S5      45        M5     U R                  R                  U5       H3  nUR                  [        R                  UR                  S5      45        M5     U R                  R                  U5       H3  nUR                  [        R                  UR                  S5      45        M5     U$ )z6Parse a content stream and return discovered resourcesr   )r  GS_REGEXfinditerr#  r   r)  r  	IMG_REGEXr$  PATTERN_FILL_REGEXr   PATTERN_STROKE_REGEX
FONT_REGEXFONT)rX   r9  foundms       rY   scan_streamResourceCatalog.scan_stream7  s4   25%''1AII22AGGAJ?@ 2 ((2AII//<= 3 ((11(;AII..
;< < **33H=AII..
;< > ))(3AII++QWWQZ89 4 r\   c                     U R                  U5       H[  u  p4U[        R                  :X  a0  U R                  U[        R                  4   R	                  U5        MI  U R	                  X4U5        M]     g)z
Scan a rendered content stream and register resources used on the given page.
Currently indexes:
  - ExtGState invocations: '/GSn gs'
  - Image XObjects: '/In Do'
N)rD  r   r   r  r#  )rX   r9  r  r  r  s        rY   index_stream_resources&ResourceCatalog.index_stream_resourcesL  sb     (,'7'7'A#M 7 77''o6M6M(NOSS +> (Br\   c                 <    U R                   U   R                  5       $ rU   )r   r   )rX   r  s     rY   	get_itemsResourceCatalog.get_items[  s     ~~m,2244r\   c                 "    U R                   X4   $ rU   )r  )rX   r  r  s      rY   get_resources_per_page&ResourceCatalog.get_resources_per_page`  s     &&'CDDr\   c                     [        5       nU R                  R                  5        H   u  u  p4nXA:X  d  M  UR                  U5        M"     U$ rU   )r  r  r   update)rX   r  unique_rtyper  s         rY   get_used_resources"ResourceCatalog.get_used_resourcese  sC    %(U$($;$;$A$A$C JQ%h' %D r\   c                     U[         R                  :X  a  gU[         R                  :X  a  gU[         R                  :X  a  g[	        SU 35      e)NGSPShzNo prefix for resource type )r   r)  r   r!  r  )clsr  s     rY   r"  ResourceCatalog._get_prefixl  sH    O777O333O3337GHHr\   font_family
font_stylec                    U(       d  [        S5      eSR                  [        UR                  5       5      5      n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nUR	                  5       R	                  S5      R                  S5       GH:  nUR	                  5       R	                  S5      R                  5       nU U 3nXpR                  ;   a  U R                  U   s  $ U[        ;   aa  US;   a  SOUnU U 3n	XR                  ;  a1  [        U R                  5      S-   n
[        XU5      U R                  U	'   U R                  U	   s  $ UR                  U5      nU(       d  M  US;   a  SOUnU U 3n	XR                  ;  a1  [        U R                  5      S-   n
[        XU5      U R                  U	'   U R                  U	   s  $    [        SU< SU< 35      e)a  
Resolve a family+style to a concrete font instance from the font registry.
Behavior:
  - Exact match (family.lower() + style.upper()) in registry: return it
  - If `family` names a core font: add CoreFont to registry (if missing) and return it
  - If `family` is an alias/generic: translate to a core font, add to registry (if missing), and return it
  - Otherwise: raise KeyError

Notes:
  - For Symbol/ZapfDingbats, style is forced to "" (they don't support B/I).
zEmpty font familyr   z
sans-serif	helveticaz
sans serifarialverdanatahomazsegoe uiseriftimesztimes new romangeorgiacambriagaramond	monospacecourierzcourier newconsolasmonacosymbolzapfdingbats)rl  rm  zzapf dingbatsz'",>   rl  rm  r   zNo suitable font for family=z, style=)KeyErrorr   r   upperstripsplitr  r  r   r   r   get)rX   r\  r]  r'  alias	candidatefamilyfontkey
core_styler   r  mappeds               rY   get_font_from_family$ResourceCatalog.get_font_from_familyv  s    .//z//123
+
 +
 [	

 {
 k
 
 W
 W
 w
 w
 w
 
  !
" y#
$ 9%
& 	'
( i)
, *+1
6 %**,2259??DI__&,,U399;F  (G,,,))'22 ##)-G#GRU
-000D../!3A.6qz.JD&&s+))#.. YYv&Fv#)-G#GRU
-000D../!3A.6qz.JD&&s+))#..3 E8 5k_HUIVWWr\   )r  r  r  r  r  r   r  r  r   )r   )'r^   r_   r`   ra   rn   recompiler;  r=  r>  r?  r@  rj   r   ResourceTypesr;   r   rb   r#  r(   r,  r   r   r2  r7  r  r  rD  rG  r8   rJ  rM  rT  classmethodr"  r   r   rz  rc   r]   r\   rY   r  r    s   Qzz.)H

=)I$45::&67@AJ)&   c]	
 
#</_ /$ /&MM,I c |  C Cos6J0K,L *?s ? ? ?5,5	=#%	&5
EE/>E	]	E
 CDV  I IC I I 35JXJX,/JX	G	JX JXr\   r  c                      \ rS rSrSrS=S jrS\4S jrS\\-  \	-  SS4S jr
 S>S	\S
\\	   S\4S jjrS\4S jrS\\   4S jr\" SS5      4S\S\\   4S jjrS\\   4S jrS\\\4   S\\	\4   S\\	S4   S\\\\-  4   4S jrS\\\4   4S jrS\\	\ 4   S\4S jr!S\\	\ 4   S\4S jr"S\\	\4   4S jr#S\\	\4   S\\	S4   S\\\4   SS4S jr$S\\\4   SS4S jr%S\\\4   S\\	\4   S\\	\&4   S \\	\'\(-  4   S!\\\\-  4   SS4S" jr)S\\	\'\(-  4   4S# jr*S\\	\&4   4S$ jr+S%\\   SS4S& jr,S!\\\\-  4   S\\\4   S\\	\4   S \\	\'\(-  4   S\\	\&4   S\-4S' jr.S\\   4S( jr/S\0\\1   \2\3   4   4S) jr4S\\5   4S* jr6S\	4S+ jr7S\84S, jr9S\S-   4S. jr:S\\;   4S/ jr<S\=4S0 jr>S1\=S2\S3\S4\\   S5\\5   S6\\   S7\\1   SS4S8 jr?\@S9\	S\S   4S: j5       rAS?S; jrBS<rCg)@r  i  zVGenerates the final bytearray representing the PDF document, based on a FPDF instance.rS   Nc                     Xl         / U l        0 U l        UR                  R                  U l        0 U l        0 U l        [        [        5      U l
        [        5       U l        g rU   )r  pdf_objsiccp_i_to_pdf_i_resource_catalogr  r   r  trace_labels_per_obj_idr   r   sections_size_per_trace_labelr  r  )rX   r  s     rY   rj   OutputProducer.__init__  sS    	<>/1"":: 	 (*79$=H=M*!*r\   c           
      v   U R                   nUR                  bT  UR                  5       nUS:X  a  UR                  [	        S5      5      nUR                  R                  [        U5      5        UR                  nUR                  (       a0  UR                  R                  U:  a  UR                  R                  nU R                  R                  [        U5      5        U R                  5       nU R                  5       nU R                  5       nU R!                  5       nUR"                   H5  nU R%                  US5        U R%                  UR'                  5       S5        M7     U R)                  U5        U R+                  5       n	U R-                  5       u  pU R/                  5       nSnUR0                  (       d  U R3                  5       nU R5                  5       n[7        U 5      nU R                  R                  U5        [9        U5      Ul        U R=                  UUUS   UUU	U
S9  / nU GHx  nUUl        [A        URB                  [8        5      (       d   eURB                   GH   n/ nURD                  (       a6  [G        URD                  S5      (       a  UR                  URD                  5        URH                  (       ae  [G        URH                  S5      (       aJ  [G        URH                  RD                  S5      (       a%  UR                  URH                  RD                  5        U HF  nURJ                  [M        U5      :  d  M  [O        S	URJ                   S
URQ                  5        S35      e   URS                  U5        GM#     URB                  (       a  GMq  SUl!        GM{     U H-  nURD                  c  M  UR                  URD                  5        M/     U H-  n[U        UURJ                  S-
     RV                  5      Ul,        M/     URZ                  R\                  R^                   H  nUURK                  5       S-
     Ul0        M      X_l1        Xl2        Xl3        U Rh                  (       a   SU Rh                   35       eU Rj                  (       a   S[M        U Rj                  5       35       eU R                   H  n[A        U[l        5      (       a  SnOQ[M        U Rh                  5      U Rj                  URV                  '   U Rn                  Rq                  URV                  5      nU(       aD  U Rs                  U5         U Ru                  URw                  UR                  S95        SSS5        M  U Ru                  URw                  UR                  S95        M     U Ry                  5         URz                  (       aV  [}        [~        U Rh                  URz                  UR                  UR                  UR                  UR                  5      U l4        U Rh                  $ ! , (       d  f       GMv  = f)z
This method alters the target FPDF instance
by assigning IDs to all PDF objects,
plus a few other properties on PDFPage instances
Nr   r   embedded_files	file_spec)pages_root_objfirst_page_objsig_annotation_objxmp_metadata_objstruct_tree_root_objoutline_dict_objr  destz'Invalid reference to non-existing page z present on page z: r   z@Nothing should have been appended to the .buffer at this stage: z.No offset should have been set at this stage: )rR   )Dr  rR   r  r  r  generate_passwordsrb   rg   r/  _min_pdf_versionr  r  re   _add_pages_root_add_catalog
_add_pages_add_annotations_as_objectsr  _add_pdf_objr  _insert_resources_add_structure_tree_add_document_outline_add_xmp_metadata_compliance	_add_info_add_encryptionr  r)   r  _finalize_catalogr  r  r  r  hasattrr  r  r   r  r  extendr  r   page_refstruct_builderdoc_struct_elemkpgr  r  r  r  r  rP   r  rs  _trace_size_outrZ   _log_final_sections_sizes	_sign_keyr&   r5   
_sign_cert_sign_extra_certs_sign_hashalgo
_sign_time)rX   r  r  rg   r  r  	page_objsr  embedded_filer  r  outline_itemsr  r  r  r  destspage_objannot
page_destsr  outline_itemstruct_elempdf_objtrace_labels                            rY   	bufferizeOutputProducer.bufferize  s    yy
 !!-37<<>G"}//	$@""55c'lC&&##''88;F11BBKY{34--/'')OO%	!==?!00Mm-=>m557E 1 	y)#779*.*D*D*F'113~~'H--/ &T" 'y1)$Q<1-!5- 	 	
 ')!H,HOhoox8888!35
::uzz=99"))%**577wuww77uww||];;"))%'',,7&D''#i.8(EdFVFVEWWhiqiwiwiyhzz|}  '
 Z( )  ???"&+ ", *L  ,\../ * D#$$q("DM   ..>>@@K&{'>'>'@1'DEKN A& , 	\Mdkk][	\ 	P;C<M;NO	P }}G'#344"+.t{{+;WZZ("::>>wzzJ%%k2II))D<R<R)S 32
 		'++d>T>T+UV % 	&&(>>&&&##DK {{% 32s   )X((
X8	datac                     [        U[        5      (       d1  [        U[        5      (       d  [        U5      nUR                  S5      nU =R                  US-   -  sl        g)zAppend data to the bufferlatin1   
N)r  rR  rb   rY  r  )rX   r  s     rY   r  OutputProducer._outV  sE    $&&dC((4y;;x(Dte|#r\   r  r  c                     U =R                   S-  sl         U R                   Ul        U R                  R                  U5        U(       a  X R                  U R                   '   U R                   $ r  )r   r   r  r  r  )rX   r  r  s      rY   r  OutputProducer._add_pdf_obj^  sN     	q[[
W%8C((5{{r\   c                     U R                   n[        UR                  [        UR                  5      S9nU R                  U5        U$ )N)r  r  )r  r  pages_count_dimensions_to_mediaboxdefault_page_dimensionsr  )rX   r  r  s      rY   r  OutputProducer._add_pages_rooth  sB    yy%""-d.J.JK
 	.)r\   c              #      #    [        SU R                  R                  S-   5       HQ  nU R                  R                  U   nUR	                  5       U:X  d   SUR	                  5       < SU< 35       eUv   MS     g 7f)Nr   zpage_obj.index()=z != page_index=)r  r  r  r2  r  )rX   
page_indexr  s      rY   _iter_pages_in_order#OutputProducer._iter_pages_in_orderq  ss     499#8#81#<=Jyyz2H  J.7#(.."$$467.N >s   A:A<r   _slicec                 <   U R                   n/ n[        U R                  5       5      U    H  nUR                  S:  a$  UR                  (       a  [        SSSS.SS9Ul        UR                  5       UR                  :w  a  [        UR                  5       5      Ul
        U R                  US5        UR                  U5        [        UR                  [        5      (       d   e[!        UR                  UR"                  S	9nU R                  US5        XTl        M     U$ )
Nz1.3z/Groupz/Transparency
/DeviceRGB)r   z/Sz/CSr   r!  r2  rM  )r  r  r  rg   allow_images_transparencyr   r  r  r  r  r  r  r  r  rJ  r  r*   rN  )rX   r  r  r  r  cs_objs         rY   r  OutputProducer._add_pagesz  s    yy#%	T6689&AH%'D,J,J!)&olS"" ""$(D(DD%<X=P=P=R%S"h0X& h//;;;;%!**T]]F fg. &# B& r\   c                 r   S nU R                   R                  R                  5        H  n[        UR                  [
        5      (       d   eUR                   HX  n[        U[        5      (       d  M  U R                  U5        [        UR                  [        5      (       d  ML  Ub   S5       eUnMZ     M     U$ )Nz0A /Sig annotation is present on more than 1 page)
r  r2  valuesr  r  r)   r   r  vr%   )rX   r  r  	annot_objs       rY   r  *OutputProducer._add_annotations_as_objects  s    !		..0Hhoox8888%__	i77%%i0!)++y99.6NMN6-6* - 1 "!r\   image_objects_per_indexr   r   r#   c                   ^+ 0 n[        U R                  R                  R                  5       S S9 G	H  n[	        U[
        5      (       Ga  UR                  (       Ga  UR                  R                  S:  a  [        S5      eUR                  R                   HO  nU R                  [        UR                  R                  S5      U R                  R                  S9S5      Ul        MQ     / nUR                  R#                  5        H{  u  pUb8  [	        UR$                  [&        5      (       a  [)        UR$                  5      S:X  a  MB  UR+                  S	U	S
 SSR-                  S UR$                   5       5       S35        M}     [        S[)        U5       SSR-                  U5       S3R                  S5      5      n
U R                  U
S5        [/        UR                  5      n[1        U
R2                  5      Ul        UR7                  UUU5        U R                  US5        XUR8                  '   GM  [	        U[:        5      (       aL  UR<                  S;  a  SOS n[?        SUR<                  US9nU R                  US5        XUR8                  '   GMf  [	        U[
        5      (       d  GM~  SUR<                   3nUR                  RA                  5       n[)        URB                  5      S:  at  SR-                  S URB                  S S  5       5      n[)        URB                  5      S:  a  US[)        URB                  5      S-
   S3-  n[D        RG                  SUU5        [H        RJ                  " SSS9nU=RL                  / SQ-  sl&        [H        RN                  " U5      nURQ                  US 9  UR                  URR                  5        UR                  R#                  5        VVs0 s H1  u  nnUc  M  UURR                  RU                  URV                  5      _M3     nnn[Y        5       nURR                  R[                  U5        UR]                  S5        UR_                  5       n[?        S!US"S9nU R                  US5        UXER8                  '   UR`                  =(       a    URb                  nS nS nU(       a  0 n0 nUR                  R#                  5        H  u  pUc  M
  URV                  Re                  S#5      (       a;  URV                  S$S  Rg                  5       (       a  [i        URV                  S$S  5      nOURj                  nUS%:  a#  [D        RG                  S&UURl                  5        M  UUU	'   URn                  UU'   M     [?        U(       a  S'OS(UURp                  Rr                  U(       a  U(       a  [u        U5      O
[w        U5      S)9nU R                  US5        [y        U/5      Ul=        / nS*[h        S+[|        4S, jm+UR                  R#                  5        H~  u  pUb8  [	        UR$                  [&        5      (       a  [)        UR$                  5      S:X  a  MB  UR+                  S	U	S- SSR-                  U+4S. jUR$                   5       5       S35        M     [        S/[)        U5       SSR-                  U5       S3R                  S5      5      n
U R                  U
S5        U
Ul        U(       Ga  U(       a  S0nS1nSnUR~                  (       a  UR~                  u  nnn[        UR#                  5       5       V Vs/ s H  u  n nS	U S- S2U S33PM     n!n n[        S4U S5U S6U S7U S8U S9[)        U!5       S:SR-                  U!5       S;3R                  S5      5      n"[        S<5      U"lA        [        U S8U S=35      U"lB        [        S>U S?U S@U SA35      U"lD        U R                  U"S5        U"UlE        [        5       n#U(       aF  UR~                  (       a5  UR~                  u  nnn[        USSB9U#lH        [        USSB9U#lI        UU#lJ        U R                  U#S5        U#UlD        URp                  n$[        U5      U$lK        U R                  U$S5        U$UlL        U(       d  SC/SD-  SD-  SE-  n%UR#                  5        H1  u  n&n'[        U'SF-	  5      U%U&SE-  '   [        U'S-  5      U%U&SE-  SG-   '   M3     SR-                  U%5      n([        U(R                  SH5      SS9n)U R                  U)S5        U)UlN        [        USI9n*U(       a  [        SJ5      U*lP        U R                  U*S5        U(       a  U*U$lQ        OU*U$lR        UR                  R                  R                  5         UR                  R                  R                  5         UR                  5         G	M     U$ s  snnf s  snn f )KNc                     U R                   $ rU   )r  )rC  s    rY   r   +OutputProducer._add_fonts.<locals>.<lambda>  s    dffr\   r      zType 3 fonts with color glyphs are not supported is more than 255 glyphs are rendered. set FPDF.render_color_fonts=False or use less color glyphs.latin-1rM  fontsr   <02Xz> <r   c              3      #    U  H;  n[        U5      R                  S 5      R                  5       R                  5       v   M=     g7f)z	utf-16-beN)chrrY  hexrp  )r   codes     rY   r   ,OutputProducer._add_fonts.<locals>.<genexpr>  s7     7~p}hlD	8H8H8U8Y8Y8[8a8a8c8cp}s   AAz>
z/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<00> <FF>
endcodespacerange
z beginbfchar
zGendbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end)SymbolZapfDingbatsWinAnsiEncodingType1)rr   rs   rt   r   r  c              3      #    U  H=  nS [        U5       S[        U5      R                  S5      R                  5        S3v   M?     g7f)'z' (zunicode-escaper  N)r  rY  rd  )r   xs     rY   r   r    sC      $!9A CF83s1v}}5E'F'M'M'O&PPQR!9s   AA
   z, ... (and z others)z+Font %s is missing the following glyphs: %sT)notdef_outlinerecommended_glyphs)FFTMGDEFGPOSGSUBMATHhdmxmetasbixCBDTCBLCEBDTEBLCEBSCzSVG CPALCOLR)r   Type0z
Identity-Hcid     zJGlyph CID %s exceeds 0xFFFF and cannot be encoded in a 2-byte CID font: %sCIDFontType0CIDFontType2)rr   rs   ru   rv   r   rS   c                 L    U S:  a  SU S-
  S-	  -  nSU S-  -  nUS US 3$ U S $ )Nr  i   i   r  i   i  04Xr]   )r   	code_highcode_lows      rY   format_code.OutputProducer._add_fonts.<locals>.format_codem  sI    '$*g.?B-F$F	#)Wu_#="+C#??%c]+r\   r  c              3   4   >#    U  H  nT" U5      v   M     g 7frU   r]   )r   r  r	  s     rY   r   r  }  s     7dVcdD8I8IVcs   z/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
r   Identityz> r   zY/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry (z)
/Ordering (z)
/Supplement z
>> def
/CMapName /-zO-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
z begincidchar
zHendcidchar
endcmap
CMapName currentdict /CMap defineresource pop
end
endCMapz-UCSz<< /Registry (z) /Ordering (z) /Supplement z >>r             r   r  rV  CIDFontType0C)Wr   r  r  r  r  r   
color_fontr   _nextr   r   r  r*   r   rY  rN  r   r   r   r  r   r  r   r   r  r   r|   r   r  r   r   rp   get_all_glyph_namesmissing_glyphsLOGGERwarningftsubsetOptionsdrop_tables	Subsetterpopulater   
getGlyphIDr   r   saveseekreadis_cffis_cid_keyed
startswithisdigitr   glyph_idrw  r   descmissing_width_cid_font_widths_tt_font_widthsr)   r{   rb   cff_rosr(   rz   
c_map_namer.   r}   rt   r   r-   r   r   r   	font_namer~   r  r   rI  rr   
font_file3
font_file2pickcache_clear	get_glyphclose),rX   r  r   r   font_objs_per_indexrC  color_glyphbfCharr   code_mappedto_unicode_objt3_font_objrt   core_font_objfontnameglyph_namesmsgoptions	subsetterchar_idcode_to_glyphoutputttfontstreamcomposite_font_obj
is_cff_cidcode_to_cid
cid_widthsr   cid_font_objr   r   r   r  cid_mappingencoding_cmap_objcid_system_info_objfont_descriptor_objcid_to_gid_listccglyph_icid_to_gid_mapcid_to_gid_map_objfont_file_cs_objr	  s,                                              @rY   
_add_fontsOutputProducer._add_fonts  s	    BD499??1139LMD $((T___;;$$t+'V  $(??#9#9K)-):):(%0%6%6%=%=i%H%)YY%7%7  *K& $: %'*.++*;*;*=&E)%--??u}}-2 MMK,C7~pup}p}7~0~/  @C  D +> "2. v;-~776?+( fY'-"0 !!.':*4??;)01B1B)C&..+*)
 !!+w7.9DFF+ $)) yy(BB & 
 !(#tyy8! !!-9.;DFF+D'**$TYYK0 #kk==?t**+a/)) $!%!4!4Sb!9$ C 4../"4S1D1D-E-J,K8TTNNExQT #**$SWX## ( #( %..w7	""+"6  - +/++*;*;*=1*=w FGT[[33E4D4DEE*=  1 !  (A%{{} &-#x,&" !!"4g>.@#FF+ "[[>T->->
8<7;
"$K!#J.2kk.?.?.A* =$!,,77>> % 0 0 4 < < > >"%e&6&6qr&:";C"'..C<"NN l # $
 %36K0*/*;*;
3% /B&  '.8Nn&		// &* )4,T2	  !!,86>~6N"3 , , , +/++*;*;*=&E)%--??u}}-2 MMK,C7dV[VcVc7d0d/eehi +> "2. v;-~776?+( fY'-"0 !!.':0>"-+&H)H!"J||9=6(J *00A0A0C)D#)DID# D:RuB/)D   # )9, -5: 6**2 4++5, 7**21XJ ?2
  #;/0!ww{34""( !&+-)%0 .2&\%*37#*AhZt44%0 ;>(
-zXbWccfg;%7 %%&7A2C&/&3o#$,,59\\2Hh
3<Xt3T'03<Xt3T'05?'2!!"5w?1D.&*ii#04X#-!!"5w?/B,! (.hns&:Q&>O'4':':'<G25gl2CQ/69'D.6IQ
3 (= &(WW_%=N *:!/!6!6x!@4*& %%&8'B6HL3#0,#G /3O/D$,!!"2G<5E'25E'2  ,,.%%113

S
 NV
 #"O1l#s   .
g7<*g7g=c                    0 n[        U R                  R                  R                  R	                  5       S S9 HA  n[        [        US   5      S:  d  M  U R                  U5      U[        [        US   5      '   MC     U$ )Nc                 (    [        [        U S   5      $ )Nr  )r>   r   )r   s    rY   r   ,OutputProducer._add_images.<locals>.<lambda>  s    4SQTXCVr\   r   usagesr   r  )r   r  image_cacheimagesr  r>   r   
_add_image)rX   r   r   s      rY   _add_imagesOutputProducer._add_images  sr    46II!!((//17V
C CX'!+:>//#:N"4SX#67	

 "!r\   img_infoc           	         [        [        US   5      nX R                  ;   a  U R                  U   $ SnU R                  R                  R
                  R                  5        H  u  pEX%:X  d  M  Un  O   Uc   e[        U[        [        US   5      [        [        US   5      S9nU R                  US5      nXpR                  U'   U$ )zf
Returns the PDF object of the ICC profile indexed iccp_i in the FPDF object.
Adds it if not present.
iccp_iNdpncs)rJ  rp  rq  iccp)
r>   r   r  r  rZ  icc_profilesr   ro  rb   r  )rX   r_  ra  iccp_contenticcp_cr  iccp_obj
iccp_pdf_is           rY   _ensure_iccpOutputProducer._ensure_iccp  s    
 c8H-.)))''//..;;AACIF{% D ''' !3(3/

 &&x8
'1V$r\   r
  c                    [        UR                  S5      5      nU(       a  S O[        US   5      nS nU(       a  S OUR                  S5      nUS:X  a"  [        SS[	        US   5      S-  S	-
   /5      nOFUb3  U R                  U5      n[        S
[        U5      [        S5      S/5      nOUS:X  a
  US   SL a  SnSU;   a  [        [        US   5      nSUS    SUS    S3n[        S[        [        US   5      [        [        US   5      [        [        US   5      U[        [        US   5      [        [        US   5      UUUS9
nU R                  US5      US'   U R                  R                  (       a?  SU;   a9  U(       d2  S US    3n	U R                  US   US   S!S"US   U	US   S#.5      Ul        [!        U[        5      (       a  SU;   a  [!        UR"                  [        5      (       d   e[%        [        [        US   5      U R                  R&                  S$9n
U R                  U
S5        UR"                  R)                  [+        U
R,                  5      5        U$ )%Nrg  rc  ra  Indexedz/Indexedr  palr  r   z	/ICCBased0R
DeviceCMYKinvertedTz[1 0 1 0 1 0 1 0]rd  r   dpz /BitsPerComponent bpcr   Imager  rv   hf)
rr   rJ  r`  ra  rb  rc  rh  rd  re  rg  r[  r   smaskz!/Predictor 15 /Colors 1 /Columns 
DeviceGrayr  )rv   rv  rc  rt  rw  rs  r  rM  )rm  rs  r(   r)   r   rj  rb   r>   r   rR  r   r  r  r  r\  rf  r  rb  r*   rN  r  r  r   )rX   r
  rg  rb  rd  ra  ri  re  img_objrs  
pal_cs_objs              rY   r\  OutputProducer._add_image  sR   $((<01
6@dd4PT:FV#();)#"\c$u+.>!.Ca.G-HJK **40J"KZ#c(C#PQKL(J4',t#tH~.FDJ<':4;-rJ%f.sDI&T#Y'##Ce5Cc+%!
 **7H=X 99..7d?:4T#YK@B!__cc&c M
GN k8,,{1Jg118<<<<)eT%[1DII<N<NJ j(3&&wz}}'=>r\   c                     [        5       nU R                  R                  R                  R	                  5        H&  u  p#[        U5      nU R                  US5        XAU'   M(     U$ )Ngfxstate)r   r  r  r  r   r   r  )rX   r   
state_dictr   r   s        rY   _add_gfxstatesOutputProducer._add_gfxstatesP  s[    :E- $		 ; ; K K Q Q SJ'
3LlJ7+74( !T &%r\   r   c                     U R                   R                  R                   H?  nUR                  R	                  XU5      Ul        U R                  R                  U5        MA     g)zSAppend soft-mask Form XObjects after patterns exist so we can resolve /Pattern ids.N)r  r  r  _pathget_resource_dictionaryr   r  r  )rX   r   r   r   r.  s        rY   _add_soft_masksOutputProducer._add_soft_masksX  sP     44GGI"+//"I"I&?Q#I MM  +	 Hr\   c                     U R                   R                  R                   HA  u  p#[        USS5      (       d  U R	                  US5        SUl        UR                  X#5        MC     g)z\Ensure isolated blend forms are part of the XObject set before other resources rely on them._registeredFr[  TN)r  r  r  r%  r  r  
setdefault)rX   r   r  r1  s       rY   #_register_form_xobject_placeholders2OutputProducer._register_form_xobject_placeholderse  sV     #ii99GGNE7M599!!'84&*#))%9	 Hr\   shading_objs_per_namer5  c                     U R                   R                  R                   H1  u  pg[        USS5      nUc  M  UR	                  UUUUU5      Ul        M3     g)z@Populate resource dictionaries for isolated blend Form XObjects._blend_groupN)r  r  r  r%  r  r   )	rX   r   r   r   r  r5  rR  r1  r4  s	            rY   _finalize_form_xobjects&OutputProducer._finalize_form_xobjectso  sW     ))55CCJA!'>4@K&$/$G$G*))'&%! Dr\   c                 t   [        5       nU R                  R                  R                  [        R
                  5       Hv  u  p#[        U[        [        [        45      (       d   eUR                  5        H  nU R                  US5        M     UR                  5       nU R                  US5        XQU'   Mx     U$ )NfunctionrE  )r   r  r  rJ  r   r!  r  r!   r$   r"   get_functionsr  get_shading_object)rX   r  rE  r   r  shading_objs         rY   _add_shadingsOutputProducer._add_shadings  s    BM-!YY88BB##
MG g';'GHHHH#113!!(J7 4181K1K1MKk95*5$'
 %$r\   c           	         [        5       nU R                  R                  R                  [        R
                  5       H  u  p#[        U[        5      (       d   eU R                  US5        X!U'   UR                  5       (       d  MI  UR                  UR                  5       [        R                  " SU R                  R                  * 5      R                  SSS9R                  U R                  R                   5      -  5        M     U$ )Nr   r   r   r   )r  y)r   r  r  rJ  r   r   r  r#   r  get_apply_page_ctm
set_matrix
get_matrixr   translationrv  r   r  )rX   r   r   r   s       rY   _add_patternsOutputProducer._add_patterns  s    4?M!YY88BB##
MG gw////gy1*1$'))++""&&(++A		|<UQ"U%U499;;'(
 %$r\   r  c           
         U R                  5       nU R                  U5        U R                  5       nU R                  5       nU R	                  X#U5      nU R                  5       nU R                  UUUUU5        U R                  X4U5        U R                  R                  (       a%  U R                  UUUUU5      nU H	  nXxl        M     g [        USS9 GH  u  pU R                  R                  R                  U	[        R                   5       V
s0 s H  n
[#        U
5      U[#        U
5         _M     nn
U R                  R                  R                  U	[        R$                  5       Vs0 s H  n[#        U5      U[#        U5         _M     nnUR'                  5        VVs0 s HA  u  pUU R                  R                  R                  U	[        R(                  5      ;   d  M?  X_MC     nnnU R                  R                  R                  U	[        R*                  5       Vs0 s H  n[-        U5      U[-        U5         _M     nnU R                  R                  R                  U	[        R.                  5       Vs0 s H  n[-        U5      U[-        U5         _M     nnU R                  UUUUU5      Ul        GM     g s  sn
f s  snf s  snnf s  snf s  snf )Nr   )r  )r]  r  r  r  rT  r  r  r  r  single_resources_object_add_resources_dictr   	enumerater  rM  r   rA  r   r$  r   r)  r!  rb   r   )rX   r  r   r   r   r5  r  resources_dict_objr  r  font_idpage_font_objs_per_indeximg_idpage_img_objs_per_indexgfx_name	gfx_statepage_gfxstate_objs_per_nameshading_namepage_shading_objs_per_namepattern_namepage_pattern_objs_per_names                        rY   r   OutputProducer._insert_resources  s   !--/001CD!%!4!4!6 $ 2 2 4"oo8M
 !% 2 2 4$$"!!	
 	";M	
 99,,!%!9!9#"&%%" &%7" & *39A)F% $(99#>#>#U#U#_%9%9$,$ L"5c'l"CC$ ) , #'))"="="T"T#_%=%=#+# K!3CK!@@# ( + 2H1M1M1O/1O-yy22II#_%@%@ (H'1O , / )-		(C(C(Z(Z#_%<%<).) %'<S=N'OO) + . )-		(C(C(Z(Z#_%<%<).) %'<S=N'OO) + . &*%=%=,+/..&"E *G,+/..s$   "K+"K">K$K#"K="Kc           
         SnSu  pxpnU(       aN  [        [        UR                  5       5       VVs0 s H  u  pSU 3[        UR                  5      _M      snn5      nU(       aN  [        [        UR                  5       5       VVs0 s H  u  pSU 3[        UR                  5      _M      snn5      nU(       aF  [        UR                  5        VVs0 s H  u  nnSU 3[        UR                  5      _M!     snn5      n	U(       aO  [        [        UR                  5       5       VVs0 s H  u  nnSU 3[        UR                  5      _M!     snn5      n
U(       aO  [        [        UR                  5       5       VVs0 s H  u  nnSU 3[        UR                  5      _M!     snn5      n[        UUUU	U
US9nU R                  U5        U$ s  snnf s  snnf s  snnf s  snnf s  snnf )Nz$[/PDF /Text /ImageB /ImageC /ImageI])NNNNNz/Fr   r   )rB  rC  rD  r   rE  r   )r   r   r   r  r   rA  r  )rX   r5  r   r   r  r   rB  rC  rD  r   rE  r   r  font_objrz  r   r   r  pattern_objresources_objs                       rY   r  "OutputProducer._add_resources_dict  s    :8T5g ,22E2K2K2M+N+N L'(++"66+ND  +11C1I1I1K*L*L L''**"55*LH "" /E.J.J.L.L*l vJ 88.LK ! .44I4O4O4Q-R-R)k vJ 77-RG ! .44I4O4O4Q-R-R)k vJ 77-RG %#
 	-(]s   %G
%G
&G
(&G
>&G%
c                     U R                   R                  R                  5       (       a  gSnU R                   R                   H  nUc  UnU R                  US5        M     U$ )zDBuilds a Structure Hierarchy, including image alternate descriptionsNstructure_tree)r  r  emptyr  )rX   r  r  s      rY   r  "OutputProducer._add_structure_tree-  s]    99##))++#yy//G#+'.$g'78 0 $#r\   c                 
   U R                   R                  (       d  gS n/ n[        U R                   R                  5       H>  n[        U[        5      (       a  UnOUR                  U5        U R                  US5        M@     X4$ )N)Nr]   document_outline)r  _outliner    r  r   r  r  )rX   r  r  r  s       rY   r  $OutputProducer._add_document_outline8  sv     yy!!8<57)$))*<*<=G'#455#* $$W-g'9: >  ..r\   c                    U R                   R                  nU(       d+  U R                   R                  (       a  U R                  5       nU(       d  g S[	        S5       SU S3n[        U5      nU R                  U5        U$ )Nz<?xpacket begin="i  z"" id="W5M0MpCehiHzreSzNTczkc9d"?>
z
<?xpacket end="w"?>
)r  xmp_metadatar  _build_xmp_from_infor  rT  r  )rX   xmp_srcxpacketr  s       rY   r   OutputProducer._add_xmp_metadataG  sm    ))((49900//1G%c&k]2UV]U^^uv )'"r\   c           
      R   [        U R                  SS 5      =(       d    Sn[        U R                  SS 5      =(       d    Sn[        U R                  SS 5      =(       d    SnU(       a  [        U[        5      (       a  U/n[        U R                  SS 5      =(       d    SnU(       a  [        U[        5      (       a  U/n[        U R                  SS 5      =(       d    Sn[        U R                  SS 5      =(       d    Sn[        U R                  SS 5      nS n[        U[        5      (       aB  UR
                  (       a  UOUR                  5       nUR                  [        R                  5      nU R                  R                  n	S	[        S
[        4S jn
[	        SSSSSS[        R                  S9n[        R                  " [        R                  5      nX:X  a  UR                  SS9nUR                  SS9nO)U=(       d    UnUR                  SS9nUR                  SS9n/ SQnU(       a  UR                  SU
" U5       S35        U(       aQ  UR                  SU
" U5       S35        UR                  SU
" U5       S35        UR                  SU
" U5       S35        U(       a  UR                  SU
" U5       S35        U(       a,  SR                  U5      nUR                  SU
" U5       S35        UR                  S5        U	(       a  UR                  S[        U	R                  5       S35        U	R                   (       a%  UR                  S U
" U	R                   5       S!35        U	R                  S":X  a  UR                  S#5        U(       a  US$S%U
" U5      -   S&-   S'/-  nU(       a  US(S%U
" U5      -   S&-   S)/-  nU(       aF  UR                  S*5        U H  nUR                  S+U
" U5       S&35        M      UR                  S,5        U/ S-Q-  nS.R                  U5      $ )/Nr  r   r  r  r  r  r  r	  r  rS   c                 V    U c  SO[        [        U 5      SS9nUR                  SS5      $ )zDReturn XML-escaped text suitable for XMP (attributes or text nodes).r   T)quoter  z&apos;)_html_escaperb   replace)r  r  s     rY   esc0OutputProducer._build_xmp_from_info.<locals>.escg  s)    )Bc!fD)IE==h//r\   i           r   )tzinfoseconds)timespec)z4<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="fpdf2">z
  <rdf:RDFz;    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"z/    xmlns:dc="http://purl.org/dc/elements/1.1/"z,    xmlns:xmp="http://ns.adobe.com/xap/1.0/"z,    xmlns:pdf="http://ns.adobe.com/pdf/1.3/"z3    xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">z!    <rdf:Description rdf:about=""z        xmp:CreatorTool=""z        xmp:CreateDate="z        xmp:ModifyDate="z        xmp:MetadataDate="z        pdf:Producer="rn  z        pdf:Keywords="z      >z      <pdfaid:part>z</pdfaid:part>z      <pdfaid:conformance>z</pdfaid:conformance>   z#      <pdfaid:rev>2020</pdfaid:rev>z      <dc:title><rdf:Alt>z%        <rdf:li xml:lang="x-default">z	</rdf:li>z      </rdf:Alt></dc:title>z      <dc:description><rdf:Alt>z!      </rdf:Alt></dc:description>z      <dc:creator><rdf:Seq>z        <rdf:li>z      </rdf:Seq></dc:creator>)z    </rdf:Description>z  </rdf:RDF>z</x:xmpmeta>r   )r%  r  r  rb   r   r  
astimezoner	   utcr  now	isoformatr  r   r   partconformance)rX   r  r  r  r  creator_toolr  cdatecreation_date_utcpdfar  EPOCHr  
xmp_create
xmp_modify	create_dtpartskeyword_listr  s                      rY   r  #OutputProducer._build_xmp_from_infoT  s   		7D17R$))Y5;Hd39rj--XF499j$7=2
8S11 zHtyy)T:@b499j$7=2		?D9 eX&&).5;K;K;M 1 < <X\\ Jyy$$	03 	03 	0 r2r1aEll8<<(%)<J)<J)0SI",,i,@J	:J	
 LL4S5F4GqIJLL3C
O3DAFGLL3C
O3DAFGLL5c*o5FaHILL1#h-BC88H-LLL1#l2C1DAFGYLL.s499~.>nMN0T5E5E1F0GG\] yyA~BC+7#e*D{R- E
 17#g,FT3 E
 LL67/AxyAB LL89 
 	

 yyr\   c                 b   U R                   n [        UR                  SSS9n[        UR                  [        USS 5      [        USS 5      [        USS 5      [        USS 5      [        USS 5      US	9nU R                  U5        U$ ! [         a  n[	        SUR                   35      UeS nAff = f)
NT)with_tzr   zCould not format date: r  r  r  r  r  )r  r  r  r  r  r  r	  )	r  r+   r	  	Exceptionr   r  r  r%  r  )rX   r  r	  errorr  s        rY   r  OutputProducer._add_info  s    yy	#D$6$6dSM
 **D)T2440T:t4D)T2T:t4'
 	(#  	)$*<*<)=>	s   B 
B.B))B.rA   c                     U R                   R                  (       a9  U R                   R                  nUR                  5       nU R                  U5        U$ g rU   )r  rR   get_encryption_objr  )rX   encryption_handlerr  s      rY   r  OutputProducer._add_encryption  sC    99&&!%!<!<(;;=Gg&Nr\   c                     U R                   R                  nU(       d  gU H1  nUR                  (       d  M  U R                  UR                  5        M3     [	        U5      $ )zshould be added in _add_catalogN)r  r9  r	  r  r)   )rX   r9  output_intents      rY   _add_output_intents"OutputProducer._add_output_intents  sN    11+M000!!-"C"CD , ''r\   c                     U R                   n[        [        USS 5      UR                  UR                  UR
                  S9nU R                  5       Ul        U R                  U5        U$ )Nr,  )r,  r-  r.  r/  )	r  r+  r%  r-  r.  r/  r  r9  r  )rX   r  r  s      rY   r  OutputProducer._add_catalog  sa    yy vt,((nn#66	
 &*%=%=%?"+&r\   r  r  r  r  r  r  r  c           
         U R                   nX!l        Xal        Xql        XQl        U(       a:  [
        R                  [
        R                  -   n	[        [        U/5      U	S9Ul
        UR                  [        ;   a*  [        UR                  5      /[        UR                     Qn
O>[        UR                  5      SSS[        [!        ["        UR                  5      S-  5      /n
[%        U
5      Ul        U(       a  [)        SS05      Ul        UR,                  (       d  UR.                  (       Gas  0 nUR,                  (       a  UR,                   Vs/ s HG  n[1        UR3                  5       5      R5                  5        SUR7                  5       R8                   3PMI     nn[)        S[%        U5      05      US	'   U R                   R,                   Vs/ s H=  nUR;                  5       (       d  M  [        UR7                  5       R                  5      PM?     nnU(       a  [%        U5      Ul        UR.                  (       GaR  / nUR.                  R?                  5        GH  u  nnUR@                  S
:X  a  [C        SU S35      e[E        US5      (       a  URF                  (       dr  UR@                  c   eUR@                  S-
  nS
Us=::  a  [I        UR                  5      :  a4  O  O1[        UR                  UR@                     R                  5      Ul#        URK                  [1        USS9R5                  URL                  UR                  S9 SUR5                  5        35        GM     U(       a"  [)        S[%        [O        U5      5      05      US'   [)        U5      Ul(        [S        U RU                  5       5       VVs/ s H9  u  nnURW                  5       =nc  M  U S[)        UR5                  5       5       3PM;     nnnU(       a4  UR                  S   RW                  5       (       d  URY                  S
S5        U(       a*  [)        S[        U5      R5                  5       05      Ul-        g g s  snf s  snf s  snnf )Nr  rJ   rI   d   z/Markedtruer   z/Namesz/EmbeddedFilesr   zNamed destination 'z6' was referenced but never set with set_link(name=...)r  r   Tr   r   z/Destsz0 <<>>z/Nums).r  r2  r:  r8  r6  r   SIGNATURES_EXISTAPPEND_ONLYr  r)   r3  	zoom_modeZOOM_CONFIGSr  r   rb   r>   r   r   r4  r   r5  r  named_destinationsr-   basenamerZ   r  refglobally_enclosedr;  r   r  r   r  r  r   r  rR   r   r7  r  r  r  insertr<  )rX   r  r  r  r  r  r  r  r  flagszoom_confignames_dict_entriesr  file_spec_namesefglobal_file_specsdests_namesr   r  r  r  pagelabelr<  s                           rY   r   OutputProducer._finalize_catalog  s#    yy*';$//!22]5N5NNE$,!3 45%K! >>\)))*dnn-K ))*D/#56K #+;"7$,i-@$AK!$"9"9"913"" *.)<)<#)< !!7!7!9:DDFGqI`I`IbIfIfHgh)<   # 8@x898"#34
 #ii66%6++- /GBLLN--.6 " %
 %&./@&AKO&&&)+"&"9"9"?"?"AJD$''1,+1$7mn 
 #444DMM#//;;;%)%5%5%9

<S_<,3DJJt?O?O4P4S4S,TDM  &&$T48BBUYUkUk  vA  vD  vDB  E  F  FG  HL  HV  HV  HX  GY  Z #B& 3;!8F;,?#@A4&x0 !)); <K %T%>%>%@A
A4,,.. 1qc8EOO-./0A 	 

 tzz!};;==q(+&.(;/99;<'K# i#%J
s   AQ-Q2-'Q2=Q7"Q7r  c              #      #    [        U R                  5      nS v   U R                  U==   [        U R                  5      U-
  -  ss'   g 7frU   )r   r  r  )rX   r  	prev_sizes      rY   r  OutputProducer._trace_sizeC  s:     $	**51S5E	5QQ1s   AA
c                     [         R                  S5        U R                  R                  5        H%  u  p[         R                  SU[	        U5      5        M'     g )Nz4Final size summary of the biggest document sections:z- %s: %s)r  debugr  r   _sizeof_fmt)rX   r  section_sizes      rY   r  (OutputProducer._log_final_sections_sizesI  sA    KL#'#E#E#K#K#MELLUK,EF $Nr\   )r  r  r  r   r  r  r  r  )r  rF   rS   NrU   r   )Dr^   r_   r`   ra   rn   rj   r  r  rR  rb   r  r,   r;   r   r  r  r  r9   r  r  slicer  r  r   r  r   r   r   rp   r   rT  r]  objectrj  r\  r  r  r  r#   r$   r"   r  r  r  r  rA  r  r  r  r   r<   r   r  rT  r  r  r  r  r  r)   r  r+  r  r  r   r  r  rc   r]   r\   rY   r  r    sI   \-A9 AF$*S0 $T $ @D /7}	 hw&7  */q$  DM 0"Xm-D "R#!%c:o!6R# !%S,%6 7R#  $CN3	R#
 
c7\))	*R#h
"T#z/2 "T#v+%6 3 09tCK0 9Z 9v&S,%6 7 &, $S,%6 7,  $CN3, !j1	,
 
,:"&sJ"7:	: j1 !%S,%6 7  $CL1	
  $C;)>$>? "#w'="=> 
(%tC;)>$>? %%tCL1 %$G4= GT GR@!#w'="=>@ !j1@ !%S,%6 7	@
  $C;)>$>?@  $CL1@ 
@D	$Xi%8 	$/	x)*H5J,KK	L/8N#; Y c Y v7 (*@!A (Xh%7 (j __ %_  	_
 %]3_ #>2_ 'y1_ ##45_ 
_B R R$ R R
Gr\   r  r
  r  r  rv   rv  keep_aspect_ratior   pdf_height_to_fliprS   c                     U(       a  U R                  XX45      u  pp4U(       a
  UnXt-
  U-
  n	OU* nX$-   n	SX6-  S SX-  S SX-  S SX-  S SU S    S3$ )Nzq .2fz 0 0 r   z cm /Ir  z Do Q)scale_inside_box)
r
  r  r  rv   rv  r  r   r  stream_hstream_ys
             rY   stream_content_for_raster_imager  O  s     **16
a%)A-25
QYsO5!1# 6
AIc?!H,S1 23i[	r\   rC  c           
         Sn0 n0 nSnSnSn[        [        U R                  R                  5       S S95      nU H  nUc   eXx   n	XS-   :X  a  UR                  U:X  ak  UR                  X!   S   :X  a,  UR                  U/ 5      R                  UR                  5        O#X!   R                  5         UnXXR                  /X!'   SnSX1'   OLU(       a  U	nUR                  /X!'   OX!   R                  UR                  5        SnOU	nUR                  /X!'   SnU	nUR                  nM     Sn
SnSnUn[        UR                  5       5       HX  u  p[        U5      nX:X  a'  U(       d   X;  d  US	:  a  X;   a  X	 X*   X.   -   X*'   X.	 OUn
UU-   nX;   a  US	:  nX	 US-  nMV  SnMZ     / n[        UR                  5       5       Hy  u  p[        [        U5      5      S:X  a.  UR                  S
U S
U[        U5      -   S-
   S
US    35        MK  UR                  S
U SS
R                  S U 5       5       S35        M{     SSR                  U5       S3$ )Nr   r   Fc                     U S   $ r  r]   )items    rY   r   !_tt_font_widths.<locals>.<lambda>q  s    tAwr\   r   r   Tr  r    [ c              3   J   #    U  H  n[        [        U5      5      v   M     g 7frU   rb   r   r   rv  s     rY   r   "_tt_font_widths.<locals>.<genexpr>       '@RCFR   !# ]
r   r   r   )r   r   r   r   r   r  r  popr   r  r   )rC  rangeidrange_range_intervalprevcid	prevwidthintervalr   r   
cid_mappedprevknextkprevintrir  wscwsrv   s                     rY   r+  r+  h  sp   G#%F&(NGIH &**,2FGHF   ]
A+&  I-$$(::%%gr299%:K:KLO'')%G'02C2C&DFO*.'(G','8'8&9FOO**5+<+<=  G$001FOH%%	7 8 EEG	B'"g:g1;#'wE"MFI5FM	EC7AgGQJEG (  A's2w<1HHq1QR[1_-Qr!ug67HHq3sxx'@R'@@AFG	 (
 rwwqzl!r\   rH  c           
         Sn0 n0 nSnSnSn[        U R                  5       5       H  u  pxXtS-   :X  aw  X:X  aM  XU   S   :X  a"  UR                  U/ 5      R                  U5        OX!   R	                  5         UnXX/X!'   SnSX1'   O.U(       a  UnU/X!'   OX!   R                  U5        SnO	UnU/X!'   SnUnUnM     Sn	Sn
SnUn[        UR                  5       5       HW  u  p[        U5      nX:X  a'  U(       d   X;  d  US:  a  X;   a  X	 X)   X-   -   X)'   X-	 OUn	X-   n
X;   a  US:  nX	 U
S-  n
MU  SnMY     / n[        UR                  5       5       Hy  u  p[        [        U5      5      S:X  a.  UR                  SU SU[        U5      -   S-
   SUS    35        MK  UR                  SU S	SR                  S
 U 5       5       S35        M{     SSR                  U5       S3$ )Nr   r  r   Fr   Tr  r   r   c              3   J   #    U  H  n[        [        U5      5      v   M     g 7frU   r"  r#  s     rY   r   #_cid_font_widths.<locals>.<genexpr>  r%  r&  r'  r   r   r   )r   r   r  r  r(  r   r  r   )rH  r)  r*  r+  r,  r-  r.  r   r`  r0  r1  r2  r3  r  r4  r5  rv   s                    rY   r*  r*    s   G#%F&(NGIHZ--/0
Q;!7OA..%%gr299%@O'')%G'0&8FO*.'!G',gFOO**51 G$gFOH	/ 12 EEG	B'"g:g1;#'wE"MFI5FM	E7AgGQJEG (  A's2w<1HHq1QR[1_-Qr!ug67HHq3sxx'@R'@@AFG	 (
 rwwqzl!r\   r  c                      U u  pSUS SUS S3$ )Nz[0 0 r  r   r   r]   )r  r  r  s      rY   r  r    s#    $H8C.)C22r\   numsuffixc                 b    S H"  n[        U 5      S:  a  U S U U 3s  $ U S-  n M$     U S SU 3$ )N)r   KiMiGiTiPiEiZii   z3.1fz.1fYi)abs)r:  r;  units      rY   r  r    sJ    >s8d?$ZvfX..t ? #Yb!!r\   pathresource_catalogc                     [        U R                  U5      R                  S5      S9nXl        [	        S5      Ul        [	        S5      Ul        [        U R                  5       5      Ul	        SUl
        U$ )zSConverts a PaintedSoftMask into a PDF XObject Form suitable for use as a soft mask.r  rV  rj  Formz5<</S /Transparency /CS /DeviceGray /I true /K false>>)r*   renderrY  r  r(   rz   rr   r)   get_bounding_boxb_boxr  )rG  rH  r1  s      rY   r0  r0    s_     4D(E(L(LY(WXGM	?GL6lGOT2245GMKGMNr\   r  r?   c                     U R                  U5      n[        UR                  S5      S9nXl        SUl        [        S5      Ul        [        S5      Ul        U R                  5       n[        U5      Ul
        SUl        U$ )zNConvert a blend group into a Form XObject with an isolated transparency group.r  rV  Frj  rJ  z+<</S /Transparency /CS /DeviceRGB /I true>>)rK  r*   rY  r  r  r(   rz   rr   rL  r)   rM  r  )r  rH  streamr1  bboxs        rY   r6  r6  	  so     \\*+Fi(@AG G	?GL6lGO!!#DTNGMAGMNr\   )Fr   N)B)rn   loggingr|  abcr   r   collectionsr   r   
contextlibr   r   r	   htmlr
   r  ior   	fontToolsr   r  annotationsr   r   drawingr   r   drawing_primitivesr   enumsr   r   r   r   errorsr   font_type_3r   r  r   r   r   image_datastructuresr   
line_breakr   outliner   r   r    r   r!   r"   r#   r$   signr%   r&   syntaxr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r   r1   r   r2   r  utilr3   r4   endesiver5   ImportErrortypingr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   
encryptionrA   rB   rC   rD   rE   r  rF   prefsrG   transitionsrH   	getLoggerr^   r  r  rP   re   rp   r   r   r  r  r+  rA  rI  rT  r   ro  ru  r  r  r   r  r  rb   r   r~  r  r  r   rm  r  r+  r   r*  r  r  r  r0  r6  r]   r\   rY   <module>rl     s    	 $ 0 % ' '  ( 6 1 ) V V ! " 0 0 1 6 Q Q < < )    ,
 
 
 2I+((' 
		8	$ ")"s "5  5(Ci C.I Y
9 Y
x+i +22 2$/ /:9 &%$ %#% #*7! *7Z)$ ):7 7tk'i k'\
9 
?9 ?-( -`E" E"P c3j)YUVaX aXHIG IGd$ $*.
  	
    ! 	2B' Bc BJ<c3h <C <~3eUl(; 3 3
"U "C "# "

-
'
;J

+:aF  Fs   J JJ