<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>66654</bug_id>
          
          <creation_ts>2011-08-22 02:18:35 -0700</creation_ts>
          <short_desc>[EFL] Fonts API refactoring</short_desc>
          <delta_ts>2011-08-31 01:44:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Grzegorz Czajkowski">g.czajkowski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454501</commentid>
    <comment_count>0</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-22 02:18:35 -0700</bug_when>
    <thetext>There are too many similar API regarding to fonts.
Add one consistent API to set/get the font name for the font family.
Remove the previous font API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454502</commentid>
    <comment_count>1</comment_count>
      <attachid>104654</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-22 02:19:50 -0700</bug_when>
    <thetext>Created attachment 104654
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454506</commentid>
    <comment_count>2</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-08-22 02:27:37 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=104654) [details]
&gt; proposed patch

Please notify these API changes via webkit-efl mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454507</commentid>
    <comment_count>3</comment_count>
      <attachid>104654</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 02:49:58 -0700</bug_when>
    <thetext>Comment on attachment 104654
proposed patch

Attachment 104654 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9463693

New failing tests:
http/tests/inspector/resource-tree/resource-tree-document-url.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454589</commentid>
    <comment_count>4</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-08-22 07:27:10 -0700</bug_when>
    <thetext>&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3558
&gt; +const char *ewk_view_font_family_name_get(const Evas_Object *o, const Ewk_Font_Family font_family)

font_family does not need to be const.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3580
&gt; +Eina_Bool ewk_view_font_family_name_set(const Evas_Object *o, const Ewk_Font_Family font_family, const char *name)

Shouldn&apos;t o and font_family be non-const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454598</commentid>
    <comment_count>5</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-22 07:36:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3558
&gt; &gt; +const char *ewk_view_font_family_name_get(const Evas_Object *o, const Ewk_Font_Family font_family)
&gt; 
&gt; font_family does not need to be const.

Yes, it doesn&apos;t need const. I will fix this.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3580
&gt; &gt; +Eina_Bool ewk_view_font_family_name_set(const Evas_Object *o, const Ewk_Font_Family font_family, const char *name)
&gt; 
&gt; Shouldn&apos;t o and font_family be non-const?

Yes, they shouldn&apos;t have const too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454605</commentid>
    <comment_count>6</comment_count>
      <attachid>104681</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-22 08:05:23 -0700</bug_when>
    <thetext>Created attachment 104681
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454609</commentid>
    <comment_count>7</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-08-22 08:27:42 -0700</bug_when>
    <thetext>Informal r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458152</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-29 03:05:46 -0700</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459413</commentid>
    <comment_count>9</comment_count>
      <attachid>104681</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-30 21:08:13 -0700</bug_when>
    <thetext>Comment on attachment 104681
updated patch

rubberstamping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459414</commentid>
    <comment_count>10</comment_count>
      <attachid>104681</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 21:11:20 -0700</bug_when>
    <thetext>Comment on attachment 104681
updated patch

Rejecting attachment 104681 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ceeded at 3723 (offset 72 lines).
1 out of 2 hunks FAILED -- saving rejects to file Source/WebKit/efl/ewk/ewk_view.cpp.rej
patching file Source/WebKit/efl/ewk/ewk_view.h
Hunk #1 succeeded at 312 (offset 2 lines).
Hunk #2 succeeded at 1668 (offset 23 lines).
Hunk #3 FAILED at 2079.
1 out of 3 hunks FAILED -- saving rejects to file Source/WebKit/efl/ewk/ewk_view.h.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Hajime Morita&apos;, u&apos;--fo...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/9565676</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459483</commentid>
    <comment_count>11</comment_count>
      <attachid>105751</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-31 00:17:14 -0700</bug_when>
    <thetext>Created attachment 105751
updated patch

Re-based patch and add MORITA Hajime as a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459498</commentid>
    <comment_count>12</comment_count>
      <attachid>105751</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 01:00:21 -0700</bug_when>
    <thetext>Comment on attachment 105751
updated patch

Rejecting attachment 105751 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
9de5a87cea417931047eaadfbef9bad97de9dcd2
r94157 = 669c56b2bff510c971e248ae3a2dda46bf9b1785
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/9567719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459504</commentid>
    <comment_count>13</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-31 01:08:41 -0700</bug_when>
    <thetext>Grzegorz,  you need to change MORITA Hajime with Hajime Morita in reviewer field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459508</commentid>
    <comment_count>14</comment_count>
      <attachid>105758</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-31 01:16:38 -0700</bug_when>
    <thetext>Created attachment 105758
updated patch

Fix name order in the reviewer field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459525</commentid>
    <comment_count>15</comment_count>
      <attachid>105758</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 01:44:37 -0700</bug_when>
    <thetext>Comment on attachment 105758
updated patch

Clearing flags on attachment: 105758

Committed r94163: &lt;http://trac.webkit.org/changeset/94163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459526</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-31 01:44:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104654</attachid>
            <date>2011-08-22 02:19:50 -0700</date>
            <delta_ts>2011-08-22 08:05:23 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>fonts_refactoring.patch</filename>
            <type>text/plain</type>
            <size>12506</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAyMWVmMTFkLi5jMDQwZGYwIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMjIgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRm9udHMgQVBJIHJlZmFjdG9yaW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBh
