<?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>234049</bug_id>
          
          <creation_ts>2021-12-08 18:14:46 -0800</creation_ts>
          <short_desc>Move FontFamilySpecificationCoreText&apos;s fontMap to FontCache</short_desc>
          <delta_ts>2022-07-21 14:32:26 -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>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mattwoodrow</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821903</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-08 18:14:46 -0800</bug_when>
    <thetext>Move FontFamilySpecificationCoreText&apos;s fontMap to FontCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821904</commentid>
    <comment_count>1</comment_count>
      <attachid>446469</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-08 18:16:26 -0800</bug_when>
    <thetext>Created attachment 446469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823021</commentid>
    <comment_count>2</comment_count>
      <attachid>446469</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-10 15:11:19 -0800</bug_when>
    <thetext>Comment on attachment 446469
Patch

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

&gt; Source/WebCore/page/cocoa/MemoryReleaseCocoa.mm:51
&gt; +    // FIXME: Should clear this on all workers.

I think some members on the team prefer for FIXMEs to have Bugzilla links

&gt; Source/WebCore/platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:-39
&gt; -struct FontFamilySpecificationKey {

It&apos;s kind of sad that this has to live in a different file, far from its use. This cache isn&apos;t really reusable, and FontFamilySpecificationCoreText.cpp is already fairly focused and cohesive with this in it. Can you think of a way to keep this code closer to its use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823034</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-10 15:26:33 -0800</bug_when>
    <thetext>The obvious thing would be to make the HashMap be heap allocated and then there&apos;d be no need for the hash traits to be in a header.  What do you think of the balance of having the HashMap be in a heap allocation versus keeping it all in the same file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823061</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-10 16:00:44 -0800</bug_when>
    <thetext>🤔</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823062</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-10 16:01:17 -0800</bug_when>
    <thetext>This doesn&apos;t seem worth a heap allocation, I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824620</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-15 18:15:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/86552797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885554</commentid>
    <comment_count>7</comment_count>
      <attachid>461073</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-07-20 21:16:20 -0700</bug_when>
    <thetext>Created attachment 461073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885824</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-21 14:32:23 -0700</bug_when>
    <thetext>Committed 252710@main (498e08540016): &lt;https://commits.webkit.org/252710@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461073.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446469</attachid>
            <date>2021-12-08 18:16:26 -0800</date>
            <delta_ts>2021-12-10 15:11:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234049-20211209131625.patch</filename>
            <type>text/plain</type>
            <size>25166</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA4MzdmNjdkOTc5NmQ3
MDJkMzg5M2U4NjNlMGJmYjVjYmNkOWIyMC4uODU2MDNmNjliN2QzMTNjY2Q5MTg3Y2JhODliM2Fj
ZDYyMWYzMjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTAyICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0J3MgZm9udE1hcCB0byBGb250Q2FjaGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDA0OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHQgbWFpbnRhaW5zIGEgY2FjaGUgb2YgQ1RGb250cyBrZXllZAorICAgICAg
ICBvZmYgKENURm9udERlc2NyaXB0b3IsRm9udERlc2NyaXB0aW9uS2V5KSBwYWlycy4gVGhpcyBj
YWNoZSBjYW4gYmUKKyAgICAgICAgYWNjZXNzZWQgZnJvbSB3b3JrZXIgdGhyZWFkcyB1c2luZyBP
ZmZzY3JlZW5DYW52YXMgd2l0aG91dAorICAgICAgICBzeW5jaHJvbml6YXRpb24uIFRoaXMgcGF0
Y2ggbW92ZXMgaXQgdG8gbGl2ZSBvbiB0aGUgRm9udENhY2hlLgorCisgICAgICAgIFRoZSBleGlz
dGluZyBjYWNoZSBtYW5pcHVsYXRpb24gY29kZSBpcyB3cmFwcGVkIGluIGEgbmV3IGNsYXNzCisg
ICAgICAgIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSBhbmQgbW92ZWQgdG8g
YSBuZXcgZmlsZS4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6Zm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRm9udENhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXk6OkZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5OjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5OjpvcGVyYXRvciE9IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
S2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleUhhc2g6Omhhc2gpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXlIYXNoOjplcXVhbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpmb250TWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNsZWFyRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25D
b3JlVGV4dC5oLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uS2V5OjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZh
bWlseVNwZWNpZmljYXRpb25LZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOjplbnN1cmUpOgorCiAyMDIxLTEyLTAy
ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBt
YXRjaFN5c3RlbUZvbnRVc2UgdG8gU3lzdGVtRm9udERhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGIwMGJiNjE3Y2RlOThiNzQ2YWI3Y2I4MGNiMWEzNWY0OTliYTFhZDQuLjg0
NGU2OGJhMmRhMDYyNzViZDE5NzlmMmUxOTEyMTYwMmQwYzJmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC0zMTgsNiArMzE4LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERhdGFiYXNlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENh
Y2hlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2Nv
YS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1t
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtNjU0LDYgKzY1NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGF0YWJhc2UuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNo
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGFlM2I0MTY0MTE3NDQzOTdiZjRl
NzY5NDBmZmJhOTA0NjliNDNkOGUuLmUxZGRlNGU4NzhkY2Q3MDc3Mjg3OWIxYzE2NTUwZWZiM2Rl
ODI4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzc0LDYgKzM3NCw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnREYXRhYmFzZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHRDYWNoZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzODQ0NWQyNjg5YzY1OGM4MjA2MDEyNWU5ZWNhNTlkNTQ5ZDc1Mzg0Li42OTNmZGY4
YjMxNjZmZTkxNTBkN2IxYmIwYTEyNmM1NmZiNWY3ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDE0LDYgKzEwMTQsNyBA
QAogCQkzMUZFNkRGQTE1MDA0QzJBMDAwNEVCQzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MUVDMURBQzE0RkYyNkVBMDBDOTQ2NjIgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzIx
MTJFMEYyNzRCNDdDRjAwNzA0N0E4IC8qIFN5c3RlbUZhbGxiYWNrQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMyODk5RkI5Mjc0QjQxMEMwMDg1
NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0NhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzI1OTA1REMyNzRERTFEODAwN0I3QjY1IC8qIEZvbnRE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzI1OTA1REEyNzRERTFENzAwN0I3QjY1IC8qIEZvbnREYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMyOTRFQ0ZBMjc0RUZBNTcwMDZC
RThDOCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMyOTRFQ0Y5Mjc0RUZBNTcwMDZC
RThDOCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMkVBRkI4RDI3NEM1RUE2
MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNj
YWRlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5OTEwMTc5
QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM3OCw4ICs4
Mzc5LDEwIEBACiAJCTMxRkIxQTY0MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGV2aWNlTW90aW9uRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzI1OTA1REEyNzRERTFENzAwN0I3
QjY1IC8qIEZvbnREYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250RGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzI1OTA1REQyNzRE
RTFFMzAwN0I3QjY1IC8qIEZvbnREYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250
RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMjVFMUZERjI3NEVG
RDRFMDBGQzY2OEEgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMyODk5RkI3Mjc0QjQxMEMwMDg1NUE5
RCAvKiBTeXN0ZW1GYWxsYmFja0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5c3RlbUZh
bGxiYWNrQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMjg5OUZCOTI3
NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFsbGJhY2tDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
eXN0ZW1GYWxsYmFja0NhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMyOTRF
Q0Y5Mjc0RUZBNTcwMDZCRThDOCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMyRDMx
MDRFMjc0QzY4N0IwMDMzQUIyRiAvKiBGb250Q2FzY2FkZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvbnRDYXNjYWRlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMkVBRkI4QjI3NEM1RUE1MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2FzY2FkZUNhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkE3RiAvKiBSZW5kZXJNYXRo
TUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1M
UGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODk4MCw2ICsyODk4Myw4
IEBACiAJCQkJMUMxMkFDMkMxRUU3Nzk5NTAwNzlFMEEwIC8qIEZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcCAqLywKIAkJCQkxQzEyQUMyODFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dC5jcHAgKi8sCiAJCQkJMUMxMkFDMjkxRUU3NzhBRTAwNzlFMEEwIC8q
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCAqLywKKwkJCQkzMjVFMUZERjI3NEVG
RDRFMDBGQzY2OEEgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmNwcCAq
LywKKwkJCQkzMjk0RUNGOTI3NEVGQTU3MDA2QkU4QzggLyogRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dENhY2hlLmggKi8sCiAJCQkJQjUzMjBENkExMjJBMjRFOTAwMkQxNDQwIC8qIEZv
bnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYg
LyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0gKi8sCiAJCQkJN0JEREEzMUQyNzRGOURBNTAwMzg2
NTlFIC8qIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCAqLywKQEAgLTM0Mjg5LDYgKzM0Mjk0LDcg
QEAKIAkJCQkxQzY2MjYxMTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDMjRFRUE1MUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFjZVNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUMxMkFDMkIxRUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMyOTRFQ0ZBMjc0RUZBNTcw
MDZCRThDOCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0MkVFM0E3MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWls
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NDMgLyogRm9u
dExvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNTMyRjI1NjA1N0NEMDAyOEM1
OTIgLyogRm9udExvYWRUaW1pbmdPdmVycmlkZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCmluZGV4IDM1NjVkYjM1
ZmI4OTI0ZjExZTVjNzgxNzNmNGIyNTlhMjgzY2UxMmIuLmIzZWIyODJiZWQyMmM5MzJjOGYzZjhl
YjQ5ZTNlZDFlOGY3NzNmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
TWVtb3J5UmVsZWFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVt
b3J5UmVsZWFzZUNvY29hLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIk1lbW9yeVJlbGVhc2UuaCIKIAotI2ltcG9ydCAiRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dC5oIgorI2ltcG9ydCAiRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dENhY2hlLmgiCiAjaW1wb3J0ICJHQ0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkhUTUxBdG9tU3Ry
aW5nQ2FjaGUuaCIKICNpbXBvcnQgIklPU3VyZmFjZVBvb2wuaCIKQEAgLTQ4LDcgKzQ4LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwp
CiB7CiAgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmNsZWFyKCk7
Ci0gICAgY2xlYXJGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUoKTsKKyAgICAv
LyBGSVhNRTogU2hvdWxkIGNsZWFyIHRoaXMgb24gYWxsIHdvcmtlcnMuCisgICAgRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY2xlYXIoKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVM
QVRPUikgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBjYWxsIHRvIEdTRm9udEluaXRpYWxpemUoKSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMjg4Njcx
NT4gaXMgZml4ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcAppbmRleCA3NDNkOGY2YTEwZDY2ZjVkNzRkNzBhM2ZkNTlmYzg2MmFlMWFiMTk1Li4w
NDRkNmI3NDVmZjNjNDUzYmNmZDU0ODZiMTc3MjBiNDc2NGE3MjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTM3OCw2ICszNzgsNyBA
QCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAgICAgbV9mb250RGF0YUNhY2hlcy0+dmVy
dGljYWxEYXRhLmNsZWFyKCk7CiAjZW5kaWYKICAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuaW52YWxp
ZGF0ZSgpOworICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCiAgICAgKyttX2dlbmVyYXRpb247
CiAKQEAgLTQzNiw2ICs0MzcsMTAgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c2ltaWxhckZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KKwordm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7Cit9
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCAwNmU1ODljYmViZTA0MDY0OTg4OThhN2Vm
ZGE3ZTE4OTkyMWVjYTUzLi4xY2Y1MGY3NTgzZmE5ODhhNDNiZTg3NWM3NjBlMTAxZGY5YjQ0NzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAt
NTYsNiArNTYsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkZvbnRDYWNoZUNv
cmVUZXh0LmgiCiAjaW5jbHVkZSAiRm9udERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCkBAIC0xNjUsMTAgKzE2NiwxNCBAQCBwdWJsaWM6CiAKICAgICBGb250Q2FzY2Fk
ZUNhY2hlJiBmb250Q2FzY2FkZUNhY2hlKCkgeyByZXR1cm4gbV9mb250Q2FzY2FkZUNhY2hlOyB9
CiAgICAgU3lzdGVtRmFsbGJhY2tDYWNoZSYgc3lzdGVtRmFsbGJhY2tDYWNoZSgpIHsgcmV0dXJu
IG1fc3lzdGVtRmFsbGJhY2tDYWNoZTsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSYgZm9udEZhbWlseVNwZWNpZmljYXRpb25D
b3JlVGV4dENhY2hlKCkgeyByZXR1cm4gbV9mb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
Q2FjaGU7IH0KKyNlbmRpZgogCiAgICAgYm9vbCB1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1p
bHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRm
b3JtSW52YWxpZGF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHVyZ2VJbmFjdGl2ZUZv
bnREYXRhSWZOZWVkZWQoKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNhY2hlZEZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmID0geyB9LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFt
ZSA9IGZhbHNlKTsKQEAgLTIxNSw2ICsyMjAsOCBAQCBwcml2YXRlOgogICAgIHVzaW5nIEZhbGxi
YWNrRm9udFNldCA9IEhhc2hTZXQ8UmV0YWluUHRyPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRy
T2JqZWN0SGFzaDxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2hUcmFpdHM8Q1RG
b250UmVmPj47CiAgICAgRmFsbGJhY2tGb250U2V0IG1fZmFsbGJhY2tGb250czsKIAorICAgIEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSBtX2ZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHRDYWNoZTsKKwogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gbV9zZWVuRmFtaWxp
ZXNGb3JQcmV3YXJtaW5nOwogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gbV9mb250TmFtZXNSZXF1
aXJpbmdTeXN0ZW1GYWxsYmFja0ZvclByZXdhcm1pbmc7CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
bV9wcmV3YXJtUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggM2FjMjNhNDliNGE2
YTZjNWIzYWU0ZGM5YWMyNzg1Mjg1OWQzMTcyZi4uNGQ4ODIzM2Y4OTE1MmIwZTJiNTQ2ZTdlN2Fi
YWY1ZWVkYTU0ZjNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMTEzNCwxMyArMTEz
NCwxNiBAQCBzdGF0aWMgRm9udExvb2t1cCBwbGF0Zm9ybUZvbnRMb29rdXBXaXRoRmFtaWx5KEZv
bnREYXRhYmFzZSYgZm9udERhdGFiYXNlLCBjb25zdAogICAgIHJldHVybiB7IG51bGxwdHIgfTsK
IH0KIAordm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgbV9mb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuY2xlYXIoKTsKK30KKwogc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpCiB7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtdIHsK
ICAgICAgICAgLy8gRklYTUU6IFdvcmtlcnMgbmVlZCB0byBhY2Nlc3MgU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQuCiAgICAgICAgIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0
b24oKS5jbGVhcigpOwotICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBG
b250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuCi0gICAgICAgIGNsZWFyRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCk7CiAKICAgICAgICAgRm9udENhY2hlOjpp
bnZhbGlkYXRlQWxsRm9udENhY2hlcygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCAzYjRkYTRmNTI3YmM4NGU1YTQ3MTY4
YTk5NDZlN2ZiNjg3NzRlN2UyLi5hZTBlZTE2OGQ1OTM1MDEzOTg2ZjBhZmFjMzEwYWE5ZWFmMDI2
ZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuaCIKIAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgog
I2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1
bmN0aW9ucy5oPgpAQCAtMzYsNTMgKzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dHJ1Y3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkgewotICAgIFJldGFpblB0cjxDVEZvbnRE
ZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvcjsKLSAgICBGb250RGVzY3JpcHRpb25LZXkgZm9u
dERlc2NyaXB0aW9uS2V5OwotCi0gICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkoKSA9IGRl
ZmF1bHQ7Ci0KLSAgICBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleShDVEZvbnREZXNjcmlwdG9y
UmVmIGZvbnREZXNjcmlwdG9yLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bikKLSAgICAgICAgOiBmb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvcikKLSAgICAgICAgLCBm
b250RGVzY3JpcHRpb25LZXkoZm9udERlc2NyaXB0aW9uKQotICAgIHsgfQotCi0gICAgZXhwbGlj
aXQgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlIGRlbGV0ZWRWYWx1ZSkKLSAgICAgICAgOiBmb250RGVzY3JpcHRpb25LZXkoZGVsZXRlZFZh
bHVlKQotICAgIHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzYWZlQ0ZF
cXVhbChmb250RGVzY3JpcHRvci5nZXQoKSwgb3RoZXIuZm9udERlc2NyaXB0b3IuZ2V0KCkpICYm
IGZvbnREZXNjcmlwdGlvbktleSA9PSBvdGhlci5mb250RGVzY3JpcHRpb25LZXk7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
Zm9udERlc2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLX07Ci0KLXN0
cnVjdCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGNv
bXB1dGVIYXNoKHNhZmVDRkhhc2goa2V5LmZvbnREZXNjcmlwdG9yLmdldCgpKSwga2V5LmZvbnRE
ZXNjcmlwdGlvbktleSk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbktleSYgYSwgY29uc3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkmIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXVzaW5nIEZvbnRNYXAgPSBIYXNoTWFwPEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0
YT4sIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5SGFzaCwgU2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5Pj47Ci0KLXN0YXRpYyBGb250TWFwJiBmb250TWFw
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udE1hcD4gZm9udE1hcDsKLSAgICBy
ZXR1cm4gZm9udE1hcDsKLX0KLQotdm9pZCBjbGVhckZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHRDYWNoZSgpCi17Ci0gICAgZm9udE1hcCgpLmNsZWFyKCk7Ci19Ci0KIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQ6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQoQ1RG
b250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvcikKICAgICA6IG1fZm9udERlc2NyaXB0b3Io
Zm9udERlc2NyaXB0b3IpCiB7CkBAIC05Miw3ICs0Niw3IEBAIEZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHQ6On5Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0KCkgPSBkZWZhdWx0
OwogCiBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5n
ZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7Ci0gICAg
YXV0byYgZm9udFBsYXRmb3JtRGF0YSA9IGZvbnRNYXAoKS5lbnN1cmUoRm9udEZhbWlseVNwZWNp
ZmljYXRpb25LZXkobV9mb250RGVzY3JpcHRvci5nZXQoKSwgZm9udERlc2NyaXB0aW9uKSwgWyZd
ICgpIHsKKyAgICBhdXRvJiBmb250UGxhdGZvcm1EYXRhID0gRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZW5zdXJlKEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uS2V5KG1fZm9udERlc2NyaXB0b3IuZ2V0KCksIGZvbnREZXNjcmlwdGlvbiksIFsm
XSAoKSB7CiAgICAgICAgIGF1dG8gc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUo
KTsKIAogICAgICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVz
Y3JpcHRvcihtX2ZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CkBAIC0xMDIs
MTEgKzU2LDggQEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpm
b250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICAgICAgYXV0byBbc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZv
bnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkQ29tcHV0ZVBoeXNpY2FsVHJhaXRzOjpZ
ZXMpLmJvbGRPYmxpcXVlUGFpcigpOwogCiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRQ
bGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxpcXVlLCBm
b250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFu
dCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7Ci0gICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwotCi0gICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOwotCi0gICAgcmV0dXJu
IEZvbnRSYW5nZXMoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvclBsYXRmb3Jt
RGF0YSgqZm9udFBsYXRmb3JtRGF0YSkpOworICAgIH0pOworICAgIHJldHVybiBGb250UmFuZ2Vz
KEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JQbGF0Zm9ybURhdGEoZm9udFBs
YXRmb3JtRGF0YSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0LmgKaW5kZXggZTdlNDc0NjU5ZmE5YmI3YmI4NWZiYWVlODQ4YzBjMWU2Y2Y5Y2Jl
ZS4uMzI5NGQ4Nzg4ZTEwMmZkNTUwMmIzM2E1ZWQ2ODBjM2Q5MGNhZjIyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaApAQCAtNDUsNiArNDUsNCBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBtX2ZvbnREZXNjcmlw
dG9yOwogfTsKIAotdm9pZCBjbGVhckZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNo
ZSgpOwotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dENhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTM0ZGIyNjdhOTVjNGY5Yzg2NzZlZTA0Zjk1NmNm
OTg2ODBjN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmNwcApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dENhY2hlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlJiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKQoreworICAgIHJldHVybiBGb250Q2FjaGU6OmZv
ckN1cnJlbnRUaHJlYWQoKS5mb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUoKTsK
K30KKwordm9pZCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGU6OmNsZWFyKCkK
K3sKKyAgICBtX2ZvbnRzLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzI3NGMxZjRlNmRlZGMwMzE3ZTI4YzhiOTEyNzNhYmZmMGFhYzdlNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRm9udENhc2NhZGVDYWNoZS5oIgorI2luY2x1ZGUgPENvcmVUZXh0L0Nv
cmVUZXh0Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkgeworICAgIFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3JpcHRvcjsKKyAgICBGb250RGVzY3JpcHRpb25L
ZXkgZm9udERlc2NyaXB0aW9uS2V5OworCisgICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXko
KSA9IGRlZmF1bHQ7CisKKyAgICBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleShDVEZvbnREZXNj
cmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbikKKyAgICAgICAgOiBmb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvcikKKyAgICAg
ICAgLCBmb250RGVzY3JpcHRpb25LZXkoZm9udERlc2NyaXB0aW9uKQorICAgIHsgfQorCisgICAg
ZXhwbGljaXQgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkKKyAgICAgICAgOiBmb250RGVzY3JpcHRpb25LZXkoZGVs
ZXRlZFZhbHVlKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBz
YWZlQ0ZFcXVhbChmb250RGVzY3JpcHRvci5nZXQoKSwgb3RoZXIuZm9udERlc2NyaXB0b3IuZ2V0
KCkpICYmIGZvbnREZXNjcmlwdGlvbktleSA9PSBvdGhlci5mb250RGVzY3JpcHRpb25LZXk7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
S2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gZm9udERlc2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307
CisKK3N0cnVjdCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleUhhc2ggeworICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiBrZXkpIHsgcmV0
dXJuIGNvbXB1dGVIYXNoKHNhZmVDRkhhc2goa2V5LmZvbnREZXNjcmlwdG9yLmdldCgpKSwga2V5
LmZvbnREZXNjcmlwdGlvbktleSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbktleSYgYSwgY29uc3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25L
ZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK2NsYXNzIEZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHRDYWNoZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUo
KSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dENhY2hlJiBmb3JDdXJyZW50VGhyZWFkKCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBGb250UGxhdGZvcm1EYXRhJiBlbnN1cmUoRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkm
JiwgRnVuY3RvciYmKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgSGFzaE1h
cDxGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9y
bURhdGE+LCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleUhhc2gsIFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleT4+IG1fZm9udHM7Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiBGb250UGxhdGZvcm1EYXRhJiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0Q2FjaGU6OmVuc3VyZShGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSYmIGtl
eSwgRnVuY3RvciYmIGZ1bmN0b3IpCit7CisgICAgYXV0byYgZm9udFBsYXRmb3JtRGF0YSA9IG1f
Zm9udHMuZW5zdXJlKHN0ZDo6Zm9yd2FyZDxGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleT4oa2V5
KSwgc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKS5pdGVyYXRvci0+dmFsdWU7CisgICAg
QVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOworICAgIHJldHVybiAqZm9udFBsYXRmb3JtRGF0YTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="471877"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461073</attachid>
            <date>2022-07-20 21:16:20 -0700</date>
            <delta_ts>2022-07-21 14:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234049-20220721161618.patch</filename>
            <type>text/plain</type>
            <size>24336</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">RnJvbSBkN2U2YWE1NDBlOTM4ZWM5ZDljOGM3YzczOTdjZmJlNzg1ZTAwMTU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAyNSBOb3YgMjAyMSAxMDo0NTo0OSArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIE1v
dmUgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dCdzIGZvbnRNYXAgdG8gRm9udENhY2hl
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MDQ5CgpSZXZpZXdl
ZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KCkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQg
bWFpbnRhaW5zIGEgY2FjaGUgb2YgQ1RGb250cyBrZXllZApvZmYgKENURm9udERlc2NyaXB0b3Is
Rm9udERlc2NyaXB0aW9uS2V5KSBwYWlycy4gVGhpcyBjYWNoZSBjYW4gYmUKYWNjZXNzZWQgZnJv
bSB3b3JrZXIgdGhyZWFkcyB1c2luZyBPZmZzY3JlZW5DYW52YXMgd2l0aG91dApzeW5jaHJvbml6
YXRpb24uIFRoaXMgcGF0Y2ggbW92ZXMgaXQgdG8gbGl2ZSBvbiB0aGUgRm9udENhY2hlLgoKVGhl
IGV4aXN0aW5nIGNhY2hlIG1hbmlwdWxhdGlvbiBjb2RlIGlzIHdyYXBwZWQgaW4gYSBuZXcgY2xh
c3MKRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlIGFuZCBtb3ZlZCB0byBhIG5l
dyBmaWxlLgoKKiBQbGF0Zm9ybU1hYy5jbWFrZToKKiBTb3VyY2VzQ29jb2EudHh0OgoqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBwYWdlL2NvY29hL01lbW9yeVJlbGVhc2VD
b2NvYS5tbToKKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeSk6CiogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcDoKKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZSk6CihX
ZWJDb3JlOjpGb250Q2FjaGU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CiogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmg6CihXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHRDYWNoZSk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwOgooV2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9ybUludmFsaWRhdGUpOgooV2Vi
Q29yZTo6aW52YWxpZGF0ZUZvbnRDYWNoZSk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CihXZWJDb3JlOjpGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKFdlYkNvcmU6OkZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uS2V5OjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSk6IERlbGV0ZWQu
CihXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6b3BlcmF0b3I9PSBjb25zdCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6b3BlcmF0b3Ih
PSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udEZh
bWlseVNwZWNpZmljYXRpb25LZXlIYXNoOjpoYXNoKTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgooV2ViQ29yZTo6Zm9u
dE1hcCk6IERlbGV0ZWQuCihXZWJDb3JlOjpjbGVhckZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHRDYWNoZSk6IERlbGV0ZWQuCiogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5oOgoqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuaC4KKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCk6CihXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0Q2FjaGU6OmNsZWFyKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAu
CihXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleTo6Rm9udEZhbWlseVNwZWNpZmlj
YXRpb25LZXkpOgooV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXk6Om9wZXJhdG9y
PT0gY29uc3QpOgooV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXk6Om9wZXJhdG9y
IT0gY29uc3QpOgooV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXk6OmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
S2V5SGFzaDo6aGFzaCk6CihXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleUhhc2g6
OmVxdWFsKToKKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZTo6
ZW5zdXJlKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSAgICAgICAgICAg
ICAgfCAgMiArCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAg
fCAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAg
NiArKwogLi4uL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0gIHwgIDUg
Ky0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgICB8ICAxICsK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oICB8ICA2ICsrCiAu
Li4vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwICAgICAgfCAgMyArLQogLi4u
L2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIHwgNjMgKy0tLS0tLS0t
LS0tCiAuLi4vY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oICAgfCAgMiAt
CiAuLi4vRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmNwcCAgfCA0MSArKysr
KysrKwogLi4uL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oICAgIHwgOTYg
KysrKysrKysrKysrKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgMTYxIGluc2VydGlvbnMoKyks
IDY1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5j
cHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKaW5kZXggYzc5MzMyOGUwZDhiLi4wZjVmNmM3MDZmOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCkBAIC0zMTYsNiArMzE2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERhdGFiYXNlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dENhY2hlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENv
Y29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbQpAQCAtNjY0LDYgKzY2NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERhdGFiYXNlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA5ZjA1MWRjOGRlYWIuLmY3MTgwZWQx
ZDYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MDAsNiArNDAwLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udERhdGFiYXNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9u
Q29jb2EuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0LmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmlj
YXRpb25Db3JlVGV4dENhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMWEzNDhjNTdiNDg2Li44NzBlMDM0OWRiODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEw
MjUsNiArMTAyNSw3IEBACiAJCTMyMTEyRTBGMjc0QjQ3Q0YwMDcwNDdBOCAvKiBTeXN0ZW1GYWxs
YmFja0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMjg5OUZCOTI3NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFsbGJhY2tDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMyMTEyRTBGMjc0
QjQ3Q0YwMDcwNDdBOCAvKiBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzI4OTlGQjkyNzRCNDEwQzAwODU1QTlE
IC8qIFN5c3RlbUZhbGxiYWNrRm9udENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzI1OTA1REMyNzRERTFEODAwN0I3QjY1IC8qIEZvbnRE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzI1OTA1REEyNzRERTFENzAwN0I3QjY1IC8qIEZvbnREYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMyOTRFQ0ZBMjc0RUZBNTcwMDZC
RThDOCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMyOTRFQ0Y5Mjc0RUZBNTcwMDZC
RThDOCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMkVBRkI4RDI3NEM1RUE2
MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNj
YWRlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5OTEwMTc5
QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8q
IEpTTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODU3Niw4ICs4
NTc3LDEwIEBACiAJCTMyRTI2OEZDMjg1RkM4RjcwMDQ2NjBCQiAvKiBDb2xvckludGVycG9sYXRp
b25NZXRob2QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzI1
OTA1REEyNzRERTFENzAwN0I3QjY1IC8qIEZvbnREYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGb250RGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzI1OTA1REQyNzRERTFFMzAwN0I3QjY1IC8qIEZvbnREYXRhYmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMjVFMUZERjI3NEVGRDRFMDBGQzY2OEEgLyogRm9udEZhbWlseVNwZWNpZmljYXRpb25D
b3JlVGV4dENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMyODk5
RkI3Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMyODk5RkI5Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxsYmFj
a0ZvbnRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMjk0RUNGOTI3NEVGQTU3MDA2QkU4QzggLyog
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYgLyog
Rm9udENhc2NhZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZUNhY2hl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzJFQUZCOEIyNzRDNUVBNTAwNjUw
NTU3IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9udENhc2NhZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzFG
RjY3REUxOTdCNTczOTNDNDZBN0YgLyogUmVuZGVyTWF0aE1MUGFkZGVkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFBhZGRlZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjk3MzgsNiArMjk3NDEsOCBAQAogCQkJCTFDMTJBQzJDMUVFNzc5
OTUwMDc5RTBBMCAvKiBGb250RGVzY3JpcHRpb25Db2NvYS5jcHAgKi8sCiAJCQkJMUMxMkFDMjgx
RUU3NzhBRTAwNzlFMEEwIC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwICov
LAogCQkJCTFDMTJBQzI5MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0LmggKi8sCisJCQkJMzI1RTFGREYyNzRFRkQ0RTAwRkM2NjhBIC8qIEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5jcHAgKi8sCisJCQkJMzI5NEVDRjkyNzRFRkE1
NzAwNkJFOEM4IC8qIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oICovLAog
CQkJCUI1MzIwRDZBMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1EYXRhQ29jb2EubW0g
Ki8sCiAJCQkJQjI3N0I0MDMwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dENvY29h
Lm1tICovLAogCQkJCTdCRERBMzFEMjc0RjlEQTUwMDM4NjU5RSAvKiBHcmFwaGljc0NvbnRleHRH
TENvY29hLmggKi8sCkBAIC0zNTE2OCw2ICszNTE3Myw3IEBACiAJCQkJMUM2NjI2MTExQzZFN0NB
NjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzI0RUVBNTFDNzI5
Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMTJBQzJC
MUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMjk0RUNGQTI3NEVGQTU3MDA2QkU4QzggLyogRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDJFRTNBNzE3
NTc2RTU1MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjU4NDM2ODYwQUUwMUI3NDAwRTUzNzQzIC8qIEZvbnRMb2FkUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM0QTUzMkYyNTYwNTdDRDAwMjhDNTkyIC8qIEZvbnRMb2FkVGltaW5nT3Zl
cnJpZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL01l
bW9yeVJlbGVhc2VDb2NvYS5tbQppbmRleCAyMGNkMTEwZGRhOGEuLjM2YWZkZjlkZDVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0KQEAg
LTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIk1lbW9yeVJlbGVhc2UuaCIKIAogI2ltcG9ydCAiRm9u
dENhY2hlLmgiCi0jaW1wb3J0ICJGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmgiCisj
aW1wb3J0ICJGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuaCIKICNpbXBvcnQg
IkdDQ29udHJvbGxlci5oIgogI2ltcG9ydCAiSFRNTE5hbWVDYWNoZS5oIgogI2ltcG9ydCAiSU9T
dXJmYWNlUG9vbC5oIgpAQCAtNDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lk
IHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCkKIHsKICAgICBGb250Q2FjaGU6OmludmFs
aWRhdGVBbGxGb250Q2FjaGVzKEZvbnRDYWNoZTo6U2hvdWxkUnVuSW52YWxpZGF0aW9uQ2FsbGJh
Y2s6Ok5vKTsKLSAgICBjbGVhckZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSgp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgY2xlYXIgdGhpcyBvbiBhbGwgd29ya2Vycy4KKyAgICBG
b250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5j
bGVhcigpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGNhbGwgdG8gR1NGb250SW5pdGlhbGl6ZSgpIG9uY2UgPHJkYXI6Ly9wcm9ibGVt
LzMyODg2NzE1PiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCmluZGV4IDIwNmE4NWFhZDFkNC4uOTA0NjI1YTA4NmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQ3OCw2
ICs0NzgsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzaW1pbGFyRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBudWxscHRyOwogfQor
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCAwZmIwNzk0YzJjYmYuLjA0NjM4MWYwYTMz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAg
LTU3LDYgKzU3LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJGb250Q2FjaGVD
b3JlVGV4dC5oIgogI2luY2x1ZGUgIkZvbnREYXRhYmFzZS5oIgorI2luY2x1ZGUgIkZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oIgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpAQCAtMTc2LDYgKzE3Nyw5IEBAIHB1YmxpYzoKIAogICAgIEZvbnRDYXNjYWRl
Q2FjaGUmIGZvbnRDYXNjYWRlQ2FjaGUoKSB7IHJldHVybiBtX2ZvbnRDYXNjYWRlQ2FjaGU7IH0K
ICAgICBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZSYgc3lzdGVtRmFsbGJhY2tGb250Q2FjaGUoKSB7
IHJldHVybiBtX3N5c3RlbUZhbGxiYWNrRm9udENhY2hlOyB9CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlJiBmb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUoKSB7IHJldHVybiBtX2ZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHRDYWNoZTsgfQorI2VuZGlmCiAKICAgICBib29sIHVzZUJhY2tzbGFzaEFzWWVu
U2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpOwogCkBAIC0yMzEsNiArMjM1
LDggQEAgcHJpdmF0ZToKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IG1fZm9udE5hbWVzUmVxdWly
aW5nU3lzdGVtRmFsbGJhY2tGb3JQcmV3YXJtaW5nOwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1f
cHJld2FybVF1ZXVlOwogCisgICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hl
IG1fZm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOworCiAgICAgZnJpZW5kIGNs
YXNzIENvbXBsZXhUZXh0Q29udHJvbGxlcjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAKaW5kZXggODU1OTc5ODhkYmUxLi5iZjhkMmIxZTM5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTEyMDYsOCArMTIwNiw3IEBAIHN0YXRpYyBGb250TG9va3VwIHBsYXRmb3JtRm9u
dExvb2t1cFdpdGhGYW1pbHkoRm9udERhdGFiYXNlJiBmb250RGF0YWJhc2UsIGNvbnN0CiB2b2lk
IEZvbnRDYWNoZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKICAgICAvLyBGSVhNRTogV29ya2Vy
cyBuZWVkIHRvIGFjY2VzcyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC4KLSAgICAvLyBGSVhN
RTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
Q2FjaGUuCi0gICAgY2xlYXJGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUoKTsK
KyAgICBtX2ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5jbGVhcigpOwogCiAg
ICAgcGxhdGZvcm1TaG91bGRFbmhhbmNlVGV4dExlZ2liaWxpdHkoKSA9IF9BWFNFbmhhbmNlVGV4
dExlZ2liaWxpdHlFbmFibGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDUyMDQ5NWJjNzljYy4uYWUwZWUxNjhkNTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCIK
IAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
PHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5o
PgpAQCAtMzYsNTkgKzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgRm9u
dEZhbWlseVNwZWNpZmljYXRpb25LZXkgewotICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9y
UmVmPiBmb250RGVzY3JpcHRvcjsKLSAgICBGb250RGVzY3JpcHRpb25LZXkgZm9udERlc2NyaXB0
aW9uS2V5OwotCi0gICAgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkoKSA9IGRlZmF1bHQ7Ci0K
LSAgICBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnRE
ZXNjcmlwdG9yLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKLSAgICAg
ICAgOiBmb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvcikKLSAgICAgICAgLCBmb250RGVzY3Jp
cHRpb25LZXkoZm9udERlc2NyaXB0aW9uKQotICAgIHsgfQotCi0gICAgZXhwbGljaXQgRm9udEZh
bWlseVNwZWNpZmljYXRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIGRlbGV0
ZWRWYWx1ZSkKLSAgICAgICAgOiBmb250RGVzY3JpcHRpb25LZXkoZGVsZXRlZFZhbHVlKQotICAg
IHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
S2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzYWZlQ0ZFcXVhbChmb250
RGVzY3JpcHRvci5nZXQoKSwgb3RoZXIuZm9udERlc2NyaXB0b3IuZ2V0KCkpICYmIGZvbnREZXNj
cmlwdGlvbktleSA9PSBvdGhlci5mb250RGVzY3JpcHRpb25LZXk7Ci0gICAgfQotCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KLSAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2Ny
aXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLX07Ci0KLWlubGluZSB2b2lk
IGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkmIGtl
eSkKLXsKLSAgICAvLyBGSVhNRTogSWRlYWxseSwgd2Ugd291bGRuJ3QgYmUgaGFzaGluZyBhIGhh
c2guCi0gICAgYWRkKGhhc2hlciwgc2FmZUNGSGFzaChrZXkuZm9udERlc2NyaXB0b3IuZ2V0KCkp
LCBrZXkuZm9udERlc2NyaXB0aW9uS2V5KTsKLX0KLQotc3RydWN0IEZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uS2V5SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRm9udEZhbWls
eVNwZWNpZmljYXRpb25LZXkmIGtleSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5KTsgfQotICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiBhLCBj
b25zdCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVl
OwotfTsKLQotdXNpbmcgRm9udE1hcCA9IEhhc2hNYXA8Rm9udEZhbWlseVNwZWNpZmljYXRpb25L
ZXksIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiwgRm9udEZhbWlseVNwZWNpZmlj
YXRpb25LZXlIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Rm9udEZhbWlseVNwZWNpZmljYXRp
b25LZXk+PjsKLQotc3RhdGljIEZvbnRNYXAmIGZvbnRNYXAoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxGb250TWFwPiBmb250TWFwOwotICAgIHJldHVybiBmb250TWFwOwotfQotCi12
b2lkIGNsZWFyRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCkKLXsKLSAgICBm
b250TWFwKCkuY2xlYXIoKTsKLX0KLQogRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dChDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnRE
ZXNjcmlwdG9yKQogICAgIDogbV9mb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvcikKIHsKQEAg
LTk4LDcgKzQ2LDcgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6fkZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQoKSA9IGRlZmF1bHQ7CiAKIEZvbnRSYW5nZXMgRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKIHsKLSAgICBhdXRvJiBmb250UGxhdGZvcm1EYXRh
ID0gZm9udE1hcCgpLmVuc3VyZShGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleShtX2ZvbnREZXNj
cmlwdG9yLmdldCgpLCBmb250RGVzY3JpcHRpb24pLCBbJl0gKCkgeworICAgIGF1dG8mIGZvbnRQ
bGF0Zm9ybURhdGEgPSBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKS5lbnN1cmUoRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkobV9mb250RGVz
Y3JpcHRvci5nZXQoKSwgZm9udERlc2NyaXB0aW9uKSwgWyZdICgpIHsKICAgICAgICAgYXV0byBz
aXplID0gZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwogCiAgICAgICAgIGF1dG8gZm9u
dCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKG1fZm9udERlc2NyaXB0
b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKTsKQEAgLTEwOCwxMSArNTYsOCBAQCBGb250UmFuZ2Vz
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmbwogICAgICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxp
cXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0
aW9uLCBTaG91bGRDb21wdXRlUGh5c2ljYWxUcmFpdHM6OlllcykuYm9sZE9ibGlxdWVQYWlyKCk7
CiAKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQo
KSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRh
dGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50
ZXh0UmVuZGVyaW5nTW9kZSgpKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBBU1NF
UlQoZm9udFBsYXRmb3JtRGF0YSk7Ci0KLSAgICByZXR1cm4gRm9udFJhbmdlcyhGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yUGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRh
KSk7CisgICAgfSk7CisgICAgcmV0dXJuIEZvbnRSYW5nZXMoRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkuZm9udEZvclBsYXRmb3JtRGF0YShmb250UGxhdGZvcm1EYXRhKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuaAppbmRleCBlN2U0
NzQ2NTlmYTkuLjMyOTRkODc4OGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHQuaApAQCAtNDUsNiArNDUsNCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBtX2ZvbnREZXNjcmlwdG9yOwogfTsKIAotdm9pZCBjbGVh
ckZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSgpOwotCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1MzRkYjI2N2E5NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRl
eHRDYWNoZSYgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkKK3sKKyAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCk7Cit9CisKK3ZvaWQgRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOjpjbGVhcigpCit7CisgICAgbV9mb250cy5jbGVh
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMDk1N2M1OTJmYzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25D
b3JlVGV4dENhY2hlLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250
Q2FzY2FkZUNhY2hlLmgiCisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbktleSB7CisgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+
IGZvbnREZXNjcmlwdG9yOworICAgIEZvbnREZXNjcmlwdGlvbktleSBmb250RGVzY3JpcHRpb25L
ZXk7CisKKyAgICBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSgpID0gZGVmYXVsdDsKKworICAg
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5KENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2Ny
aXB0b3IsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQorICAgICAgICA6
IGZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yKQorICAgICAgICAsIGZvbnREZXNjcmlwdGlv
bktleShmb250RGVzY3JpcHRpb24pCisgICAgeyB9CisKKyAgICBleHBsaWNpdCBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgZGVsZXRlZFZh
bHVlKQorICAgICAgICA6IGZvbnREZXNjcmlwdGlvbktleShkZWxldGVkVmFsdWUpCisgICAgeyB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNhZmVDRkVxdWFsKGZvbnREZXNj
cmlwdG9yLmdldCgpLCBvdGhlci5mb250RGVzY3JpcHRvci5nZXQoKSkgJiYgZm9udERlc2NyaXB0
aW9uS2V5ID09IG90aGVyLmZvbnREZXNjcmlwdGlvbktleTsKKyAgICB9CisKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRp
b25LZXkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworaW5saW5lIHZvaWQgYWRk
KEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktleSYga2V5KQor
eworICAgIC8vIEZJWE1FOiBJZGVhbGx5LCB3ZSB3b3VsZG4ndCBiZSBoYXNoaW5nIGEgaGFzaC4K
KyAgICBhZGQoaGFzaGVyLCBzYWZlQ0ZIYXNoKGtleS5mb250RGVzY3JpcHRvci5nZXQoKSksIGtl
eS5mb250RGVzY3JpcHRpb25LZXkpOworfQorCitzdHJ1Y3QgRm9udEZhbWlseVNwZWNpZmljYXRp
b25LZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbktleSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkmIGEsIGNvbnN0
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9
OworCitjbGFzcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSk7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIEZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZSYgZm9yQ3VycmVudFRocmVhZCgpOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gRm9udFBsYXRmb3JtRGF0YSYgZW5zdXJlKEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5JiYsIEZ1bmN0b3ImJik7CisgICAgdm9pZCBjbGVhcigp
OworCitwcml2YXRlOgorICAgIEhhc2hNYXA8Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXksIHN0
ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiwgRm9udEZhbWlseVNwZWNpZmljYXRpb25L
ZXlIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Rm9udEZhbWlseVNwZWNpZmljYXRpb25LZXk+
PiBtX2ZvbnRzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gRm9udFBsYXRmb3Jt
RGF0YSYgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlOjplbnN1cmUoRm9udEZh
bWlseVNwZWNpZmljYXRpb25LZXkmJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKQoreworICAgIGF1
dG8mIGZvbnRQbGF0Zm9ybURhdGEgPSBtX2ZvbnRzLmVuc3VyZShzdGQ6OmZvcndhcmQ8Rm9udEZh
bWlseVNwZWNpZmljYXRpb25LZXk+KGtleSksIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKKyAgICBy
ZXR1cm4gKmZvbnRQbGF0Zm9ybURhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>