K i}UddlmZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z mZmZmZmZddlmZdd lmZdd lmZmZd Zerdd lmZdd lmZddlmZGddeZGddeZ dZ!de"d< ddlmZ#d#dZ'GddZ(GddZ)GddZ*d$dZ+ d% d&dZ,d'd Z-d(d!Z.d)d*d"Z/y#e$$rZ%ejLe%Z#YdZ%[%ddZ%[%wwxYw)+) annotationsN)IntEnum)BytesIO) ModuleType)IOAnyBinaryIO TypedDictcast)Image)StrOrBytesPath) DeferredErroris_pathF) ImageFile) ImagingFont)Fontc6eZdZUded<ded<ded<ded<y)Axis int | Noneminimumdefaultmaximumz bytes | NonenameN)__name__ __module__ __qualname____annotations__S/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/PIL/ImageFont.pyrr2s    r rceZdZdZdZy)Layoutrr N)rrrBASICRAQMrr r!r#r#9s E Dr r#i@BzModuleType | DeferredErrorcore) _imagingftcPt t|tkDr d}t|yy)Nztoo many characters in string)MAX_STRING_LENGTHlen ValueError)textmsgs r!_string_length_checkr.Hs,$T5F)F-o*G$r czeZdZUdZded<d dZd dZ d d dZ ddZ ddZ y ) ImageFontzPIL font wrapperrfontct|d5}d}tjj|d}dD]B}|r|j  ||z}t j|}|s3|j dvsBn$|r|j d|d}t|||_ |j|||j dddy#t$rYwxYw#1swYyxYw)Nrbr)z.pngz.gifz.pbm1Lzcannot find glyph data file z.{gif|pbm|png}) openospathsplitextcloser mode ExceptionOSErrorfile_load_pilfont_data)selffilenamefpimagerootextfullnamer-s r! _load_pilfontzImageFont._load_pilfontcs (D ! R04E77##H-a0D/ #KKM#czH!JJx0Ez!9 #KKM4TF:JKcl" DI  # #B . KKM3  !  s<.load_from_bytess1ffhDO D%4??MDIr win32asciir3ry)rvrfrdre) isinstancer&rexr+r9rzrxrwr#r$r% HAVE_RAQMwarningswarnryrr8fspathsysplatformrqencodedecodeUnicodeDecodeErrorr7rur1r r) rAr1rzrxrwryr-r{font_bytes_pathrvs ` ```` r!__init__zFreeTypeFont.__init__sy dM *''M 19:4&ACS/ !     v{{ ; ;"LLM~~ & fkk )$.. MM0 #LLM*   4=99T?D||w&*4T5*A$t{{}#**73 dE8=DI DED1 2*dD)+Q'*++ s*F,,G" G G"G G"G"ct|j|j|j|j|jgSN)r9rzrxrwryrAs r! __getstate__zFreeTypeFont.__getstate__s) 499djj$--ASASTTr cH|\}}}}}tj||||||yr)rpr)rAstater9rzrxrwrys r! __setstate__zFreeTypeFont.__setstate__s*5:2dE8]dD$xOr cZ|jj|jjfS)zq :return: A tuple of the font family (e.g. Helvetica) and the font style (e.g. Bold) )r1familystylers r!getnamezFreeTypeFont.getnames! yy00r cZ|jj|jjfS)z :return: A tuple of the font ascent (the distance from the baseline to the highest outline point) and descent (the distance from the baseline to the lowest outline point, a negative value) )r1ascentdescentrs r! getmetricszFreeTypeFont.getmetrics"s# yy!2!222r c\t||jj|||||dz S)a+ Returns length (in pixels with 1/64 precision) of given text when rendered in font with provided direction, features, and language. This is the amount by which following text should be offset. Text bounding box may extend past the length in some fonts, e.g. when using italics or accents. The result is returned as a float; it is a whole number if using basic layout. Note that the sum of two lengths may not equal the length of a concatenated string due to kerning. If you need to adjust for kerning, include the following character and subtract its length. For example, instead of :: hello = font.getlength("Hello") world = font.getlength("World") hello_world = hello + world # not adjusted for kerning assert hello_world == font.getlength("HelloWorld") # may fail use :: hello = font.getlength("HelloW") - font.getlength("W") # adjusted for kerning world = font.getlength("World") hello_world = hello + world # adjusted for kerning assert hello_world == font.getlength("HelloWorld") # True or disable kerning with (requires libraqm) :: hello = draw.textlength("Hello", font, features=["-kern"]) world = draw.textlength("World", font, features=["-kern"]) hello_world = hello + world # kerning is disabled, no need to adjust assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"]) .. versionadded:: 8.0.0 :param text: Text to measure. :param mode: Used by some graphics drivers to indicate what mode the driver prefers; if empty, the renderer may return either mode. Note that the mode is always a string, to simplify C-level implementations. :param direction: Direction of the text. It can be 'rtl' (right to left), 'ltr' (left to right) or 'ttb' (top to bottom). Requires libraqm. :param features: A list of OpenType font features to be used during text layout. This is usually used to turn on optional font features that are not enabled by default, for example 'dlig' or 'ss01', but can be also used to turn off default font features for example '-liga' to disable ligatures or '-kern' to disable kerning. To get all supported features, see https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist Requires libraqm. :param language: Language of the text. Different languages may use different glyph shapes or ligatures. This parameter tells the font which language the text is in, and to apply the correct substitutions as appropriate, if available. It should be a `BCP 47 language code `_ Requires libraqm. :return: Either width for horizontal text, or height for vertical text. @)r.r1rb)rAr,r< directionfeatureslanguages r!rbzFreeTypeFont.getlength*s0X T"yy""4y(HMPRRRr ct||jj||||||\}} | d|z | d|z } } |dd|zz|dd|zz} } | | | | z| | zfS)a Returns bounding box (in pixels) of given text relative to given anchor when rendered in font with provided direction, features, and language. Use :py:meth:`getlength()` to get the offset of following text with 1/64 pixel precision. The bounding box includes extra margins for some fonts, e.g. italics or accents. .. versionadded:: 8.0.0 :param text: Text to render. :param mode: Used by some graphics drivers to indicate what mode the driver prefers; if empty, the renderer may return either mode. Note that the mode is always a string, to simplify C-level implementations. :param direction: Direction of the text. It can be 'rtl' (right to left), 'ltr' (left to right) or 'ttb' (top to bottom). Requires libraqm. :param features: A list of OpenType font features to be used during text layout. This is usually used to turn on optional font features that are not enabled by default, for example 'dlig' or 'ss01', but can be also used to turn off default font features for example '-liga' to disable ligatures or '-kern' to disable kerning. To get all supported features, see https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist Requires libraqm. :param language: Language of the text. Different languages may use different glyph shapes or ligatures. This parameter tells the font which language the text is in, and to apply the correct substitutions as appropriate, if available. It should be a `BCP 47 language code `_ Requires libraqm. :param stroke_width: The width of the text stroke. :param anchor: The text anchor alignment. Determines the relative location of the anchor to the text. The default alignment is top left, specifically ``la`` for horizontal text and ``lt`` for vertical text. See :ref:`text-anchors` for details. :return: ``(left, top, right, bottom)`` bounding box rr r\)rAr,r<rrr stroke_widthanchorrzoffsetlefttopr^r_s r!r`zFreeTypeFont.getbboxyst T"yy(( $ 8Xv f1I ,fQi,.FcQ!l"22DGa,>N4NvS$,f 44r c <|j|||||||||  dS)a? Create a bitmap for the text. If the font uses antialiasing, the bitmap should have mode ``L`` and use a maximum value of 255. If the font has embedded color data, the bitmap should have mode ``RGBA``. Otherwise, it should have mode ``1``. :param text: Text to render. :param mode: Used by some graphics drivers to indicate what mode the driver prefers; if empty, the renderer may return either mode. Note that the mode is always a string, to simplify C-level implementations. .. versionadded:: 1.1.5 :param direction: Direction of the text. It can be 'rtl' (right to left), 'ltr' (left to right) or 'ttb' (top to bottom). Requires libraqm. .. versionadded:: 4.2.0 :param features: A list of OpenType font features to be used during text layout. This is usually used to turn on optional font features that are not enabled by default, for example 'dlig' or 'ss01', but can be also used to turn off default font features for example '-liga' to disable ligatures or '-kern' to disable kerning. To get all supported features, see https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist Requires libraqm. .. versionadded:: 4.2.0 :param language: Language of the text. Different languages may use different glyph shapes or ligatures. This parameter tells the font which language the text is in, and to apply the correct substitutions as appropriate, if available. It should be a `BCP 47 language code `_ Requires libraqm. .. versionadded:: 6.0.0 :param stroke_width: The width of the text stroke. .. versionadded:: 6.2.0 :param anchor: The text anchor alignment. Determines the relative location of the anchor to the text. The default alignment is top left, specifically ``la`` for horizontal text and ``lt`` for vertical text. See :ref:`text-anchors` for details. .. versionadded:: 8.0.0 :param ink: Foreground ink for rendering in RGBA mode. .. versionadded:: 8.0.0 :param start: Tuple of horizontal and vertical offset, as text may render differently when starting at fractional coordinates. .. versionadded:: 9.4.0 :return: An internal PIL storage memory instance as defined by the :py:mod:`PIL.Image.core` interface module. )rrrrrinkstartr)getmask2) rAr,r<rrrrrrrs r!rXzFreeTypeFont.getmasks@^}}  %     r c t|| d} dfd } |jj|| ||||| jdd||| S)a Create a bitmap for the text. If the font uses antialiasing, the bitmap should have mode ``L`` and use a maximum value of 255. If the font has embedded color data, the bitmap should have mode ``RGBA``. Otherwise, it should have mode ``1``. :param text: Text to render. :param mode: Used by some graphics drivers to indicate what mode the driver prefers; if empty, the renderer may return either mode. Note that the mode is always a string, to simplify C-level implementations. .. versionadded:: 1.1.5 :param direction: Direction of the text. It can be 'rtl' (right to left), 'ltr' (left to right) or 'ttb' (top to bottom). Requires libraqm. .. versionadded:: 4.2.0 :param features: A list of OpenType font features to be used during text layout. This is usually used to turn on optional font features that are not enabled by default, for example 'dlig' or 'ss01', but can be also used to turn off default font features for example '-liga' to disable ligatures or '-kern' to disable kerning. To get all supported features, see https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist Requires libraqm. .. versionadded:: 4.2.0 :param language: Language of the text. Different languages may use different glyph shapes or ligatures. This parameter tells the font which language the text is in, and to apply the correct substitutions as appropriate, if available. It should be a `BCP 47 language code `_ Requires libraqm. .. versionadded:: 6.0.0 :param stroke_width: The width of the text stroke. .. versionadded:: 6.2.0 :param anchor: The text anchor alignment. Determines the relative location of the anchor to the text. The default alignment is top left, specifically ``la`` for horizontal text and ``lt`` for vertical text. See :ref:`text-anchors` for details. .. versionadded:: 8.0.0 :param ink: Foreground ink for rendering in RGBA mode. .. versionadded:: 8.0.0 :param start: Tuple of horizontal and vertical offset, as text may render differently when starting at fractional coordinates. .. versionadded:: 9.4.0 :return: A tuple of an internal PIL storage memory instance as defined by the :py:mod:`PIL.Image.core` interface module, and the text offset, the gap between the starting coordinate and the first marking )rrc||f}tj|tjjdk(rd|Sd|S)NRGBAr6)r rVr&fill)r^r_rzr<s r!rz#FreeTypeFont.getmask2..fillls?6?D  + +D 1::??TV^6dK KdK Kr stroke_filledF)r^rmr_rmrdrk)r.r1renderget) rAr,r<rrrrrrrrYrZrs ` r!rzFreeTypeFont.getmask2scd T" =E L yy        JJ .     r c| t|j}t || |j n|| |j n|| |jn||xs |jS#t$r|j}Y_wxYw)a Create a copy of this FreeTypeFont object, using any specified arguments to override the settings. Parameters are identical to the parameters used to initialize this object. :return: A FreeTypeFont object. )r1rzrxrwry) rrrAttributeErrorr9rprzrxrwry)rAr1rzrxrwrys r! font_variantzFreeTypeFont.font_variants~" < !t/"l % $**5&.&6T]]H'=4+=+=   " !yy !sA!!A98A9c|jj}|Dcgc]}|jddc}Scc}w)z :returns: A list of the named styles in a variation font. :exception OSError: If the font is not a variation font. r )r1 getvarnamesreplace)rAnamesrs r!get_variation_namesz FreeTypeFont.get_variation_namess5  %%'7<=t Wc*===s;c|j}t|ts|j}|j |dz}|t |ddk(ry||_|jj|y)zv :param name: The name of the style. :exception OSError: If the font is not a variation font. r _last_variation_indexN) rrrqrrxgetattrrr1 setvarname)rArrrxs r!set_variation_by_namez"FreeTypeFont.set_variation_by_namesk ((*$&;;=D D!A% GD"94@ @ %*" U#r c|jj}|D] }|ds |djdd|d<"|S)z :returns: A list of the axes in a variation font. :exception OSError: If the font is not a variation font. rrr )r1 getvaraxesr)rAaxesaxiss r!get_variation_axeszFreeTypeFont.get_variation_axessO yy##% BDF|#F|33GSAV  B r c:|jj|y)z :param axes: A list of values for each axis. :exception OSError: If the font is not a variation font. N)r1 setvaraxes)rArs r!set_variation_by_axesz"FreeTypeFont.set_variation_by_axess T"r  rrhN) r1StrOrBytesPath | BinaryIOrzfloatrxrmrwrcry Layout | Nonerdre)rd list[Any])rrrdre)rdztuple[str | None, str | None])rdztuple[int, int])rhNNN) r,rjr<rcr str | Nonerlist[str] | Nonerrrdr)rhNNNrN)r,rjr<rcrrrrrrrrrrrdz!tuple[float, float, float, float])rhNNNrNrN)r,rjr<rcrrrrrrrrrrrrmrtuple[float, float] | Nonerdrk)r,rjr<rcrrrrrrrrrrrrmrrrYrrZrrdz.tuple[Image.core.ImagingCore, tuple[int, int]])NNNNN) r1z StrOrBytesPath | BinaryIO | Nonerz float | Nonerxrrwrryrrdrp)rdz list[bytes])rrjrdre)rdz list[Axis])rz list[float]rdre)rrrrnrrrrrrrbr`rXrrrrrrrr r!rprps= J '+ 93'9393 93  93 % 93 93vUP13 $%)# MSMSMS MS # MS  MS MSd $%)#!@5@5@5 @5 # @5  @5@5@5 +@5J $%)#!,0Y Y Y  Y # Y  Y Y Y Y *Y  Y | $%)#!,0g g g  g # g  g g g g *g g g  8g V26! #'+  .      %    <>$& #r rpc`eZdZdZ d ddZ d d dZ d dZd dZy) TransposedFontz,Wrapper for writing rotated or mirrored textNc ||_||_y)a Wrapper that creates a transposed font from any existing font object. :param font: A font object. :param orientation: An optional orientation. If given, this should be one of Image.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM, Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or Image.Transpose.ROTATE_270. N)r1 orientation)rAr1rs r!rzTransposedFont.__init__s &r c|jj||g|i|}|j|j|jS|Sr)r1rXr transpose)rAr,r<rYrZrRs r!rXzTransposedFont.getmasksLTYY  tT ;D ;F ;    '<< 0 01 1 r c|jj|g|i|\}}}}||z }||z } |jtjj tjj fvrdd| |fSdd|| fS)Nr)r1r`rr Transpose ROTATE_90 ROTATE_270) rAr,rYrZrrrightbottomr^r_s r!r`zTransposedFont.getbboxs $5499#4#4T#KD#KF#K c5& #    9 95??;U;UV Va& &!UF""r c|jtjjtjjfvr d}t ||j j|g|i|S)Nz>text length is undefined for text rotated by 90 or 270 degrees)rr rrrr+r1rb)rAr,rYrZr-s r!rbzTransposedFont.getlengthsY    9 95??;U;UV VRCS/ !"tyy""49$9&99r r)r1zImageFont | FreeTypeFontrzImage.Transpose | Nonergri)r,rjrYrrZrrdztuple[int, int, float, float])r,rjrYrrZrrdr)rrrrnrrXr`rbrr r!rrs}6UY',';Q'".0'*8;GJ  # #(+ #7: # & #:r rc<t}|j||S)ae Load a font file. This function loads a font object from the given bitmap font file, and returns the corresponding font object. For loading TrueType or OpenType fonts instead, see :py:func:`~PIL.ImageFont.truetype`. :param filename: Name of font file. :return: A font object. :exception OSError: If the file could not be read. )r0rH)rBrvs r!rQrQs  AOOH Hr c dfd } ||S#t$rt|stjj |}g}t j dk(rRtjjd}|r,|jtjj|dnt j dvrtjjd} | stjjd} | g} tjjd} | sd } | | jd z } || D cgc]"} tjj| d$ncc} wc} z }n8t j d k(r%|d d tjjdgz }tjj|d} d}|D]}tj|D]\}}}|D]}| r3||k(r.|tjj||ccccYS| r;tjj|d|k(satjj||}tjj|ddk(r||ccccYS| r||}|r ||cYSwxYw)aP Load a TrueType or OpenType font from a file or file-like object, and create a font object. This function loads a font object from the given file or file-like object, and creates a font object for a font of the given size. For loading bitmap fonts instead, see :py:func:`~PIL.ImageFont.load` and :py:func:`~PIL.ImageFont.load_path`. Pillow uses FreeType to open font files. On Windows, be aware that FreeType will keep the file open as long as the FreeTypeFont object exists. Windows limits the number of files that can be open in C at once to 512, so if many fonts are opened simultaneously and that limit is approached, an ``OSError`` may be thrown, reporting that FreeType "cannot open resource". A workaround would be to copy the file(s) into memory, and open that instead. This function requires the _imagingft service. :param font: A filename or file-like object containing a TrueType font. If the file is not found in this filename, the loader may also search in other directories, such as: * The :file:`fonts/` directory on Windows, * :file:`/Library/Fonts/`, :file:`/System/Library/Fonts/` and :file:`~/Library/Fonts/` on macOS. * :file:`~/.local/share/fonts`, :file:`/usr/local/share/fonts`, and :file:`/usr/share/fonts` on Linux; or those specified by the ``XDG_DATA_HOME`` and ``XDG_DATA_DIRS`` environment variables for user-installed and system-wide fonts, respectively. :param size: The requested size, in pixels. :param index: Which font face to load (default is first available face). :param encoding: Which font encoding to use (default is Unicode). Possible encodings include (see the FreeType documentation for more information): * "unic" (Unicode) * "symb" (Microsoft Symbol) * "ADOB" (Adobe Standard) * "ADBE" (Adobe Expert) * "ADBC" (Adobe Custom) * "armn" (Apple Roman) * "sjis" (Shift JIS) * "gb " (PRC) * "big5" * "wans" (Extended Wansung) * "joha" (Johab) * "lat1" (Latin-1) This specifies the character set to use. It does not alter the encoding of any text provided in subsequent operations. :param layout_engine: Which layout engine to use, if available: :attr:`.ImageFont.Layout.BASIC` or :attr:`.ImageFont.Layout.RAQM`. If it is available, Raqm layout will be used by default. Otherwise, basic layout will be used. Raqm layout is recommended for all non-English text. If Raqm layout is not required, basic layout will have better performance. You can check support for Raqm layout using :py:func:`PIL.features.check_feature` with ``feature="raqm"``. .. versionadded:: 4.2.0 :return: A font object. :exception OSError: If the file could not be read. :exception ValueError: If the font size is not greater than zero. c"t|Sr)rp)r1rwrxryrzs r!freetypeztruetype..freetypeQsD$xGGr r|WINDIRfonts)linuxlinux2 XDG_DATA_HOMEz~/.local/share XDG_DATA_DIRSz/usr/local/share:/usr/share:darwinz/Library/Fontsz/System/Library/Fontsz~/Library/Fontsr Nrz.ttf)r1rrdrp)r>rr8r9basenamerrenvironrrPjoin expandusersplitr:walk)r1rzrxrwryr ttf_filenamedirswindir data_homexdg_dirs data_dirsxdg_dirrF%first_font_with_a_different_extension directorywalkrootwalkdir walkfilenames walkfilenamefontpaths ```` r!truetypersbRHH5~ 3t} ww''-  <<7 "ZZ^^H-F BGGLL9: \\0 0 7IGG../?@ !{H 7I9  , ,H 8LRWW\\'73LL LD \\X %  '""#45 D gg|,Q/04- MI46GGI4F M0'=$1ML||;' X|(LMMM RWW%5%5l%CA%F,%V#%77<<,#G77++H5a8FB#+H#555"'L'TDLAM M M 1AB B g3sBD-K'E,+CK.K1%KAK,K/K2KKcTt|ts|jd}tjD]-} t t jj||cSd|d}t jj|r |d|dz }t|#t$rYtwxYw)z Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a bitmap font along the Python path. :param filename: Name of font file. :return: A font object. :exception OSError: If the file could not be read. zutf-8zcannot find font file "z " in sys.pathz, did you mean ImageFont.load("z ") instead?) rrcrrr9rQr8rr>exists)rBrr-s r! load_pathrs h $??7+XX   Y9: : $H:] ;C ww~~h 0 +FF #,    s(B B'&B'c t}|jttjdt j ttjd|S)Ns( UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB //kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ /gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA 2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// +gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA ////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// //kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB //sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ +wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ ///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// +gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA ////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// //cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// +QAGAAIAzgAKANUAEw== s iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H /Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ /yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR w7IkEbzhVQAAAABJRU5ErkJggg== )r0r@rbase64 b64decoder r7)rvs r!load_default_imagefontrsi A   \^ ` B      GBF Hr cttts|rs(8# 55#) % 9 W ! !$ ,mmju#u#p+:+:\  "#' A #A A A A ! A  AH.E Pu$O! =  R D!sCC/C**C/