<?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>118645</bug_id>
          
          <creation_ts>2013-07-13 02:23:46 -0700</creation_ts>
          <short_desc>[WK2][GTK] Enable asynchronous spell checking by default</short_desc>
          <delta_ts>2020-10-08 04:05:28 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          
          <blocked>118643</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>908152</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-13 02:23:46 -0700</bug_when>
    <thetext>Asynchronous spell checking is disabled by default (Bug 81042). It means all requests of checking the string are sent synchronously.

Once requestCheckingOfString method is added (Bug 118644), we can perform spelling checking asynchronously. We should enable it by default for GTK to use non blocking API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091643</commentid>
    <comment_count>1</comment_count>
      <attachid>252361</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-04 18:34:16 -0700</bug_when>
    <thetext>Created attachment 252361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091655</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-04 19:32:01 -0700</bug_when>
    <thetext>Whoops. Uploaded this patch to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091771</commentid>
    <comment_count>3</comment_count>
      <attachid>252361</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-05 08:45:11 -0700</bug_when>
    <thetext>Comment on attachment 252361
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=252361&amp;action=review

&gt; Source/WebCore/platform/graphics/Font.cpp:338
&gt; +#if PLATFORM(COCOA) || USE(CAIRO)

This is such a mysterious combination. It would be nice to have some named thing that makes it clear what these have in common. Perhaps they are the only platforms that support synthetic obliquing?

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:147
&gt; +    ASSERT(m_pattern);

The right way to do this in modern WebKit coding style is to change the argument from FcPattern* to FcPattern&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091775</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-05 08:51:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 252361 [details]
&gt; Patch

Thanks for the review!  I have to admit though that uploading the patch here was a mistake. It should have gone to https://bugs.webkit.org/show_bug.cgi?id=144612 originally.

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252361&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Font.cpp:338
&gt; &gt; +#if PLATFORM(COCOA) || USE(CAIRO)
&gt; 
&gt; This is such a mysterious combination. It would be nice to have some named
&gt; thing that makes it clear what these have in common. Perhaps they are the
&gt; only platforms that support synthetic obliquing?

As far as I can tell, the original #ifdef was due to the fact that other platforms did not support creating explicitly non-synthetic-oblique fonts. It may be worth simply stubbing out the implementation on Windows and removing the #ifdef. I&apos;ll try that in a followup patch.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:147
&gt; &gt; +    ASSERT(m_pattern);
&gt; 
&gt; The right way to do this in modern WebKit coding style is to change the
&gt; argument from FcPattern* to FcPattern&amp;.

Is that still an option given that FcPattern* is an opaque pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091778</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-05 09:00:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 252361 [details]
&gt; &gt; Patch
&gt; 
&gt; Thanks for the review!  I have to admit though that uploading the patch here
&gt; was a mistake. It should have gone to
&gt; https://bugs.webkit.org/show_bug.cgi?id=144612 originally.

Hopefully you don&apos;t mind if I simply land the version with the correct ChangeLog? Sorry for the mixup.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252361</attachid>
            <date>2015-05-04 18:34:16 -0700</date>
            <delta_ts>2015-05-05 08:52:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118645-20150504183301.patch</filename>
            <type>text/plain</type>
            <size>16287</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzZTM1Y2I2ZTIxOWQ4