cmUgdG9vIG1hbnkgc2ltaWxhciBBUEkgcmVnYXJkaW5nIHRvIGZvbnRzLgorICAgICAgICBBZGQg
b25lIGNvbnNpc3RlbnQgQVBJIHRvIHNldC9nZXQgdGhlIGZvbnQgbmFtZSBmb3IgdGhlIGZvbnQg
ZmFtaWx5LgorICAgICAgICBSZW1vdmUgdGhlIHByZXZpb3VzIGZvbnQgQVBJLgorCisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuaDoKKwogMjAxMS0wOC0yMCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBGaXggYW5kIHVwZGF0ZSBk
b3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIGV3a192aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKaW5kZXggODIwYjg0My4uM2UzYTg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCkBAIC0yMTczLDEwMiArMjE3Myw2IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSkKICAgICByZXR1
cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3Rh
bmRhcmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRhcmQ7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZw
cml2LT5zZXR0aW5ncy5mb250X3N0YW5kYXJkLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdl
X3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChm
YW1pbHkpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmll
d19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9u
dF9jdXJzaXZlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X2N1cnNpdmUsIGZhbWlseSkpCi0gICAg
ICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjgoZmFtaWx5KSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKLX0KLQotY29uc3Qg
Y2hhciogZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLmZvbnRfZmFudGFzeTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9mYW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQotewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7Ci0gICAgaWYg
KGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBm
YW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRGYW50YXN5Rm9udEZhbWls
eShBdG9taWNTdHJpbmc6OmZyb21VVEY4KGZhbWlseSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7
Ci19Ci0KLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0g
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKmZhbWlseSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwotICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRp
bmdzLmZvbnRfbW9ub3NwYWNlLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdz
LT5zZXRGaXhlZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2Zv
bnRfc2VyaWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWY7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2
LT5zZXR0aW5ncy5mb250X3NlcmlmLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRp
bmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5n
X2ZvbnRfc2Fuc19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5z
X3NlcmlmOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWYsIGZhbWlseSkpCi0g
ICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQXRvbWlj
U3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOwotfQotCiBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwpAQCAtMzY1MSw2ICszNTU1LDY1IEBAIEV3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9n
ZXQoRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKK2NvbnN0IGNoYXIgKmV3
a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBF
d2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCAwKTsKKworICAgIHN3aXRjaCAoZm9udF9mYW1pbHkpIHsKKyAgICBjYXNlIEVXS19GT05UX0ZB
TUlMWV9TVEFOREFSRDoKKyAgICAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRh
cmQ7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfQ1VSU0lWRToKKyAgICAgICAgcmV0dXJuIHBy
aXYtPnNldHRpbmdzLmZvbnRfY3Vyc2l2ZTsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9GQU5U
QVNZOgorICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5OworICAgIGNh
c2UgRVdLX0ZPTlRfRkFNSUxZX01PTk9TUEFDRToKKyAgICAgICAgcmV0dXJuIHByaXYtPnNldHRp
bmdzLmZvbnRfbW9ub3NwYWNlOworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NFUklGOgorICAg
ICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZjsKKyAgICBjYXNlIEVXS19GT05U
X0ZBTUlMWV9TQU5TX1NFUklGOgorICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9z
YW5zX3NlcmlmOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworRWluYV9Cb29sIGV3a192aWV3
X2ZvbnRfZmFtaWx5X25hbWVfc2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfRm9u
dF9GYW1pbHkgZm9udF9mYW1pbHksIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKworICAgIHN3aXRjaCAoZm9udF9m
YW1pbHkpIHsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TVEFOREFSRDoKKyAgICAgICAgaWYg
KGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZCwg
bmFtZSkpCisgICAgICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRG
YW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChuYW1lKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0NVUlNJVkU6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3No
YXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfY3Vyc2l2ZSwgbmFtZSkpCisgICAgICAg
ICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRDdXJzaXZlRm9udEZhbWlseShBdG9taWNTdHJp
bmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9G
QU1JTFlfRkFOVEFTWToKKyAgICAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJp
di0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBuYW1lKSkKKyAgICAgICAgICAgIHByaXYtPnBhZ2Vf
c2V0dGluZ3MtPnNldEZhbnRhc3lGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFt
ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0U6
CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZv
bnRfbW9ub3NwYWNlLCBuYW1lKSkKKyAgICAgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNl
dEZpeGVkRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfU0VSSUY6CisgICAgICAgIGlmIChlaW5h
X3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYsIG5hbWUpKQor
ICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0U2VyaWZGb250RmFtaWx5KEF0b21p
Y1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVXS19G
T05UX0ZBTUlMWV9TQU5TX1NFUklGOgorICAgICAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWYsIG5hbWUpKQorICAgICAgICAgICAg
cHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6
OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKwog
LyoqCiAgKiBAaW50ZXJuYWwKICAqIFJlcG9ydHMgdGhlIHZpZXcgdGhhdCBlZGl0b3IgY2xpZW50
IHNlbGVjdGlvbiBoYXMgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggOGMy
YmFjYS4uZTU3Yjk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTMxMCw2ICszMTAs
MTggQEAgZW51bSBfRXdrX1ZpZXdfTW9kZSB7CiAvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
QGEgX0V3a19WaWV3X01vZGUuCiB0eXBlZGVmIGVudW0gX0V3a19WaWV3X01vZGUgRXdrX1ZpZXdf
TW9kZTsKIAorLy8vIERlZmluZXMgdGhlIGZvbnQgZmFtaWxpZXMuCitlbnVtIF9Fd2tfRm9udF9G
YW1pbHkgeworICAgIEVXS19GT05UX0ZBTUlMWV9TVEFOREFSRCA9IDAsCisgICAgRVdLX0ZPTlRf
RkFNSUxZX0NVUlNJVkUsCisgICAgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1ksCisgICAgRVdLX0ZP
TlRfRkFNSUxZX01PTk9TUEFDRSwKKyAgICBFV0tfRk9OVF9GQU1JTFlfU0VSSUYsCisgICAgRVdL
X0ZPTlRfRkFNSUxZX1NBTlNfU0VSSUYKK307CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
QGEgX0V3a19Gb250X0ZhbWlseS4KK3R5cGVkZWYgZW51bSBfRXdrX0ZvbnRfRmFtaWx5IEV3a19G
b250X0ZhbWlseTsKKwogLyoqCiAgKiBAYnJpZWYgQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEg
X0V3a19UaWxlX1VudXNlZF9DYWNoZS4KICAqCkBAIC0xNjMzLDExNCArMTY0NSw2IEBAIEVBUEkg
aW50ICAgICAgICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSk7CiAKIC8qKgot
ICogR2V0cyB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gZ2V0IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQotICoKLSAqIEByZXR1cm4gdGhl
IGZvbnQgc3RhbmRhcmQgZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8K
LUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9zdGFuZGFyZF9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgc3RhbmRhcmQgZmFt
aWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBzdGFuZGFy
ZCBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJ
TkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0
aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkp
OwotCi0vKioKLSAqIEdldHMgdGhlIGZvbnQgY3Vyc2l2ZSBmYW1pbHkuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IGN1cnNpdmUgZmFtaWx5Ci0gKgotICogQHJl
dHVybiB0aGUgZm9udCBjdXJzaXZlIGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVy
ZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgc3RhbmRh
cmQgZmFtaWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBz
dGFuZGFyZCBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZh
bWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUgZm9udCBtb25vc3BhY2UgZmFtaWx5LgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZm9udCBtb25vc3BhY2UgZmFtaWx5Ci0g
KgotICogQHJldHVybiB0aGUgZm9udCBtb25vc3BhY2UgZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMg
MCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9u
dF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRo
ZSBmb250IG1vbm9zcGFjZSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
c2V0IHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBmb250IGZhbnRhc3kg
ZmFtaWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZm9udCBmYW50
YXN5IGZhbWlseQotICoKLSAqIEByZXR1cm4gdGhlIGZvbnQgZmFudGFzeSBmYW1pbHkgb24gc3Vj
Y2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdf
c2V0dGluZ19mb250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0g
KiBTZXRzIHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gc2V0IHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1F
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9zZXQoRXZhc19P
YmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUgZm9udCBz
ZXJpZiBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250
IHNlcmlmIGZhbWlseQotICoKLSAqIEByZXR1cm4gdGhlIGZvbnQgc2VyaWYgZmFtaWx5IG9uIHN1
Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3
X3NldHRpbmdfZm9udF9zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAq
IFNldHMgdGhlIGZvbnQgc2VyaWYgZmFtaWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIHNldCB0aGUgZm9udCBzZXJpZiBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpvLCBj
b25zdCBjaGFyICpmYW1pbHkpOwotCi0vKioKLSAqIEdldHMgdGhlIGZvbnQgc2FucyBzZXJpZiBm
YW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IHNhbnMg
c2VyaWYgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUgZm9udCBzYW5zIHNlcmlmIGZhbWlseSBv
biBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tf
dmlld19zZXR0aW5nX2ZvbnRfc2Fuc19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIFNldHMgdGhlIGZvbnQgc2FucyBzZXJpZiBmYW1pbHkuCi0gKgotICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IHNlcmlmIGZhbWlseQotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0g
Ki8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCiAgKiBRdWVyaWVz
IGlmIHRoZSBzcGF0aWFsIG5hdmlhZ3Rpb24gZmVhdHVyZSBpcyBlbmFibGVkLgogICoKICAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHF1ZXJ5IGlmIHNwYXRpYWwgbmF2aWdhdGlvbiBmZWF0dXJl
IGlzIGVuYWJsZWQKQEAgLTIxNzUsNiArMjA3OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmll
d19tb2RlX3NldChFdmFzX09iamVjdCAqbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpOwogICog
QHNlZSBld2tfdmlld19tb2RlX3NldCgpCiAgKi8KIEVBUEkgRXdrX1ZpZXdfTW9kZSBld2tfdmll
d19tb2RlX2dldChFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogR2V0cyB0aGUgbmFtZSBvZiBm
b250IGZvciB0aGUgZ2l2ZW4gZm9udCBmYW1pbHkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZ2V0IG5hbWUgb2YgZm9udCB0aGUgZm9yIGZvbnQgZmFtaWx5CisgKiBAcGFyYW0gZm9u
dF9mYW1pbHkgdGhlIGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtIHRvIGdl
dCBmb250IG5hbWUKKyAqCisgKiBAcmV0dXJuIHRoZSBuYW1lIG9mIGZvbnQgZmFtaWx5CisgKi8K
K0VBUEkgY29uc3QgY2hhciAqZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8sIGNvbnN0IEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSk7CisKKy8qKgor
ICogU2V0cyB0aGUgZm9udCBmb3IgdGhlIGdpdmVuIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBzZXQgZm9udCBmb3IgdGhlIGdpdmVuIGZhbWlseQorICogQHBhcmFtIGZv
bnRfZmFtaWx5IHRoZSBmb250IGZhbWlseSBhcyBAYSBFd2tfRm9udF9GYW1pbHkgZW51bQorICog
QHBhcmFtIG5hbWUgdGhlIGZvbnQgbmFtZSB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5h
X0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSwgY29uc3QgY2hhciAqbmFtZSk7CiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="100554"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104681</attachid>
            <date>2011-08-22 08:05:23 -0700</date>
            <delta_ts>2011-08-31 00:17:14 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>fonts_refactoring.patch</filename>
            <type>text/plain</type>
            <size>12476</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAyMWVmMTFkLi43M2M4MzM4IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMjIgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRm9udHMgQVBJIHJlZmFjdG9yaW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBh
