<?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>38482</bug_id>
          
          <creation_ts>2010-05-03 12:39:28 -0700</creation_ts>
          <short_desc>wx port: mac lacks complex text support</short_desc>
          <delta_ts>2010-05-03 16:51:47 -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 wx</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Kevin Watters">kevinwatters</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>kevino</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>220245</commentid>
    <comment_count>0</comment_count>
      <attachid>54955</attachid>
    <who name="Kevin Watters">kevinwatters</who>
    <bug_when>2010-05-03 12:39:28 -0700</bug_when>
    <thetext>Created attachment 54955
Build and use Mac&apos;s ComplexTextController to support complex text in wx

We could use the Mac implementation of ComplexTextController to support complex scripts on wxMac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220248</commentid>
    <comment_count>1</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 12:48:25 -0700</bug_when>
    <thetext>Attachment 54955 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/graphics/SimpleFontData.h:128:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220332</commentid>
    <comment_count>2</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2010-05-03 15:32:20 -0700</bug_when>
    <thetext>Landed in r58707, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220367</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-03 16:51:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58707 might have broken Qt Linux Release minimal</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54955</attachid>
            <date>2010-05-03 12:39:28 -0700</date>
            <delta_ts>2010-05-03 13:36:09 -0700</delta_ts>
            <desc>Build and use Mac&apos;s ComplexTextController to support complex text in wx</desc>
            <filename>complex_text_wxmac.patch</filename>
            <type>text/plain</type>
            <size>34987</size>
            <attacher name="Kevin Watters">kevinwatters</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA1ODY3NSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTAsOCArNjUwLDEzIEBACiAj