NmM5YjQ5MmI4MjY4ZjcyYjYwZjk4OWE2Ny4uZGNlMzgyMTMxNDg3ZTdlM2M4YzZiMDQ0MmJmYzZi
NWM2ZDQ3NzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA1LTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtHVEtd
IEVuYWJsZSBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tpbmcgYnkgZGVmYXVsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NjQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IGNhdXNlcyBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9zeW50aGVzaXplZC1pdGFsaWMtdmVydGlj
YWwuaHRtbCB0byBwYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpub25TeW50aGV0aWNJdGFsaWNGb250KTogQ29tcGls
ZSB0aGlzIG1ldGhvZCBmb3IgQ2Fpcm8gYXMgd2VsbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Rm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKTogV2hlbiBzZWFyY2hpbmcgZm9yIHRo
ZSBzeXN0ZW0gZmFsbGJhY2ssCisgICAgICAgIGVuc3VyZSB0aGF0IHdlIGRvIG5vdCB1c2Ugc3lu
dGhldGljIG9ibGlxdWUgd2hlbiByZW5kZXJpbmcgdmVydGljYWwgQ0pLIGdseXBocy4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OmdseXBoRGF0YUZvck5vcm1hbFZhcmlhbnQp
OiBFeHRlbmQgdGhlIENKSyBmaXggdG8gQ2Fpcm8gcG9ydHMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6c2V0U3ludGhldGljT2JsaXF1ZSk6IEFkZGVkIHRoaXMgaGVscGVyIG1ldGhvZCwg
YmVjYXVzZQorICAgICAgICBGcmVldHlwZS9DYWlybyBwb3J0cyBuZWVkcyB0byBiZSBhYmxlIHRv
IHJlY3JlYXRlIHRoZSBzY2FsZWQgZm9udCBtYXRyaXggd2hlbiB0aGUKKyAgICAgICAgc3ludGhl
dGljIG9ibGlxdWUgc2V0dGluZ3MgY2hhbmdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmg6IFJlbmFtZSBpbml0aWFsaXplV2l0aEZvbnRG
YWNlIHRvIGJ1aWxkU2NhbGVkRm9udC4KKyAgICAgICAgUmVtb3ZlIHRoZSBub3cgdW51c2VkIG1f
aG9yaXpvbnRhbE9yaWVudGF0aW9uTWF0cml4IG1lbWJlci4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRQbGF0Zm9ybURhdGE6OnNldFN5bnRoZXRpY09ibGlxdWUpOiBBZGRlZCB0aGUgaGVscGVyIGhl
cmUgYXMgd2VsbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YSk6IENhbGN1bGF0ZSB3aGV0aGVyIG9yIG5vdCB0byB1c2Ugc3lu
dGhldGljIG9ibGlxdWUgaGVyZSwKKyAgICAgICAgYmVmb3JlIGJ1aWxkU2NhbGVkRm9udCBpcyBj
YWxsZWQuIENhbGwgYnVpbGRTY2FsZWRGb250IGluc3RlYWQgb2YgaW5pdGlhbGl6ZVdpdGhGb250
RmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpidWlsZFNjYWxlZEZvbnQpOiBSZW5h
bWVkIGZyb20gaW5pdGlhbGl6ZVdpdGhGb250RmFjZSwgZG9lcworICAgICAgICB0aGUgc2FtZSB0
aGluZywgZXhjZXB0IGNhbGN1bGF0ZSB3aGV0aGVyIG9yIG5vdCB0byB1c2Ugc3ludGhldGljIG9i
bGlxdWUuIEluc3RlYWQganVzdAorICAgICAgICByZWFkcyB0aGUgdmFsdWUuCisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRPcmllbnRhdGlvbik6IEluc3RlYWQgb2YgYWRq
dXN0aW5nIHRoZSBmb250IG1hdHJpeCwgcmVjcmVhdGUKKyAgICAgICAgdGhlIGVudGlyZSBmb250
LgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2JsaXF1
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cm90YXRlQ2Fpcm9NYXRyaXhGb3JWZXJ0aWNh
bE9yaWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OmluaXRpYWxpemVXaXRoRm9udEZhY2UpOiBEZWxldGVkLgorCiAyMDE1LTA1LTAxICBKb2Fu
bWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSRUdSRVNT
SU9OKDE4MzM2OCk6IEl0IG1hZGUgZWRpdGluZyB0ZXN0cyBhc3NlcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGE0NzdmZDczZTkyM2RmZTQxMzVkN2Jh
YTY0NDk1MWFkOTUwZjg1NC4uNjAzZWJhODFmMDEwZmVmMGIwOWVhOTQ3YWU4ODZhNTE5OThiNWFj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTMzNSw4
ICszMzUsOCBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6Om5vblN5bnRoZXRpY0l0YWxpY0ZvbnQo
KSBjb25zdAogICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVy
aXZlZEZvbnREYXRhPihpc0N1c3RvbUZvbnQoKSk7CiAgICAgaWYgKCFtX2Rlcml2ZWRGb250RGF0
YS0+bm9uU3ludGhldGljSXRhbGljKSB7CiAgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEgbm9uU3lu
dGhldGljSXRhbGljRm9udFBsYXRmb3JtRGF0YShtX3BsYXRmb3JtRGF0YSk7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIG5vblN5bnRoZXRpY0l0YWxpY0ZvbnRQbGF0Zm9ybURhdGEubV9z
eW50aGV0aWNPYmxpcXVlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDQUlS
TykKKyAgICAgICAgbm9uU3ludGhldGljSXRhbGljRm9udFBsYXRmb3JtRGF0YS5zZXRTeW50aGV0
aWNPYmxpcXVlKGZhbHNlKTsKICNlbmRpZgogICAgICAgICBtX2Rlcml2ZWRGb250RGF0YS0+bm9u
U3ludGhldGljSXRhbGljID0gY3JlYXRlKG5vblN5bnRoZXRpY0l0YWxpY0ZvbnRQbGF0Zm9ybURh
dGEsIGlzQ3VzdG9tRm9udCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGRkM2JlMWFjZWY4OTk1
YzcxZTUzOTViNDFlNjY1NzI4YWEwNDM0ZDYuLjQwZThjMmMxZDQxMzM0NTY0NTYxMTlmZTU5YjA5
NjhiOTNhYjBhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIGJvb2wg
c2hvdWxkSWdub3JlUm90YXRpb24oVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
QUlSTykKIHN0YXRpYyBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yQ0pLQ2hhcmFjdGVyV2l0aG91dFN5
bnRoZXRpY0l0YWxpYyhVQ2hhcjMyIGNoYXJhY3RlciwgR2x5cGhEYXRhJiBkYXRhKQogewogICAg
IEdseXBoRGF0YSBub25JdGFsaWNEYXRhID0gZGF0YS5mb250LT5ub25TeW50aGV0aWNJdGFsaWNG
b250KCktPmdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOwpAQCAtMjczLDkgKzI3Mywx
MyBAQCBHbHlwaERhdGEgRm9udENhc2NhZGVGb250czo6Z2x5cGhEYXRhRm9yU3lzdGVtRmFsbGJh
Y2soVUNoYXIzMiBjLCBjb25zdCBGb250RGVzYwogICAgIGVsc2UKICAgICAgICAgZmFsbGJhY2tH
bHlwaERhdGEgPSBzeXN0ZW1GYWxsYmFja0ZvbnQtPnZhcmlhbnRGb250KGRlc2NyaXB0aW9uLCB2
YXJpYW50KS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpOwogCi0gICAgaWYgKHZhcmlhbnQgPT0g
Tm9ybWFsVmFyaWFudCAmJiBmYWxsYmFja0dseXBoRGF0YS5mb250KSB7Ci0gICAgICAgIGlmICgh
Rm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woYykgJiYgZmFsbGJhY2tHbHlwaERh
dGEuZm9udC0+cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbCAmJiAhZmFs
bGJhY2tHbHlwaERhdGEuZm9udC0+aXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpKQorICAgIGlm
IChmYWxsYmFja0dseXBoRGF0YS5mb250ICYmIGZhbGxiYWNrR2x5cGhEYXRhLmZvbnQtPnBsYXRm
b3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwgJiYgIWZhbGxiYWNrR2x5cGhEYXRh
LmZvbnQtPmlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2soKSkgeworICAgICAgICBpZiAodmFyaWFu
dCA9PSBOb3JtYWxWYXJpYW50ICYmICFGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJv
bChjKSkKICAgICAgICAgICAgIGZhbGxiYWNrR2x5cGhEYXRhID0gZ2x5cGhEYXRhRm9yTm9uQ0pL
Q2hhcmFjdGVyV2l0aEdseXBoT3JpZW50YXRpb24oYywgZGVzY3JpcHRpb24ubm9uQ0pLR2x5cGhP
cmllbnRhdGlvbigpLCBmYWxsYmFja0dseXBoRGF0YSk7CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShDQUlSTykKKyAgICAgICAgaWYgKGZhbGxiYWNrR2x5cGhEYXRhLmZvbnQtPnBsYXRmb3Jt
RGF0YSgpLnN5bnRoZXRpY09ibGlxdWUoKSAmJiBGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhP
clN5bWJvbChjKSkKKyAgICAgICAgICAgIGZhbGxiYWNrR2x5cGhEYXRhID0gZ2x5cGhEYXRhRm9y
Q0pLQ2hhcmFjdGVyV2l0aG91dFN5bnRoZXRpY0l0YWxpYyhjLCBmYWxsYmFja0dseXBoRGF0YSk7
CisjZW5kaWYKICAgICB9CiAKICAgICAvLyBLZWVwIHRoZSBzeXN0ZW0gZmFsbGJhY2sgZm9udHMg
d2UgdXNlIGFsaXZlLgpAQCAtMzMwLDcgKzMzNCw3IEBAIEdseXBoRGF0YSBGb250Q2FzY2FkZUZv
bnRzOjpnbHlwaERhdGFGb3JOb3JtYWxWYXJpYW50KFVDaGFyMzIgYywgY29uc3QgRm9udERlc2Ny
CiAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSB5b3UgZ2V0IGEgc3F1YXJlIChl
dmVuIGZvciBicm9rZW4gZ2x5cGhzIGxpa2Ugc3ltYm9scyB1c2VkIGZvciBwdW5jdHVhdGlvbiku
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbHlwaERhdGFGb3JWYXJpYW50KGMsIGRlc2Ny
aXB0aW9uLCBCcm9rZW5JZGVvZ3JhcGhWYXJpYW50LCBmYWxsYmFja0luZGV4KTsKICAgICAgICAg
ICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDQUlSTykKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5mb250LT5wbGF0Zm9ybURhdGEoKS5z
eW50aGV0aWNPYmxpcXVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbHlwaERhdGFG
b3JDSktDaGFyYWN0ZXJXaXRob3V0U3ludGhldGljSXRhbGljKGMsIGRhdGEpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgKaW5kZXggOGFjYzU5NmZlYzFjNTA0NjFhZjVmMDdkNTQ5Njk5YTRlNTMxYTgwMC4uMjc5NWZl
YmUyNGM3Y2YyNTFlYmNlYWEwZmQxYzBkZjJkNjAxYTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMTM5LDYgKzEz
OSw3IEBAIHB1YmxpYzoKICAgICBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGhWYXJpYW50OyB9CiAKICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247
IH0KKyAgICB2b2lkIHNldFN5bnRoZXRpY09ibGlxdWUoYm9vbCBzeW50aGV0aWNPYmxpcXVlKSB7
IG1fc3ludGhldGljT2JsaXF1ZSA9IHN5bnRoZXRpY09ibGlxdWU7IH0KIAogI2lmIFVTRShDQUlS
TykKICAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250KCkgY29uc3QgeyByZXR1cm4g
bV9zY2FsZWRGb250OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMjkwY2NhZTliNWVm
NTU5ZmI0NTZkMDQ5Zjg4MDljNGY2OWQyYjA4MC4uMzkzZDU5NGFlYmIwN2QzMTJkZDEyOWI2ZDIy
NmI4YWQzMzk2MWIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzcsNiArNzcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUpIHsgbV9zaXplID0gc2l6ZTsg
fQogICAgIGJvb2wgc3ludGhldGljQm9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9s
ZDsgfQogICAgIGJvb2wgc3ludGhldGljT2JsaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhl
dGljT2JsaXF1ZTsgfQorICAgIHZvaWQgc2V0U3ludGhldGljT2JsaXF1ZShib29sKTsKICAgICBi
b29sIGhhc0NvbXBhdGlibGVDaGFybWFwKCk7CiAKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CkBAIC0xMTIsMTEgKzExMywx
MCBAQCBwdWJsaWM6CiAgICAgbXV0YWJsZSBSZWZQdHI8SGFyZkJ1enpGYWNlPiBtX2hhcmZCdXp6
RmFjZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGluaXRpYWxpemVXaXRoRm9udEZhY2UoY2Fpcm9f
Zm9udF9mYWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRpb24mID0gRm9udERlc2NyaXB0aW9uKCkp
OworICAgIHZvaWQgYnVpbGRTY2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7CiAgICAgc3Rh
dGljIGNhaXJvX3NjYWxlZF9mb250X3QqIGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNhaXJvX3NjYWxlZF9mb250X3QqPigtMSk7IH0KIAogICAg
IEZvbnRPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIGNhaXJvX21hdHJpeF90IG1faG9y
aXpvbnRhbE9yaWVudGF0aW9uTWF0cml4OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggOWFlZmE2YTJmNGQ5ZDM2YTUzZjI4Y2YxNWYwNzZk
ZjA4ZjBjODVkZC4uZjcyMjZiNTg4ZDkzMmU4YjkwYjM0YTJmMzI3ZGMyMDUxNWJmNGExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzQsMTYgKzEz
NCw2IEBAIHN0YXRpYyBGY1BhdHRlcm4qIGdldERlZmF1bHRGb250Y29uZmlnT3B0aW9ucygpCiAg
ICAgcmV0dXJuIHBhdHRlcm47CiB9CiAKLXN0YXRpYyB2b2lkIHJvdGF0ZUNhaXJvTWF0cml4Rm9y
VmVydGljYWxPcmllbnRhdGlvbihjYWlyb19tYXRyaXhfdCogbWF0cml4KQotewotICAgIC8vIFRo
ZSByZXN1bHRpbmcgdHJhbnNmb3JtYXRpb24gbWF0cml4IGZvciB2ZXJ0aWNhbCBnbHlwaHMgKFYp
IGlzIGEKLSAgICAvLyBjb21iaW5hdGlvbiBvZiByb3RhdGlvbiAoUikgYW5kIHRyYW5zbGF0aW9u
IChUKSBhcHBsaWVkIG9uIHRoZQotICAgIC8vIGhvcml6b250YWwgbWF0cml4IChIKS4gViA9IEgg
LiBSIC4gVCwgd2hlcmUgUiByb3RhdGVzIGJ5IC05MCBkZWdyZWVzCi0gICAgLy8gYW5kIFQgdHJh
bnNsYXRlcyBieSBmb250IHNpemUgdG93YXJkcyB5IGF4aXMuCi0gICAgY2Fpcm9fbWF0cml4X3Jv
dGF0ZShtYXRyaXgsIC1waU92ZXJUd29Eb3VibGUpOwotICAgIGNhaXJvX21hdHJpeF90cmFuc2xh
dGUobWF0cml4LCAwLjAsIDEuMCk7Ci19Ci0KIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9y
bURhdGEoRmNQYXR0ZXJuKiBwYXR0ZXJuLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbikKICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICwgbV9mYWxsYmFja3MobnVs
bHB0cikKQEAgLTE1NCw4ICsxNDQsOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1E
YXRhKEZjUGF0dGVybiogcGF0dGVybiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICwg
bV9zY2FsZWRGb250KG51bGxwdHIpCiAgICAgLCBtX29yaWVudGF0aW9uKGZvbnREZXNjcmlwdGlv
bi5vcmllbnRhdGlvbigpKQogeworICAgIEFTU0VSVChtX3BhdHRlcm4pOwogICAgIFJlZlB0cjxj
YWlyb19mb250X2ZhY2VfdD4gZm9udEZhY2UgPSBhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2Vf
Y3JlYXRlX2Zvcl9wYXR0ZXJuKG1fcGF0dGVybi5nZXQoKSkpOwotICAgIGluaXRpYWxpemVXaXRo
Rm9udEZhY2UoZm9udEZhY2UuZ2V0KCksIGZvbnREZXNjcmlwdGlvbik7CiAKICAgICBpbnQgc3Bh
Y2luZzsKICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihwYXR0ZXJuLCBGQ19TUEFDSU5HLCAw
LCAmc3BhY2luZykgPT0gRmNSZXN1bHRNYXRjaCAmJiBzcGFjaW5nID09IEZDX01PTk8pCkBAIC0x
NzMsNiArMTYzLDE2IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoRmNQYXR0
ZXJuKiBwYXR0ZXJuLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgIGlmICghbV9z
eW50aGV0aWNCb2xkICYmIEZjUGF0dGVybkdldEludGVnZXIocGF0dGVybiwgRkNfV0VJR0hULCAw
LCAmd2VpZ2h0KSA9PSBGY1Jlc3VsdE1hdGNoKQogICAgICAgICAgICAgbV9zeW50aGV0aWNCb2xk
ID0gbV9zeW50aGV0aWNCb2xkIHx8IHdlaWdodCA8IEZDX1dFSUdIVF9ERU1JQk9MRDsKICAgICB9
CisKKyAgICAvLyBXZSByZXF1ZXN0ZWQgYW4gaXRhbGljIGZvbnQsIGJ1dCBGb250Y29uZmlnIGdh
dmUgdXMgb25lIHRoYXQgd2FzIG5laXRoZXIgb2JsaXF1ZSBub3IgaXRhbGljLgorICAgIGludCBh
Y3R1YWxGb250U2xhbnQ7CisgICAgYm9vbCBkZXNjcmlwdGlvbkFsbG93c1N5bnRoZXRpY09ibGlx
dWUgPSBmb250RGVzY3JpcHRpb24uZm9udFN5bnRoZXNpcygpICYgRm9udFN5bnRoZXNpc1N0eWxl
OworICAgIGlmIChkZXNjcmlwdGlvbkFsbG93c1N5bnRoZXRpY09ibGlxdWUgJiYgZm9udERlc2Ny
aXB0aW9uLml0YWxpYygpCisgICAgICAgICYmIEZjUGF0dGVybkdldEludGVnZXIocGF0dGVybiwg
RkNfU0xBTlQsIDAsICZhY3R1YWxGb250U2xhbnQpID09IEZjUmVzdWx0TWF0Y2gpIHsKKyAgICAg
ICAgbV9zeW50aGV0aWNPYmxpcXVlID0gYWN0dWFsRm9udFNsYW50ID09IEZDX1NMQU5UX1JPTUFO
OworICAgIH0KKworICAgIGJ1aWxkU2NhbGVkRm9udChmb250RmFjZS5nZXQoKSk7CiB9CiAKIEZv
bnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBi
b29sIGl0YWxpYykKQEAgLTE5Niw3ICsxOTYsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgZmxvYXQgc2l6ZSwgYm9vbAog
ICAgICwgbV9zY2FsZWRGb250KG51bGxwdHIpCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0
aW9uKQogewotICAgIGluaXRpYWxpemVXaXRoRm9udEZhY2UoZm9udEZhY2UpOworICAgIGJ1aWxk
U2NhbGVkRm9udChmb250RmFjZSk7CiAKICAgICBGVF9GYWNlIGZvbnRDb25maWdGYWNlID0gY2Fp
cm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7CiAgICAgaWYgKGZvbnRD
b25maWdGYWNlKSB7CkBAIC0yMTcsNyArMjE3LDYgQEAgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBs
YXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAg
IG1fZml4ZWRXaWR0aCA9IG90aGVyLm1fZml4ZWRXaWR0aDsKICAgICBtX3BhdHRlcm4gPSBvdGhl
ci5tX3BhdHRlcm47CiAgICAgbV9vcmllbnRhdGlvbiA9IG90aGVyLm1fb3JpZW50YXRpb247Ci0g
ICAgbV9ob3Jpem9udGFsT3JpZW50YXRpb25NYXRyaXggPSBvdGhlci5tX2hvcml6b250YWxPcmll
bnRhdGlvbk1hdHJpeDsKIAogICAgIGlmIChtX2ZhbGxiYWNrcykgewogICAgICAgICBGY0ZvbnRT
ZXREZXN0cm95KG1fZmFsbGJhY2tzKTsKQEAgLTI1Miw3ICsyNTEsNyBAQCBGb250UGxhdGZvcm1E
YXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyLCBmbG9h
dCBzaXplKQogICAgIC8vIFdlIG5lZWQgdG8gcmVpbml0aWFsaXplIHRoZSBpbnN0YW5jZSwgYmVj
YXVzZSB0aGUgZGlmZmVyZW5jZSBpbiBzaXplIAogICAgIC8vIG5lY2Vzc2l0YXRlcyBhIG5ldyBz
Y2FsZWQgZm9udCBpbnN0YW5jZS4KICAgICBtX3NpemUgPSBzaXplOwotICAgIGluaXRpYWxpemVX
aXRoRm9udEZhY2UoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShtX3NjYWxlZEZvbnQp
KTsKKyAgICBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZSht
X3NjYWxlZEZvbnQpKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEo
KQpAQCAtMzAxLDcgKzMwMCw3IEBAIFN0cmluZyBGb250UGxhdGZvcm1EYXRhOjpkZXNjcmlwdGlv
bigpIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBGb250UGxhdGZvcm1EYXRhOjppbml0aWFsaXpl
V2l0aEZvbnRGYWNlKGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24pCit2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OmJ1aWxkU2Nh
bGVkRm9udChjYWlyb19mb250X2ZhY2VfdCogZm9udEZhY2UpCiB7CiAgICAgY2Fpcm9fZm9udF9v
cHRpb25zX3QqIG9wdGlvbnMgPSBnZXREZWZhdWx0Q2Fpcm9Gb250T3B0aW9ucygpOwogICAgIEZj
UGF0dGVybiogb3B0aW9uc1BhdHRlcm4gPSBtX3BhdHRlcm4gPyBtX3BhdHRlcm4uZ2V0KCkgOiBn
ZXREZWZhdWx0Rm9udGNvbmZpZ09wdGlvbnMoKTsKQEAgLTMxMCwxMCArMzA5LDYgQEAgdm9pZCBG
b250UGxhdGZvcm1EYXRhOjppbml0aWFsaXplV2l0aEZvbnRGYWNlKGNhaXJvX2ZvbnRfZmFjZV90
KiBmb250RmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBjdG07CiAgICAgY2Fpcm9fbWF0
cml4X2luaXRfaWRlbnRpdHkoJmN0bSk7CiAKLSAgICAvLyBTY2FsaW5nIGEgZm9udCB3aXRoIHdp
ZHRoIHplcm8gc2l6ZSBsZWFkcyB0byBhIGZhaWxlZCBjYWlyb19zY2FsZWRfZm9udF90IGluc3Rh
bnRpYXRpb25zLgotICAgIC8vIEluc3RlYWQgd2Ugc2NhbGUgd2Ugc2NhbGUgdGhlIGZvbnQgdG8g
YSB2ZXJ5IHRpbnkgc2l6ZSBhbmQganVzdCBhYm9ydCByZW5kZXJpbmcgbGF0ZXIgb24uCi0gICAg
ZmxvYXQgcmVhbFNpemUgPSBtX3NpemUgPyBtX3NpemUgOiAxOwotCiAgICAgLy8gRm9udENvbmZp
ZyBtYXkgcmV0dXJuIGEgbGlzdCBvZiB0cmFuc2Zvcm1hdGlvbiBtYXRyaWNlcyB3aXRoIHRoZSBw
YXR0ZXJuLCBmb3IgaW5zdGFuY2UsCiAgICAgLy8gZm9yIGZvbnRzIHRoYXQgYXJlIG9ibGlxdWUu
IFdlIHVzZSB0aGF0IHRvIGluaXRpYWxpemUgdGhlIGNhaXJvIGZvbnQgbWF0cml4LgogICAgIGNh
aXJvX21hdHJpeF90IGZvbnRNYXRyaXg7CkBAIC0zMjYsMTUgKzMyMSwxMCBAQCB2b2lkIEZvbnRQ
bGF0Zm9ybURhdGE6OmluaXRpYWxpemVXaXRoRm9udEZhY2UoY2Fpcm9fZm9udF9mYWNlX3QqIGZv
bnRGYWNlLCBjb25zdAogICAgIGNhaXJvX21hdHJpeF9pbml0KCZmb250TWF0cml4LCBmb250Q29u
ZmlnTWF0cml4Lnh4LCAtZm9udENvbmZpZ01hdHJpeC55eCwKICAgICAgICAgLWZvbnRDb25maWdN
YXRyaXgueHksIGZvbnRDb25maWdNYXRyaXgueXksIDAsIDApOwogCi0gICAgLy8gV2UgcmVxdWVz
dGVkIGFuIGl0YWxpYyBmb250LCBidXQgRm9udGNvbmZpZyBnYXZlIHVzIG9uZSB0aGF0IHdhcyBu
ZWl0aGVyIG9ibGlxdWUgbm9yIGl0YWxpYy4KLSAgICBpbnQgYWN0dWFsRm9udFNsYW50OwotICAg
IGJvb2wgZGVzY3JpcHRpb25BbGxvd3NTeW50aGV0aWNPYmxpcXVlID0gZm9udERlc2NyaXB0aW9u
LmZvbnRTeW50aGVzaXMoKSAmIEZvbnRTeW50aGVzaXNTdHlsZTsKLSAgICBpZiAoZGVzY3JpcHRp
b25BbGxvd3NTeW50aGV0aWNPYmxpcXVlICYmIGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKQotICAg
ICAgICAmJiBGY1BhdHRlcm5HZXRJbnRlZ2VyKG9wdGlvbnNQYXR0ZXJuLCBGQ19TTEFOVCwgMCwg
JmFjdHVhbEZvbnRTbGFudCkgPT0gRmNSZXN1bHRNYXRjaCkgewotICAgICAgICBtX3N5bnRoZXRp
Y09ibGlxdWUgPSBhY3R1YWxGb250U2xhbnQgPT0gRkNfU0xBTlRfUk9NQU47Ci0gICAgfQotCi0g
ICAgLy8gVGhlIG1hdHJpeCBmcm9tIEZvbnRDb25maWcgZG9lcyBub3QgaW5jbHVkZSB0aGUgc2Nh
bGUuIAorICAgIC8vIFRoZSBtYXRyaXggZnJvbSBGb250Q29uZmlnIGRvZXMgbm90IGluY2x1ZGUg
dGhlIHNjYWxlLiBTY2FsaW5nIGEgZm9udCB3aXRoIHdpZHRoIHplcm8gc2l6ZSBsZWFkcworICAg
IC8vIHRvIGEgZmFpbGVkIGNhaXJvX3NjYWxlZF9mb250X3QgaW5zdGFudGlhdGlvbnMuIEluc3Rl
YWQgd2Ugc2NhbGUgd2Ugc2NhbGUgdGhlIGZvbnQgdG8gYSB2ZXJ5IHRpbnkKKyAgICAvLyBzaXpl
IGFuZCBqdXN0IGFib3J0IHJlbmRlcmluZyBsYXRlciBvbi4KKyAgICBmbG9hdCByZWFsU2l6ZSA9
IG1fc2l6ZSA/IG1fc2l6ZSA6IDE7CiAgICAgY2Fpcm9fbWF0cml4X3NjYWxlKCZmb250TWF0cml4
LCByZWFsU2l6ZSwgcmVhbFNpemUpOwogCiAgICAgaWYgKHN5bnRoZXRpY09ibGlxdWUoKSkgewpA
QCAtMzQ0LDkgKzMzNCwxNyBAQCB2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OmluaXRpYWxpemVXaXRo
Rm9udEZhY2UoY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlLCBjb25zdAogICAgICAgICBjYWly
b19tYXRyaXhfbXVsdGlwbHkoJmZvbnRNYXRyaXgsIG1fb3JpZW50YXRpb24gPT0gVmVydGljYWwg
PyAmdmVydGljYWxTa2V3IDogJnNrZXcsICZmb250TWF0cml4KTsKICAgICB9CiAKLSAgICBtX2hv
cml6b250YWxPcmllbnRhdGlvbk1hdHJpeCA9IGZvbnRNYXRyaXg7Ci0gICAgaWYgKG1fb3JpZW50
YXRpb24gPT0gVmVydGljYWwpCi0gICAgICAgIHJvdGF0ZUNhaXJvTWF0cml4Rm9yVmVydGljYWxP
cmllbnRhdGlvbigmZm9udE1hdHJpeCk7CisgICAgaWYgKG1fb3JpZW50YXRpb24gPT0gVmVydGlj
YWwpIHsKKyAgICAgICAgLy8gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggZm9y
IHZlcnRpY2FsIGdseXBocyAoVikgaXMgYQorICAgICAgICAvLyBjb21iaW5hdGlvbiBvZiByb3Rh
dGlvbiAoUikgYW5kIHRyYW5zbGF0aW9uIChUKSBhcHBsaWVkIG9uIHRoZQorICAgICAgICAvLyBo
b3Jpem9udGFsIG1hdHJpeCAoSCkuIFYgPSBIIC4gUiAuIFQsIHdoZXJlIFIgcm90YXRlcyBieSAt
OTAgZGVncmVlcworICAgICAgICAvLyBhbmQgVCB0cmFuc2xhdGVzIGJ5IGZvbnQgc2l6ZSB0b3dh
cmRzIHkgYXhpcy4KKyAgICAgICAgY2Fpcm9fbWF0cml4X3JvdGF0ZSgmZm9udE1hdHJpeCwgLXBp
T3ZlclR3b0RvdWJsZSk7CisgICAgICAgIGNhaXJvX21hdHJpeF90cmFuc2xhdGUoJmZvbnRNYXRy
aXgsIDAuMCwgMS4wKTsKKyAgICB9CisKKyAgICBpZiAobV9zY2FsZWRGb250ICYmIG1fc2NhbGVk
Rm9udCAhPSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkpCisgICAgICAgIGNhaXJvX3NjYWxl
ZF9mb250X2Rlc3Ryb3kobV9zY2FsZWRGb250KTsKIAogICAgIG1fc2NhbGVkRm9udCA9IGNhaXJv
X3NjYWxlZF9mb250X2NyZWF0ZShmb250RmFjZSwgJmZvbnRNYXRyaXgsICZjdG0sIG9wdGlvbnMp
OwogICAgIGNhaXJvX2ZvbnRfb3B0aW9uc19kZXN0cm95KG9wdGlvbnMpOwpAQCAtMzk3LDMxICsz
OTUsMjIgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAKIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6
c2V0T3JpZW50YXRpb24oRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewotICAgIEFTU0VS
VChtX3NjYWxlZEZvbnQpOwotCiAgICAgaWYgKCFtX3NjYWxlZEZvbnQgfHwgKG1fb3JpZW50YXRp
b24gPT0gb3JpZW50YXRpb24pKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb19tYXRyaXhf
dCB0cmFuc2Zvcm1hdGlvbk1hdHJpeDsKLSAgICBjYWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSgm
dHJhbnNmb3JtYXRpb25NYXRyaXgpOwotCi0gICAgY2Fpcm9fbWF0cml4X3QgZm9udE1hdHJpeDsK
LSAgICBjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9tYXRyaXgobV9zY2FsZWRGb250LCAmZm9u
dE1hdHJpeCk7Ci0KLSAgICBjYWlyb19mb250X29wdGlvbnNfdCogb3B0aW9ucyA9IGdldERlZmF1
bHRDYWlyb0ZvbnRPcHRpb25zKCk7CisgICAgQVNTRVJUKG1fc2NhbGVkRm9udCk7CisgICAgbV9v
cmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOworICAgIGJ1aWxkU2NhbGVkRm9udChjYWlyb19zY2Fs
ZWRfZm9udF9nZXRfZm9udF9mYWNlKG1fc2NhbGVkRm9udCkpOworfQogCi0gICAgLy8gSW4gY2Fz
ZSBvZiB2ZXJ0aWNhbCBvcmllbnRhdGlvbiwgcm90YXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRy
aXguCi0gICAgLy8gT3RoZXJ3aXNlIHJlc3RvcmUgdGhlIGhvcml6b250YWwgb3JpZW50YXRpb24g
bWF0cml4LgotICAgIGlmIChvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbCkKLSAgICAgICAgcm90YXRl
Q2Fpcm9NYXRyaXhGb3JWZXJ0aWNhbE9yaWVudGF0aW9uKCZmb250TWF0cml4KTsKLSAgICBlbHNl
Ci0gICAgICAgIGZvbnRNYXRyaXggPSBtX2hvcml6b250YWxPcmllbnRhdGlvbk1hdHJpeDsKK3Zv
aWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2JsaXF1ZShib29sIG5ld1N5bnRoZXRp
Y09ibGlxdWVWYWx1ZSkKK3sKKyAgICBpZiAobmV3U3ludGhldGljT2JsaXF1ZVZhbHVlID09IHN5
bnRoZXRpY09ibGlxdWUoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fZm9udF9mYWNl
X3QqIGZvbnRGYWNlID0gY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShtX3NjYWxlZEZv
bnQpOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9zY2FsZWRGb250KTsKLSAgICBt
X3NjYWxlZEZvbnQgPSBjYWlyb19zY2FsZWRfZm9udF9jcmVhdGUoZm9udEZhY2UsICZmb250TWF0
cml4LCAmdHJhbnNmb3JtYXRpb25NYXRyaXgsIG9wdGlvbnMpOwotICAgIGNhaXJvX2ZvbnRfb3B0
aW9uc19kZXN0cm95KG9wdGlvbnMpOwotICAgIG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsK
KyAgICBBU1NFUlQobV9zY2FsZWRGb250KTsKKyAgICBtX3N5bnRoZXRpY09ibGlxdWUgPSBuZXdT
eW50aGV0aWNPYmxpcXVlVmFsdWU7CisgICAgYnVpbGRTY2FsZWRGb250KGNhaXJvX3NjYWxlZF9m
b250X2dldF9mb250X2ZhY2UobV9zY2FsZWRGb250KSk7CiB9CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>