cmUgdG9vIG1hbnkgc2ltaWxhciBBUEkgcmVnYXJkaW5nIHRvIGZvbnRzLgorICAgICAgICBBZGQg
b25lIGNvbnNpc3RlbnQgQVBJIHRvIHNldC9nZXQgdGhlIGZvbnQgbmFtZSBmb3IgdGhlIGZvbnQg
ZmFtaWx5LgorICAgICAgICBSZW1vdmUgdGhlIHByZXZpb3VzIGZvbnQgQVBJLgorCisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVf
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuaDoKKwogMjAxMS0wOC0yMCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcu
Y3phamtvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBGaXggYW5kIHVwZGF0ZSBk
b3h5Z2VuIGRvY3VtZW50YXRpb24gZm9yIGV3a192aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKaW5kZXggODIwYjg0My4uM2I4OGM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCkBAIC0yMTczLDEwMiArMjE3Myw2IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2Zv
bnRfbW9ub3NwYWNlX3NpemVfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSkKICAgICByZXR1
cm4gRUlOQV9UUlVFOwogfQogCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3Rh
bmRhcmRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRhcmQ7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZw
cml2LT5zZXR0aW5ncy5mb250X3N0YW5kYXJkLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdl
X3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChm
YW1pbHkpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmll
d19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9u
dF9jdXJzaXZlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X2N1cnNpdmUsIGZhbWlseSkpCi0gICAg
ICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjgoZmFtaWx5KSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKLX0KLQotY29uc3Qg
Y2hhciogZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYt
PnNldHRpbmdzLmZvbnRfZmFudGFzeTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9mYW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQotewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7Ci0gICAgaWYg
KGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBm
YW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRGYW50YXN5Rm9udEZhbWls
eShBdG9taWNTdHJpbmc6OmZyb21VVEY4KGZhbWlseSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7
Ci19Ci0KLWNvbnN0IGNoYXIgKmV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0g
ICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlOwotfQotCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKmZhbWlseSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBF
SU5BX0ZBTFNFKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJ
TkFfRkFMU0UpOwotICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRp
bmdzLmZvbnRfbW9ub3NwYWNlLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdz
LT5zZXRGaXhlZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2Zv
bnRfc2VyaWZfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWY7Ci19Ci0K
LUVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2
LT5zZXR0aW5ncy5mb250X3NlcmlmLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRp
bmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsK
LSAgICByZXR1cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5n
X2ZvbnRfc2Fuc19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5z
X3NlcmlmOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWYsIGZhbWlseSkpCi0g
ICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQXRvbWlj
U3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVFOwotfQotCiBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25fZ2V0KEV2YXNfT2Jq
ZWN0ICpvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFM
U0UpOwpAQCAtMzY1MSw2ICszNTU1LDY1IEBAIEV3a19WaWV3X01vZGUgZXdrX3ZpZXdfbW9kZV9n
ZXQoRXZhc19PYmplY3QgKm8pCiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKK2NvbnN0IGNoYXIgKmV3
a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9u
dF9GYW1pbHkgZm9udF9mYW1pbHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsK
KworICAgIHN3aXRjaCAoZm9udF9mYW1pbHkpIHsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9T
VEFOREFSRDoKKyAgICAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRhcmQ7Cisg
ICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfQ1VSU0lWRToKKyAgICAgICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmZvbnRfY3Vyc2l2ZTsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9GQU5UQVNZOgor
ICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5OworICAgIGNhc2UgRVdL
X0ZPTlRfRkFNSUxZX01PTk9TUEFDRToKKyAgICAgICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZv
bnRfbW9ub3NwYWNlOworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NFUklGOgorICAgICAgICBy
ZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZjsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlM
WV9TQU5TX1NFUklGOgorICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3Nl
cmlmOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworRWluYV9Cb29sIGV3a192aWV3X2ZvbnRf
ZmFtaWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9udF9mYW1p
bHksIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKKworICAgIHN3aXRjaCAoZm9udF9mYW1pbHkpIHsKKyAgICBjYXNl
IEVXS19GT05UX0ZBTUlMWV9TVEFOREFSRDoKKyAgICAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZCwgbmFtZSkpCisgICAgICAgICAg
ICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5n
Ojpmcm9tVVRGOChuYW1lKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX0ZPTlRfRkFN
SUxZX0NVUlNJVkU6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYt
PnNldHRpbmdzLmZvbnRfY3Vyc2l2ZSwgbmFtZSkpCisgICAgICAgICAgICBwcml2LT5wYWdlX3Nl
dHRpbmdzLT5zZXRDdXJzaXZlRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWToKKyAg
ICAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9m
YW50YXN5LCBuYW1lKSkKKyAgICAgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEZhbnRh
c3lGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0U6CisgICAgICAgIGlmIChlaW5h
X3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlLCBuYW1l
KSkKKyAgICAgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShB
dG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
V0tfRk9OVF9GQU1JTFlfU0VSSUY6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxh
Y2UoJnByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYsIG5hbWUpKQorICAgICAgICAgICAgcHJpdi0+
cGFnZV9zZXR0aW5ncy0+c2V0U2VyaWZGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgo
bmFtZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NF
UklGOgorICAgICAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5n
cy5mb250X3NhbnNfc2VyaWYsIG5hbWUpKQorICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5n
cy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgfQorCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKwogLyoqCiAgKiBAaW50ZXJuYWwK
ICAqIFJlcG9ydHMgdGhlIHZpZXcgdGhhdCBlZGl0b3IgY2xpZW50IHNlbGVjdGlvbiBoYXMgY2hh
bmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggOGMyYmFjYS4uOWFiZTc2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTMxMCw2ICszMTAsMTggQEAgZW51bSBfRXdrX1Zp
ZXdfTW9kZSB7CiAvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3X01vZGUu
CiB0eXBlZGVmIGVudW0gX0V3a19WaWV3X01vZGUgRXdrX1ZpZXdfTW9kZTsKIAorLy8vIERlZmlu
ZXMgdGhlIGZvbnQgZmFtaWxpZXMuCitlbnVtIF9Fd2tfRm9udF9GYW1pbHkgeworICAgIEVXS19G
T05UX0ZBTUlMWV9TVEFOREFSRCA9IDAsCisgICAgRVdLX0ZPTlRfRkFNSUxZX0NVUlNJVkUsCisg
ICAgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1ksCisgICAgRVdLX0ZPTlRfRkFNSUxZX01PTk9TUEFD
RSwKKyAgICBFV0tfRk9OVF9GQU1JTFlfU0VSSUYsCisgICAgRVdLX0ZPTlRfRkFNSUxZX1NBTlNf
U0VSSUYKK307CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19Gb250X0ZhbWls
eS4KK3R5cGVkZWYgZW51bSBfRXdrX0ZvbnRfRmFtaWx5IEV3a19Gb250X0ZhbWlseTsKKwogLyoq
CiAgKiBAYnJpZWYgQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19UaWxlX1VudXNlZF9D
YWNoZS4KICAqCkBAIC0xNjMzLDExNCArMTY0NSw2IEBAIEVBUEkgaW50ICAgICAgICAgIGV3a192
aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVf
c2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgc2l6ZSk7CiAKIC8qKgotICogR2V0cyB0aGUgZm9udCBz
dGFuZGFyZCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBm
b250IHN0YW5kYXJkIGZhbWlseQotICoKLSAqIEByZXR1cm4gdGhlIGZvbnQgc3RhbmRhcmQgZmFt
aWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAg
KmV3a192aWV3X3NldHRpbmdfZm9udF9zdGFuZGFyZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgc3RhbmRhcmQgZmFtaWx5LgotICoKLSAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVy
ZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpOwotCi0vKioKLSAqIEdldHMg
dGhlIGZvbnQgY3Vyc2l2ZSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHRoZSBmb250IGN1cnNpdmUgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUgZm9udCBjdXJz
aXZlIGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0
IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vyc2l2ZV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgc3RhbmRhcmQgZmFtaWx5LgotICoKLSAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkKLSAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24g
ZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vy
c2l2ZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7Ci0KLS8qKgotICog
R2V0cyB0aGUgZm9udCBtb25vc3BhY2UgZmFtaWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGdldCB0aGUgZm9udCBtb25vc3BhY2UgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUg
Zm9udCBtb25vc3BhY2UgZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8K
LUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBmb250IG1vbm9zcGFjZSBm
YW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IG1vbm9z
cGFjZSBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFt
aWx5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBmb250IGZhbnRhc3kgZmFtaWx5LgotICoKLSAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgZm9udCBmYW50YXN5IGZhbWlseQotICoKLSAq
IEByZXR1cm4gdGhlIGZvbnQgZmFudGFzeSBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZh
aWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250X2ZhbnRh
c3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoqCi0gKiBTZXRzIHRoZSBmb250IG1v
bm9zcGFjZSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBm
b250IG1vbm9zcGFjZSBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNo
YXIgKmZhbWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUgZm9udCBzZXJpZiBmYW1pbHkuCi0gKgot
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IHNlcmlmIGZhbWlseQotICoK
LSAqIEByZXR1cm4gdGhlIGZvbnQgc2VyaWYgZmFtaWx5IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBm
YWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9zZXJp
Zl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgc2Vy
aWYgZmFtaWx5LgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBz
ZXJpZiBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19z
ZXR0aW5nX2ZvbnRfc2VyaWZfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkp
OwotCi0vKioKLSAqIEdldHMgdGhlIGZvbnQgc2FucyBzZXJpZiBmYW1pbHkuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IHNhbnMgc2VyaWYgZmFtaWx5Ci0gKgot
ICogQHJldHVybiB0aGUgZm9udCBzYW5zIHNlcmlmIGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAg
b24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRf
c2Fuc19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhl
IGZvbnQgc2FucyBzZXJpZiBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
c2V0IHRoZSBmb250IHNlcmlmIGZhbWlseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAqbywg
Y29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCiAgKiBRdWVyaWVzIGlmIHRoZSBzcGF0aWFsIG5h
dmlhZ3Rpb24gZmVhdHVyZSBpcyBlbmFibGVkLgogICoKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIHF1ZXJ5IGlmIHNwYXRpYWwgbmF2aWdhdGlvbiBmZWF0dXJlIGlzIGVuYWJsZWQKQEAgLTIx
NzUsNiArMjA3OSwyNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChFdmFzX09i
amVjdCAqbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpOwogICogQHNlZSBld2tfdmlld19tb2Rl
X3NldCgpCiAgKi8KIEVBUEkgRXdrX1ZpZXdfTW9kZSBld2tfdmlld19tb2RlX2dldChFdmFzX09i
amVjdCAqbyk7CisKKy8qKgorICogR2V0cyB0aGUgbmFtZSBvZiBmb250IGZvciB0aGUgZ2l2ZW4g
Zm9udCBmYW1pbHkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IG5hbWUgb2Yg
Zm9udCB0aGUgZm9yIGZvbnQgZmFtaWx5CisgKiBAcGFyYW0gZm9udF9mYW1pbHkgdGhlIGZvbnQg
ZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtIHRvIGdldCBmb250IG5hbWUKKyAqCisg
KiBAcmV0dXJuIHRoZSBuYW1lIG9mIGZvbnQgZmFtaWx5CisgKi8KK0VBUEkgY29uc3QgY2hhciAq
ZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV3a19G
b250X0ZhbWlseSBmb250X2ZhbWlseSk7CisKKy8qKgorICogU2V0cyB0aGUgZm9udCBmb3IgdGhl
IGdpdmVuIGZhbWlseS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgZm9udCBm
b3IgdGhlIGdpdmVuIGZhbWlseQorICogQHBhcmFtIGZvbnRfZmFtaWx5IHRoZSBmb250IGZhbWls
eSBhcyBAYSBFd2tfRm9udF9GYW1pbHkgZW51bQorICogQHBhcmFtIG5hbWUgdGhlIGZvbnQgbmFt
ZSB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9udF9mYW1p
bHlfbmFtZV9zZXQoRXZhc19PYmplY3QgKm8sIEV3a19Gb250X0ZhbWlseSBmb250X2ZhbWlseSwg
Y29uc3QgY2hhciAqbmFtZSk7CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgo=
</data>
<flag name="review"
          id="100594"
          type_id="1"
          status="+"
          setter="morrita"
    />
    <flag name="commit-queue"
          id="100595"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105751</attachid>
            <date>2011-08-31 00:17:14 -0700</date>
            <delta_ts>2011-08-31 01:16:38 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>fonts_refactoring.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA4YjkxMDBkLi4yZjFhNjExIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMzAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRm9udHMgQVBJIHJlZmFjdG9yaW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBNT1JJVEEgSGFqaW1lLgorCisgICAgICAgIFRoZXJlIGFy