ZGVmaW5lIEVOQUJMRV9HTE9CQUxfRkFTVE1BTExPQ19ORVcgMAogI2lmIE9TKERBUldJTikKICNk
ZWZpbmUgV1RGX1BMQVRGT1JNX0NGIDEKKyNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyNkZWZp
bmUgV1RGX1VTRV9DT1JFX1RFWFQgMQorI2Vsc2UKKyNkZWZpbmUgV1RGX1VTRV9BVFNVSSAxCiAj
ZW5kaWYKICNlbmRpZgorI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCiAjaWYgSEFWRShQVEhS
RUFEX0gpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1ODY4OSkKKysrIEphdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDEwLTA1LTAzICBL
ZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbd3hdIEJ1aWxkIGFuZCB1c2UgTWFjJ3Mg
Q29tcGxleFRleHRDb250cm9sbGVyIHRvIHN1cHBvcnQgY29tcGxleCB0ZXh0IGluIHd4LgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTAtMDUtMDIgIExhc3psbyBHb21ib3MgIDxs
YXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1ODY4OSkKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNS0wMyAgS2V2aW4gV2F0dGVycyAgPGtl
dmlud2F0dGVyc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVpbGQgYW5kIHVzZSBNYWMncyBDb21wbGV4VGV4dENvbnRyb2xsZXIg
dG8gc3VwcG9ydCBjb21wbGV4IHRleHQgaW4gd3guCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKHd4V2ViVmlldzo6Q3JlYXRlKToKKyAgICAgICAgKiB3c2NyaXB0OgorCiAyMDEw
LTA1LTAzICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93eC9XZWJWaWV3LmNwcAkocmV2aXNpb24gNTg2NzUpCisrKyBXZWJLaXQv
d3gvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw2ICsyNTQsMTMgQEAKICAgICBy
ZXR1cm4gZ3NfY2FjaGVQb2xpY3k7CiB9CiAKKyNpZiBPUyhEQVJXSU4pCisvLyBwcm90b3R5cGUg
LSBmdW5jdGlvbiBpcyBpbiBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UubW0KK2V4dGVybiAiQyIgewor
dm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKTsKK30KKyNlbmRpZgorCiBCRUdJ
Tl9FVkVOVF9UQUJMRSh3eFdlYlZpZXcsIHd4V2luZG93KQogICAgIEVWVF9QQUlOVCh3eFdlYlZp
ZXc6Ok9uUGFpbnQpCiAgICAgRVZUX1NJWkUod3hXZWJWaWV3OjpPblNpemUpCkBAIC0yOTUsNiAr
MzAyLDEwIEBACiBib29sIHd4V2ViVmlldzo6Q3JlYXRlKHd4V2luZG93KiBwYXJlbnQsIGludCBp
ZCwgY29uc3Qgd3hQb2ludCYgcG9zaXRpb24sIAogICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3eFNpemUmIHNpemUsIGxvbmcgc3R5bGUsIGNvbnN0IHd4U3RyaW5nJiBuYW1lKQogeworI2lm
IE9TKERBUldJTikKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOworI2VuZGlmCisK
ICAgICBpZiAoIChzdHlsZSAmIHd4Qk9SREVSX01BU0spID09IDApCiAgICAgICAgIHN0eWxlIHw9
IHd4Qk9SREVSX05PTkU7CiAgICAgCkluZGV4OiBXZWJLaXQvd3gvd3NjcmlwdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd3gvd3NjcmlwdAkocmV2aXNpb24gNTg2NzUpCisrKyBXZWJLaXQvd3gvd3Nj
cmlwdAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsMTMgQEAKICAgICBibGQuZW52LkNYWERF
UFNfV0VCQ09SRSA9IFV0aWxzLmhfZmlsZShsaWJ3ZWJjb3JlKQogICAgIAogZGVmIGJ1aWxkKGJs
ZCk6CisKKyAgICBpbXBvcnQgVGFza0dlbgorCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2RhcndpbicpOgorICAgICAgICBUYXNrR2VuLnRhc2tfZ2VuLm1hcHBpbmdzWycubW0nXSA9
IFRhc2tHZW4udGFza19nZW4ubWFwcGluZ3NbJy5jeHgnXQorICAgICAgICBUYXNrR2VuLnRhc2tf
Z2VuLm1hcHBpbmdzWycubSddID0gVGFza0dlbi50YXNrX2dlbi5tYXBwaW5nc1snLmN4eCddCisK
ICAgICBibGQuYWRkX3ByZV9mdW4ocHJlX2J1aWxkKQogCiAgICAgYmxkLmVudi5MSUJESVIgPSBv
dXRwdXRfZGlyCkBAIC05NSw2ICsxMDIsMTEgQEAKICAgICAgICAgdXNlbGliX2xvY2FsID0gJycs
CiAgICAgICAgIGluc3RhbGxfcGF0aCA9IG91dHB1dF9kaXIpCiAgICAgICAgIAorICAgIGV4dHMg
PSBbJy5jJywgJy5jcHAnXQorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4n
KToKKyAgICAgICAgZXh0cy5hcHBlbmQoJy5tbScpCisgICAgICAgIG9iai5pbmNsdWRlcyArPSAn
Li4vbWFjL1dlYkNvcmVTdXBwb3J0IC4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vbWFjJworICAgICAg
ICBvYmouc291cmNlID0gIi4uL21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bSIKICAgICBvYmouZmluZF9zb3VyY2VzX2luX2RpcnMod2Via2l0X2RpcnMpCiAKICAgICBpZiBi
dWlsZGluZ19vbl93aW4zMjoKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1ODY4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMDUtMDMgIEtldmluIFdhdHRl
cnMgIDxrZXZpbndhdHRlcnNAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFt3eF0gQnVpbGQgYW5kIHVzZSBNYWMncyBDb21wbGV4VGV4
dENvbnRyb2xsZXIgdG8gc3VwcG9ydCBjb21wbGV4IHRleHQgaW4gd3guCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmFkdmFuY2VB
dCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
Rm9udERhdGE6OmdldE5TRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4
L0ZvbnRDYWNoZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERh
dGFGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAodG9DVEZvbnRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjphbGxvd3NMaWdhdHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3d4L0ZvbnRQbGF0Zm9ybURhdGFXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OmNnRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9u
dFBsYXRmb3JtRGF0YVd4TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6Om5zRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpj
YWNoZU5TRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFd4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93eC9TaW1wbGVGb250RGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
eC93eGNvZGUvZm9udHByb3BzLmg6CisgICAgICAgICogcGxhdGZvcm0vd3gvd3hjb2RlL21hYy9j
YXJib24vZm9udHByb3BzLm1tOgorICAgICAgICAod3hGb250Q29udGFpbnNDaGFyYWN0ZXJzKToK
KyAgICAgICAgKEdldFRleHRFeHRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L3d4Y29kZS9t
YWMvY2FyYm9uL25vbi1rZXJuZWQtZHJhd2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
VGV4dFdpdGhTcGFjaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC93eGNvZGUvd2luL2ZvbnRw
cm9wcy5jcHA6CisgICAgICAgICh3eEZvbnRDb250YWluc0NoYXJhY3RlcnMpOgorICAgICAgICAq
IHdzY3JpcHQ6CisKIDIwMTAtMDUtMDMgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS93
c2NyaXB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd3NjcmlwdAkocmV2aXNpb24gNTg2NzUpCisr
KyBXZWJDb3JlL3dzY3JpcHQJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDIwIEBACiAgICAg
ICAgIHdlYmNvcmVfZGlycy5hcHBlbmQoJ3BsdWdpbnMvbWFjJykKICAgICAgICAgd2ViY29yZV9k
aXJzLmFwcGVuZCgncGxhdGZvcm0vd3gvd3hjb2RlL21hYy9jYXJib24nKQogICAgICAgICB3ZWJj
b3JlX2RpcnMuYXBwZW5kKCdwbGF0Zm9ybS9tYWMnKQorICAgICAgICB3ZWJjb3JlX2RpcnMuYXBw
ZW5kKCdwbGF0Zm9ybS90ZXh0L21hYycpCiAgICAgICAgIHdlYmNvcmVfc291cmNlc1snd3gtbWFj
J10gPSBbCisgICAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5j
cHAnLAogICAgICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9XZWJDb3JlTlNTdHJpbmdFeHRyYXMu
bW0nLAotICAgICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3Bw
JywKKyAgICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bScsCisgICAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3Bw
JywKKyAgICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCcsCisgICAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcCcsCisgICAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVOb2RlTWFjLmNwcCcsCisg
ICAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQVRTVUku
bW0nLAorICAgICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0
YUNvcmVUZXh0LmNwcCcsCisgICAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9u
dFBsYXRmb3JtRGF0YVd4TWFjLm1tJywKKyAgICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L21h
Yy9TaGFwZUFyYWJpYy5jJywKICAgICAgICAgICAgICAgICdwbGF0Zm9ybS93eC93eGNvZGUvbWFj
L2NhcmJvbi9mb250cHJvcHMubW0nLAogICAgICAgICAgICAgICAgJ3BsdWdpbnMvd3gvUGx1Z2lu
RGF0YVd4LmNwcCcsCiAgICAgICAgICAgICAgICAncGx1Z2lucy9tYWMvUGx1Z2luUGFja2FnZU1h
Yy5jcHAnLApAQCAtMTAxLDggKzExMiwxMiBAQAogCiBkZWYgYnVpbGQoYmxkKToKICAgICBpbXBv
cnQgT3B0aW9ucworICAgIAorICAgIGltcG9ydCBUYXNrR2VuCisKICAgICBpZiBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnZGFyd2luJyk6CiAgICAgICAgIFRhc2tHZW4udGFza19nZW4ubWFwcGlu
Z3NbJy5tbSddID0gVGFza0dlbi50YXNrX2dlbi5tYXBwaW5nc1snLmN4eCddCisgICAgICAgIFRh
c2tHZW4udGFza19nZW4ubWFwcGluZ3NbJy5tJ10gPSBUYXNrR2VuLnRhc2tfZ2VuLm1hcHBpbmdz
WycuY3h4J10KICAgICAKICAgICB3a19pbmNsdWRlcyA9IFsnLicsICcuLicsICdEZXJpdmVkU291
cmNlcycsCiAgICAgICAgICAgICAgICAgd2tfcm9vdCwgCkBAIC0xMjQsNiArMTM5LDcgQEAKICAg
ICAgICAgCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgogICAgICAg
ICBmZWF0dXJlcy5hcHBlbmQoJ2NmJykKKyAgICAgICAgYmxkLmluc3RhbGxfZmlsZXMob3MucGF0
aC5qb2luKG91dHB1dF9kaXIsICdXZWJDb3JlJyksICdwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oJykKICAgICBlbHNlOgogICAgICAgICBleGNsdWRlX3BhdHRlcm5zLmFwcGVu
ZCgnKkNGLmNwcCcpCiAKQEAgLTIwMSwxMSArMjE3LDEzIEBACiAgICAgICAgIAogICAgICAgICBp
ZiBidWlsZGluZ19vbl93aW4zMjoKICAgICAgICAgICAgIGV4Y2x1ZGVzLmFwcGVuZCgnU2hhcmVk
VGltZXJXeC5jcHAnKQotICAgICAgICAgICAgZXhjbHVkZXMuYXBwZW5kKCdHbHlwaE1hcFd4LmNw
cCcpCiAgICAgICAgICAgICBleGNsdWRlcy5hcHBlbmQoJ1JlbmRlclRoZW1lV2luLmNwcCcpCiAg
ICAgICAgICAgICBleGNsdWRlcy5hcHBlbmQoJ0tleUV2ZW50V2luLmNwcCcpCiAgICAgICAgICAg
ICAKKyAgICAgICAgaWYgYnVpbGRpbmdfb25fd2luMzIgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2RhcndpbicpOgorICAgICAgICAgICAgZXhjbHVkZXMuYXBwZW5kKCdHbHlwaE1hcFd4LmNw
cCcpCiAgICAgICAgIGV4Y2x1ZGVzLmFwcGVuZCgnQXV0aGVudGljYXRpb25DRi5jcHAnKQogICAg
ICAgICBleGNsdWRlcy5hcHBlbmQoJ0xvYWRlclJ1bkxvb3BDRi5jcHAnKQorICAgICAgICBleGNs
dWRlcy5hcHBlbmQoJ1Jlc291cmNlRXJyb3JDRi5jcHAnKQogICAgICAgICAKICAgICB3ZWJjb3Jl
LmZpbmRfc291cmNlc19pbl9kaXJzKGZ1bGxfZGlycywgZXhjbHVkZXMgPSBleGNsdWRlcywgZXh0
cz1bJy5jJywgJy5jcHAnXSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTg2NzUpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29tcGxleFRleHRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlICJDaGFyYWN0ZXJOYW1l
cy5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRl
ICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAkocmV2aXNpb24gNTg2NzUp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBDb21wbGV4VGV4dENv
bnRyb2xsZXJfaAogI2RlZmluZSBDb21wbGV4VGV4dENvbnRyb2xsZXJfaAogCisjaW5jbHVkZSA8
QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSAiR2x5
cGhCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCShy
ZXZpc2lvbiA1ODY3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRGT1JNKENHKQorI2lm
IFBMQVRGT1JNKENHKSB8fCAoUExBVEZPUk0oV1gpICYmIE9TKERBUldJTikpCiAjaW5jbHVkZSA8
QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjZW5kaWYKIApAQCAt
NTgsNyArNTgsNyBAQAogCiAvLyBDRyB1c2VzIENHU2l6ZSBpbnN0ZWFkIG9mIEZsb2F0U2l6ZSBz
byB0aGF0IHRoZSByZXN1bHQgb2YgYWR2YW5jZXMoKQogLy8gY2FuIGJlIHBhc3NlZCBkaXJlY3Rs
eSB0byBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzIGluIEZvbnRNYWMubW0KLSNpZiBQ
TEFURk9STShDRykKKyNpZiBQTEFURk9STShDRykgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJX
SU4pKQogdHlwZWRlZiBDR1NpemUgR2x5cGhCdWZmZXJBZHZhbmNlOwogI2VsaWYgT1MoV0lOQ0Up
CiAvLyBUaGVyZSBpcyBubyBjcm9zcy1wbGF0Zm9ybSBjb2RlIHRoYXQgdXNlcyB0aGUgaGVpZ2h0
IG9mIEdseXBoQnVmZmVyQWR2YW5jZSwKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiAgICAgZmxvYXQg
YWR2YW5jZUF0KGludCBpbmRleCkgY29uc3QKICAgICB7Ci0jaWYgUExBVEZPUk0oQ0cpCisjaWYg
UExBVEZPUk0oQ0cpIHx8IChQTEFURk9STShXWCkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgcmV0
dXJuIG1fYWR2YW5jZXNbaW5kZXhdLndpZHRoOwogI2VsaWYgT1MoV0lOQ0UpCiAgICAgICAgIHJl
dHVybiBtX2FkdmFuY2VzW2luZGV4XTsKQEAgLTE1Myw3ICsxNTMsNyBAQAogICAgICAgICBtX2ds
eXBocy5hcHBlbmQoZ2x5cGgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDRykKKyNpZiBQTEFU
Rk9STShDRykgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBDR1NpemUg
YWR2YW5jZSA9IHsgd2lkdGgsIDAgfTsKICAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQoYWR2YW5j
ZSk7CiAjZWxpZiBPUyhXSU5DRSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNp
emUuaAkocmV2aXNpb24gNTg2NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
U2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShDRykKKyNp
ZiBQTEFURk9STShDRykgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKQogdHlwZWRlZiBz
dHJ1Y3QgQ0dTaXplIENHU2l6ZTsKICNlbmRpZgogCkBAIC03NSw3ICs3NSw3IEBACiAgICAgICAg
ICAgIG1faGVpZ2h0IDwgb3RoZXIubV9oZWlnaHQgPyBtX2hlaWdodCA6IG90aGVyLm1faGVpZ2h0
KTsKICAgICB9CiAKLSNpZiBQTEFURk9STShDRykKKyNpZiBQTEFURk9STShDRykgfHwgKFBMQVRG
T1JNKFdYKSAmJiBPUyhEQVJXSU4pKQogICAgIGV4cGxpY2l0IEZsb2F0U2l6ZShjb25zdCBDR1Np
emUmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAgICBv
cGVyYXRvciBDR1NpemUoKSBjb25zdDsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93eC9Gb250Q2FjaGVXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93eC9Gb250Q2FjaGVXeC5jcHAJKHJldmlzaW9uIDU4Njc1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250Q2FjaGVXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDEzIEBACiBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250
RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIGludCBsZW5ndGgpCiB7CiAgICAgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0gMDsKLSAg
ICBmb250RGF0YSA9IG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9u
dERlc2NyaXB0aW9uKCksIGZvbnQuZmFtaWx5KCkuZmFtaWx5KCkpKTsKKyAgICBmb250RGF0YSA9
IGdldENhY2hlZEZvbnREYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGZvbnQuZmFtaWx5KCku
ZmFtaWx5KCkpOworICAgIGlmICghZm9udERhdGEtPmNvbnRhaW5zQ2hhcmFjdGVycyhjaGFyYWN0
ZXJzLCBsZW5ndGgpKQorICAgICAgICBmb250RGF0YSA9IGdldFNpbWlsYXJGb250UGxhdGZvcm1E
YXRhKGZvbnQpOworICAgIGlmICghZm9udERhdGEtPmNvbnRhaW5zQ2hhcmFjdGVycyhjaGFyYWN0
ZXJzLCBsZW5ndGgpKQorICAgICAgICBmb250RGF0YSA9IGdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoZm9udC5mb250RGVzY3JpcHRpb24oKSk7CisgICAgCisgICAgQVNTRVJUKGZvbnREYXRhLT5j
b250YWluc0NoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgcmV0dXJuIGZvbnRE
YXRhOwogfQogCkBAIC01NSw4ICs2MSwxNSBAQAogewogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBl
dmVuIGJldHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLiAg
Rm9yIG5vdyB3ZSdsbCBwaWNrCiAgICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3Vs
ZCBnZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCi0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyB0aW1lc1N0cigic3lzdGVtZm9udCIpOwotICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShm
b250RGVzY3JpcHRpb24sIHRpbWVzU3RyKTsKKyAgICBTaW1wbGVGb250RGF0YSogZmFsbGJhY2sg
PSAwOworI2lmIE9TKFdJTkRPV1MpIHx8IChPUyhEQVJXSU4pICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSkKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZhbGxiYWNrTmFtZSgiQXJpYWwg
VW5pY29kZSBNUyIpOworI2Vsc2UKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZhbGxiYWNrTmFt
ZSgiVGltZXMgTmV3IFJvbWFuIik7CisjZW5kaWYKKyAgICBmYWxsYmFjayA9IGdldENhY2hlZEZv
bnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tOYW1lKTsKKyAgICAKKyAgICByZXR1cm4g
ZmFsbGJhY2s7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4
L0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ZvbnRQbGF0Zm9ybURhdGEuaAkocmV2aXNpb24gNTg2NzUpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRQbGF0Zm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsMjMgQEAKIAogI2luY2x1ZGUgPHd4L2RlZnMuaD4KICNpbmNsdWRlIDx3eC9mb250
Lmg+CisjaW5jbHVkZSA8d3gvZ2RpY21uLmg+CiAKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8
QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CisKKyNpZiBfX09CSkNf
XworQGNsYXNzIE5TRm9udDsKKyNlbHNlCitjbGFzcyBOU0ZvbnQ7CisjZW5kaWYKKworI2lmbmRl
ZiBCVUlMRElOR19PTl9USUdFUgoraW5saW5lIENURm9udFJlZiB0b0NURm9udFJlZihOU0ZvbnQg
Km5zRm9udCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDVEZvbnRSZWY+KG5zRm9udCk7IH0K
KyNlbmRpZgorCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHJpbmc7
CkBAIC02NCw5ICs4MCwxMiBAQAogICAgIGVudW0gRm9udFN0YXRlIHsgVU5JTklUSUFMSVpFRCwg
REVMRVRFRCwgVkFMSUQgfTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQotICAgIDogbV9mb250U3RhdGUoREVMRVRFRCksCi0gICAgICBtX2Zv
bnQoMCksCi0gICAgICBtX3NpemUoMCkKKyAgICA6IG1fZm9udFN0YXRlKERFTEVURUQpCisgICAg
LCBtX2ZvbnQoMCkKKyAgICAsIG1fc2l6ZSgwKQorI2lmIE9TKERBUldJTikKKyAgICAsIG1fYXRz
dUZvbnRJRCgwKQorI2VuZGlmCiAgICAgeyB9CiAKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwpA
QCAtNzcsNiArOTYsOSBAQAogICAgIDogbV9mb250U3RhdGUoVU5JTklUSUFMSVpFRCkKICAgICAs
IG1fZm9udCgwKQogICAgICwgbV9zaXplKHNpemUpCisjaWYgT1MoREFSV0lOKQorICAgICwgbV9h
dHN1Rm9udElEKDApCisjZW5kaWYKICAgICB7CiAgICAgfQogICAgIApAQCAtODQsNiArMTA2LDkg
QEAKICAgICA6IG1fZm9udFN0YXRlKFVOSU5JVElBTElaRUQpCiAgICAgLCBtX2ZvbnQoMCkKICAg
ICAsIG1fc2l6ZSgwKQorI2lmIE9TKERBUldJTikKKyAgICAsIG1fYXRzdUZvbnRJRCgwKQorI2Vu
ZGlmCiAgICAgewogICAgIH0KICAgICAKQEAgLTEyMSwxMSArMTQ2LDIzIEBACiAgICAgCiAgICAg
Ym9vbCByb3VuZHNHbHlwaEFkdmFuY2VzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
KyAgICBib29sIGFsbG93c0xpZ2F0dXJlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
CiAjaWYgT1MoV0lORE9XUykKICAgICBib29sIHVzZUdESSgpIGNvbnN0OwogICAgIEhGT05UIGhm
b250KCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIE9TKERBUldJTikKKyAgICBBVFNVRm9udElEIG1f
YXRzdUZvbnRJRDsKKyAgICBDR0ZvbnRSZWYgY2dGb250KCkgY29uc3Q7CisgICAgTlNGb250KiBu
c0ZvbnQoKSBjb25zdDsKKyAgICB2b2lkIGNhY2hlTlNGb250KCk7CisgICAgCisjZW5kaWYKKwor
ICAgIGZsb2F0IG1fc2l6ZTsKKwogI2lmbmRlZiBOREVCVUcKICAgICBTdHJpbmcgZGVzY3JpcHRp
b24oKSBjb25zdDsKICNlbmRpZgpAQCAtMTMzLDcgKzE3MCw5IEBACiBwcml2YXRlOgogICAgIFdU
Rjo6UmVmUHRyPEZvbnRIb2xkZXI+IG1fZm9udDsKICAgICBGb250U3RhdGUgbV9mb250U3RhdGU7
Ci0gICAgZmxvYXQgbV9zaXplOworI2lmIE9TKERBUldJTikKKyAgICBOU0ZvbnQqIG1fbnNGb250
OworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0Zv
bnRQbGF0Zm9ybURhdGFXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93eC9Gb250UGxhdGZvcm1EYXRhV3guY3BwCShyZXZpc2lvbiA1ODY3NSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFBsYXRmb3JtRGF0YVd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTksNiArOTksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAg
ICAgICAgICAgICAgICAgICAgICAgICApOyAKICNlbmRpZgorI2lmIE9TKERBUldJTikKKyAgICBt
X2F0c3VGb250SUQgPSBtX2ZvbnQtPmZvbnQoKS0+TWFjR2V0QVRTVUZvbnRJRCgpOworICAgIGNh
Y2hlTlNGb250KCk7CisjZW5kaWYKKyAgICBtX3NpemUgPSBkZXNjLmNvbXB1dGVkUGl4ZWxTaXpl
KCk7CiAgICAgbV9mb250U3RhdGUgPSBWQUxJRDsKICAgICBtX3NpemUgPSBkZXNjLmNvbXB1dGVk
UGl4ZWxTaXplKCk7CiAgICAgIApAQCAtMTQyLDQgKzE0NywyNCBAQAogfQogI2VuZGlmCiAKKyNp
ZiBPUyhEQVJXSU4pCitDR0ZvbnRSZWYgRm9udFBsYXRmb3JtRGF0YTo6Y2dGb250KCkgY29uc3QK
K3sKKyAgICBDR0ZvbnRSZWYgY2dGb250ID0gMDsKKyNpZmRlZiB3eE9TWF9VU0VfQ09SRV9URVhU
ICYmIHd4T1NYX1VTRV9DT1JFX1RFWFQKKyAgICBjZ0ZvbnQgPSBDVEZvbnRDb3B5R3JhcGhpY3NG
b250KChDVEZvbnRSZWYpbV9mb250LT5mb250KCktPk9TWEdldENURm9udCgpLCAwKTsKKyNlbHNl
CisgICAgQVRTRm9udFJlZiBmb250UmVmOworICAgIAorICAgIGZvbnRSZWYgPSBGTUdldEFUU0Zv
bnRSZWZGcm9tRm9udChtX2F0c3VGb250SUQpOworICAgIAorICAgIGlmIChmb250UmVmKQorICAg
ICAgICBjZ0ZvbnQgPSBDR0ZvbnRDcmVhdGVXaXRoUGxhdGZvcm1Gb250KCh2b2lkKikmZm9udFJl
Zik7CisjZW5kaWYKKyAgICByZXR1cm4gY2dGb250OwogfQorI2VuZGlmCisKKworCit9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250V3guY3BwCShyZXZpc2lvbiA1ODY3NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFd4LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsOCArMzUsMTMgQEAKIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSAiVW5pc2Ny
aWJlQ29udHJvbGxlci5oIgordHlwZWRlZiBVbmlzY3JpYmVDb250cm9sbGVyIENvbXBsZXhUZXh0
Q29udHJvbGxlcgogI2VuZGlmCiAKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSAibWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5oIgorI2VuZGlmCisKICNpbmNsdWRlIDx3eC9kY2NsaWVudC5oPgog
I2luY2x1ZGUgImZvbnRwcm9wcy5oIgogI2luY2x1ZGUgIm5vbi1rZXJuZWQtZHJhd2luZy5oIgpA
QCAtNDUsNyArNTAsNyBAQAogCiBib29sIEZvbnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JD
b21wbGV4VGV4dCgpCiB7Ci0jaWYgT1MoV0lORE9XUykKKyNpZiBPUyhXSU5ET1dTKSB8fCBPUyhE
QVJXSU4pCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTY3
LDggKzcyLDggQEAKIAogRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEludFBvaW50JiBwb2ludCwgaW50IGgsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0CiB7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBVbmlzY3JpYmVDb250
cm9sbGVyIGl0KHRoaXMsIHJ1bik7CisjaWYgT1MoV0lORE9XUykgfHwgT1MoREFSV0lOKQorICAg
IENvbXBsZXhUZXh0Q29udHJvbGxlciBpdCh0aGlzLCBydW4pOwogICAgIGl0LmFkdmFuY2UoZnJv
bSk7CiAgICAgZmxvYXQgYmVmb3JlV2lkdGggPSBpdC5ydW5XaWR0aFNvRmFyKCk7CiAgICAgaXQu
YWR2YW5jZSh0byk7CkBAIC03Niw5ICs4MSwxNCBAQAogCiAgICAgLy8gVXNpbmcgcm91bmRmKCkg
cmF0aGVyIHRoYW4gY2VpbGYoKSBmb3IgdGhlIHJpZ2h0IGVkZ2UgYXMgYSBjb21wcm9taXNlIHRv
IGVuc3VyZSBjb3JyZWN0IGNhcmV0IHBvc2l0aW9uaW5nCiAgICAgaWYgKHJ1bi5ydGwoKSkgewor
I2lmIE9TKFdJTkRPV1MpCiAgICAgICAgIGl0LmFkdmFuY2UocnVuLmxlbmd0aCgpKTsKICAgICAg
ICAgZmxvYXQgdG90YWxXaWR0aCA9IGl0LnJ1bldpZHRoU29GYXIoKTsKICAgICAgICAgcmV0dXJu
IEZsb2F0UmVjdChwb2ludC54KCkgKyBmbG9vcmYodG90YWxXaWR0aCAtIGFmdGVyV2lkdGgpLCBw
b2ludC55KCksIHJvdW5kZih0b3RhbFdpZHRoIC0gYmVmb3JlV2lkdGgpIC0gZmxvb3JmKHRvdGFs
V2lkdGggLSBhZnRlcldpZHRoKSwgaCk7CisjZWxzZQorICAgICAgICBmbG9hdCB0b3RhbFdpZHRo
ID0gaXQudG90YWxXaWR0aCgpOworICAgICAgICByZXR1cm4gRmxvYXRSZWN0KHBvaW50LngoKSAr
IGZsb29yZih0b3RhbFdpZHRoIC0gYWZ0ZXJXaWR0aCksIHBvaW50LnkoKSwgcm91bmRmKHRvdGFs
V2lkdGggLSBiZWZvcmVXaWR0aCkgLSBmbG9vcmYodG90YWxXaWR0aCAtIGFmdGVyV2lkdGgpLCBo
KTsKKyNlbmRpZgogICAgIH0gCiAgICAgCiAgICAgcmV0dXJuIEZsb2F0UmVjdChwb2ludC54KCkg
KyBmbG9vcmYoYmVmb3JlV2lkdGgpLCBwb2ludC55KCksIHJvdW5kZihhZnRlcldpZHRoKSAtIGZs
b29yZihiZWZvcmVXaWR0aCksIGgpOwpAQCAtOTAsMTIgKzEwMCwxMiBAQAogCiB2b2lkIEZvbnQ6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7
Ci0jaWYgT1MoV0lORE9XUykKKyNpZiBPUyhXSU5ET1dTKSB8fCBPUyhEQVJXSU4pCiAgICAgLy8g
VGhpcyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRh
IGZvciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogCiAgICAgZmxv
YXQgc3RhcnRYID0gcG9pbnQueCgpOwotICAgIFVuaXNjcmliZUNvbnRyb2xsZXIgY29udHJvbGxl
cih0aGlzLCBydW4pOworICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKHRoaXMs
IHJ1bik7CiAgICAgY29udHJvbGxlci5hZHZhbmNlKGZyb20pOwogICAgIGZsb2F0IGJlZm9yZVdp
ZHRoID0gY29udHJvbGxlci5ydW5XaWR0aFNvRmFyKCk7CiAgICAgY29udHJvbGxlci5hZHZhbmNl
KHRvLCAmZ2x5cGhCdWZmZXIpOwpAQCAtMTA3LDggKzExNywxNCBAQAogICAgIGZsb2F0IGFmdGVy
V2lkdGggPSBjb250cm9sbGVyLnJ1bldpZHRoU29GYXIoKTsKIAogICAgIGlmIChydW4ucnRsKCkp
IHsKKyNpZiBPUyhXSU5ET1dTKQogICAgICAgICBjb250cm9sbGVyLmFkdmFuY2UocnVuLmxlbmd0
aCgpKTsKICAgICAgICAgc3RhcnRYICs9IGNvbnRyb2xsZXIucnVuV2lkdGhTb0ZhcigpIC0gYWZ0
ZXJXaWR0aDsKKyNlbHNlCisgICAgICAgIHN0YXJ0WCArPSBjb250cm9sbGVyLnRvdGFsV2lkdGgo
KSArIGNvbnRyb2xsZXIuZmluYWxSb3VuZGluZ1dpZHRoKCkgLSBhZnRlcldpZHRoOworICAgICAg
ICBmb3IgKGludCBpID0gMCwgZW5kID0gZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gMTsgaSA8IGdseXBo
QnVmZmVyLnNpemUoKSAvIDI7ICsraSwgLS1lbmQpCisgICAgICAgICAgICBnbHlwaEJ1ZmZlci5z
d2FwKGksIGVuZCk7CisjZW5kaWYKICAgICB9IGVsc2UKICAgICAgICAgc3RhcnRYICs9IGJlZm9y
ZVdpZHRoOwogCkBAIC0xMjMsMTEgKzEzOSwxNSBAQAogCiBmbG9hdCBGb250OjpmbG9hdFdpZHRo
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZv
bnREYXRhKj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqKSBjb25zdAogeworI2lmIE9T
KFdJTkRPV1MpIHx8IE9TKERBUldJTikKKyAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJv
bGxlcih0aGlzLCBydW4sIGZhbGxiYWNrRm9udHMpOwogI2lmIE9TKFdJTkRPV1MpCi0gICAgVW5p
c2NyaWJlQ29udHJvbGxlciBjb250cm9sbGVyKHRoaXMsIHJ1biwgZmFsbGJhY2tGb250cyk7CiAg
ICAgY29udHJvbGxlci5hZHZhbmNlKHJ1bi5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXIucnVuV2lkdGhTb0ZhcigpOwogI2Vsc2UKKyAgICByZXR1cm4gY29udHJvbGxlci50b3RhbFdp
ZHRoKCk7CisjZW5kaWYKKyNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
MDsKICNlbmRpZgpAQCAtMTM1LDggKzE1NSw4IEBACiAKIGludCBGb250OjpvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IHgsIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBVbmlzY3JpYmVD
b250cm9sbGVyIGNvbnRyb2xsZXIodGhpcywgcnVuKTsKKyNpZiBPUyhXSU5ET1dTKSB8fCBPUyhE
QVJXSU4pCisgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIodGhpcywgcnVuKTsK
ICAgICByZXR1cm4gY29udHJvbGxlci5vZmZzZXRGb3JQb3NpdGlvbih4LCBpbmNsdWRlUGFydGlh
bEdseXBocyk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3d4L1NpbXBsZUZvbnREYXRhV3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvU2ltcGxlRm9udERhdGFXeC5jcHAJKHJldmlzaW9u
IDU4Njc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9TaW1wbGVGb250RGF0YVd4
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsMTMgQEAKICNpbmNsdWRlIDx1bmljb2Rl
L3VjaGFyLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybS5oPgogCisjaWYgT1MoREFSV0lOKQor
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8
d3gvZGVmcy5oPgogI2luY2x1ZGUgPHd4L2Rjc2NyZWVuLmg+CisjaW5jbHVkZSA8d3gvc3RyaW5n
Lmg+CiAjaW5jbHVkZSAiZm9udHByb3BzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlCkBAIC01Niwx
MSArNjEsMTIgQEAKICAgICAgICAgbV9saW5lR2FwID0gcHJvcHMuR2V0TGluZUdhcCgpOwogICAg
IH0KIAorICAgIG1fc3ludGhldGljQm9sZE9mZnNldCA9IDAuMGY7CisKICNpZiBPUyhXSU5ET1dT
KQogICAgIG1fc2NyaXB0Q2FjaGUgPSAwOwogICAgIG1fc2NyaXB0Rm9udFByb3BlcnRpZXMgPSAw
OwogICAgIG1faXNTeXN0ZW1Gb250ID0gZmFsc2U7Ci0gICAgbV9zeW50aGV0aWNCb2xkT2Zmc2V0
ID0gMC4wZjsKICNlbmRpZgogfQogCkBAIC0xMDEsNyArMTA3LDEyIEBACiBib29sIFNpbXBsZUZv
bnREYXRhOjpjb250YWluc0NoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBs
ZW5ndGgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHdpbGwgbmVlZCB0byBpbXBsZW1lbnQg
dGhpcyB0byBsb2FkIG5vbi1BU0NJSSBlbmNvZGluZyBzaXRlcwotICAgIHJldHVybiB3eEZvbnRD
b250YWluc0NoYXJhY3RlcnMoKm1fcGxhdGZvcm1EYXRhLmZvbnQoKSwgY2hhcmFjdGVycywgbGVu
Z3RoKTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiB3eEZvbnRDb250YWluc0NoYXJhY3Rl
cnMobV9wbGF0Zm9ybURhdGEuaGZvbnQoKSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKKyNlbGlmIE9T
KERBUldJTikKKyAgICByZXR1cm4gd3hGb250Q29udGFpbnNDaGFyYWN0ZXJzKG1fcGxhdGZvcm1E
YXRhLm5zRm9udCgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworI2VuZGlmCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKQEAgLTEyMiw2
ICsxMzMsMTYgQEAKICNpZiBfX1dYTVNXX18KICAgICAvLyB1bmRlciBXaW5kb3dzIC8gd3hNU1cg
d2UgY3VycmVudGx5IGFsd2F5cyB1c2UgR0RJIGZvbnRzLgogICAgIHJldHVybiB3aWR0aEZvckdE
SUdseXBoKGdseXBoKTsKKyNlbGlmIE9TKERBUldJTikKKyAgICBmbG9hdCBwb2ludFNpemUgPSBt
X3BsYXRmb3JtRGF0YS5zaXplKCk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbSA9IENHQWZmaW5l
VHJhbnNmb3JtTWFrZVNjYWxlKHBvaW50U2l6ZSwgcG9pbnRTaXplKTsKKyAgICBDR1NpemUgYWR2
YW5jZTsKKyAgICBOU0ZvbnQqIG5zZm9udCA9IChOU0ZvbnQqKW1fcGxhdGZvcm1EYXRhLm5zRm9u
dCgpOworICAgIGlmICghd2tHZXRHbHlwaFRyYW5zZm9ybWVkQWR2YW5jZXMobV9wbGF0Zm9ybURh
dGEuY2dGb250KCksIG5zZm9udCwgJm0sICZnbHlwaCwgJmFkdmFuY2UpKSB7CisgICAgICAgIC8v
IExPR19FUlJPUigiVW5hYmxlIHRvIGNhY2hlIGdseXBoIHdpZHRocyBmb3IgJUAgJWYiLCBbbnNm
b250IGRpc3BsYXlOYW1lXSwgcG9pbnRTaXplKTsKKyAgICAgICAgYWR2YW5jZS53aWR0aCA9IDA7
CisgICAgfQorICAgIHJldHVybiBhZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0
OwogI2Vsc2UKICAgICAvLyBUT0RPOiBmaXggdGhpcyEgTWFrZSBHZXRUZXh0RXh0ZW50cyBhIG1l
dGhvZCBvZiB3eEZvbnQgaW4gMi45CiAgICAgaW50IHdpZHRoID0gMTA7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRQbGF0Zm9ybURhdGFXeE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRQbGF0Zm9ybURhdGFXeE1hYy5t
bQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udFBsYXRm
b3JtRGF0YVd4TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEtldmluIE9sbGl2aWVyICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorCisjaW5j
bHVkZSA8d3gvZGVmcy5oPgorI2luY2x1ZGUgPHd4L2ZvbnQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitOU0ZvbnQqIEZvbnRQbGF0Zm9ybURhdGE6Om5zRm9udCgpIGNvbnN0Cit7CisjaWYg
d3hDSEVDS19WRVJTSU9OKDIsOSwxKSAmJiB3eE9TWF9VU0VfQ09DT0EKKyAgICBpZiAobV9mb250
ICYmIG1fZm9udC0+Zm9udCgpKQorICAgICAgICByZXR1cm4gKE5TRm9udCopbV9mb250LT5mb250
KCktPk9TWEdldE5TRm9udCgpOworI2VuZGlmCit9CisKK3ZvaWQgRm9udFBsYXRmb3JtRGF0YTo6
Y2FjaGVOU0ZvbnQoKQoreworCit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2ltcGxlRm9udERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmgJKHJldmlzaW9uIDU4Njc1KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwx
MSBAQAogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQVRTVVN0eWxlKiBBVFNVU3R5bGU7CiAjZW5kaWYK
IAorI2lmIFVTRShDT1JFX1RFWFQpCisjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisK
ICNpZiAoUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpKSBcCiAgICAgfHwgKE9TKFdJTkRPV1Mp
ICYmIFBMQVRGT1JNKFdYKSkKICNpbmNsdWRlIDx1c3AxMC5oPgpAQCAtODksNyArOTQsNyBAQAog
ICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlV2lkdGg7IH0KICAg
ICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2FkanVzdGVkU3Bh
Y2VXaWR0aDsgfQogCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKENBSVJPKSB8fCAoT1Mo
V0lORE9XUykgJiYgUExBVEZPUk0oV1gpKQorI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShD
QUlSTykgfHwgUExBVEZPUk0oV1gpCiAgICAgZmxvYXQgc3ludGhldGljQm9sZE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9sZE9mZnNldDsgfQogI2VuZGlmCiAKQEAgLTEyMCw2
ICsxMjUsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYm
IE9TKERBUldJTikpCiAgICAgTlNGb250KiBnZXROU0ZvbnQoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtRGF0YS5mb250KCk7IH0KKyNlbGlmIChQTEFURk9STShXWCkgJiYgT1MoREFSV0lOKSkg
CisgICAgTlNGb250KiBnZXROU0ZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGF0YS5u
c0ZvbnQoKTsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ09SRV9URVhUKQpAQCAtMjA2LDcgKzIxMyw3
IEBACiAKICAgICBtdXRhYmxlIFNpbXBsZUZvbnREYXRhKiBtX3NtYWxsQ2Fwc0ZvbnREYXRhOwog
Ci0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKENBSVJPKSB8fCAoT1MoV0lORE9XUykgJiYg
UExBVEZPUk0oV1gpKQorI2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShDQUlSTykgfHwgUExB
VEZPUk0oV1gpCiAgICAgZmxvYXQgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OwogI2VuZGlmCiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL21hYy9jYXJib24vZm9udHByb3BzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL21hYy9jYXJib24vZm9udHBy
b3BzLm1tCShyZXZpc2lvbiA1ODY3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL21h
Yy9jYXJib24vZm9udHByb3BzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiAjaW5jbHVkZSAiZm9udHByb3BzLmgi
CisjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiAjaW5jbHVkZSA8QXBwbGlj
YXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAKQEAgLTM1LDEwICszNiw2IEBA
CiAjaW5jbHVkZSA8d3gvZ2RpY21uLmg+CiAjaW5jbHVkZSA8d3gvZ3JhcGhpY3MuaD4KIAotI2lm
ZGVmIEJVSUxESU5HX09OX1RJR0VSCi12b2lkICgqd2tHZXRGb250TWV0cmljcykoQ0dGb250UmVm
LCBpbnQqIGFzY2VudCwgaW50KiBkZXNjZW50LCBpbnQqIGxpbmVHYXAsIHVuc2lnbmVkKiB1bml0
c1BlckVtKTsKLSNlbmRpZgotCiBjb25zdCBmbG9hdCBzbWFsbENhcHNGb250U2l6ZU11bHRpcGxp
ZXIgPSAwLjdmOwogY29uc3QgZmxvYXQgY29udGV4dERQSSA9IDcyLjBmOwogc3RhdGljIGlubGlu
ZSBmbG9hdCBzY2FsZUVtVG9Vbml0cyhmbG9hdCB4LCB1bnNpZ25lZCB1bml0c1BlckVtKSB7IHJl
dHVybiB4ICogKGNvbnRleHREUEkgLyAoY29udGV4dERQSSAqIHVuaXRzUGVyRW0pKTsgfQpAQCAt
OTIsMjMgKzg5LDIwIEBACiAKIH0KIAotYm9vbCB3eEZvbnRDb250YWluc0NoYXJhY3RlcnMoY29u
c3Qgd3hGb250JiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkKK2Jv
b2wgd3hGb250Q29udGFpbnNDaGFyYWN0ZXJzKHZvaWQqIGZvbnQsIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCBpbnQgbGVuZ3RoKQogewotI2lmIHd4T1NYX1VTRV9DT0NPQQogICAgIE5TU3RyaW5n
KiBzdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29u
c3RfY2FzdDx1bmljaGFyKj4oY2hhcmFjdGVycykgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6
Tk9dOwotICAgIE5TQ2hhcmFjdGVyU2V0KiBzZXQgPSBbW2ZvbnQuT1NYR2V0TlNGb250KCkgY292
ZXJlZENoYXJhY3RlclNldF0gaW52ZXJ0ZWRTZXRdOworICAgIE5TQ2hhcmFjdGVyU2V0KiBzZXQg
PSBbWyhOU0ZvbnQqKWZvbnQgY292ZXJlZENoYXJhY3RlclNldF0gaW52ZXJ0ZWRTZXRdOwogICAg
IGJvb2wgcmVzdWx0ID0gc2V0ICYmIFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6c2V0
XS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kOwogICAgIFtzdHJpbmcgcmVsZWFzZV07CiAgICAgcmV0
dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKIH0KIAogdm9pZCBH
ZXRUZXh0RXh0ZW50KCBjb25zdCB3eEZvbnQmIGZvbnQsIGNvbnN0IHd4U3RyaW5nJiBzdHIsIHd4
Q29vcmQgKndpZHRoLCB3eENvb3JkICpoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3hDb29yZCAqZGVzY2VudCwgd3hDb29yZCAqZXh0ZXJuYWxMZWFkaW5nICkKIHsKICAgICB3
eEdyYXBoaWNzQ29udGV4dCAqIGNvbnN0IGdjID0gd3hHcmFwaGljc0NvbnRleHQ6OkNyZWF0ZSgp
OworICAgIAogICAgIGdjLT5TZXRGb250KGZvbnQsICp3eEJMQUNLKTsgLy8gY29sb3VyIGRvZXNu
J3QgbWF0dGVyIGJ1dCBtdXN0IGJlIHNwZWNpZmllZAogICAgIHN0cnVjdCBHQ1RleHRFeHRlbnQK
ICAgICB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L3d4Y29kZS9tYWMvY2FyYm9uL25vbi1r
ZXJuZWQtZHJhd2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC93eGNv
ZGUvbWFjL2NhcmJvbi9ub24ta2VybmVkLWRyYXdpbmcuY3BwCShyZXZpc2lvbiA1ODY3NSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL21hYy9jYXJib24vbm9uLWtlcm5lZC1kcmF3aW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDYgQEAKICNpbmNsdWRlIDx3eC9kY2dy
YXBoLmg+CiAjaW5jbHVkZSA8d3gvZ2RpY21uLmg+CiAKLQotLy8gVW5mb3J0dW5hdGVseSB3ZSBu
ZWVkIGFjY2VzcyB0byBhIHByaXZhdGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjaGFyYWN0ZXIgLT4g
Z2x5cGggY29udmVyc2lvbiBuZWVkZWQgdG8KLS8vIGFsbG93IHVzIHRvIHVzZSBDR0NvbnRleHRT
aG93R2x5cGhzV2l0aEFkdmFuY2VzCi0vLyBOb3RlIHRoYXQgb24gPCAxMC41LCB0aGUgZnVuY3Rp
b24gaXMgY2FsbGVkIENHRm9udEdldEdseXBoc0ZvclVuaWNvZGVzLCBzbyB3ZSBuZWVkIHRvIGRl
dGVjdCBhbmQgZGVhbAotLy8gd2l0aCB0aGlzLgotdHlwZWRlZiB2b2lkICgqQ0dGb250R2V0R2x5
cGhzRm9yVW5pY2hhcnNQdHIpKENHRm9udFJlZiwgY29uc3QgVW5pQ2hhcltdLCBjb25zdCBDR0ds
eXBoW10sIHNpemVfdCk7Ci1zdGF0aWMgQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnNQdHIgQ0dG
b250R2V0R2x5cGhzRm9yVW5pY2hhcnMgPSAoQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnNQdHIp
ZGxzeW0oUlRMRF9ERUZBVUxULCAiQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnMiKTsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIGRyYXdUZXh0V2l0aFNwYWNpbmcoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zdCB3
eENvbG91ciYgY29sb3IsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20s
IGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQpAQCAtNjAsMTkgKzUyLDgg
QEAKIAogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxDR0NvbnRleHRS
ZWY+KGRjLT5HZXRHcmFwaGljc0NvbnRleHQoKS0+R2V0TmF0aXZlQ29udGV4dCgpKTsKIAotICAg
IENHRm9udFJlZiBjZ0ZvbnQ7Ci0KLSNpZmRlZiB3eE9TWF9VU0VfQ09SRV9URVhUICYmIHd4T1NY
X1VTRV9DT1JFX1RFWFQKLSAgICBjZ0ZvbnQgPSBDVEZvbnRDb3B5R3JhcGhpY3NGb250KChDVEZv
bnRSZWYpd3hmb250LT5PU1hHZXRDVEZvbnQoKSwgTlVMTCk7Ci0jZWxzZQotICAgIEFUU0ZvbnRS
ZWYgZm9udFJlZjsKKyAgICBDR0ZvbnRSZWYgY2dGb250ID0gZm9udC0+cGxhdGZvcm1EYXRhKCku
Y2dGb250KCk7CiAgICAgCi0gICAgZm9udFJlZiA9IEZNR2V0QVRTRm9udFJlZkZyb21Gb250KHd4
Zm9udC0+TWFjR2V0QVRTVUZvbnRJRCgpKTsKLSAgICAKLSAgICBpZiAoZm9udFJlZikKLSAgICAg
ICAgY2dGb250ID0gQ0dGb250Q3JlYXRlV2l0aFBsYXRmb3JtRm9udCgodm9pZCopJmZvbnRSZWYp
OwotI2VuZGlmCi0gICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChjZ0NvbnRleHQsIGNnRm9udCk7
CiAKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHd4Zm9udC0+R2V0UG9pbnRT
aXplKCkpOwpAQCAtODksMjcgKzcwLDggQEAKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlv
bihjZ0NvbnRleHQsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKICAgICAKLSAgICBjb25zdCBGbG9h
dFNpemUqIGFkdmFuY2VTaXplcyA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0U2l6ZSo+KGdseXBo
QnVmZmVyLmFkdmFuY2VzKGZyb20pKTsKLSAgICBpbnQgc2l6ZSA9IGdseXBoQnVmZmVyLnNpemUo
KSAtIGZyb207Ci0gICAgQ0dTaXplIHNpemVzW3NpemVdOwotICAgIENHR2x5cGggZ2x5cGhzW251
bUdseXBoc107CisgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51
bUdseXBocyk7CiAgICAgCi0gICAgLy8gaWYgdGhlIGZ1bmN0aW9uIGRvZXNuJ3QgZXhpc3QsIHdl
J3JlIHByb2JhYmx5IG9uIHRpZ2VyIGFuZCBuZWVkIHRvIGdyYWIgdGhlCi0gICAgLy8gZnVuY3Rp
b24gdW5kZXIgaXRzIG9sZCBuYW1lLCBDR0ZvbnRHZXRHbHlwaHNGb3JVbmljb2RlcwotICAgIGlm
ICghQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnMpCi0gICAgICAgIENHRm9udEdldEdseXBoc0Zv
clVuaWNoYXJzID0gKENHRm9udEdldEdseXBoc0ZvclVuaWNoYXJzUHRyKWRsc3ltKFJUTERfREVG
QVVMVCwgIkNHRm9udEdldEdseXBoc0ZvclVuaWNvZGVzIik7Ci0gICAgCi0gICAgLy8gTGV0J3Mg
bWFrZSBzdXJlIHdlIGdvdCB0aGUgZnVuY3Rpb24gdW5kZXIgb25lIG5hbWUgb3IgYW5vdGhlciEK
LSAgICBBU1NFUlQoQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnMpOwotICAgIENHRm9udEdldEds
eXBoc0ZvclVuaWNoYXJzKGNnRm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaHMs
IG51bUdseXBocyk7Ci0gICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsK
LSAgICAgICAgRmxvYXRTaXplIGZzaXplID0gYWR2YW5jZVNpemVzW2ldOwotICAgICAgICBzaXpl
c1tpXSA9IENHU2l6ZU1ha2UoZnNpemUud2lkdGgoKSwgZnNpemUuaGVpZ2h0KCkpOwotICAgIH0K
LSAgICAKLSAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5
cGhzLCBzaXplcywgbnVtR2x5cGhzKTsKLSAgICAKICAgICBpZiAoY2dGb250KQogICAgICAgICBD
R0ZvbnRSZWxlYXNlKGNnRm9udCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L3d4Y29kZS9mb250cHJvcHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL3d4L3d4Y29kZS9mb250cHJvcHMuaAkocmV2aXNpb24gNTg2NzUp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL3d4L3d4Y29kZS9mb250cHJvcHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNCArNDgsNCBAQAogICAgICAgICAKIH07CiAKLWJvb2wgd3hGb250Q29udGFpbnND
aGFyYWN0ZXJzKGNvbnN0IHd4Rm9udCYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOworYm9vbCB3eEZvbnRDb250YWluc0NoYXJhY3RlcnModm9pZCogZm9udCwgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS93eC93eGNvZGUvd2luL2ZvbnRwcm9wcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS93eC93eGNvZGUvd2luL2ZvbnRwcm9wcy5jcHAJKHJldmlzaW9uIDU4Njc1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS93eC93eGNvZGUvd2luL2ZvbnRwcm9wcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAKICAgICBSZWxlYXNlREMoMCwgZGMpOwogfQogCi1ib29sIHd4Rm9u
dENvbnRhaW5zQ2hhcmFjdGVycyhjb25zdCB3eEZvbnQmIGZvbnQsIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCBpbnQgbGVuZ3RoKQorYm9vbCB3eEZvbnRDb250YWluc0NoYXJhY3RlcnModm9pZCog
Zm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gRklY
TUU6IE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIHNlZW1zIHRvIGltcGx5IHRoYXQgY2hhcmFjdGVy
cyBjYW4gYmUgb3V0cHV0IHVzaW5nIGEgZ2l2ZW4gZm9udCBhbmQgREMKICAgICAvLyBtZXJlbHkg
YnkgdGVzdGluZyBjb2RlIHBhZ2UgaW50ZXJzZWN0aW9uLiAgVGhpcyBzZWVtcyBzdXNwZWN0IHRo
b3VnaC4gIENhbid0IGEgZm9udCBvbmx5IHBhcnRpYWxseQpAQCAtODksNyArODksNyBAQAogICAg
IGxhbmdGb250TGluay0+Q29kZVBhZ2VUb0NvZGVQYWdlcyhDUF9BQ1AsICZhY3BDb2RlUGFnZXMp
OwogCiAgICAgRFdPUkQgZm9udENvZGVQYWdlczsKLSAgICBsYW5nRm9udExpbmstPkdldEZvbnRD
b2RlUGFnZXMoZGMsIHN0YXRpY19jYXN0PEhGT05UPihmb250LkdldEhGT05UKCkpLCAmZm9udENv
ZGVQYWdlcyk7CisgICAgbGFuZ0ZvbnRMaW5rLT5HZXRGb250Q29kZVBhZ2VzKGRjLCAoSEZPTlQp
Zm9udCwgJmZvbnRDb2RlUGFnZXMpOwogCiAgICAgRFdPUkQgYWN0dWFsQ29kZVBhZ2VzOwogICAg
IGxvbmcgbnVtQ2hhcmFjdGVyc1Byb2Nlc3NlZDsKSW5kZXg6IFdlYktpdFRvb2xzL3d4L2J1aWxk
L3NldHRpbmdzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL3d4L2J1aWxkL3NldHRpbmdz
LnB5CShyZXZpc2lvbiA1ODY3NSkKKysrIFdlYktpdFRvb2xzL3d4L2J1aWxkL3NldHRpbmdzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDExIEBACiAgICAgZ2xvYmFsIG1zdmNfdmVy
c2lvbgogICAgIGdsb2JhbCBtc3ZjbGlic19kaXIKICAgICAKKyAgICBsaWJwcmVmaXggPSAnJwor
CiAgICAgaWYgYnVpbGRpbmdfb25fd2luMzI6CisgICAgICAgIGxpYnByZWZpeCA9ICdsaWInCisK
ICAgICAgICAgZm91bmRfdmVyc2lvbnMgPSBjb25mLmdldF9tc3ZjX3ZlcnNpb25zKCkKICAgICAg
ICAgaWYgZm91bmRfdmVyc2lvbnNbMF1bMF0gPT0gJ21zdmMgOS4wJzoKICAgICAgICAgICAgIG1z
dmNfdmVyc2lvbiA9ICdtc3ZjMjAwOCcKQEAgLTI2OCw2ICsyNzIsOSBAQAogICAgIAogICAgICAg
ICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ0JVSUxESU5HX1dYX189MScs
ICdKU19OT19FWFBPUlQnXSkKIAorICAgICAgICBjb25mLmVudlsnTElCX1dYV0VCS0lUJ10gPSBb
J3d4d2Via2l0J10KKyAgICAgICAgY29uZi5lbnZbJ0NYWERFRklORVNfV1hXRUJLSVQnXSA9IFsn
V1hVU0lOR0RMTF9XRUJLSVQnXQorCiAgICAgICAgIGlmIGJ1aWxkaW5nX29uX3dpbjMyOgogICAg
ICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdMSUJQQVRIJywgb3MucGF0aC5qb2luKG1z
dmNsaWJzX2RpciwgJ2xpYicpKQogICAgICAgICAgICAgIyB3eCBzZXR0aW5ncwpAQCAtMjc5LDYg
KzI4Niw5IEBACiAgICAgICAgICAgICBjb25mLmVudlsnTElCX1dYJ10gPSB3eGxpYnMKICAgICAg
ICAgICAgIGNvbmYuZW52WydMSUJQQVRIX1dYJ10gPSB3eGxpYnBhdGhzCiAKKyAgICBjb25mLmVu
dlsnTElCX0pTQ09SRSddID0gW2xpYnByZWZpeCArICdqc2NvcmUnXQorICAgIGNvbmYuZW52WydM
SUJfV0VCQ09SRSddID0gW2xpYnByZWZpeCArICd3ZWJjb3JlJ10KKwogICAgIGlmIHN5cy5wbGF0
Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKToKICAgICAgICAgY29uZi5lbnZbJ0xJQl9JQ1UnXSA9
IFsnaWN1Y29yZSddCiAgICAgICAgICMgQXBwbGUgZG9lcyBub3Qgc2hpcCB0aGUgSUNVIGhlYWRl
cnMgd2l0aCBNYWMgT1MgWCwgc28gV2ViS2l0IGluY2x1ZGVzIGEgY29weSBvZiAzLjIgaGVhZGVy
cwpAQCAtMzA2LDcgKzMxNiwxMiBAQAogICAgICAgICBzZGtfdmVyc2lvbiA9IG1pbl92ZXJzaW9u
CiAgICAgICAgIGlmIG1pbl92ZXJzaW9uID09ICIxMC40IjoKICAgICAgICAgICAgIHNka192ZXJz
aW9uICs9ICJ1IgotICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdMSUInLCBbJ1dl
YktpdFN5c3RlbUludGVyZmFjZVRpZ2VyJ10pCisgICAgICAgICAgICBjb25mLmVudi5hcHBlbmRf
dmFsdWUoJ0xJQl9XRUJDT1JFJywgWydXZWJLaXRTeXN0ZW1JbnRlcmZhY2VUaWdlciddKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgIyBOT1RFOiBUaGVyZSBpcyBhIFdlYktpdFN5c3RlbUlu
dGVyZmFjZVNub3dMZW9wYXJkLCBidXQgd2hlbiB3ZSB1c2UgdGhhdAorICAgICAgICAgICAgIyBv
biAxMC42LCB3ZSBnZXQgYSBzdHJhbmdlIG1pc3Npbmcgc3ltYm9sIGVycm9yLCBhbmQgdGhpcyBs
aWJyYXJ5IHNlZW1zIHRvCisgICAgICAgICAgICAjIHdvcmsgZmluZSBmb3Igd3gncyBwdXJwb3Nl
cy4KKyAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnTElCX1dFQkNPUkUnLCBbJ1dl
YktpdFN5c3RlbUludGVyZmFjZUxlb3BhcmQnXSkKICAgICAgICAgCiAgICAgICAgIHNka3Jvb3Qg
PSAnL0RldmVsb3Blci9TREtzL01hY09TWCVzLnNkaycgJSBzZGtfdmVyc2lvbgogICAgICAgICBz
ZGtmbGFncyA9IFsnLWFyY2gnLCAnaTM4NicsICctaXN5c3Jvb3QnLCBzZGtyb290XQpAQCAtMzE3
LDE1ICszMzIsNiBAQAogICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NQUFBBVEhfU1FM
SVRFMycsIFtvcy5wYXRoLmpvaW4od2tsaWJzX2RpciwgJ1dlYkNvcmVTUUxpdGUzJyldKQogICAg
ICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0xJQl9TUUxJVEUzJywgWydXZWJDb3JlU1FMaXRl
MyddKQogICAgIAotICAgIGxpYnByZWZpeCA9ICcnCi0gICAgaWYgYnVpbGRpbmdfb25fd2luMzI6
Ci0gICAgICAgIGxpYnByZWZpeCA9ICdsaWInCi0gICAgCi0gICAgY29uZi5lbnZbJ0xJQl9KU0NP
UkUnXSA9IFtsaWJwcmVmaXggKyAnanNjb3JlJ10KLSAgICBjb25mLmVudlsnTElCX1dFQkNPUkUn
XSA9IFtsaWJwcmVmaXggKyAnd2ViY29yZSddCi0gICAgY29uZi5lbnZbJ0xJQl9XWFdFQktJVCdd
ID0gWyd3eHdlYmtpdCddCi0gICAgY29uZi5lbnZbJ0NYWERFRklORVNfV1hXRUJLSVQnXSA9IFsn
V1hVU0lOR0RMTF9XRUJLSVQnXQotICAgIAogICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1hY
REVGSU5FUycsIGZlYXR1cmVfZGVmaW5lcykKICAgICBpZiBjb25maWcgPT0gJ1JlbGVhc2UnOgog
ICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NQUERFRklORVMnLCAnTkRFQlVHJykKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU4Njg5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDUtMDMgIEtldmluIFdhdHRlcnMgIDxrZXZp
bndhdHRlcnNAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFt3eF0gQnVpbGQgYW5kIHVzZSBNYWMncyBDb21wbGV4VGV4dENvbnRyb2xs
ZXIgdG8gc3VwcG9ydCBjb21wbGV4IHRleHQgaW4gd3guCisKKyAgICAgICAgKiB3eC9idWlsZC9z
ZXR0aW5ncy5weToKKwogMjAxMC0wNS0wMyAgQ2hyaXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCg==
</data>
<flag name="review"
          id="39037"
          type_id="1"
          status="+"
          setter="kevino"
    />
    <flag name="commit-queue"
          id="39040"
          type_id="3"
          status="-"
          setter="kevino"
    />
          </attachment>
      

    </bug>

</bugzilla>