ZSB0b28gbWFueSBzaW1pbGFyIEFQSSByZWdhcmRpbmcgdG8gZm9udHMuCisgICAgICAgIEFkZCBv
bmUgY29uc2lzdGVudCBBUEkgdG8gc2V0L2dldCB0aGUgZm9udCBuYW1lIGZvciB0aGUgZm9udCBm
YW1pbHkuCisgICAgICAgIFJlbW92ZSB0aGUgcHJldmlvdXMgZm9udCBBUEkuCisKKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQpOgorICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA4LTMwICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1
c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFRoZSB1bnVzZWQgU2Nyb2xsVmlldyogYXJn
dW1lbnQgY2FuIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAppbmRleCA2MzE0NjgxLi45Mjg0MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTIxOTksOTkgKzIxOTksNjIgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZm9udF9z
dGFuZGFyZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyICpld2tfdmlld19m
b250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5
IGZvbnRfZmFtaWx5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRhcmQ7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpm
YW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250
X3N0YW5kYXJkLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vy
c2l2ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9jdXJzaXZlOwotfQotCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2
LT5zZXR0aW5ncy5mb250X2N1cnNpdmUsIGZhbWlseSkpCi0gICAgICAgIHByaXYtPnBhZ2Vfc2V0
dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgoZmFtaWx5
KSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0
dGluZ19mb250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZmFu
dGFzeTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldChF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBmYW1pbHkpKQotICAgICAgICBw
cml2LT5wYWdlX3NldHRpbmdzLT5zZXRGYW50YXN5Rm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZy
b21VVEY4KGZhbWlseSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7Ci19CiAKLWNvbnN0IGNoYXIg
KmV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmZvbnRfbW9ub3NwYWNlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21vbm9zcGFjZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSkKLXsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwotICAgIGlm
IChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNl
LCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1p
bHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVF
OwotfQotCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAg
cmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWY7CisgICAgc3dpdGNoIChmb250X2ZhbWls
eSkgeworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEOgorICAgICAgICByZXR1cm4g
cHJpdi0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZDsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9D
VVJTSVZFOgorICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9jdXJzaXZlOworICAg
IGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1k6CisgICAgICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5mb250X2ZhbnRhc3k7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfTU9OT1NQQUNFOgor
ICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9tb25vc3BhY2U7CisgICAgY2FzZSBF
V0tfRk9OVF9GQU1JTFlfU0VSSUY6CisgICAgICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250
X3NlcmlmOworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NBTlNfU0VSSUY6CisgICAgICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWY7CisgICAgfQorICAgIHJldHVybiAw
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQorRWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFt
aWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHks
IGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5z
ZXR0aW5ncy5mb250X3NlcmlmLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdz
LT5zZXRTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOwotfQogCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2Zv
bnRfc2Fuc19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3Nl
cmlmOwotfQorICAgIHN3aXRjaCAoZm9udF9mYW1pbHkpIHsKKyAgICBjYXNlIEVXS19GT05UX0ZB
TUlMWV9TVEFOREFSRDoKKyAgICAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJp
di0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZCwgbmFtZSkpCisgICAgICAgICAgICBwcml2LT5wYWdl
X3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChu
YW1lKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0NVUlNJVkU6
CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZv
bnRfY3Vyc2l2ZSwgbmFtZSkpCisgICAgICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRD
dXJzaXZlRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWToKKyAgICAgICAgaWYgKGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBuYW1l
KSkKKyAgICAgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEZhbnRhc3lGb250RmFtaWx5
KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0U6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlLCBuYW1lKSkKKyAgICAgICAg
ICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShBdG9taWNTdHJpbmc6
OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1J
TFlfU0VSSUY6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNl
dHRpbmdzLmZvbnRfc2VyaWYsIG5hbWUpKQorICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5n
cy0+c2V0U2VyaWZGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGOgorICAgICAg
ICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3NhbnNf
c2VyaWYsIG5hbWUpKQorICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZw
cml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWYsIGZhbWlseSkpCi0gICAgICAgIHByaXYtPnBh
Z2Vfc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRG
OChmYW1pbHkpKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5oCmluZGV4IGY4YjNlM2QuLjk4ZDgwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
CkBAIC0zMTIsNiArMzEyLDE4IEBAIGVudW0gX0V3a19WaWV3X01vZGUgewogLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19Nb2RlLgogdHlwZWRlZiBlbnVtIF9Fd2tfVmll
d19Nb2RlIEV3a19WaWV3X01vZGU7CiAKKy8vLyBEZWZpbmVzIHRoZSBmb250IGZhbWlsaWVzLgor
ZW51bSBfRXdrX0ZvbnRfRmFtaWx5IHsKKyAgICBFV0tfRk9OVF9GQU1JTFlfU1RBTkRBUkQgPSAw
LAorICAgIEVXS19GT05UX0ZBTUlMWV9DVVJTSVZFLAorICAgIEVXS19GT05UX0ZBTUlMWV9GQU5U
QVNZLAorICAgIEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0UsCisgICAgRVdLX0ZPTlRfRkFNSUxZ
X1NFUklGLAorICAgIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGCit9OworLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfRm9udF9GYW1pbHkuCit0eXBlZGVmIGVudW0gX0V3a19G
b250X0ZhbWlseSBFd2tfRm9udF9GYW1pbHk7CisKIC8qKgogICogQGJyaWVmIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUuCiAgKgpAQCAtMTY1NiwxMTIg
KzE2NjgsMjUgQEAgRUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9z
cGFjZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGlu
dCBzaXplKTsKIAogLyoqCi0gKiBHZXRzIHRoZSBmb250IHN0YW5kYXJkIGZhbWlseS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgc3RhbmRhcmQgZmFtaWx5Ci0g
KgotICogQHJldHVybiB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAw
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250
X3N0YW5kYXJkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUg
Zm9udCBzdGFuZGFyZCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zdGFuZGFyZF9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKmZhbWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUgZm9udCBjdXJzaXZlIGZhbWls
eS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgY3Vyc2l2ZSBm
YW1pbHkKLSAqCi0gKiBAcmV0dXJuIHRoZSBmb250IGN1cnNpdmUgZmFtaWx5IG9uIHN1Y2Nlc3Mg
b3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRp
bmdfZm9udF9jdXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0
cyB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJzaXZlX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBmb250IG1vbm9zcGFj
ZSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IG1v
bm9zcGFjZSBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkg
b24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdr
X3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIFNldHMgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseS4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseQotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpOwotCi0vKioKLSAqIEdldHMg
dGhlIGZvbnQgZmFudGFzeSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHRoZSBmb250IGZhbnRhc3kgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUgZm9udCBmYW50
YXN5IGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0
IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseQot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9m
YW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCi0g
KiBHZXRzIHRoZSBmb250IHNlcmlmIGZhbWlseS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBnZXQgdGhlIGZvbnQgc2VyaWYgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUgZm9udCBz
ZXJpZiBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25z
dCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX2dldChjb25zdCBFdmFzX09iamVj
dCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgZm9udCBzZXJpZiBmYW1pbHkuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IHNlcmlmIGZhbWlseQotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUg
Zm9udCBzYW5zIHNlcmlmIGZhbWlseS4KKyAqIEdldHMgdGhlIG5hbWUgb2YgZm9udCBmb3IgdGhl
IGdpdmVuIGZvbnQgZmFtaWx5LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0
aGUgZm9udCBzYW5zIHNlcmlmIGZhbWlseQorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0
IG5hbWUgb2YgZm9udCB0aGUgZm9yIGZvbnQgZmFtaWx5CisgKiBAcGFyYW0gZm9udF9mYW1pbHkg
dGhlIGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtIHRvIGdldCBmb250IG5h
bWUKICAqCi0gKiBAcmV0dXJuIHRoZSBmb250IHNhbnMgc2VyaWYgZmFtaWx5IG9uIHN1Y2Nlc3Mg
b3IgQGMgMCBvbiBmYWlsdXJlCisgKiBAcmV0dXJuIHRoZSBuYW1lIG9mIGZvbnQgZmFtaWx5CiAg
Ki8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIGNvbnN0IGNoYXIgKmV3a192aWV3X2ZvbnRf
ZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9u
dF9mYW1pbHkpOwogCiAvKioKLSAqIFNldHMgdGhlIGZvbnQgc2FucyBzZXJpZiBmYW1pbHkuCisg
KiBTZXRzIHRoZSBmb250IGZvciB0aGUgZ2l2ZW4gZmFtaWx5LgogICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBzZXJpZiBmYW1pbHkKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHNldCBmb250IGZvciB0aGUgZ2l2ZW4gZmFtaWx5CisgKiBAcGFyYW0gZm9udF9m
YW1pbHkgdGhlIGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtCisgKiBAcGFy
YW0gbmFtZSB0aGUgZm9udCBuYW1lIHRvIHNldAogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZmFtaWx5KTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFt
aWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHks
IGNvbnN0IGNoYXIgKm5hbWUpOwogCiAvKioKICAqIFF1ZXJpZXMgaWYgdGhlIHNwYXRpYWwgbmF2
aWFndGlvbiBmZWF0dXJlIGlzIGVuYWJsZWQuCg==
</data>
<flag name="commit-queue"
          id="101991"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105758</attachid>
            <date>2011-08-31 01:16:38 -0700</date>
            <delta_ts>2011-08-31 01:44:37 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>fonts_refactoring.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA4YjkxMDBkLi4yZjFhNjExIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMzAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gRm9udHMgQVBJIHJlZmFjdG9yaW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIFRoZXJlIGFy
ZSB0b28gbWFueSBzaW1pbGFyIEFQSSByZWdhcmRpbmcgdG8gZm9udHMuCisgICAgICAgIEFkZCBv
bmUgY29uc2lzdGVudCBBUEkgdG8gc2V0L2dldCB0aGUgZm9udCBuYW1lIGZvciB0aGUgZm9udCBm
YW1pbHkuCisgICAgICAgIFJlbW92ZSB0aGUgcHJldmlvdXMgZm9udCBBUEkuCisKKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQpOgorICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA4LTMwICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1
c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFRoZSB1bnVzZWQgU2Nyb2xsVmlldyogYXJn
dW1lbnQgY2FuIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAppbmRleCA2MzE0NjgxLi45Mjg0MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTIxOTksOTkgKzIxOTksNjIgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
Zm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGludCBzaXplKQogICAgIHJl
dHVybiBFSU5BX1RSVUU7CiB9CiAKLWNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZm9udF9z
dGFuZGFyZF9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCitjb25zdCBjaGFyICpld2tfdmlld19m
b250X2ZhbWlseV9uYW1lX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgRXdrX0ZvbnRfRmFtaWx5
IGZvbnRfZmFtaWx5KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0
dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc3RhbmRhcmQ7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpm
YW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250
X3N0YW5kYXJkLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAgICByZXR1
cm4gRUlOQV9UUlVFOwotfQotCi1jb25zdCBjaGFyKiBld2tfdmlld19zZXR0aW5nX2ZvbnRfY3Vy
c2l2ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9jdXJzaXZlOwotfQotCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X2N1cnNpdmVfc2V0KEV2YXNfT2JqZWN0ICpv
LCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBw
cml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2
LT5zZXR0aW5ncy5mb250X2N1cnNpdmUsIGZhbWlseSkpCi0gICAgICAgIHByaXYtPnBhZ2Vfc2V0
dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgoZmFtaWx5
KSk7Ci0gICAgcmV0dXJuIEVJTkFfVFJVRTsKLX0KLQotY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0
dGluZ19mb250X2ZhbnRhc3lfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfZmFu
dGFzeTsKLX0KLQotRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZm9udF9mYW50YXN5X3NldChF
dmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBmYW1pbHkpKQotICAgICAgICBw
cml2LT5wYWdlX3NldHRpbmdzLT5zZXRGYW50YXN5Rm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZy
b21VVEY4KGZhbWlseSkpOwotICAgIHJldHVybiBFSU5BX1RSVUU7Ci19CiAKLWNvbnN0IGNoYXIg
KmV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAgcmV0dXJuIHByaXYtPnNl
dHRpbmdzLmZvbnRfbW9ub3NwYWNlOwotfQotCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19m
b250X21vbm9zcGFjZV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSkKLXsK
LSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOwotICAgIGlm
IChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNl
LCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1p
bHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAgICByZXR1cm4gRUlOQV9UUlVF
OwotfQotCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2ZvbnRfc2VyaWZfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qs
IDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7Ci0gICAg
cmV0dXJuIHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWY7CisgICAgc3dpdGNoIChmb250X2ZhbWls
eSkgeworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJEOgorICAgICAgICByZXR1cm4g
cHJpdi0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZDsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9D
VVJTSVZFOgorICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9jdXJzaXZlOworICAg
IGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0ZBTlRBU1k6CisgICAgICAgIHJldHVybiBwcml2LT5zZXR0
aW5ncy5mb250X2ZhbnRhc3k7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfTU9OT1NQQUNFOgor
ICAgICAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9tb25vc3BhY2U7CisgICAgY2FzZSBF
V0tfRk9OVF9GQU1JTFlfU0VSSUY6CisgICAgICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5mb250
X3NlcmlmOworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX1NBTlNfU0VSSUY6CisgICAgICAgIHJl
dHVybiBwcml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWY7CisgICAgfQorICAgIHJldHVybiAw
OwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX3NldChFdmFzX09i
amVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KQorRWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFt
aWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHks
IGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgRUlOQV9GQUxTRSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2
LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5z
ZXR0aW5ncy5mb250X3NlcmlmLCBmYW1pbHkpKQotICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdz
LT5zZXRTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkpKTsKLSAg
ICByZXR1cm4gRUlOQV9UUlVFOwotfQogCi1jb25zdCBjaGFyICpld2tfdmlld19zZXR0aW5nX2Zv
bnRfc2Fuc19zZXJpZl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCAwKTsKLSAgICByZXR1cm4gcHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3Nl
cmlmOwotfQorICAgIHN3aXRjaCAoZm9udF9mYW1pbHkpIHsKKyAgICBjYXNlIEVXS19GT05UX0ZB
TUlMWV9TVEFOREFSRDoKKyAgICAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJp
di0+c2V0dGluZ3MuZm9udF9zdGFuZGFyZCwgbmFtZSkpCisgICAgICAgICAgICBwcml2LT5wYWdl
X3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRGOChu
YW1lKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVdLX0ZPTlRfRkFNSUxZX0NVUlNJVkU6
CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZv
bnRfY3Vyc2l2ZSwgbmFtZSkpCisgICAgICAgICAgICBwcml2LT5wYWdlX3NldHRpbmdzLT5zZXRD
dXJzaXZlRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWToKKyAgICAgICAgaWYgKGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+c2V0dGluZ3MuZm9udF9mYW50YXN5LCBuYW1l
KSkKKyAgICAgICAgICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEZhbnRhc3lGb250RmFtaWx5
KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0U6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLmZvbnRfbW9ub3NwYWNlLCBuYW1lKSkKKyAgICAgICAg
ICAgIHByaXYtPnBhZ2Vfc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShBdG9taWNTdHJpbmc6
OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFV0tfRk9OVF9GQU1J
TFlfU0VSSUY6CisgICAgICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNl
dHRpbmdzLmZvbnRfc2VyaWYsIG5hbWUpKQorICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5n
cy0+c2V0U2VyaWZGb250RmFtaWx5KEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGOgorICAgICAg
ICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZwcml2LT5zZXR0aW5ncy5mb250X3NhbnNf
c2VyaWYsIG5hbWUpKQorICAgICAgICAgICAgcHJpdi0+cGFnZV9zZXR0aW5ncy0+c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShBdG9taWNTdHJpbmc6OmZyb21VVEY4KG5hbWUpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQogCi1F
aW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NhbnNfc2VyaWZfc2V0KEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2LCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZw
cml2LT5zZXR0aW5ncy5mb250X3NhbnNfc2VyaWYsIGZhbWlseSkpCi0gICAgICAgIHByaXYtPnBh
Z2Vfc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQXRvbWljU3RyaW5nOjpmcm9tVVRG
OChmYW1pbHkpKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5oCmluZGV4IGY4YjNlM2QuLjk4ZDgwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
CkBAIC0zMTIsNiArMzEyLDE4IEBAIGVudW0gX0V3a19WaWV3X01vZGUgewogLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19Nb2RlLgogdHlwZWRlZiBlbnVtIF9Fd2tfVmll
d19Nb2RlIEV3a19WaWV3X01vZGU7CiAKKy8vLyBEZWZpbmVzIHRoZSBmb250IGZhbWlsaWVzLgor
ZW51bSBfRXdrX0ZvbnRfRmFtaWx5IHsKKyAgICBFV0tfRk9OVF9GQU1JTFlfU1RBTkRBUkQgPSAw
LAorICAgIEVXS19GT05UX0ZBTUlMWV9DVVJTSVZFLAorICAgIEVXS19GT05UX0ZBTUlMWV9GQU5U
QVNZLAorICAgIEVXS19GT05UX0ZBTUlMWV9NT05PU1BBQ0UsCisgICAgRVdLX0ZPTlRfRkFNSUxZ
X1NFUklGLAorICAgIEVXS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGCit9OworLy8vIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfRm9udF9GYW1pbHkuCit0eXBlZGVmIGVudW0gX0V3a19G
b250X0ZhbWlseSBFd2tfRm9udF9GYW1pbHk7CisKIC8qKgogICogQGJyaWVmIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVGlsZV9VbnVzZWRfQ2FjaGUuCiAgKgpAQCAtMTY1NiwxMTIg
KzE2NjgsMjUgQEAgRUFQSSBpbnQgICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9z
cGFjZV9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKIEVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2l6ZV9zZXQoRXZhc19PYmplY3QgKm8sIGlu
dCBzaXplKTsKIAogLyoqCi0gKiBHZXRzIHRoZSBmb250IHN0YW5kYXJkIGZhbWlseS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgc3RhbmRhcmQgZmFtaWx5Ci0g
KgotICogQHJldHVybiB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAw
IG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250
X3N0YW5kYXJkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUg
Zm9udCBzdGFuZGFyZCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zdGFuZGFyZF9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKmZhbWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUgZm9udCBjdXJzaXZlIGZhbWls
eS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIGZvbnQgY3Vyc2l2ZSBm
YW1pbHkKLSAqCi0gKiBAcmV0dXJuIHRoZSBmb250IGN1cnNpdmUgZmFtaWx5IG9uIHN1Y2Nlc3Mg
b3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRp
bmdfZm9udF9jdXJzaXZlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgotICogU2V0
cyB0aGUgZm9udCBzdGFuZGFyZCBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IHRoZSBmb250IHN0YW5kYXJkIGZhbWlseQotICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9jdXJzaXZlX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCi0gKiBHZXRzIHRoZSBmb250IG1vbm9zcGFj
ZSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBmb250IG1v
bm9zcGFjZSBmYW1pbHkKLSAqCi0gKiBAcmV0dXJuIHRoZSBmb250IG1vbm9zcGFjZSBmYW1pbHkg
b24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25zdCBjaGFyICAqZXdr
X3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwot
Ci0vKioKLSAqIFNldHMgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseS4KLSAqCi0gKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseQotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vf
c2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpmYW1pbHkpOwotCi0vKioKLSAqIEdldHMg
dGhlIGZvbnQgZmFudGFzeSBmYW1pbHkuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHRoZSBmb250IGZhbnRhc3kgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUgZm9udCBmYW50
YXN5IGZhbWlseSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQotICovCi1FQVBJIGNvbnN0
IGNoYXIgICpld2tfdmlld19zZXR0aW5nX2ZvbnRfZmFudGFzeV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwotCi0vKioKLSAqIFNldHMgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIGZvbnQgbW9ub3NwYWNlIGZhbWlseQot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9m
YW50YXN5X3NldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqZmFtaWx5KTsKLQotLyoqCi0g
KiBHZXRzIHRoZSBmb250IHNlcmlmIGZhbWlseS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVj
dCB0byBnZXQgdGhlIGZvbnQgc2VyaWYgZmFtaWx5Ci0gKgotICogQHJldHVybiB0aGUgZm9udCBz
ZXJpZiBmYW1pbHkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBjb25z
dCBjaGFyICAqZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX2dldChjb25zdCBFdmFzX09iamVj
dCAqbyk7Ci0KLS8qKgotICogU2V0cyB0aGUgZm9udCBzZXJpZiBmYW1pbHkuCi0gKgotICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSBmb250IHNlcmlmIGZhbWlseQotICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zZXJpZl9zZXQo
RXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmZhbWlseSk7Ci0KLS8qKgotICogR2V0cyB0aGUg
Zm9udCBzYW5zIHNlcmlmIGZhbWlseS4KKyAqIEdldHMgdGhlIG5hbWUgb2YgZm9udCBmb3IgdGhl
IGdpdmVuIGZvbnQgZmFtaWx5LgogICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0
aGUgZm9udCBzYW5zIHNlcmlmIGZhbWlseQorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0
IG5hbWUgb2YgZm9udCB0aGUgZm9yIGZvbnQgZmFtaWx5CisgKiBAcGFyYW0gZm9udF9mYW1pbHkg
dGhlIGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtIHRvIGdldCBmb250IG5h
bWUKICAqCi0gKiBAcmV0dXJuIHRoZSBmb250IHNhbnMgc2VyaWYgZmFtaWx5IG9uIHN1Y2Nlc3Mg
b3IgQGMgMCBvbiBmYWlsdXJlCisgKiBAcmV0dXJuIHRoZSBuYW1lIG9mIGZvbnQgZmFtaWx5CiAg
Ki8KLUVBUEkgY29uc3QgY2hhciAgKmV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CitFQVBJIGNvbnN0IGNoYXIgKmV3a192aWV3X2ZvbnRf
ZmFtaWx5X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9u
dF9mYW1pbHkpOwogCiAvKioKLSAqIFNldHMgdGhlIGZvbnQgc2FucyBzZXJpZiBmYW1pbHkuCisg
KiBTZXRzIHRoZSBmb250IGZvciB0aGUgZ2l2ZW4gZmFtaWx5LgogICoKLSAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHNldCB0aGUgZm9udCBzZXJpZiBmYW1pbHkKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIHNldCBmb250IGZvciB0aGUgZ2l2ZW4gZmFtaWx5CisgKiBAcGFyYW0gZm9udF9m
YW1pbHkgdGhlIGZvbnQgZmFtaWx5IGFzIEBhIEV3a19Gb250X0ZhbWlseSBlbnVtCisgKiBAcGFy
YW0gbmFtZSB0aGUgZm9udCBuYW1lIHRvIHNldAogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9zYW5zX3NlcmlmX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqZmFtaWx5KTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2ZvbnRfZmFt
aWx5X25hbWVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRm9udF9GYW1pbHkgZm9udF9mYW1pbHks
IGNvbnN0IGNoYXIgKm5hbWUpOwogCiAvKioKICAqIFF1ZXJpZXMgaWYgdGhlIHNwYXRpYWwgbmF2
aWFndGlvbiBmZWF0dXJlIGlzIGVuYWJsZWQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>