<?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>233974</bug_id>
          
          <creation_ts>2021-12-07 22:06:49 -0800</creation_ts>
          <short_desc>Move the FontCascadeCache to a separate file</short_desc>
          <delta_ts>2022-07-19 21:57:29 -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>1821378</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:06:49 -0800</bug_when>
    <thetext>Move the FontCascadeCache to a separate file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821379</commentid>
    <comment_count>1</comment_count>
      <attachid>446293</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:07:35 -0800</bug_when>
    <thetext>Created attachment 446293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821380</commentid>
    <comment_count>2</comment_count>
      <attachid>446294</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:08:32 -0800</bug_when>
    <thetext>Created attachment 446294
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824246</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 22:07:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86506031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885214</commentid>
    <comment_count>4</comment_count>
      <attachid>461020</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-07-19 15:40:09 -0700</bug_when>
    <thetext>Created attachment 461020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885246</commentid>
    <comment_count>5</comment_count>
      <attachid>461025</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-07-19 17:13:57 -0700</bug_when>
    <thetext>Created attachment 461025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885301</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-19 21:57:26 -0700</bug_when>
    <thetext>Committed 252633@main (3c15ae3f06ea): &lt;https://commits.webkit.org/252633@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461025.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446293</attachid>
            <date>2021-12-07 22:07:35 -0800</date>
            <delta_ts>2021-12-08 21:03:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233974-20211208170733.patch</filename>
            <type>text/plain</type>
            <size>44500</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIxNTQwNTRjZWU5MWY3
ZmVlMDIwNzYxYTFjN2ViMjQ5ZTZjZDM2NC4uNmQ3MTNlZWY4YjRlZjZlNjQ0ZDBmNGZlYzQ3ZGI1
YTRiNzcxZWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTEyLTAyICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSB0aGUgRm9u
dENhc2NhZGVDYWNoZSB0byBhIHNlcGFyYXRlIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbnRDYXNjYWRlQ2FjaGUgaGFzIGFscmVhZHkgYmVl
biBtb3ZlZCB0byBoYW5nIG9mZiBGb250Q2FjaGUgaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg1OC4gVG8gbWFrZSBGb250Q2FjaGUuaC8KKyAg
ICAgICAgRm9udENhY2hlLmNwcCBsZXNzIGJ1c3ksIHRoaXMgcGF0Y2ggbW92ZXMgdGhlIEZvbnRD
YXNjYWRlQ2FjaGUgb3V0IHRvCisgICAgICAgIGEgc2VwYXJhdGUgZmlsZS4gVG8gbWFrZSB0aGUg
aW50ZXJmYWNlIG9mIHRoZSBGb250Q2FzY2FkZUNhY2hlIG1vcmUKKyAgICAgICAgdW5kZXJzdGFu
ZGFibGUsIHRoaXMgcGF0Y2ggYWxzbyB3cmFwcyBpdCB1cCBpbiBhIGNsYXNzIGFuZCBhZGRzIHNv
bWUKKyAgICAgICAgbWV0aG9kcyB0byBpbnRlcmFjdCB3aXRoIGl0LgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSk6CisgICAgICAg
ICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUFm
dGVyR2VuZXJpY0ZhbWlseUNoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZv
bnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6dXBkYXRlRm9udENhc2NhZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpGb250RmFtaWx5TmFtZTo6c3RyaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpo
YXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZUZv
bnRDYXNjYWRlQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpj
bGVhcldpZHRoQ2FjaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VGb250Q2Fz
Y2FkZUNhY2hlS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cHJ1
bmVVbnJlZmVyZW5jZWRFbnRyaWVzRnJvbUZvbnRDYXNjYWRlQ2FjaGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9u
dHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpmb250Q2FzY2FkZUNhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpjcmVhdGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OmZlYXR1cmVTZXR0
aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25L
ZXlSYXJlRGF0YTo6dmFyaWF0aW9uU2V0dGluZ3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OmZvbnRQYWxldHRlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpv
cGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlw
dGlvbktleVJhcmVEYXRhOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjphZGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udERl
c2NyaXB0aW9uS2V5OjpGb250RGVzY3JpcHRpb25LZXkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uS2V5OjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6b3BlcmF0b3IhPSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbktleTo6bWFrZUZsYWdzS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RGVmYXVs
dEhhc2g8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Pjo6aGFzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT46OmVxdWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpl
cXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFz
aFRyYWl0czo6ZW1wdHlWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZUNhY2hlS2V5SGFzaFRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjppc0RlbGV0
ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OkZv
bnRGYW1pbHlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlOYW1lOjpzdHJpbmcg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZUNhY2hlOjpmb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlQ2FjaGU6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVD
YWNoZTo6Y2xlYXJXaWR0aENhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNh
Y2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZTo6cHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
Om1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Q2FjaGU6OnJldHJpZXZlT3JBZGRDYWNoZWRGb250cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVDYWNoZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlw
dGlvbktleVJhcmVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uS2V5UmFyZURhdGE6OmZlYXR1cmVTZXR0aW5ncyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6dmFyaWF0aW9uU2V0dGluZ3MgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OmZvbnRQYWxldHRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJh
cmVEYXRhOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5OjpGb250RGVzY3JpcHRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5OjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlv
bktleTo6bWFrZUZsYWdzS2V5KToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5Pjo6aGFzaCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdl
YkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT46OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZUNhY2hlS2V5SGFzaFRyYWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjppc0RlbGV0ZWRW
YWx1ZSk6CisKIDIwMjEtMTItMDIgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIHRoZSBTeXN0ZW1GYWxsYmFja0NhY2hlIHRvIEZvbnRDYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggNWQwMDY3MzgwZTc0NWY4YjIxYzdjOTE2ODM5MzcwNTA3ZjMx
N2ZlYS4uNTRjN2I0MWU0MGNiNjZlYmRkOGM1Y2I1NTUyYWUzMmEwZDg2OGM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0xNDI4LDYgKzE0MjgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEJhc2VsaW5lLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3Jl
YXRpb25Db250ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDhhOThjOTM3YzEwZTcxZDYzM2I3MGE2
ZGVmNTIwNmYwNjBhYWExZS4uMzQ4ZDgxZTczMzVmOTI5MTFjYTA4NDgxMTkyNTQ3NWU3MjM2Nzli
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIwMTAsNiArMjAxMCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0U2l6ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVG
b250cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNDMz
NDk3NWUxNWI1ODYwN2RlMDczYWFiN2EzMjIzNTFhZDhmMjljLi4zZDM2ODgyZTY0Mjc0NWQ5MDM3
YjJiMjFiYjJmZGQ0YTE2ZDMyY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDEzLDYgKzEwMTMsNyBAQAogCQkzMUZCMUE2
NjEyMEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFGQjFBNjQxMjBBNUQzRjAwREMwMkEw
IC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFGRTZERkExNTAwNEMyQTAwMDRF
QkM0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFQzFEQUMxNEZGMjZFQTAwQzk0NjYyIC8q
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMyMTEyRTBGMjc0QjQ3Q0YwMDcwNDdBOCAvKiBT
eXN0ZW1GYWxsYmFja0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMjg5OUZCOTI3NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFsbGJhY2tDYWNo
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMy
RUFGQjhEMjc0QzVFQTYwMDY1MDU1NyAvKiBGb250Q2FzY2FkZUNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMkVBRkI4QjI3NEM1RUE1MDA2NTA1
NTcgLyogRm9udENhc2NhZGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzNTAzQzk5MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzUwM0NBNDEwMTc5
QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNGMDFFQTEyNzBFMTBEMDBE
RkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04Mzc2LDYgKzgzNzcsOCBAQAogCQkzMUZCMUE2NDEyMEE1RDNG
MDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMyODk5RkI3Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0NhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5c3RlbUZhbGxiYWNrQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMjg5OUZCOTI3NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFs
bGJhY2tDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GYWxsYmFja0NhY2hlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMyRDMxMDRFMjc0QzY4N0IwMDMzQUIyRiAvKiBGb250
Q2FzY2FkZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYXNjYWRlQ2FjaGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMkVBRkI4QjI3NEM1RUE1MDA2NTA1NTcg
LyogRm9udENhc2NhZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250Q2FzY2FkZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdE
RTE5N0I1NzM5M0M0NkE3RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYg
LyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2MzksNiArMjg2NDIsOCBAQAog
CQkJCUIyQzNEQTUyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCAqLywKIAkJCQlCMkMz
REE0RjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhc2NhZGUuY3BwICovLAogCQkJCUIyQzNEQTUw
MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZS5oICovLAorCQkJCTMyRDMxMDRFMjc0QzY4
N0IwMDMzQUIyRiAvKiBGb250Q2FzY2FkZUNhY2hlLmNwcCAqLywKKwkJCQkzMkVBRkI4QjI3NEM1
RUE1MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oICovLAogCQkJCUU0RThCNEYwMjE2QjhC
NUYwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcCAqLywKIAkJCQlFNEU4QjRG
MjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovLAogCQkJCUIy
QzNEQTU2MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZUZvbnRzLmNwcCAqLywKQEAgLTM0
MjY5LDYgKzM0Mjc0LDcgQEAKIAkJCQlCMkMzREE2MzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjQ1OEU2MzFGRTg5N0IwMDA1OTQ3NTkgLyogRm9u
dENhY2hlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTYxMEQwMDZDRDYwMEVG
NkYyNiAvKiBGb250Q2FzY2FkZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzJFQUZCOEQyNzRDNUVB
NjAwNjUwNTU3IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RThC
NEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkMzREE2ODBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhc2NhZGVGb250cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUMyNjY3MUIyNkZBOTMyRjAwMTE3MDczIC8qIEZvbnRDcmVh
dGlvbkNvbnRleHQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFz
ZS5jcHAKaW5kZXggYmJhOTVmYTNlNjc5Y2FmYjFiMjkxNDgwNTdkZjI3YmNiMDY4MTJjOC4uN2Ix
NDU4NjdkMmM2OGY4NmJjMmFmZTFhODI1NGRhZjVlMzkyNDA3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lbW9yeVJlbGVhc2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VO
b25jcml0aWNhbE1lbW9yeShNYWludGFpbk1lbW9yeUNhY2hlIG1haW50YWluTWVtb3J5Q2FjaGUp
CiAKICAgICAvLyBGSVhNRTogQ2xlYXIgdGhlc2UgZm9udCBjYWNoZXMgaW4gd29ya2VycyB0b28/
CiAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRh
KCk7Ci0gICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY2xlYXJXaWR0aENhY2hlcygp
OworICAgIEZvbnRDYXNjYWRlQ2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5jbGVhcldpZHRoQ2Fj
aGVzKCk7CiAKICAgICBUZXh0UGFpbnRlcjo6Y2xlYXJHbHlwaERpc3BsYXlMaXN0cygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggN2Y1NGQ4NzY4Y2MyZmEzNjRlNTQ0
MWNlOGQ0MGRhODU2MDc5YzZmYi4uOGExODY5NzNlMGJjZDQ4YTQ3ODg2NzRlMWU5MmEyZGQ0ZjQ0
ZjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKFBhZ2UqIHBh
Z2UpCiB7CiAgICAgLy8gTm8gbmVlZCB0byBpbnZhbGlkYXRlIEZvbnRDYXNjYWRlQ2FjaGVzIGlu
IHdvcmtlciB0aHJlYWRzLCBzaW5jZSB3b3JrZXJzCiAgICAgLy8gZG8gbm90IHJlc3BvbmQgdG8g
Y2hhbmdlcyBpbiBTZXR0aW5ncyB2YWx1ZXMuCi0gICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkuaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKKyAgICBGb250Q2FzY2FkZUNhY2hl
Ojpmb3JDdXJyZW50VGhyZWFkKCkuaW52YWxpZGF0ZSgpOwogCiAgICAgaWYgKHBhZ2UpCiAgICAg
ICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggYjI1ZTdkZmI5N2Ex
MDI5OTdiMGZhZTMzZDc1MzgxNWY4OWEzMDNlZC4uN2VmZWY5NzIxMDFjY2U2ZTQ3NjRhYjVkYzk4
ZTE4MDNjZGFhNzM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCkBAIC01MSwzNSArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSgpID0gZGVmYXVsdDsKLQotaW5saW5lIEZv
bnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQotICAg
IDogbV9uYW1lIHsgbmFtZSB9Ci17Ci19Ci0KLWlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBGb250
RmFtaWx5TmFtZTo6c3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uYW1lOwotfQotCi1p
bmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBuYW1l
KQotewotICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFjdGVy
cyBpbiB0aGUgbmFtZSBpbnN0ZWFkIG9mIGhhc2hpbmcgYSBoYXNoLgotICAgIGlmICghbmFtZS5z
dHJpbmcoKS5pc051bGwoKSkKLSAgICAgICAgYWRkKGhhc2hlciwgRm9udENhc2NhZGVEZXNjcmlw
dGlvbjo6ZmFtaWx5TmFtZUhhc2gobmFtZS5zdHJpbmcoKSkpOwotfQotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYg
YikKLXsKLSAgICByZXR1cm4gKGEuc3RyaW5nKCkuaXNOdWxsKCkgfHwgYi5zdHJpbmcoKS5pc051
bGwoKSkgPyBhLnN0cmluZygpID09IGIuc3RyaW5nKCkgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9u
OjpmYW1pbHlOYW1lc0FyZUVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFt
aWx5TmFtZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBzdHJ1Y3QgRm9udFBs
YXRmb3JtRGF0YUNhY2hlS2V5IHsKICAgICBGb250RGVzY3JpcHRpb25LZXkgZGVzY3JpcHRpb25L
ZXk7CiAgICAgRm9udEZhbWlseU5hbWUgZmFtaWx5OwpAQCAtMzEwLDggKzI4MSw4IEBAIHZvaWQg
Rm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKIHsK
ICAgICBMT0coRm9udHMsICJGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSgldSkiLCBw
dXJnZUNvdW50KTsKIAotICAgIHBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2FzY2Fk
ZUNhY2hlKCk7Ci0gICAgcHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCk7CisgICAgbV9mb250Q2Fz
Y2FkZUNhY2hlLnBydW5lVW5yZWZlcmVuY2VkRW50cmllcygpOworICAgIG1fZm9udENhc2NhZGVD
YWNoZS5wcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZm9udExvY2sgfTsKQEAgLTM1NCwzMCArMzI1LDYg
QEAgdm9pZCBGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNv
dW50KQogICAgIHBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKLWJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25zdCBGb250Q2FzY2FkZUNh
Y2hlS2V5JiBiKQotewotICAgIHJldHVybiBhLmZvbnREZXNjcmlwdGlvbktleSA9PSBiLmZvbnRE
ZXNjcmlwdGlvbktleQotICAgICAgICAmJiBhLmZvbnRTZWxlY3RvcklkID09IGIuZm9udFNlbGVj
dG9ySWQKLSAgICAgICAgJiYgYS5mb250U2VsZWN0b3JWZXJzaW9uID09IGIuZm9udFNlbGVjdG9y
VmVyc2lvbgotICAgICAgICAmJiBhLmZhbWlsaWVzID09IGIuZmFtaWxpZXM7Ci19Ci0KLXVuc2ln
bmVkIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVL
ZXkmIGtleSkKLXsKLSAgICByZXR1cm4gY29tcHV0ZUhhc2goa2V5LmZvbnREZXNjcmlwdGlvbktl
eSwga2V5LmZvbnRTZWxlY3RvcklkLCBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbiwga2V5LmZhbWls
aWVzKTsKLX0KLQotdm9pZCBGb250Q2FjaGU6OmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCkK
LXsKLSAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuY2xlYXIoKTsKLX0KLQotdm9pZCBGb250Q2FjaGU6
OmNsZWFyV2lkdGhDYWNoZXMoKQotewotICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX2ZvbnRDYXNj
YWRlQ2FjaGUudmFsdWVzKCkpCi0gICAgICAgIHZhbHVlLT5mb250cy5nZXQoKS53aWR0aENhY2hl
KCkuY2xlYXIoKTsKLX0KLQogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKIFJlZlB0cjxP
cGVuVHlwZVZlcnRpY2FsRGF0YT4gRm9udENhY2hlOjp2ZXJ0aWNhbERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewpAQCAtMzg4LDU4ICszMzUsOSBAQCBSZWZQdHI8
T3BlblR5cGVWZXJ0aWNhbERhdGE+IEZvbnRDYWNoZTo6dmVydGljYWxEYXRhKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYQogfQogI2VuZGlmCiAKLXN0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5
IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKLXsKLSAgICBGb250Q2FzY2Fk
ZUNhY2hlS2V5IGtleTsKLSAgICBrZXkuZm9udERlc2NyaXB0aW9uS2V5ID0gRm9udERlc2NyaXB0
aW9uS2V5KGRlc2NyaXB0aW9uKTsKLSAgICB1bnNpZ25lZCBmYW1pbHlDb3VudCA9IGRlc2NyaXB0
aW9uLmZhbWlseUNvdW50KCk7Ci0gICAga2V5LmZhbWlsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZmFtaWx5Q291bnQpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3Vu
dDsgKytpKQotICAgICAgICBrZXkuZmFtaWxpZXMudW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0aW9u
LmZhbWlseUF0KGkpKTsKLSAgICBrZXkuZm9udFNlbGVjdG9ySWQgPSBmb250U2VsZWN0b3IgPyBm
b250U2VsZWN0b3ItPnVuaXF1ZUlkKCkgOiAwOwotICAgIGtleS5mb250U2VsZWN0b3JWZXJzaW9u
ID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9yLT52ZXJzaW9uKCkgOiAwOwotICAgIHJldHVy
biBrZXk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9t
Rm9udENhc2NhZGVDYWNoZSgpCi17Ci0gICAgbV9mb250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtd
KGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS0+Zm9udHMuZ2V0KCku
aGFzT25lUmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKQotewotICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2ZvbnRDYXNjYWRlQ2Fj
aGUudmFsdWVzKCkpCi0gICAgICAgIGVudHJ5LT5mb250cy0+cHJ1bmVTeXN0ZW1GYWxsYmFja3Mo
KTsKLX0KLQotUmVmPEZvbnRDYXNjYWRlRm9udHM+IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
UmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCi17Ci0gICAgYXV0byBrZXkgPSBt
YWtlRm9udENhc2NhZGVDYWNoZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQo
KSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRDYXNjYWRlQ2FjaGUuYWRkKGtleSwgbnVs
bHB0cik7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgpOwotCi0gICAgYXV0byYgbmV3RW50
cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1
ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7IFdURk1vdmUo
a2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkgfSk7
Ci0gICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQo
KTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRl
cnZhbCA9IDUwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heGltdW1FbnRyaWVzID0gNDAw
OwotICAgIHN0YXRpYyB1bnNpZ25lZCBwcnVuZUNvdW50ZXI7Ci0gICAgLy8gUmVmZXJlbmNlZCBG
b250Q2FzY2FkZUZvbnRzIHdvdWxkIGV4aXN0IGFueXdheSBzbyBwcnVuaW5nIHRoZW0gc2F2ZXMg
bGl0dGxlIG1lbW9yeS4KLSAgICBpZiAoISgrK3BydW5lQ291bnRlciAlIHVucmVmZXJlbmNlZFBy
dW5lSW50ZXJ2YWwpKQotICAgICAgICBwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENh
c2NhZGVDYWNoZSgpOwotICAgIC8vIFByZXZlbnQgcGF0aG9sb2dpY2FsIGdyb3d0aC4KLSAgICBp
ZiAobV9mb250Q2FzY2FkZUNhY2hlLnNpemUoKSA+IG1heGltdW1FbnRyaWVzKQotICAgICAgICBt
X2ZvbnRDYXNjYWRlQ2FjaGUucmVtb3ZlKG1fZm9udENhc2NhZGVDYWNoZS5yYW5kb20oKSk7Ci0g
ICAgcmV0dXJuIGdseXBoczsKLX0KLQogdm9pZCBGb250Q2FjaGU6OnVwZGF0ZUZvbnRDYXNjYWRl
KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBm
b250U2VsZWN0b3IpCiB7Ci0gICAgZm9udENhc2NhZGUudXBkYXRlRm9udHMocmV0cmlldmVPckFk
ZENhY2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRT
ZWxlY3RvcikpKTsKKyAgICBmb250Q2FzY2FkZS51cGRhdGVGb250cyhtX2ZvbnRDYXNjYWRlQ2Fj
aGUucmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigp
LCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKIH0KIAogc2l6ZV90IEZvbnRDYWNoZTo6Zm9udENv
dW50KCkKQEAgLTQ3OSw3ICszNzcsNyBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAj
aWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIG1fZm9udERhdGFDYWNoZXMtPnZlcnRp
Y2FsRGF0YS5jbGVhcigpOwogI2VuZGlmCi0gICAgaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUo
KTsKKyAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuaW52YWxpZGF0ZSgpOwogCiAgICAgKyttX2dlbmVy
YXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgK
aW5kZXggZGQzOWUzNjA3MWIzMTllZDQ1MjdhNmI2MWNmNjI2ZGJkYmVlZTMzYi4uODY4YTY5MGVl
NmFjNzc2ZmVhNGIzM2UyMjU3MjFlNDI4YjU5OTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJGb250Q2FzY2FkZUZvbnRzLmgiCisjaW5jbHVkZSAiRm9udENhc2Nh
ZGVDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRDcmVhdGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJG
b250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCkBAIC04Mywy
MDQgKzgzLDYgQEAgdXNpbmcgSU1MYW5nRm9udExpbmtUeXBlID0gSU1MYW5nRm9udExpbmsyOwog
dXNpbmcgSU1MYW5nRm9udExpbmtUeXBlID0gSU1MYW5nRm9udExpbms7CiAjZW5kaWYKIAotc3Ry
dWN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udERl
c2NyaXB0aW9uS2V5UmFyZURhdGE+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhPiBjcmVhdGUo
Rm9udEZlYXR1cmVTZXR0aW5ncyYmIGZlYXR1cmVTZXR0aW5ncywgRm9udFZhcmlhdGlvblNldHRp
bmdzJiYgdmFyaWF0aW9uU2V0dGluZ3MsIEZvbnRQYWxldHRlJiYgZm9udFBhbGV0dGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0
YShXVEZNb3ZlKGZlYXR1cmVTZXR0aW5ncyksIFdURk1vdmUodmFyaWF0aW9uU2V0dGluZ3MpLCBX
VEZNb3ZlKGZvbnRQYWxldHRlKSkpOwotICAgIH0KLQotICAgIGNvbnN0IEZvbnRGZWF0dXJlU2V0
dGluZ3MmIGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9m
ZWF0dXJlU2V0dGluZ3M7Ci0gICAgfQotCi0gICAgY29uc3QgRm9udFZhcmlhdGlvblNldHRpbmdz
JiB2YXJpYXRpb25TZXR0aW5ncygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YXJp
YXRpb25TZXR0aW5nczsKLSAgICB9Ci0KLSAgICBjb25zdCBGb250UGFsZXR0ZSYgZm9udFBhbGV0
dGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9udFBhbGV0dGU7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ZlYXR1cmVTZXR0aW5ncyA9PSBv
dGhlci5tX2ZlYXR1cmVTZXR0aW5ncwotICAgICAgICAgICAgJiYgbV92YXJpYXRpb25TZXR0aW5n
cyA9PSBvdGhlci5tX3ZhcmlhdGlvblNldHRpbmdzCi0gICAgICAgICAgICAmJiBtX2ZvbnRQYWxl
dHRlID09IG90aGVyLm1fZm9udFBhbGV0dGU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZvbnRE
ZXNjcmlwdGlvbktleVJhcmVEYXRhKEZvbnRGZWF0dXJlU2V0dGluZ3MmJiBmZWF0dXJlU2V0dGlu
Z3MsIEZvbnRWYXJpYXRpb25TZXR0aW5ncyYmIHZhcmlhdGlvblNldHRpbmdzLCBGb250UGFsZXR0
ZSYmIGZvbnRQYWxldHRlKQotICAgICAgICA6IG1fZmVhdHVyZVNldHRpbmdzKFdURk1vdmUoZmVh
dHVyZVNldHRpbmdzKSkKLSAgICAgICAgLCBtX3ZhcmlhdGlvblNldHRpbmdzKFdURk1vdmUodmFy
aWF0aW9uU2V0dGluZ3MpKQotICAgICAgICAsIG1fZm9udFBhbGV0dGUoV1RGTW92ZShmb250UGFs
ZXR0ZSkpCi0gICAgewotICAgIH0KLQotICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJl
U2V0dGluZ3M7Ci0gICAgRm9udFZhcmlhdGlvblNldHRpbmdzIG1fdmFyaWF0aW9uU2V0dGluZ3M7
Ci0gICAgRm9udFBhbGV0dGUgbV9mb250UGFsZXR0ZTsKLX07Ci0KLWlubGluZSB2b2lkIGFkZChI
YXNoZXImIGhhc2hlciwgY29uc3QgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEmIGtleSkKLXsK
LSAgICBhZGQoaGFzaGVyLCBrZXkuZmVhdHVyZVNldHRpbmdzKCksIGtleS52YXJpYXRpb25TZXR0
aW5ncygpLCBrZXkuZm9udFBhbGV0dGUoKSk7Ci19Ci0KLS8vIFRoaXMga2V5IGNvbnRhaW5zIHRo
ZSBGb250RGVzY3JpcHRpb24gZmllbGRzIG90aGVyIHRoYW4gZmFtaWx5IHRoYXQgbWF0dGVyIHdo
ZW4gZmV0Y2hpbmcgRm9udERhdGFzIChwbGF0Zm9ybSBmb250cykuCi1zdHJ1Y3QgRm9udERlc2Ny
aXB0aW9uS2V5IHsKLSAgICBGb250RGVzY3JpcHRpb25LZXkoKSA9IGRlZmF1bHQ7Ci0KLSAgICBG
b250RGVzY3JpcHRpb25LZXkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKLSAg
ICAgICAgOiBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkKLSAgICAgICAg
LCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0KGRlc2NyaXB0aW9uLmZvbnRTZWxlY3Rpb25SZXF1ZXN0
KCkpCi0gICAgICAgICwgbV9mbGFncyhtYWtlRmxhZ3NLZXkoZGVzY3JpcHRpb24pKQotICAgICAg
ICAsIG1fbG9jYWxlKGRlc2NyaXB0aW9uLnNwZWNpZmllZExvY2FsZSgpKQotICAgIHsKLSAgICAg
ICAgYXV0byBmZWF0dXJlU2V0dGluZ3MgPSBkZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKTsK
LSAgICAgICAgYXV0byB2YXJpYXRpb25TZXR0aW5ncyA9IGRlc2NyaXB0aW9uLnZhcmlhdGlvblNl
dHRpbmdzKCk7Ci0gICAgICAgIGF1dG8gZm9udFBhbGV0dGUgPSBkZXNjcmlwdGlvbi5mb250UGFs
ZXR0ZSgpOwotICAgICAgICBpZiAoIWZlYXR1cmVTZXR0aW5ncy5pc0VtcHR5KCkgfHwgIXZhcmlh
dGlvblNldHRpbmdzLmlzRW1wdHkoKSB8fCBmb250UGFsZXR0ZS50eXBlICE9IEZvbnRQYWxldHRl
OjpUeXBlOjpOb3JtYWwpCi0gICAgICAgICAgICBtX3JhcmVEYXRhID0gRm9udERlc2NyaXB0aW9u
S2V5UmFyZURhdGE6OmNyZWF0ZShXVEZNb3ZlKGZlYXR1cmVTZXR0aW5ncyksIFdURk1vdmUodmFy
aWF0aW9uU2V0dGluZ3MpLCBXVEZNb3ZlKGZvbnRQYWxldHRlKSk7Ci0gICAgfQotCi0gICAgZXhw
bGljaXQgRm9udERlc2NyaXB0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkK
LSAgICAgICAgOiBtX2lzRGVsZXRlZFZhbHVlKHRydWUpCi0gICAgeyB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2lzRGVsZXRlZFZhbHVlID09IG90aGVyLm1faXNEZWxldGVkVmFsdWUK
LSAgICAgICAgICAgICYmIG1fc2l6ZSA9PSBvdGhlci5tX3NpemUKLSAgICAgICAgICAgICYmIG1f
Zm9udFNlbGVjdGlvblJlcXVlc3QgPT0gb3RoZXIubV9mb250U2VsZWN0aW9uUmVxdWVzdAotICAg
ICAgICAgICAgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCi0gICAgICAgICAgICAmJiBtX2xv
Y2FsZSA9PSBvdGhlci5tX2xvY2FsZQotICAgICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShtX3JhcmVEYXRhLCBvdGhlci5tX3JhcmVEYXRhKTsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZTsgfQot
Ci0gICAgZnJpZW5kIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYp
OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtYWtlRmxh
Z3NLZXkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKLSAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIGZpcnN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnNjcmlw
dCgpKSA8PCAxNQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24uc2hvdWxkRGlzYWJsZUxpZ2F0dXJlc0ZvclNwYWNpbmcoKSkgPDwgMTQKLSAgICAgICAgICAg
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnNob3VsZEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKCkpIDw8IDEzCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXNjcmlwdGlvbi5mb250U3R5bGVBeGlzKCkgPT0gRm9udFN0eWxlQXhpczo6c2xudCkgPDwgMTIK
LSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLm9wdGljYWxT
aXppbmcoKSkgPDwgMTEKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpIDw8IDkKLSAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmZvbnRTeW50aGVzaXMoKSkgPDwgNgotICAgICAgICAg
ICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCkpIDw8
IDQKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLm5vbkNK
S0dseXBoT3JpZW50YXRpb24oKSkgPDwgMwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSkgPDwgMgotICAgICAgICAgICAgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAg
dW5zaWduZWQgc2Vjb25kID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlh
bnRFYXN0QXNpYW5SdWJ5KCkpIDw8IDI3Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSkgPDwgMjUKLSAgICAgICAg
ICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRFYXN0QXNpYW5W
YXJpYW50KCkpIDw8IDIyCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNj
cmlwdGlvbi52YXJpYW50QWx0ZXJuYXRlcygpKSA8PCAyMQotICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNTbGFzaGVkWmVybygpKSA8
PCAyMAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFy
aWFudE51bWVyaWNPcmRpbmFsKCkpIDw8IDE5Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkpIDw8IDE3Ci0gICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJp
Y1NwYWNpbmcoKSkgPDwgMTUKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
c2NyaXB0aW9uLnZhcmlhbnROdW1lcmljRmlndXJlKCkpIDw8IDEzCi0gICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpKSA8PCAxMAotICAg
ICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudFBvc2l0
aW9uKCkpIDw8IDgKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLnZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcygpKSA8PCA2Ci0gICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJl
cygpKSA8PCA0Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlv
bi52YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcygpKSA8PCAyCi0gICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCkp
OwotICAgICAgICByZXR1cm4ge3sgZmlyc3QsIHNlY29uZCB9fTsKLSAgICB9Ci0KLSAgICBib29s
IG1faXNEZWxldGVkVmFsdWUgeyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsK
LSAgICBGb250U2VsZWN0aW9uUmVxdWVzdCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0OwotICAgIHN0
ZDo6YXJyYXk8dW5zaWduZWQsIDI+IG1fZmxhZ3Mge3sgMCwgMCB9fTsKLSAgICBBdG9tU3RyaW5n
IG1fbG9jYWxlOwotICAgIFJlZlB0cjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gbV9yYXJl
RGF0YTsKLX07Ci0KLWlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgRm9udERl
c2NyaXB0aW9uS2V5JiBrZXkpCi17Ci0gICAgYWRkKGhhc2hlciwga2V5Lm1fc2l6ZSwga2V5Lm1f
Zm9udFNlbGVjdGlvblJlcXVlc3QsIGtleS5tX2ZsYWdzLCBrZXkubV9sb2NhbGUpOwotICAgIGlm
IChrZXkubV9yYXJlRGF0YSkKLSAgICAgICAgYWRkKGhhc2hlciwgKmtleS5tX3JhcmVEYXRhKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5
JiBrZXkpIHsgcmV0dXJuIGNvbXB1dGVIYXNoKGtleSk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkmIGEsIGNvbnN0IFdlYkNvcmU6OkZv
bnREZXNjcmlwdGlvbktleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKLX07
Ci0KLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBUaGlzIGNsYXNzIGhvbGRzIHRoZSBu
YW1lIG9mIGEgZm9udCBmYW1pbHksIGFuZCBkZWZpbmVzIGhhc2hpbmcgYW5kID09IG9mIHRoaXMg
bmFtZSB0bwotLy8gdXNlIHRoZSBydWxlcyBmb3IgZm9udCBmYW1pbHkgbmFtZXMgaW5zdGVhZCBv
ZiB1c2luZyBzdHJhaWdodCBzdHJpbmcgY29tcGFyaXNvbi4KLWNsYXNzIEZvbnRGYW1pbHlOYW1l
IHsKLXB1YmxpYzoKLSAgICBGb250RmFtaWx5TmFtZSgpOwotICAgIEZvbnRGYW1pbHlOYW1lKGNv
bnN0IEF0b21TdHJpbmcmKTsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcoKSBjb25zdDsK
LSAgICBmcmllbmQgdm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKLQot
cHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1fbmFtZTsKLX07Ci0KLWJvb2wgb3BlcmF0b3I9PShj
b25zdCBGb250RmFtaWx5TmFtZSYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7Ci1ib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udEZhbWlseU5hbWUmLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOwotCi1z
dHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleSB7Ci0gICAgRm9udERlc2NyaXB0aW9uS2V5IGZvbnRE
ZXNjcmlwdGlvbktleTsgLy8gU2hhcmVkIHdpdGggdGhlIGxvd2VyIGxldmVsIEZvbnRDYWNoZSAo
Y2FjaGluZyBGb250IG9iamVjdHMpCi0gICAgVmVjdG9yPEZvbnRGYW1pbHlOYW1lLCAzPiBmYW1p
bGllczsKLSAgICB1bnNpZ25lZCBmb250U2VsZWN0b3JJZDsKLSAgICB1bnNpZ25lZCBmb250U2Vs
ZWN0b3JWZXJzaW9uOwotfTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlQ2Fj
aGVLZXkmLCBjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5Jik7Ci0KLXN0cnVjdCBGb250Q2FzY2Fk
ZUNhY2hlRW50cnkgewotICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLQotICAg
IEZvbnRDYXNjYWRlQ2FjaGVLZXkga2V5OwotICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBmb250
czsKLX07Ci0KLXN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCB7Ci0gICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYpOwotICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2Fj
aGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IEZvbnRD
YXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5
PiB7Ci0gICAgc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGVLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IHsgfTsgfQotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb250Q2FzY2Fk
ZUNhY2hlS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuZm9udERlc2NyaXB0aW9uS2V5
KSBGb250RGVzY3JpcHRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9Ci0gICAg
c3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5
KSB7IHJldHVybiBrZXkuZm9udERlc2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KLX07Ci0KLXVzaW5nIEZvbnRDYXNjYWRlQ2FjaGUgPSBIYXNoTWFwPEZvbnRDYXNjYWRl
Q2FjaGVLZXksIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2Fz
Y2FkZUNhY2hlS2V5SGFzaCwgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM+OwotCiBjbGFz
cyBGb250Q2FjaGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDYWNoZSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMzMxLDggKzEzMyw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiAKICAgICB2b2lkIHVw
ZGF0ZUZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlJiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
Jik7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSgpOwotICAgIHZvaWQgY2xl
YXJXaWR0aENhY2hlcygpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFJlZlB0cjxGb250PiBm
b250RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25z
dCBMT0dGT05UJiwgU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSk7CkBAIC0zNjEsMTMgKzE2MSwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYp
OwogICAgIHN0YXRpYyB2b2lkIHByZXdhcm1HbG9iYWxseSgpOwogCisgICAgRm9udENhc2NhZGVD
YWNoZSYgZm9udENhc2NhZGVDYWNoZSgpIHsgcmV0dXJuIG1fZm9udENhc2NhZGVDYWNoZTsgfQog
ICAgIFN5c3RlbUZhbGxiYWNrQ2FjaGUmIHN5c3RlbUZhbGxiYWNrQ2FjaGUoKSB7IHJldHVybiBt
X3N5c3RlbUZhbGxiYWNrQ2FjaGU7IH0KIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHB1cmdlSW5hY3RpdmVGb250RGF0YUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBwcnVuZVVucmVm
ZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpOwotICAgIHZvaWQgcHJ1bmVTeXN0
ZW1GYWxsYmFja0ZvbnRzKCk7Ci0gICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JB
ZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgUmVmUHRyPEZvbnRT
ZWxlY3Rvcj4mJik7CiAKICAgICBGb250UGxhdGZvcm1EYXRhKiBjYWNoZWRGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBG
b250Q3JlYXRpb25Db250ZXh0JiA9IHsgfSwgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5hbWUgPSBm
YWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGVDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M2ZjVhOTM1YTY2MjIzMjgyZGM1MTMyNzg4
ZWEzYTRjNWQzYmY4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRm9udENhc2NhZGVDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zv
bnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSgpID0gZGVmYXVsdDsKKworaW5saW5lIEZvbnRG
YW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQorICAgIDog
bV9uYW1lIHsgbmFtZSB9Cit7Cit9CisKK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBGb250RmFt
aWx5TmFtZTo6c3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYW1lOworfQorCitpbmxp
bmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBuYW1lKQor
eworICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFjdGVycyBp
biB0aGUgbmFtZSBpbnN0ZWFkIG9mIGhhc2hpbmcgYSBoYXNoLgorICAgIGlmICghbmFtZS5zdHJp
bmcoKS5pc051bGwoKSkKKyAgICAgICAgYWRkKGhhc2hlciwgRm9udENhc2NhZGVEZXNjcmlwdGlv
bjo6ZmFtaWx5TmFtZUhhc2gobmFtZS5zdHJpbmcoKSkpOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikK
K3sKKyAgICByZXR1cm4gKGEuc3RyaW5nKCkuaXNOdWxsKCkgfHwgYi5zdHJpbmcoKS5pc051bGwo
KSkgPyBhLnN0cmluZygpID09IGIuc3RyaW5nKCkgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpm
YW1pbHlOYW1lc0FyZUVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5
TmFtZSYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCitib29sIG9wZXJhdG9yPT0o
Y29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYg
YikKK3sKKyAgICByZXR1cm4gYS5mb250RGVzY3JpcHRpb25LZXkgPT0gYi5mb250RGVzY3JpcHRp
b25LZXkKKyAgICAgICAgJiYgYS5mb250U2VsZWN0b3JJZCA9PSBiLmZvbnRTZWxlY3RvcklkCisg
ICAgICAgICYmIGEuZm9udFNlbGVjdG9yVmVyc2lvbiA9PSBiLmZvbnRTZWxlY3RvclZlcnNpb24K
KyAgICAgICAgJiYgYS5mYW1pbGllcyA9PSBiLmZhbWlsaWVzOworfQorCit1bnNpZ25lZCBGb250
Q2FzY2FkZUNhY2hlS2V5SGFzaDo6aGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkp
Cit7CisgICAgcmV0dXJuIGNvbXB1dGVIYXNoKGtleS5mb250RGVzY3JpcHRpb25LZXksIGtleS5m
b250U2VsZWN0b3JJZCwga2V5LmZvbnRTZWxlY3RvclZlcnNpb24sIGtleS5mYW1pbGllcyk7Cit9
CisKK0ZvbnRDYXNjYWRlQ2FjaGUmIEZvbnRDYXNjYWRlQ2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KQoreworICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Q2FzY2Fk
ZUNhY2hlKCk7Cit9CisKK3ZvaWQgRm9udENhc2NhZGVDYWNoZTo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgbV9lbnRyaWVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRm9udENhc2NhZGVDYWNoZTo6Y2xlYXJX
aWR0aENhY2hlcygpCit7CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fZW50cmllcy52YWx1ZXMo
KSkKKyAgICAgICAgdmFsdWUtPmZvbnRzLmdldCgpLndpZHRoQ2FjaGUoKS5jbGVhcigpOworfQor
Cit2b2lkIEZvbnRDYXNjYWRlQ2FjaGU6OnBydW5lVW5yZWZlcmVuY2VkRW50cmllcygpCit7Cisg
ICAgbV9lbnRyaWVzLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgIHJldHVybiBl
bnRyeS52YWx1ZS0+Zm9udHMuZ2V0KCkuaGFzT25lUmVmKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
Rm9udENhc2NhZGVDYWNoZTo6cHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCkKK3sKKyAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzLnZhbHVlcygpKQorICAgICAgICBlbnRyeS0+Zm9udHMt
PnBydW5lU3lzdGVtRmFsbGJhY2tzKCk7Cit9CisKK3N0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5
IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKK3sKKyAgICBGb250Q2FzY2Fk
ZUNhY2hlS2V5IGtleTsKKyAgICBrZXkuZm9udERlc2NyaXB0aW9uS2V5ID0gRm9udERlc2NyaXB0
aW9uS2V5KGRlc2NyaXB0aW9uKTsKKyAgICB1bnNpZ25lZCBmYW1pbHlDb3VudCA9IGRlc2NyaXB0
aW9uLmZhbWlseUNvdW50KCk7CisgICAga2V5LmZhbWlsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZmFtaWx5Q291bnQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3Vu
dDsgKytpKQorICAgICAgICBrZXkuZmFtaWxpZXMudW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0aW9u
LmZhbWlseUF0KGkpKTsKKyAgICBrZXkuZm9udFNlbGVjdG9ySWQgPSBmb250U2VsZWN0b3IgPyBm
b250U2VsZWN0b3ItPnVuaXF1ZUlkKCkgOiAwOworICAgIGtleS5mb250U2VsZWN0b3JWZXJzaW9u
ID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9yLT52ZXJzaW9uKCkgOiAwOworICAgIHJldHVy
biBrZXk7Cit9CisKK1JlZjxGb250Q2FzY2FkZUZvbnRzPiBGb250Q2FzY2FkZUNhY2hlOjpyZXRy
aWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uLCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikKK3sKKyAgICBh
dXRvIGtleSA9IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGZvbnREZXNjcmlwdGlvbiwgZm9udFNl
bGVjdG9yLmdldCgpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZW50cmllcy5hZGQoa2V5LCBu
dWxscHRyKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CisKKyAgICBhdXRvJiBuZXdF
bnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgbmV3RW50cnkgPSBtYWtlVW5p
cXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oRm9udENhc2NhZGVDYWNoZUVudHJ5IHsgV1RGTW92
ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSB9
KTsKKyAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gZ2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdl
dCgpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUlu
dGVydmFsID0gNTA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4aW11bUVudHJpZXMgPSA0
MDA7CisgICAgc3RhdGljIHVuc2lnbmVkIHBydW5lQ291bnRlcjsKKyAgICAvLyBSZWZlcmVuY2Vk
IEZvbnRDYXNjYWRlRm9udHMgd291bGQgZXhpc3QgYW55d2F5IHNvIHBydW5pbmcgdGhlbSBzYXZl
cyBsaXR0bGUgbWVtb3J5LgorICAgIGlmICghKCsrcHJ1bmVDb3VudGVyICUgdW5yZWZlcmVuY2Vk
UHJ1bmVJbnRlcnZhbCkpCisgICAgICAgIHBydW5lVW5yZWZlcmVuY2VkRW50cmllcygpOworICAg
IC8vIFByZXZlbnQgcGF0aG9sb2dpY2FsIGdyb3d0aC4KKyAgICBpZiAobV9lbnRyaWVzLnNpemUo
KSA+IG1heGltdW1FbnRyaWVzKQorICAgICAgICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmllcy5y
YW5kb20oKSk7CisgICAgcmV0dXJuIGdseXBoczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVD
YWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU5YzlhYjhiMzY3NTJmZDU3OGUxYzE0ZTFhNzA2MDQwYmYyN2Y3
YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUNhY2hlLmgKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRm9udENhc2Nh
ZGVGb250cy5oIgorI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkZvbnRU
YWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29uLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Rm9udERlc2NyaXB0aW9uS2V5UmFy
ZURhdGE+IGNyZWF0ZShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRpbmdzLCBGb250
VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0dGUmJiBmb250
UGFsZXR0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnREZXNjcmlw
dGlvbktleVJhcmVEYXRhKFdURk1vdmUoZmVhdHVyZVNldHRpbmdzKSwgV1RGTW92ZSh2YXJpYXRp
b25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBhbGV0dGUpKSk7CisgICAgfQorCisgICAgY29uc3Qg
Rm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2ZlYXR1cmVTZXR0aW5nczsKKyAgICB9CisKKyAgICBjb25zdCBGb250VmFy
aWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3ZhcmlhdGlvblNldHRpbmdzOworICAgIH0KKworICAgIGNvbnN0IEZvbnRQYWxl
dHRlJiBmb250UGFsZXR0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mb250UGFs
ZXR0ZTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9u
S2V5UmFyZURhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmVhdHVy
ZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRpbmdzCisgICAgICAgICAgICAmJiBtX3Zh
cmlhdGlvblNldHRpbmdzID09IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKKyAgICAgICAgICAg
ICYmIG1fZm9udFBhbGV0dGUgPT0gb3RoZXIubV9mb250UGFsZXR0ZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEoRm9udEZlYXR1cmVTZXR0aW5ncyYm
IGZlYXR1cmVTZXR0aW5ncywgRm9udFZhcmlhdGlvblNldHRpbmdzJiYgdmFyaWF0aW9uU2V0dGlu
Z3MsIEZvbnRQYWxldHRlJiYgZm9udFBhbGV0dGUpCisgICAgICAgIDogbV9mZWF0dXJlU2V0dGlu
Z3MoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpKQorICAgICAgICAsIG1fdmFyaWF0aW9uU2V0dGlu
Z3MoV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncykpCisgICAgICAgICwgbV9mb250UGFsZXR0ZShX
VEZNb3ZlKGZvbnRQYWxldHRlKSkKKyAgICB7CisgICAgfQorCisgICAgRm9udEZlYXR1cmVTZXR0
aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKKyAgICBGb250VmFyaWF0aW9uU2V0dGluZ3MgbV92YXJp
YXRpb25TZXR0aW5nczsKKyAgICBGb250UGFsZXR0ZSBtX2ZvbnRQYWxldHRlOworfTsKKworaW5s
aW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJl
RGF0YSYga2V5KQoreworICAgIGFkZChoYXNoZXIsIGtleS5mZWF0dXJlU2V0dGluZ3MoKSwga2V5
LnZhcmlhdGlvblNldHRpbmdzKCksIGtleS5mb250UGFsZXR0ZSgpKTsKK30KKworLy8gVGhpcyBr
ZXkgY29udGFpbnMgdGhlIEZvbnREZXNjcmlwdGlvbiBmaWVsZHMgb3RoZXIgdGhhbiBmYW1pbHkg
dGhhdCBtYXR0ZXIgd2hlbiBmZXRjaGluZyBGb250RGF0YXMgKHBsYXRmb3JtIGZvbnRzKS4KK3N0
cnVjdCBGb250RGVzY3JpcHRpb25LZXkgeworICAgIEZvbnREZXNjcmlwdGlvbktleSgpID0gZGVm
YXVsdDsKKworICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6
ZSgpKQorICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVlc3QoZGVzY3JpcHRpb24uZm9udFNl
bGVjdGlvblJlcXVlc3QoKSkKKyAgICAgICAgLCBtX2ZsYWdzKG1ha2VGbGFnc0tleShkZXNjcmlw
dGlvbikpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24uc3BlY2lmaWVkTG9jYWxlKCkp
CisgICAgeworICAgICAgICBhdXRvIGZlYXR1cmVTZXR0aW5ncyA9IGRlc2NyaXB0aW9uLmZlYXR1
cmVTZXR0aW5ncygpOworICAgICAgICBhdXRvIHZhcmlhdGlvblNldHRpbmdzID0gZGVzY3JpcHRp
b24udmFyaWF0aW9uU2V0dGluZ3MoKTsKKyAgICAgICAgYXV0byBmb250UGFsZXR0ZSA9IGRlc2Ny
aXB0aW9uLmZvbnRQYWxldHRlKCk7CisgICAgICAgIGlmICghZmVhdHVyZVNldHRpbmdzLmlzRW1w
dHkoKSB8fCAhdmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpIHx8IGZvbnRQYWxldHRlLnR5cGUg
IT0gRm9udFBhbGV0dGU6OlR5cGU6Ok5vcm1hbCkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBG
b250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Y3JlYXRlKFdURk1vdmUoZmVhdHVyZVNldHRpbmdz
KSwgV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBhbGV0dGUpKTsKKyAg
ICB9CisKKyAgICBleHBsaWNpdCBGb250RGVzY3JpcHRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faXNEZWxldGVkVmFsdWUodHJ1ZSkKKyAgICB7IH0K
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNEZWxldGVkVmFsdWUgPT0gb3RoZXIubV9p
c0RlbGV0ZWRWYWx1ZQorICAgICAgICAgICAgJiYgbV9zaXplID09IG90aGVyLm1fc2l6ZQorICAg
ICAgICAgICAgJiYgbV9mb250U2VsZWN0aW9uUmVxdWVzdCA9PSBvdGhlci5tX2ZvbnRTZWxlY3Rp
b25SZXF1ZXN0CisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKKyAgICAg
ICAgICAgICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCisgICAgICAgICAgICAmJiBhcmVQ
b2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZURhdGEsIG90aGVyLm1fcmFyZURhdGEpOworICAgIH0K
KworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKwor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lzRGVs
ZXRlZFZhbHVlOyB9CisKKyAgICBmcmllbmQgdm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgRm9udERl
c2NyaXB0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8dW5zaWdu
ZWQsIDI+IG1ha2VGbGFnc0tleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24uc2NyaXB0KCkpIDw8IDE1CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkZXNjcmlwdGlvbi5zaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2luZygpKSA8PCAx
NAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uc2hvdWxk
QWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkgPDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmZvbnRTdHlsZUF4aXMoKSA9PSBGb250U3R5bGVBeGlz
OjpzbG50KSA8PCAxMgorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3Jp
cHRpb24ub3B0aWNhbFNpemluZygpKSA8PCAxMQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSkgPDwgOQorICAgICAgICAg
ICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uZm9udFN5bnRoZXNpcygpKSA8
PCA2CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi53aWR0
aFZhcmlhbnQoKSkgPDwgNAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24ubm9uQ0pLR2x5cGhPcmllbnRhdGlvbigpKSA8PCAzCisgICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKSA8PCAyCisgICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZW5kZXJpbmdNb2Rl
KCkpOworICAgICAgICB1bnNpZ25lZCBzZWNvbmQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24udmFyaWFudEVhc3RBc2lhblJ1YnkoKSkgPDwgMjcKKyAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgpKSA8
PCAyNQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFy
aWFudEVhc3RBc2lhblZhcmlhbnQoKSkgPDwgMjIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRBbHRlcm5hdGVzKCkpIDw8IDIxCisgICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY1Ns
YXNoZWRaZXJvKCkpIDw8IDIwCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY09yZGluYWwoKSkgPDwgMTkKKyAgICAgICAgICAgIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljRnJhY3Rpb24o
KSkgPDwgMTcKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9u
LnZhcmlhbnROdW1lcmljU3BhY2luZygpKSA8PCAxNQorICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGaWd1cmUoKSkgPDwgMTMKKyAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRDYXBz
KCkpIDw8IDEwCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlv
bi52YXJpYW50UG9zaXRpb24oKSkgPDwgOAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIDw8IDYKKyAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRIaXN0
b3JpY2FsTGlnYXR1cmVzKCkpIDw8IDQKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKCkpIDw8IDIKKyAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRDb21t
b25MaWdhdHVyZXMoKSk7CisgICAgICAgIHJldHVybiB7IHsgZmlyc3QsIHNlY29uZCB9IH07Cisg
ICAgfQorCisgICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsKKyAgICB1bnNpZ25l
ZCBtX3NpemUgeyAwIH07CisgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0aW9u
UmVxdWVzdDsKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtX2ZsYWdzIHsgeyAwLCAwIH0g
fTsKKyAgICBBdG9tU3RyaW5nIG1fbG9jYWxlOworICAgIFJlZlB0cjxGb250RGVzY3JpcHRpb25L
ZXlSYXJlRGF0YT4gbV9yYXJlRGF0YTsKK307CisKK2lubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBrZXkpCit7CisgICAgYWRkKGhhc2hlciwg
a2V5Lm1fc2l6ZSwga2V5Lm1fZm9udFNlbGVjdGlvblJlcXVlc3QsIGtleS5tX2ZsYWdzLCBrZXku
bV9sb2NhbGUpOworICAgIGlmIChrZXkubV9yYXJlRGF0YSkKKyAgICAgICAgYWRkKGhhc2hlciwg
KmtleS5tX3JhcmVEYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERl
c2NyaXB0aW9uS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGNvbXB1dGVIYXNoKGtleSk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkmIGEs
IGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9u
dERlc2NyaXB0aW9uS2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXk+IHsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaG9sZHMgdGhlIG5hbWUgb2YgYSBmb250IGZhbWlseSwg
YW5kIGRlZmluZXMgaGFzaGluZyBhbmQgPT0gb2YgdGhpcyBuYW1lIHRvCisvLyB1c2UgdGhlIHJ1
bGVzIGZvciBmb250IGZhbWlseSBuYW1lcyBpbnN0ZWFkIG9mIHVzaW5nIHN0cmFpZ2h0IHN0cmlu
ZyBjb21wYXJpc29uLgorY2xhc3MgRm9udEZhbWlseU5hbWUgeworcHVibGljOgorICAgIEZvbnRG
YW1pbHlOYW1lKCk7CisgICAgRm9udEZhbWlseU5hbWUoY29uc3QgQXRvbVN0cmluZyYpOworICAg
IGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZygpIGNvbnN0OworICAgIGZyaWVuZCB2b2lkIGFkZChI
YXNoZXImLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOworCitwcml2YXRlOgorICAgIEF0b21TdHJp
bmcgbV9uYW1lOworfTsKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwg
Y29uc3QgRm9udEZhbWlseU5hbWUmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5
TmFtZSYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7CisKK3N0cnVjdCBGb250Q2FzY2FkZUNhY2hl
S2V5IHsKKyAgICBGb250RGVzY3JpcHRpb25LZXkgZm9udERlc2NyaXB0aW9uS2V5OyAvLyBTaGFy
ZWQgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgRm9udENhY2hlIChjYWNoaW5nIEZvbnQgb2JqZWN0cykK
KyAgICBWZWN0b3I8Rm9udEZhbWlseU5hbWUsIDM+IGZhbWlsaWVzOworICAgIHVuc2lnbmVkIGZv
bnRTZWxlY3RvcklkOworICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb247Cit9OworCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYsIGNvbnN0IEZvbnRDYXNj
YWRlQ2FjaGVLZXkmKTsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgRm9udENhc2NhZGVDYWNoZUtleSBr
ZXk7CisgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGZvbnRzOworfTsKKworc3RydWN0IEZvbnRD
YXNjYWRlQ2FjaGVLZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGb250
Q2FzY2FkZUNhY2hlS2V5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRm9udENhc2Nh
ZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikgeyByZXR1cm4gYSA9
PSBiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFp
dHMgOiBIYXNoVHJhaXRzPEZvbnRDYXNjYWRlQ2FjaGVLZXk+IHsKKyAgICBzdGF0aWMgRm9udENh
c2NhZGVDYWNoZUtleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisgICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvbnRDYXNjYWRlQ2FjaGVLZXkmIHNsb3QpIHsgbmV3
IChOb3ROdWxsLCAmc2xvdC5mb250RGVzY3JpcHRpb25LZXkpIEZvbnREZXNjcmlwdGlvbktleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5mb250RGVz
Y3JpcHRpb25LZXkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKworY2xhc3MgRm9u
dENhc2NhZGVDYWNoZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udENhc2NhZGVDYWNo
ZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRm9udENhc2Nh
ZGVDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBGb250Q2FzY2FkZUNhY2hlJiBmb3JD
dXJyZW50VGhyZWFkKCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB2b2lkIGNsZWFy
V2lkdGhDYWNoZXMoKTsKKyAgICB2b2lkIHBydW5lVW5yZWZlcmVuY2VkRW50cmllcygpOworICAg
IHZvaWQgcHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCk7CisgICAgUmVmPEZvbnRDYXNjYWRlRm9u
dHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJik7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxGb250
Q2FzY2FkZUNhY2hlS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVudHJ5Piwg
Rm9udENhc2NhZGVDYWNoZUtleUhhc2gsIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzPiBt
X2VudHJpZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="471653"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446294</attachid>
            <date>2021-12-07 22:08:32 -0800</date>
            <delta_ts>2021-12-07 23:03:41 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-233974-20211208170831.patch</filename>
            <type>text/plain</type>
            <size>63521</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI1ZDM3MjAzNGI1MWMx
NTYwMzYwYzgwZWUzMzdhZjExYmZjMDY3Ni4uNmQ3MTNlZWY4YjRlZjZlNjQ0ZDBmNGZlYzQ3ZGI1
YTRiNzcxZWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NCBAQAorMjAyMS0xMi0wMiAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgdGhlIEZv
bnRDYXNjYWRlQ2FjaGUgdG8gYSBzZXBhcmF0ZSBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5NzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb250Q2FzY2FkZUNhY2hlIGhhcyBhbHJlYWR5IGJl
ZW4gbW92ZWQgdG8gaGFuZyBvZmYgRm9udENhY2hlIGluCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4NTguIFRvIG1ha2UgRm9udENhY2hlLmgvCisg
ICAgICAgIEZvbnRDYWNoZS5jcHAgbGVzcyBidXN5LCB0aGlzIHBhdGNoIG1vdmVzIHRoZSBGb250
Q2FzY2FkZUNhY2hlIG91dCB0bworICAgICAgICBhIHNlcGFyYXRlIGZpbGUuIFRvIG1ha2UgdGhl
IGludGVyZmFjZSBvZiB0aGUgRm9udENhc2NhZGVDYWNoZSBtb3JlCisgICAgICAgIHVuZGVyc3Rh
bmRhYmxlLCB0aGlzIHBhdGNoIGFsc28gd3JhcHMgaXQgdXAgaW4gYSBjbGFzcyBhbmQgYWRkcyBz
b21lCisgICAgICAgIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCBpdC4KKworICAgICAgICAqIEhl
YWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkpOgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVB
ZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVG
b250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnVwZGF0ZUZvbnRDYXNjYWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFtaWx5TmFtZTo6Rm9udEZhbWlseU5hbWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OnN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjphZGQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3Ih
PSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6
aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmludmFsaWRhdGVG
b250Q2FzY2FkZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Y2xlYXJXaWR0aENhY2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWtlRm9udENh
c2NhZGVDYWNoZUtleSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnBy
dW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZv
bnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9udENhc2NhZGVDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Y3JlYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpmZWF0dXJlU2V0
dGluZ3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9u
S2V5UmFyZURhdGE6OnZhcmlhdGlvblNldHRpbmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpmb250UGFsZXR0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6
b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb25LZXlSYXJlRGF0YTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRE
ZXNjcmlwdGlvbktleTo6Rm9udERlc2NyaXB0aW9uS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6Om9wZXJhdG9yIT0gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Ojppc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXk6Om1ha2VGbGFnc0tleSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkRlZmF1
bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT46Omhhc2gpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+OjplcXVh
bCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6
ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhh
c2hUcmFpdHM6OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0czo6aXNEZWxl
dGVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlOYW1lOjpG
b250RmFtaWx5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5TmFtZTo6c3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZUNhY2hlOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Q2FjaGU6OmNsZWFyV2lkdGhDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVD
YWNoZTo6cHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlQ2FjaGU6OnBydW5lU3lzdGVtRmFsbGJhY2tGb250cyk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlRm9udENhc2NhZGVDYWNoZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZUNhY2hlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmguCisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb25LZXlSYXJlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlw
dGlvbktleVJhcmVEYXRhOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OnZhcmlhdGlvblNldHRpbmdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpmb250UGFsZXR0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlS
YXJlRGF0YTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6Rm9udERlc2NyaXB0
aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6Om9wZXJhdG9y
IT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Ojppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRp
b25LZXk6Om1ha2VGbGFnc0tleSk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6
OkZvbnREZXNjcmlwdGlvbktleT46Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxX
ZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+OjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0czo6aXNEZWxldGVk
VmFsdWUpOgorCisyMDIxLTEyLTAyICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSB0aGUgU3lzdGVtRmFsbGJhY2tDYWNoZSB0byBGb250Q2FjaGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpdGggT2Zm
c2NyZWVuQ2FudmFzLCB0aGUgU3lzdGVtRmFsbGJhY2tDYWNoZSBjYW4gYmUgdG91Y2hlZCBmcm9t
CisgICAgICAgIHdvcmtlciB0aHJlYWRzLiBUaGlzIGNhY2hlIGNvbnRhaW5zIEF0b21TdHJpbmdz
LCB3aGljaCBhcmUgdGhyZWFkCisgICAgICAgIHNwZWNpZmljLgorCisgICAgICAgIE1vdmUgdGhl
IFN5c3RlbUZhbGxiYWNrQ2FjaGUgY29kZSBmcm9tIGluc2lkZSBGb250Q2FjaGUuY3BwIHRvIHNl
cGFyYXRlCisgICAgICAgIGZpbGVzLCB0byBhdm9pZCBGb250Q2FjaGUuaCBmcm9tIGdldHRpbmcg
dG9vIG5vaXN5LiBBbHNvIHRha2UgdGhlCisgICAgICAgIG9wcG9ydHVuaXR5IHRvIHdyYXAgaXQg
aW4gYSBjbGFzcyB0byBnaXZlIGl0IG1lYW5pbmdmdWwgbWV0aG9kcy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpzeXN0ZW1GYWxsYmFja0NhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbUZhbGxiYWNrQ2FjaGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUZhbGxiYWNrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3lzdGVtRmFsbGJhY2tDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIE1v
dmUgU3lzdGVtRmFsbGJhY2tDYWNoZSBmcm9tIGEgc2luZ2xldG9uIHRvIEZvbnRDYWNoZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OnNldElzVXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Ojppc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGUgY29uc3QpOgorICAgICAgICBOZXcgZnVu
Y3Rpb25zIHRvIG5vdGUgYSBGb250IGlzIGluIGEgU3lzdGVtRmFsbGJhY2tDYWNoZSwgc2luY2Ug
dGhlCisgICAgICAgIG1ldGhvZCB0aGF0IGFkZHMgaXQgdG8gYW5kIGNoZWNrcyBpdHMgcHJlc2Vu
Y2UgaW4gdGhlIGNhY2hlIGlzIG5vIGxvbmdlcgorICAgICAgICBpbiBGb250LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojp+
Rm9udCk6CisgICAgICAgIENhbGwgYSBuZXcgU3lzdGVtRmFsbGJhY2tDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnJlbW92ZUZyb21TeXN0ZW1GYWxsYmFj
a0NhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0NhY2hl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1GYWxsYmFja0NhY2hlOjpzeXN0
ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRmFs
bGJhY2tDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgTW92ZSBsb29rdXAgYW5kIHJlbW92YWwgbWV0
aG9kcyBmcm9tIEZvbnQgdG8gU3lzdGVtRmFsbGJhY2tDYWNoZS4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNo
OjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckZhbGxiYWNrTWFw
S2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRmFs
bGJhY2tNYXBLZXlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzOjppc0Rl
bGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVt
RmFsbGJhY2tDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZhbGxiYWNr
Q2FjaGU6OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN5c3RlbUZhbGxiYWNrQ2FjaGU6OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5
SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1GYWxsYmFja0NhY2hlOjpDaGFy
YWN0ZXJGYWxsYmFja01hcEtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3Rl
bUZhbGxiYWNrQ2FjaGU6OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaFRyYWl0czo6Y29uc3Ry
dWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZhbGxiYWNrQ2FjaGU6
OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaFRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorICAg
ICAgICBNb3ZlIGV4aXN0aW5nIFN5c3RlbUZhbGxiYWNrQ2FjaGUgY29kZSBmcm9tIEZvbnQuY3Bw
IHRvIGEgbmV3IGZpbGUgYW5kCisgICAgICAgIHdyYXAgaXQgaW4gYSBjbGFzcy4KKwogMjAyMS0x
Mi0wNyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBleHBhbmRBcm91bmRJZGVvZ3JhcGhzIHN0YXRpYyB2YXJpYWJsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IDUxZGY1YzMwYWI5ZmRjNDU3YzhlMGRiOWQ2ZGNiYjY3YjNmNThmYjEuLjU0Yzdi
NDFlNDBjYjY2ZWJkZDhjNWNiNTU1MmFlMzJhMGQ4NjhjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpA
QCAtMTQyOCw2ICsxNDI4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRCYXNlbGluZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVDYWNoZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGVGb250cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENyZWF0aW9uQ29udGV4
dC5oCkBAIC0xNTMzLDYgKzE1MzQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9TeXN0
ZW1GYWxsYmFja0NhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGVlMDBjOTc1NDZiYWViMTc3MzYz
MzMyYjc5NDQ3ZWYxODU5MmEyNzMuLjM0OGQ4MWU3MzM1ZjkyOTExY2EwODQ4MTE5MjU0NzVlNzIz
Njc5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDEwLDYgKzIwMTAsNyBAQCBwbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlRm9udHMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCkBAIC0y
MDcwLDYgKzIwNzEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvU3lzdGVtRmFsbGJhY2tDYWNoZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzgxNWY5YzI0
NjM3NThkZDU1YWYzZDQ4OWIxNDU0NWE2N2U1YzBmYi4uM2QzNjg4MmU2NDI3NDVkOTAzN2IyYjIx
YmIyZmRkNGExNmQzMmNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxMiw2ICsxMDEyLDggQEAKIAkJMzFGQjFBNUQxMjBB
NUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUZCMUE1NTEyMEE1RDA2MDBEQzAyQTAgLyogRGV2
aWNlTW90aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFGQjFBNjYxMjBBNUQzRjAwREMwMkEwIC8qIEpT
RGV2aWNlTW90aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxRkIxQTY0MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50
LmggKi87IH07CiAJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxRUMxREFDMTRGRjI2RUEwMEM5NDY2MiAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkzMjExMkUwRjI3NEI0N0NGMDA3MDQ3QTggLyogU3lzdGVtRmFsbGJhY2tDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzI4OTlGQjkyNzRC
NDEwQzAwODU1QTlEIC8qIFN5c3RlbUZhbGxiYWNrQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMkVBRkI4RDI3NEM1RUE2MDA2NTA1NTcg
LyogRm9udENhc2NhZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNjYWRlQ2FjaGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMzUw
M0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3
RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDNDQTQxMDE3OUFENzAwM0I0N0UxIC8qIEpTTm90aWZp
Y2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzM0QwMjEyRDEzMURCMzdCMDA0
MDkxQTggLyogQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEzRjAxRUExMjcwRTEwRDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM3
Myw2ICs4Mzc1LDEwIEBACiAJCTMxRkIxQTU2MTIwQTVEMDYwMERDMDJBMCAvKiBEZXZpY2VNb3Rp
b25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGV2aWNlTW90aW9uRXZlbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUZCMUE2MzEyMEE1RDNGMDBEQzAyQTAg
LyogSlNEZXZpY2VNb3Rpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzFGQjFBNjQxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXZpY2VNb3Rpb25FdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMjg5OUZCNzI3NEI0MTBDMDA4NTVBOUQgLyog
U3lzdGVtRmFsbGJhY2tDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1GYWxsYmFj
a0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzI4OTlGQjkyNzRCNDEw
QzAwODU1QTlEIC8qIFN5c3RlbUZhbGxiYWNrQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVt
RmFsbGJhY2tDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMkQzMTA0RTI3
NEM2ODdCMDAzM0FCMkYgLyogRm9udENhc2NhZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250Q2FzY2FkZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzJF
QUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTNDNDZBN0YgLyogUmVuZGVyTWF0aE1MUGFk
ZGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFBhZGRl
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTNDNDZB
QTcgLyogUmVuZGVyTWF0aE1MU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyTWF0aE1MU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMz
RjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI4NjM2LDYgKzI4NjQyLDggQEAKIAkJCQlCMkMzREE1MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dENhY2hlLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRl
LmNwcCAqLywKIAkJCQlCMkMzREE1MDBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhc2NhZGUuaCAq
LywKKwkJCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYgLyogRm9udENhc2NhZGVDYWNoZS5jcHAg
Ki8sCisJCQkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAq
LywKIAkJCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlv
bi5jcHAgKi8sCiAJCQkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24uaCAqLywKIAkJCQlCMkMzREE1NjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhc2Nh
ZGVGb250cy5jcHAgKi8sCkBAIC0yODgxMyw2ICsyODgyMSw4IEBACiAJCQkJQjIzNTQwRjAwRDAw
NzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAw
NzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCTA4NzU1OEM0MTNCNEE1
N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKKwkJCQkz
Mjg5OUZCNzI3NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFsbGJhY2tDYWNoZS5jcHAgKi8sCisJ
CQkJMzI4OTlGQjkyNzRCNDEwQzAwODU1QTlEIC8qIFN5c3RlbUZhbGxiYWNrQ2FjaGUuaCAqLywK
IAkJCQkzQkI2QjgwRjIyQTdEMzExMDAzQTJBNjkgLyogVGFiU2l6ZS5oICovLAogCQkJCTM3NkRD
Q0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLywKIAkJCQlBODI0QjQ2NDBFMkVG
MkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oICovLApAQCAtMzQyNjQsNiArMzQyNzQsNyBAQAogCQkJ
CUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyNDU4RTYzMUZFODk3QjAwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJDM0RBNjEwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMkVBRkI4RDI3NEM1RUE2MDA2NTA1NTcgLyogRm9udENhc2Nh
ZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOEI0RjUyMTZCOTU2NTAwQjg4MzREIC8q
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTY4MEQw
MDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZUZvbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzI2NjcxQjI2RkE5MzJGMDAxMTcwNzMgLyogRm9udENyZWF0aW9uQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zNzI5Nyw2ICszNzMwOCw3IEBACiAJCQkJNTE3QTUzNDYxRjUwQzE3RjAwRENE
QzBBIC8qIFNXU2VydmVyV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTgwODExNzE2RkNG
OUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMjExMkUwRjI3NEI0N0NGMDA3MDQ3QTggLyogU3lzdGVtRmFsbGJhY2tDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOEI0RUMyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3Rl
bUZvbnREYXRhYmFzZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjAzQzA3NDE4ODQ2
OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0MwNDEz
ODI1NENCMzBEMDAyMUQwRTYgLyogU3lzdGVtU291bmREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBiYmE5NWZhM2U2NzljYWZi
MWIyOTE0ODA1N2RmMjdiY2IwNjgxMmM4Li43YjE0NTg2N2QyYzY4Zjg2YmMyYWZlMWE4MjU0ZGFm
NWUzOTI0MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KE1haW50YWluTWVt
b3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKIAogICAgIC8vIEZJWE1FOiBDbGVhciB0aGVz
ZSBmb250IGNhY2hlcyBpbiB3b3JrZXJzIHRvbz8KICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRU
aHJlYWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKLSAgICBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5jbGVhcldpZHRoQ2FjaGVzKCk7CisgICAgRm9udENhc2NhZGVDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLmNsZWFyV2lkdGhDYWNoZXMoKTsKIAogICAgIFRleHRQYWludGVyOjpj
bGVhckdseXBoRGlzcGxheUxpc3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNw
cAppbmRleCA3ZjU0ZDg3NjhjYzJmYTM2NGU1NDQxY2U4ZDQwZGE4NTYwNzljNmZiLi44YTE4Njk3
M2UwYmNkNDhhNDc4ODY3NGUxZTkyYTJkZDRmNDRmMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVBZnRl
ckdlbmVyaWNGYW1pbHlDaGFuZ2UoUGFnZSogcGFnZSkKIHsKICAgICAvLyBObyBuZWVkIHRvIGlu
dmFsaWRhdGUgRm9udENhc2NhZGVDYWNoZXMgaW4gd29ya2VyIHRocmVhZHMsIHNpbmNlIHdvcmtl
cnMKICAgICAvLyBkbyBub3QgcmVzcG9uZCB0byBjaGFuZ2VzIGluIFNldHRpbmdzIHZhbHVlcy4K
LSAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlkYXRlRm9udENhc2NhZGVD
YWNoZSgpOworICAgIEZvbnRDYXNjYWRlQ2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlk
YXRlKCk7CiAKICAgICBpZiAocGFnZSkKICAgICAgICAgcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHls
ZUluQWxsRnJhbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CmluZGV4IDRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2ZiYWYyMWY1NzAuLjQwZjRiZjRh
NWNjZWQwMjljMDhmMjgyZjYyYjY2Y2MyZGJmM2E4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBGb250OjpwbGF0
Zm9ybUdseXBoSW5pdCgpCiAKIEZvbnQ6On5Gb250KCkKIHsKLSAgICByZW1vdmVGcm9tU3lzdGVt
RmFsbGJhY2tDYWNoZSgpOworICAgIFN5c3RlbUZhbGxiYWNrQ2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS5yZW1vdmUodGhpcyk7CiB9CiAKIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBGb250
OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdApAQCAtNTU2LDgzICs1NTYsOSBA
QCBHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBib29sLAogfQogI2VuZGlmCiAKLXN0cnVjdCBDaGFyYWN0ZXJG
YWxsYmFja01hcEtleSB7Ci0gICAgQXRvbVN0cmluZyBsb2NhbGU7Ci0gICAgVUNoYXIzMiBjaGFy
YWN0ZXIgeyAwIH07Ci0gICAgYm9vbCBpc0ZvclBsYXRmb3JtRm9udCB7IGZhbHNlIH07Ci19Owot
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBh
LCBjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYgYikKLXsKLSAgICByZXR1cm4gYS5sb2Nh
bGUgPT0gYi5sb2NhbGUgJiYgYS5jaGFyYWN0ZXIgPT0gYi5jaGFyYWN0ZXIgJiYgYS5pc0ZvclBs
YXRmb3JtRm9udCA9PSBiLmlzRm9yUGxhdGZvcm1Gb250OwotfQotCi1zdHJ1Y3QgQ2hhcmFjdGVy
RmFsbGJhY2tNYXBLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDaGFy
YWN0ZXJGYWxsYmFja01hcEtleSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkubG9jYWxl
LCBrZXkuY2hhcmFjdGVyLCBrZXkuaXNGb3JQbGF0Zm9ybUZvbnQpOyB9Ci0gICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGEsIGNvbnN0IENoYXJhY3Rl
ckZhbGxiYWNrTWFwS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi1zdHJ1Y3Qg
Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PENoYXJhY3RlckZhbGxiYWNrTWFwS2V5PiB7Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwg
JnNsb3QpIENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsgeyB9LCBVX1NFTlRJTkVMLCB7IH0gfTsg
fQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IENoYXJhY3RlckZhbGxiYWNr
TWFwS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5jaGFyYWN0ZXIgPT0gVV9TRU5USU5FTDsgfQotfTsK
LQotLy8gRm9udHMgYXJlIG5vdCByZWYnZCB0byBhdm9pZCBjeWNsZXMuCi0vLyBGSVhNRTogQ29u
c2lkZXIgY2hhbmdpbmcgdGhlc2UgbWFwcyB0byB1c2UgV2Vha1B0ciBpbnN0ZWFkIG9mIHJhdyBw
b2ludGVycy4KLXVzaW5nIENoYXJhY3RlckZhbGxiYWNrTWFwID0gSGFzaE1hcDxDaGFyYWN0ZXJG
YWxsYmFja01hcEtleSwgRm9udCosIENoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaCwgQ2hhcmFj
dGVyRmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzPjsKLXVzaW5nIFN5c3RlbUZhbGxiYWNrQ2FjaGUg
PSBIYXNoTWFwPGNvbnN0IEZvbnQqLCBDaGFyYWN0ZXJGYWxsYmFja01hcD47Ci0KLXN0YXRpYyBT
eXN0ZW1GYWxsYmFja0NhY2hlJiBzeXN0ZW1GYWxsYmFja0NhY2hlKCkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRmFsbGJhY2tDYWNoZT4gbWFwOwotICAgIHJldHVybiBtYXAu
Z2V0KCk7Ci19Ci0KIFJlZlB0cjxGb250PiBGb250OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFy
YWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIElzRm9yUGxhdGZvcm1Gb250IGlzRm9yUGxhdGZvcm1Gb250KSBjb25zdAogewotICAgIGF1
dG8gZm9udEFkZFJlc3VsdCA9IHN5c3RlbUZhbGxiYWNrQ2FjaGUoKS5hZGQodGhpcywgQ2hhcmFj
dGVyRmFsbGJhY2tNYXAoKSk7Ci0KLSAgICBpZiAoIWNoYXJhY3RlcikgewotICAgICAgICBVQ2hh
ciBjb2RlVW5pdCA9IDA7Ci0gICAgICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9y
UGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgJmNvZGVVbml0
LCAxKTsKLSAgICB9Ci0KLSAgICBhdXRvIGtleSA9IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsg
ZGVzY3JpcHRpb24uY29tcHV0ZWRMb2NhbGUoKSwgY2hhcmFjdGVyLCBpc0ZvclBsYXRmb3JtRm9u
dCAhPSBJc0ZvclBsYXRmb3JtRm9udDo6Tm8gfTsKLSAgICByZXR1cm4gZm9udEFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZW5zdXJlKFdURk1vdmUoa2V5KSwgWyZdIHsKLSAgICAgICAgVUNoYXIg
Y29kZVVuaXRzWzJdOwotICAgICAgICB1bnNpZ25lZCBjb2RlVW5pdHNMZW5ndGg7Ci0gICAgICAg
IGlmIChVX0lTX0JNUChjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBjb2RlVW5pdHNbMF0gPSBG
b250Q2FzY2FkZTo6bm9ybWFsaXplU3BhY2VzKGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBjb2Rl
VW5pdHNMZW5ndGggPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29kZVVuaXRz
WzBdID0gVTE2X0xFQUQoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGNvZGVVbml0c1sxXSA9IFUx
Nl9UUkFJTChjaGFyYWN0ZXIpOwotICAgICAgICAgICAgY29kZVVuaXRzTGVuZ3RoID0gMjsKLSAg
ICAgICAgfQotICAgICAgICBhdXRvIGZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxh
dGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgY29kZVVuaXRzLCBj
b2RlVW5pdHNMZW5ndGgpLmdldCgpOwotICAgICAgICBpZiAoZm9udCkKLSAgICAgICAgICAgIGZv
bnQtPm1faXNVc2VkSW5TeXN0ZW1GYWxsYmFja0NhY2hlID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IGZvbnQ7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIEZvbnQ6OnJlbW92ZUZy
b21TeXN0ZW1GYWxsYmFja0NhY2hlKCkKLXsKLSAgICBzeXN0ZW1GYWxsYmFja0NhY2hlKCkucmVt
b3ZlKHRoaXMpOwotCi0gICAgaWYgKCFtX2lzVXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBjaGFyYWN0ZXJNYXAgOiBzeXN0ZW1GYWxs
YmFja0NhY2hlKCkudmFsdWVzKCkpIHsKLSAgICAgICAgVmVjdG9yPENoYXJhY3RlckZhbGxiYWNr
TWFwS2V5LCA1MTI+IHRvUmVtb3ZlOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2hhcmFj
dGVyTWFwKSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykKLSAgICAgICAg
ICAgICAgICB0b1JlbW92ZS5hcHBlbmQoZW50cnkua2V5KTsKLSAgICAgICAgfQotICAgICAgICBm
b3IgKGF1dG8mIGtleSA6IHRvUmVtb3ZlKQotICAgICAgICAgICAgY2hhcmFjdGVyTWFwLnJlbW92
ZShrZXkpOwotICAgIH0KKyAgICByZXR1cm4gU3lzdGVtRmFsbGJhY2tDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCgpLnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3Rlcih0aGlzLCBjaGFyYWN0ZXIs
IGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09D
T0EpICYmICFVU0UoRlJFRVRZUEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKaW5kZXggNzQ0MjAwNGYwMGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2NmNzg1MTRjZC4uNmJmNmYz
MDNiM2NiZmRiNWM5NGFiYzJmOWQ2MDBmYzRmMDUwMWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMjA1LDYgKzIwNSw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgZmxvYXQgYXNjZW50Q29uc2lkZXJpbmdNYWNBc2NlbnRIYWNrKGNvbnN0IFdDSEFSKiwgZmxv
YXQgYXNjZW50LCBmbG9hdCBkZXNjZW50KTsKICNlbmRpZgogCisgICAgdm9pZCBzZXRJc1VzZWRJ
blN5c3RlbUZhbGxiYWNrQ2FjaGUoKSB7IG1faXNVc2VkSW5TeXN0ZW1GYWxsYmFja0NhY2hlID0g
dHJ1ZTsgfQorICAgIGJvb2wgaXNVc2VkSW5TeXN0ZW1GYWxsYmFja0NhY2hlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGU7IH0KKwogcHJpdmF0ZToKICAgICBX
RUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVy
c3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+KTsKIApAQCAtMjE5LDggKzIyMiw2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPEZvbnQ+IGNyZWF0ZVNjYWxlZEZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0OwogICAgIFJlZlB0cjxGb250PiBwbGF0Zm9y
bUNyZWF0ZVNjYWxlZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2NhbGVGYWN0
b3IpIGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVGcm9tU3lzdGVtRmFsbGJhY2tDYWNoZSgpOwot
ICAgIAogICAgIHN0cnVjdCBEZXJpdmVkRm9udHM7CiAgICAgRGVyaXZlZEZvbnRzJiBlbnN1cmVE
ZXJpdmVkRm9udERhdGEoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggYjI1ZTdkZmI5N2ExMDI5OTdiMGZhZTMzZDc1Mzgx
NWY4OWEzMDNlZC4uN2VmZWY5NzIxMDFjY2U2ZTQ3NjRhYjVkYzk4ZTE4MDNjZGFhNzM4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC01
MSwzNSArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZvbnRGYW1pbHlOYW1lOjpG
b250RmFtaWx5TmFtZSgpID0gZGVmYXVsdDsKLQotaW5saW5lIEZvbnRGYW1pbHlOYW1lOjpGb250
RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQotICAgIDogbV9uYW1lIHsgbmFtZSB9
Ci17Ci19Ci0KLWlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBGb250RmFtaWx5TmFtZTo6c3RyaW5n
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uYW1lOwotfQotCi1pbmxpbmUgdm9pZCBhZGQoSGFz
aGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBuYW1lKQotewotICAgIC8vIEZJWE1F
OiBXb3VsZCBiZSBiZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgbmFtZSBpbnN0
ZWFkIG9mIGhhc2hpbmcgYSBoYXNoLgotICAgIGlmICghbmFtZS5zdHJpbmcoKS5pc051bGwoKSkK
LSAgICAgICAgYWRkKGhhc2hlciwgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZmFtaWx5TmFtZUhh
c2gobmFtZS5zdHJpbmcoKSkpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZv
bnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikKLXsKLSAgICByZXR1cm4g
KGEuc3RyaW5nKCkuaXNOdWxsKCkgfHwgYi5zdHJpbmcoKS5pc051bGwoKSkgPyBhLnN0cmluZygp
ID09IGIuc3RyaW5nKCkgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVx
dWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCiBzdHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5
IHsKICAgICBGb250RGVzY3JpcHRpb25LZXkgZGVzY3JpcHRpb25LZXk7CiAgICAgRm9udEZhbWls
eU5hbWUgZmFtaWx5OwpAQCAtMzEwLDggKzI4MSw4IEBAIHZvaWQgRm9udENhY2hlOjpwdXJnZUlu
YWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKIHsKICAgICBMT0coRm9udHMsICJG
b250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSgldSkiLCBwdXJnZUNvdW50KTsKIAotICAg
IHBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hlKCk7Ci0gICAgcHJ1
bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCk7CisgICAgbV9mb250Q2FzY2FkZUNhY2hlLnBydW5lVW5y
ZWZlcmVuY2VkRW50cmllcygpOworICAgIG1fZm9udENhc2NhZGVDYWNoZS5wcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZm9udExvY2sgfTsKQEAgLTM1NCwzMCArMzI1LDYgQEAgdm9pZCBGb250Q2FjaGU6
OnB1cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNvdW50KQogICAgIHBsYXRmb3Jt
UHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250
Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBiKQotewotICAg
IHJldHVybiBhLmZvbnREZXNjcmlwdGlvbktleSA9PSBiLmZvbnREZXNjcmlwdGlvbktleQotICAg
ICAgICAmJiBhLmZvbnRTZWxlY3RvcklkID09IGIuZm9udFNlbGVjdG9ySWQKLSAgICAgICAgJiYg
YS5mb250U2VsZWN0b3JWZXJzaW9uID09IGIuZm9udFNlbGVjdG9yVmVyc2lvbgotICAgICAgICAm
JiBhLmZhbWlsaWVzID09IGIuZmFtaWxpZXM7Ci19Ci0KLXVuc2lnbmVkIEZvbnRDYXNjYWRlQ2Fj
aGVLZXlIYXNoOjpoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkKLXsKLSAgICBy
ZXR1cm4gY29tcHV0ZUhhc2goa2V5LmZvbnREZXNjcmlwdGlvbktleSwga2V5LmZvbnRTZWxlY3Rv
cklkLCBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbiwga2V5LmZhbWlsaWVzKTsKLX0KLQotdm9pZCBG
b250Q2FjaGU6OmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCkKLXsKLSAgICBtX2ZvbnRDYXNj
YWRlQ2FjaGUuY2xlYXIoKTsKLX0KLQotdm9pZCBGb250Q2FjaGU6OmNsZWFyV2lkdGhDYWNoZXMo
KQotewotICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX2ZvbnRDYXNjYWRlQ2FjaGUudmFsdWVzKCkp
Ci0gICAgICAgIHZhbHVlLT5mb250cy5nZXQoKS53aWR0aENhY2hlKCkuY2xlYXIoKTsKLX0KLQog
I2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0
YT4gRm9udENhY2hlOjp2ZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhKQogewpAQCAtMzg4LDU4ICszMzUsOSBAQCBSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERh
dGE+IEZvbnRDYWNoZTo6dmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYQog
fQogI2VuZGlmCiAKLXN0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNh
Y2hlS2V5KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBGb250U2Vs
ZWN0b3IqIGZvbnRTZWxlY3RvcikKLXsKLSAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKLSAg
ICBrZXkuZm9udERlc2NyaXB0aW9uS2V5ID0gRm9udERlc2NyaXB0aW9uS2V5KGRlc2NyaXB0aW9u
KTsKLSAgICB1bnNpZ25lZCBmYW1pbHlDb3VudCA9IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7
Ci0gICAga2V5LmZhbWlsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmFtaWx5Q291bnQpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudDsgKytpKQotICAgICAgICBr
ZXkuZmFtaWxpZXMudW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0aW9uLmZhbWlseUF0KGkpKTsKLSAg
ICBrZXkuZm9udFNlbGVjdG9ySWQgPSBmb250U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPnVuaXF1
ZUlkKCkgOiAwOwotICAgIGtleS5mb250U2VsZWN0b3JWZXJzaW9uID0gZm9udFNlbGVjdG9yID8g
Zm9udFNlbGVjdG9yLT52ZXJzaW9uKCkgOiAwOwotICAgIHJldHVybiBrZXk7Ci19Ci0KLXZvaWQg
Rm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgp
Ci17Ci0gICAgbV9mb250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7Ci0g
ICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS0+Zm9udHMuZ2V0KCkuaGFzT25lUmVmKCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKQotewot
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2ZvbnRDYXNjYWRlQ2FjaGUudmFsdWVzKCkpCi0gICAg
ICAgIGVudHJ5LT5mb250cy0+cHJ1bmVTeXN0ZW1GYWxsYmFja3MoKTsKLX0KLQotUmVmPEZvbnRD
YXNjYWRlRm9udHM+IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRyPEZvbnRTZWxlY3Rv
cj4mJiBmb250U2VsZWN0b3IpCi17Ci0gICAgYXV0byBrZXkgPSBtYWtlRm9udENhc2NhZGVDYWNo
ZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQoKSk7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2ZvbnRDYXNjYWRlQ2FjaGUuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPmZvbnRzLmdldCgpOwotCi0gICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOwotICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hl
RW50cnk+KEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7IFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVG
b250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkgfSk7Ci0gICAgUmVmPEZvbnRDYXNj
YWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKLQotICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCA9IDUwOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IG1heGltdW1FbnRyaWVzID0gNDAwOwotICAgIHN0YXRpYyB1bnNp
Z25lZCBwcnVuZUNvdW50ZXI7Ci0gICAgLy8gUmVmZXJlbmNlZCBGb250Q2FzY2FkZUZvbnRzIHdv
dWxkIGV4aXN0IGFueXdheSBzbyBwcnVuaW5nIHRoZW0gc2F2ZXMgbGl0dGxlIG1lbW9yeS4KLSAg
ICBpZiAoISgrK3BydW5lQ291bnRlciAlIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwpKQotICAg
ICAgICBwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpOwotICAg
IC8vIFByZXZlbnQgcGF0aG9sb2dpY2FsIGdyb3d0aC4KLSAgICBpZiAobV9mb250Q2FzY2FkZUNh
Y2hlLnNpemUoKSA+IG1heGltdW1FbnRyaWVzKQotICAgICAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUu
cmVtb3ZlKG1fZm9udENhc2NhZGVDYWNoZS5yYW5kb20oKSk7Ci0gICAgcmV0dXJuIGdseXBoczsK
LX0KLQogdm9pZCBGb250Q2FjaGU6OnVwZGF0ZUZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250Q2FzY2FkZSwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7Ci0g
ICAgZm9udENhc2NhZGUudXBkYXRlRm9udHMocmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZvbnRD
YXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAgICBm
b250Q2FzY2FkZS51cGRhdGVGb250cyhtX2ZvbnRDYXNjYWRlQ2FjaGUucmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRTZWxl
Y3RvcikpKTsKIH0KIAogc2l6ZV90IEZvbnRDYWNoZTo6Zm9udENvdW50KCkKQEAgLTQ3OSw3ICsz
NzcsNyBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAjaWYgRU5BQkxFKE9QRU5UWVBF
X1ZFUlRJQ0FMKQogICAgIG1fZm9udERhdGFDYWNoZXMtPnZlcnRpY2FsRGF0YS5jbGVhcigpOwog
I2VuZGlmCi0gICAgaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKKyAgICBtX2ZvbnRDYXNj
YWRlQ2FjaGUuaW52YWxpZGF0ZSgpOwogCiAgICAgKyttX2dlbmVyYXRpb247CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggNzZiYjlmM2JiYjUx
NGIwMTQ1YjdhOWUxNzQ3NzNjNTM0NzEzNWZhOS4uODY4YTY5MGVlNmFjNzc2ZmVhNGIzM2UyMjU3
MjFlNDI4YjU5OTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmgKQEAgLTI5LDEyICsyOSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkZvbnRDYXNjYWRlRm9udHMuaCIKKyNpbmNsdWRlICJGb250Q2FzY2FkZUNhY2hlLmgiCiAjaW5j
bHVkZSAiRm9udENyZWF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5o
IgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJGb250VGFnZ2VkU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTeXN0ZW1GYWxs
YmFja0NhY2hlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDxsaW1pdHMuaD4KQEAgLTgyLDIwNCArODMsNiBAQCB1c2luZyBJTUxhbmdGb250TGlua1R5
cGUgPSBJTUxhbmdGb250TGluazI7CiB1c2luZyBJTUxhbmdGb250TGlua1R5cGUgPSBJTUxhbmdG
b250TGluazsKICNlbmRpZgogCi1zdHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8Rm9udERlc2NyaXB0
aW9uS2V5UmFyZURhdGE+IGNyZWF0ZShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRp
bmdzLCBGb250VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0
dGUmJiBmb250UGFsZXR0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZv
bnREZXNjcmlwdGlvbktleVJhcmVEYXRhKFdURk1vdmUoZmVhdHVyZVNldHRpbmdzKSwgV1RGTW92
ZSh2YXJpYXRpb25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBhbGV0dGUpKSk7Ci0gICAgfQotCi0g
ICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2ZlYXR1cmVTZXR0aW5nczsKLSAgICB9Ci0KLSAgICBjb25z
dCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3ZhcmlhdGlvblNldHRpbmdzOwotICAgIH0KLQotICAgIGNvbnN0
IEZvbnRQYWxldHRlJiBmb250UGFsZXR0ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9mb250UGFsZXR0ZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udERl
c2NyaXB0aW9uS2V5UmFyZURhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRpbmdzCi0gICAgICAgICAg
ICAmJiBtX3ZhcmlhdGlvblNldHRpbmdzID09IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKLSAg
ICAgICAgICAgICYmIG1fZm9udFBhbGV0dGUgPT0gb3RoZXIubV9mb250UGFsZXR0ZTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEoRm9udEZlYXR1cmVT
ZXR0aW5ncyYmIGZlYXR1cmVTZXR0aW5ncywgRm9udFZhcmlhdGlvblNldHRpbmdzJiYgdmFyaWF0
aW9uU2V0dGluZ3MsIEZvbnRQYWxldHRlJiYgZm9udFBhbGV0dGUpCi0gICAgICAgIDogbV9mZWF0
dXJlU2V0dGluZ3MoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpKQotICAgICAgICAsIG1fdmFyaWF0
aW9uU2V0dGluZ3MoV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncykpCi0gICAgICAgICwgbV9mb250
UGFsZXR0ZShXVEZNb3ZlKGZvbnRQYWxldHRlKSkKLSAgICB7Ci0gICAgfQotCi0gICAgRm9udEZl
YXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKLSAgICBGb250VmFyaWF0aW9uU2V0dGlu
Z3MgbV92YXJpYXRpb25TZXR0aW5nczsKLSAgICBGb250UGFsZXR0ZSBtX2ZvbnRQYWxldHRlOwot
fTsKLQotaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250RGVzY3JpcHRp
b25LZXlSYXJlRGF0YSYga2V5KQotewotICAgIGFkZChoYXNoZXIsIGtleS5mZWF0dXJlU2V0dGlu
Z3MoKSwga2V5LnZhcmlhdGlvblNldHRpbmdzKCksIGtleS5mb250UGFsZXR0ZSgpKTsKLX0KLQot
Ly8gVGhpcyBrZXkgY29udGFpbnMgdGhlIEZvbnREZXNjcmlwdGlvbiBmaWVsZHMgb3RoZXIgdGhh
biBmYW1pbHkgdGhhdCBtYXR0ZXIgd2hlbiBmZXRjaGluZyBGb250RGF0YXMgKHBsYXRmb3JtIGZv
bnRzKS4KLXN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewotICAgIEZvbnREZXNjcmlwdGlvbktl
eSgpID0gZGVmYXVsdDsKLQotICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpKQotICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVlc3QoZGVzY3JpcHRp
b24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKLSAgICAgICAgLCBtX2ZsYWdzKG1ha2VGbGFnc0tl
eShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24uc3BlY2lmaWVk
TG9jYWxlKCkpCi0gICAgewotICAgICAgICBhdXRvIGZlYXR1cmVTZXR0aW5ncyA9IGRlc2NyaXB0
aW9uLmZlYXR1cmVTZXR0aW5ncygpOwotICAgICAgICBhdXRvIHZhcmlhdGlvblNldHRpbmdzID0g
ZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKTsKLSAgICAgICAgYXV0byBmb250UGFsZXR0
ZSA9IGRlc2NyaXB0aW9uLmZvbnRQYWxldHRlKCk7Ci0gICAgICAgIGlmICghZmVhdHVyZVNldHRp
bmdzLmlzRW1wdHkoKSB8fCAhdmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpIHx8IGZvbnRQYWxl
dHRlLnR5cGUgIT0gRm9udFBhbGV0dGU6OlR5cGU6Ok5vcm1hbCkKLSAgICAgICAgICAgIG1fcmFy
ZURhdGEgPSBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Y3JlYXRlKFdURk1vdmUoZmVhdHVy
ZVNldHRpbmdzKSwgV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBhbGV0
dGUpKTsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBGb250RGVzY3JpcHRpb25LZXkoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1faXNEZWxldGVkVmFsdWUodHJ1ZSkK
LSAgICB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXkm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNEZWxldGVkVmFsdWUgPT0g
b3RoZXIubV9pc0RlbGV0ZWRWYWx1ZQotICAgICAgICAgICAgJiYgbV9zaXplID09IG90aGVyLm1f
c2l6ZQotICAgICAgICAgICAgJiYgbV9mb250U2VsZWN0aW9uUmVxdWVzdCA9PSBvdGhlci5tX2Zv
bnRTZWxlY3Rpb25SZXF1ZXN0Ci0gICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxh
Z3MKLSAgICAgICAgICAgICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCi0gICAgICAgICAg
ICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZURhdGEsIG90aGVyLm1fcmFyZURhdGEp
OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RGVzY3JpcHRpb25LZXkm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2lzRGVsZXRlZFZhbHVlOyB9Ci0KLSAgICBmcmllbmQgdm9pZCBhZGQoSGFzaGVyJiwgY29u
c3QgRm9udERlc2NyaXB0aW9uS2V5Jik7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6YXJy
YXk8dW5zaWduZWQsIDI+IG1ha2VGbGFnc0tleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24uc2NyaXB0KCkpIDw8IDE1Ci0gICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2lu
ZygpKSA8PCAxNAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24uc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkgPDwgMTMKLSAgICAgICAgICAgIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmZvbnRTdHlsZUF4aXMoKSA9PSBGb250
U3R5bGVBeGlzOjpzbG50KSA8PCAxMgotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVzY3JpcHRpb24ub3B0aWNhbFNpemluZygpKSA8PCAxMQotICAgICAgICAgICAgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSkgPDwgOQot
ICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uZm9udFN5bnRo
ZXNpcygpKSA8PCA2Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi53aWR0aFZhcmlhbnQoKSkgPDwgNAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24ubm9uQ0pLR2x5cGhPcmllbnRhdGlvbigpKSA8PCAzCi0gICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKSA8
PCAyCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZW5k
ZXJpbmdNb2RlKCkpOwotICAgICAgICB1bnNpZ25lZCBzZWNvbmQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhblJ1YnkoKSkgPDwgMjcKLSAgICAgICAg
ICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRFYXN0QXNpYW5X
aWR0aCgpKSA8PCAyNQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3Jp
cHRpb24udmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgPDwgMjIKLSAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRBbHRlcm5hdGVzKCkpIDw8IDIx
Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50
TnVtZXJpY1NsYXNoZWRaZXJvKCkpIDw8IDIwCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY09yZGluYWwoKSkgPDwgMTkKLSAgICAg
ICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmlj
RnJhY3Rpb24oKSkgPDwgMTcKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
c2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU3BhY2luZygpKSA8PCAxNQotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGaWd1cmUoKSkg
PDwgMTMKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZh
cmlhbnRDYXBzKCkpIDw8IDEwCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXNjcmlwdGlvbi52YXJpYW50UG9zaXRpb24oKSkgPDwgOAotICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkp
IDw8IDYKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZh
cmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIDw8IDQKLSAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKCkp
IDw8IDIKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZh
cmlhbnRDb21tb25MaWdhdHVyZXMoKSk7Ci0gICAgICAgIHJldHVybiB7eyBmaXJzdCwgc2Vjb25k
IH19OwotICAgIH0KLQotICAgIGJvb2wgbV9pc0RlbGV0ZWRWYWx1ZSB7IGZhbHNlIH07Ci0gICAg
dW5zaWduZWQgbV9zaXplIHsgMCB9OwotICAgIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IG1fZm9udFNl
bGVjdGlvblJlcXVlc3Q7Ci0gICAgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbV9mbGFncyB7eyAw
LCAwIH19OwotICAgIEF0b21TdHJpbmcgbV9sb2NhbGU7Ci0gICAgUmVmUHRyPEZvbnREZXNjcmlw
dGlvbktleVJhcmVEYXRhPiBtX3JhcmVEYXRhOwotfTsKLQotaW5saW5lIHZvaWQgYWRkKEhhc2hl
ciYgaGFzaGVyLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIGtleSkKLXsKLSAgICBhZGQoaGFz
aGVyLCBrZXkubV9zaXplLCBrZXkubV9mb250U2VsZWN0aW9uUmVxdWVzdCwga2V5Lm1fZmxhZ3Ms
IGtleS5tX2xvY2FsZSk7Ci0gICAgaWYgKGtleS5tX3JhcmVEYXRhKQotICAgICAgICBhZGQoaGFz
aGVyLCAqa2V5Lm1fcmFyZURhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpG
b250RGVzY3JpcHRpb25LZXk+IHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJD
b3JlOjpGb250RGVzY3JpcHRpb25LZXkmIGtleSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5KTsg
fQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eSYgYSwgY29uc3QgV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5JiBiKSB7IHJldHVybiBhID09
IGI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpGb250RGVzY3JpcHRpb25LZXk+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZv
bnREZXNjcmlwdGlvbktleT4gewotfTsKLQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8v
IFRoaXMgY2xhc3MgaG9sZHMgdGhlIG5hbWUgb2YgYSBmb250IGZhbWlseSwgYW5kIGRlZmluZXMg
aGFzaGluZyBhbmQgPT0gb2YgdGhpcyBuYW1lIHRvCi0vLyB1c2UgdGhlIHJ1bGVzIGZvciBmb250
IGZhbWlseSBuYW1lcyBpbnN0ZWFkIG9mIHVzaW5nIHN0cmFpZ2h0IHN0cmluZyBjb21wYXJpc29u
LgotY2xhc3MgRm9udEZhbWlseU5hbWUgewotcHVibGljOgotICAgIEZvbnRGYW1pbHlOYW1lKCk7
Ci0gICAgRm9udEZhbWlseU5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwotICAgIGNvbnN0IEF0b21T
dHJpbmcmIHN0cmluZygpIGNvbnN0OwotICAgIGZyaWVuZCB2b2lkIGFkZChIYXNoZXImLCBjb25z
dCBGb250RmFtaWx5TmFtZSYpOwotCi1wcml2YXRlOgotICAgIEF0b21TdHJpbmcgbV9uYW1lOwot
fTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3QgRm9udEZh
bWlseU5hbWUmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5TmFtZSYsIGNvbnN0
IEZvbnRGYW1pbHlOYW1lJik7Ci0KLXN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5IHsKLSAgICBG
b250RGVzY3JpcHRpb25LZXkgZm9udERlc2NyaXB0aW9uS2V5OyAvLyBTaGFyZWQgd2l0aCB0aGUg
bG93ZXIgbGV2ZWwgRm9udENhY2hlIChjYWNoaW5nIEZvbnQgb2JqZWN0cykKLSAgICBWZWN0b3I8
Rm9udEZhbWlseU5hbWUsIDM+IGZhbWlsaWVzOwotICAgIHVuc2lnbmVkIGZvbnRTZWxlY3Rvcklk
OwotICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb247Ci19OwotCi1ib29sIG9wZXJhdG9y
PT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkm
KTsKLQotc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7Ci0gICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwotCi0gICAgRm9udENhc2NhZGVDYWNoZUtleSBrZXk7Ci0gICAgUmVm
PEZvbnRDYXNjYWRlRm9udHM+IGZvbnRzOwotfTsKLQotc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVL
ZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hl
S2V5Jik7Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYg
YSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7Ci19OwotCi1zdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHMgOiBIYXNoVHJh
aXRzPEZvbnRDYXNjYWRlQ2FjaGVLZXk+IHsKLSAgICBzdGF0aWMgRm9udENhc2NhZGVDYWNoZUtl
eSBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKEZvbnRDYXNjYWRlQ2FjaGVLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAm
c2xvdC5mb250RGVzY3JpcHRpb25LZXkpIEZvbnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBG
b250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5mb250RGVzY3JpcHRpb25LZXku
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotfTsKLQotdXNpbmcgRm9udENhc2NhZGVDYWNo
ZSA9IEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYXNj
YWRlQ2FjaGVFbnRyeT4sIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoLCBGb250Q2FzY2FkZUNhY2hl
S2V5SGFzaFRyYWl0cz47Ci0KIGNsYXNzIEZvbnRDYWNoZSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRm9udENhY2hlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0z
MzAsOCArMTMzLDYgQEAgcHVibGljOgogICAgIHZvaWQgcGxhdGZvcm1QdXJnZUluYWN0aXZlRm9u
dERhdGEoKTsKIAogICAgIHZvaWQgdXBkYXRlRm9udENhc2NhZGUoY29uc3QgRm9udENhc2NhZGUm
LCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKTsKLSAgICB2b2lkIGludmFsaWRhdGVGb250Q2FzY2Fk
ZUNhY2hlKCk7Ci0gICAgdm9pZCBjbGVhcldpZHRoQ2FjaGVzKCk7CiAKICNpZiBQTEFURk9STShX
SU4pCiAgICAgUmVmUHRyPEZvbnQ+IGZvbnRGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IExPR0ZPTlQmLCBTdHJpbmcmIG91dEZvbnRGYW1pbHlO
YW1lKTsKQEAgLTM2MCwxMSArMTYxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXdhcm0oY29u
c3QgUHJld2FybUluZm9ybWF0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgcHJld2FybUdsb2JhbGx5
KCk7CiAKKyAgICBGb250Q2FzY2FkZUNhY2hlJiBmb250Q2FzY2FkZUNhY2hlKCkgeyByZXR1cm4g
bV9mb250Q2FzY2FkZUNhY2hlOyB9CisgICAgU3lzdGVtRmFsbGJhY2tDYWNoZSYgc3lzdGVtRmFs
bGJhY2tDYWNoZSgpIHsgcmV0dXJuIG1fc3lzdGVtRmFsbGJhY2tDYWNoZTsgfQorCiBwcml2YXRl
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhSWZOZWVkZWQo
KTsKLSAgICB2b2lkIHBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hl
KCk7Ci0gICAgdm9pZCBwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKLSAgICBSZWY8Rm9udENh
c2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKTsKIAogICAgIEZvbnRQbGF0Zm9ybURh
dGEqIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3Qg
U3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmID0geyB9LCBib29sIGNo
ZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNlKTsKIApAQCAtMzg2LDYgKzE4Nyw3IEBAIHByaXZh
dGU6CiAgICAgc3RydWN0IEZvbnREYXRhQ2FjaGVzOwogICAgIFVuaXF1ZVJlZjxGb250RGF0YUNh
Y2hlcz4gbV9mb250RGF0YUNhY2hlczsKICAgICBGb250Q2FzY2FkZUNhY2hlIG1fZm9udENhc2Nh
ZGVDYWNoZTsKKyAgICBTeXN0ZW1GYWxsYmFja0NhY2hlIG1fc3lzdGVtRmFsbGJhY2tDYWNoZTsK
IAogICAgIHVuc2lnbmVkIHNob3J0IG1fZ2VuZXJhdGlvbiB7IDAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzZmNWE5MzVhNjYyMjMyODJkYzUxMzI3ODhlYTNhNGM1ZDNiZjhiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVD
YWNoZS5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250Q2FzY2FkZUNh
Y2hlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9udEZhbWlseU5hbWU6OkZvbnRGYW1p
bHlOYW1lKCkgPSBkZWZhdWx0OworCitpbmxpbmUgRm9udEZhbWlseU5hbWU6OkZvbnRGYW1pbHlO
YW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCisgICAgOiBtX25hbWUgeyBuYW1lIH0KK3sKK30K
KworaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIEZvbnRGYW1pbHlOYW1lOjpzdHJpbmcoKSBjb25z
dAoreworICAgIHJldHVybiBtX25hbWU7Cit9CisKK2lubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgRm9udEZhbWlseU5hbWUmIG5hbWUpCit7CisgICAgLy8gRklYTUU6IFdvdWxk
IGJlIGJldHRlciB0byBoYXNoIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBuYW1lIGluc3RlYWQgb2Yg
aGFzaGluZyBhIGhhc2guCisgICAgaWYgKCFuYW1lLnN0cmluZygpLmlzTnVsbCgpKQorICAgICAg
ICBhZGQoaGFzaGVyLCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lSGFzaChuYW1l
LnN0cmluZygpKSk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWls
eU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQoreworICAgIHJldHVybiAoYS5zdHJp
bmcoKS5pc051bGwoKSB8fCBiLnN0cmluZygpLmlzTnVsbCgpKSA/IGEuc3RyaW5nKCkgPT0gYi5z
dHJpbmcoKSA6IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVzQXJlRXF1YWwoYS5z
dHJpbmcoKSwgYi5zdHJpbmcoKSk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Rm9udEZhbWlseU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQoreworICAgIHJldHVy
biAhKGEgPT0gYik7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hl
S2V5JiBhLCBjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBiKQoreworICAgIHJldHVybiBhLmZv
bnREZXNjcmlwdGlvbktleSA9PSBiLmZvbnREZXNjcmlwdGlvbktleQorICAgICAgICAmJiBhLmZv
bnRTZWxlY3RvcklkID09IGIuZm9udFNlbGVjdG9ySWQKKyAgICAgICAgJiYgYS5mb250U2VsZWN0
b3JWZXJzaW9uID09IGIuZm9udFNlbGVjdG9yVmVyc2lvbgorICAgICAgICAmJiBhLmZhbWlsaWVz
ID09IGIuZmFtaWxpZXM7Cit9CisKK3Vuc2lnbmVkIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpo
YXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkKK3sKKyAgICByZXR1cm4gY29tcHV0
ZUhhc2goa2V5LmZvbnREZXNjcmlwdGlvbktleSwga2V5LmZvbnRTZWxlY3RvcklkLCBrZXkuZm9u
dFNlbGVjdG9yVmVyc2lvbiwga2V5LmZhbWlsaWVzKTsKK30KKworRm9udENhc2NhZGVDYWNoZSYg
Rm9udENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpCit7CisgICAgcmV0dXJuIEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRDYXNjYWRlQ2FjaGUoKTsKK30KKwordm9pZCBG
b250Q2FzY2FkZUNhY2hlOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2VudHJpZXMuY2xlYXIoKTsK
K30KKwordm9pZCBGb250Q2FzY2FkZUNhY2hlOjpjbGVhcldpZHRoQ2FjaGVzKCkKK3sKKyAgICBm
b3IgKGF1dG8mIHZhbHVlIDogbV9lbnRyaWVzLnZhbHVlcygpKQorICAgICAgICB2YWx1ZS0+Zm9u
dHMuZ2V0KCkud2lkdGhDYWNoZSgpLmNsZWFyKCk7Cit9CisKK3ZvaWQgRm9udENhc2NhZGVDYWNo
ZTo6cHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCkKK3sKKyAgICBtX2VudHJpZXMucmVtb3ZlSWYo
W10oYXV0byYgZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlLT5mb250cy5nZXQo
KS5oYXNPbmVSZWYoKTsKKyAgICB9KTsKK30KKwordm9pZCBGb250Q2FzY2FkZUNhY2hlOjpwcnVu
ZVN5c3RlbUZhbGxiYWNrRm9udHMoKQoreworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2VudHJp
ZXMudmFsdWVzKCkpCisgICAgICAgIGVudHJ5LT5mb250cy0+cHJ1bmVTeXN0ZW1GYWxsYmFja3Mo
KTsKK30KKworc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGVLZXkgbWFrZUZvbnRDYXNjYWRlQ2FjaGVL
ZXkoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIEZvbnRTZWxlY3Rv
ciogZm9udFNlbGVjdG9yKQoreworICAgIEZvbnRDYXNjYWRlQ2FjaGVLZXkga2V5OworICAgIGtl
eS5mb250RGVzY3JpcHRpb25LZXkgPSBGb250RGVzY3JpcHRpb25LZXkoZGVzY3JpcHRpb24pOwor
ICAgIHVuc2lnbmVkIGZhbWlseUNvdW50ID0gZGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsKKyAg
ICBrZXkuZmFtaWxpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmYW1pbHlDb3VudCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNvdW50OyArK2kpCisgICAgICAgIGtleS5m
YW1pbGllcy51bmNoZWNrZWRBcHBlbmQoZGVzY3JpcHRpb24uZmFtaWx5QXQoaSkpOworICAgIGtl
eS5mb250U2VsZWN0b3JJZCA9IGZvbnRTZWxlY3RvciA/IGZvbnRTZWxlY3Rvci0+dW5pcXVlSWQo
KSA6IDA7CisgICAga2V5LmZvbnRTZWxlY3RvclZlcnNpb24gPSBmb250U2VsZWN0b3IgPyBmb250
U2VsZWN0b3ItPnZlcnNpb24oKSA6IDA7CisgICAgcmV0dXJuIGtleTsKK30KKworUmVmPEZvbnRD
YXNjYWRlRm9udHM+IEZvbnRDYXNjYWRlQ2FjaGU6OnJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFJlZlB0cjxGb250
U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKQoreworICAgIGF1dG8ga2V5ID0gbWFrZUZvbnRDYXNj
YWRlQ2FjaGVLZXkoZm9udERlc2NyaXB0aW9uLCBmb250U2VsZWN0b3IuZ2V0KCkpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9lbnRyaWVzLmFkZChrZXksIG51bGxwdHIpOworICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5mb250cy5nZXQoKTsKKworICAgIGF1dG8mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBuZXdFbnRyeSA9IG1ha2VVbmlxdWU8Rm9udENhc2NhZGVDYWNoZUVu
dHJ5PihGb250Q2FzY2FkZUNhY2hlRW50cnkgeyBXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9u
dHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpIH0pOworICAgIFJlZjxGb250Q2FzY2Fk
ZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Zm9udHMuZ2V0KCk7CisKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwgPSA1MDsKKyAgICBzdGF0
aWMgY29uc3RleHByIGludCBtYXhpbXVtRW50cmllcyA9IDQwMDsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgcHJ1bmVDb3VudGVyOworICAgIC8vIFJlZmVyZW5jZWQgRm9udENhc2NhZGVGb250cyB3b3Vs
ZCBleGlzdCBhbnl3YXkgc28gcHJ1bmluZyB0aGVtIHNhdmVzIGxpdHRsZSBtZW1vcnkuCisgICAg
aWYgKCEoKytwcnVuZUNvdW50ZXIgJSB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsKSkKKyAgICAg
ICAgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCk7CisgICAgLy8gUHJldmVudCBwYXRob2xvZ2lj
YWwgZ3Jvd3RoLgorICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID4gbWF4aW11bUVudHJpZXMpCisg
ICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLnJhbmRvbSgpKTsKKyAgICByZXR1cm4g
Z2x5cGhzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlj
OWFiOGIzNjc1MmZkNTc4ZTFjMTRlMWE3MDYwNDBiZjI3ZjdhYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuaApAQCAt
MCwwICsxLDI1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1v
YmlsZSwgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250Q2FzY2FkZUZvbnRzLmgiCisjaW5jbHVkZSAi
Rm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiRm9udFRhZ2dlZFNldHRpbmdzLmgiCisjaW5j
bHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUG9p
bnRlckNvbXBhcmlzb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBGb250
RGVzY3JpcHRpb25LZXlSYXJlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnREZXNjcmlwdGlv
bktleVJhcmVEYXRhPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gY3JlYXRlKEZvbnRGZWF0
dXJlU2V0dGluZ3MmJiBmZWF0dXJlU2V0dGluZ3MsIEZvbnRWYXJpYXRpb25TZXR0aW5ncyYmIHZh
cmlhdGlvblNldHRpbmdzLCBGb250UGFsZXR0ZSYmIGZvbnRQYWxldHRlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEoV1RGTW92
ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSwgV1RGTW92ZShm
b250UGFsZXR0ZSkpKTsKKyAgICB9CisKKyAgICBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiBm
ZWF0dXJlU2V0dGluZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmVhdHVyZVNl
dHRpbmdzOworICAgIH0KKworICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFyaWF0
aW9uU2V0dGluZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFyaWF0aW9uU2V0
dGluZ3M7CisgICAgfQorCisgICAgY29uc3QgRm9udFBhbGV0dGUmIGZvbnRQYWxldHRlKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9m
ZWF0dXJlU2V0dGluZ3MKKyAgICAgICAgICAgICYmIG1fdmFyaWF0aW9uU2V0dGluZ3MgPT0gb3Ro
ZXIubV92YXJpYXRpb25TZXR0aW5ncworICAgICAgICAgICAgJiYgbV9mb250UGFsZXR0ZSA9PSBv
dGhlci5tX2ZvbnRQYWxldHRlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGb250RGVzY3JpcHRp
b25LZXlSYXJlRGF0YShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRpbmdzLCBGb250
VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0dGUmJiBmb250
UGFsZXR0ZSkKKyAgICAgICAgOiBtX2ZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKGZlYXR1cmVTZXR0
aW5ncykpCisgICAgICAgICwgbV92YXJpYXRpb25TZXR0aW5ncyhXVEZNb3ZlKHZhcmlhdGlvblNl
dHRpbmdzKSkKKyAgICAgICAgLCBtX2ZvbnRQYWxldHRlKFdURk1vdmUoZm9udFBhbGV0dGUpKQor
ICAgIHsKKyAgICB9CisKKyAgICBGb250RmVhdHVyZVNldHRpbmdzIG1fZmVhdHVyZVNldHRpbmdz
OworICAgIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBtX3ZhcmlhdGlvblNldHRpbmdzOworICAgIEZv
bnRQYWxldHRlIG1fZm9udFBhbGV0dGU7Cit9OworCitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBo
YXNoZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhJiBrZXkpCit7CisgICAgYWRk
KGhhc2hlciwga2V5LmZlYXR1cmVTZXR0aW5ncygpLCBrZXkudmFyaWF0aW9uU2V0dGluZ3MoKSwg
a2V5LmZvbnRQYWxldHRlKCkpOworfQorCisvLyBUaGlzIGtleSBjb250YWlucyB0aGUgRm9udERl
c2NyaXB0aW9uIGZpZWxkcyBvdGhlciB0aGFuIGZhbWlseSB0aGF0IG1hdHRlciB3aGVuIGZldGNo
aW5nIEZvbnREYXRhcyAocGxhdGZvcm0gZm9udHMpLgorc3RydWN0IEZvbnREZXNjcmlwdGlvbktl
eSB7CisgICAgRm9udERlc2NyaXB0aW9uS2V5KCkgPSBkZWZhdWx0OworCisgICAgRm9udERlc2Ny
aXB0aW9uS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgICAgIDog
bV9zaXplKGRlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCisgICAgICAgICwgbV9mb250
U2VsZWN0aW9uUmVxdWVzdChkZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVzdCgpKQorICAg
ICAgICAsIG1fZmxhZ3MobWFrZUZsYWdzS2V5KGRlc2NyaXB0aW9uKSkKKyAgICAgICAgLCBtX2xv
Y2FsZShkZXNjcmlwdGlvbi5zcGVjaWZpZWRMb2NhbGUoKSkKKyAgICB7CisgICAgICAgIGF1dG8g
ZmVhdHVyZVNldHRpbmdzID0gZGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCk7CisgICAgICAg
IGF1dG8gdmFyaWF0aW9uU2V0dGluZ3MgPSBkZXNjcmlwdGlvbi52YXJpYXRpb25TZXR0aW5ncygp
OworICAgICAgICBhdXRvIGZvbnRQYWxldHRlID0gZGVzY3JpcHRpb24uZm9udFBhbGV0dGUoKTsK
KyAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpIHx8ICF2YXJpYXRpb25TZXR0
aW5ncy5pc0VtcHR5KCkgfHwgZm9udFBhbGV0dGUudHlwZSAhPSBGb250UGFsZXR0ZTo6VHlwZTo6
Tm9ybWFsKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IEZvbnREZXNjcmlwdGlvbktleVJhcmVE
YXRhOjpjcmVhdGUoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNl
dHRpbmdzKSwgV1RGTW92ZShmb250UGFsZXR0ZSkpOworICAgIH0KKworICAgIGV4cGxpY2l0IEZv
bnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9pc0RlbGV0ZWRWYWx1ZSh0cnVlKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZSA9PSBvdGhlci5tX2lzRGVsZXRlZFZhbHVlCisgICAgICAg
ICAgICAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplCisgICAgICAgICAgICAmJiBtX2ZvbnRTZWxl
Y3Rpb25SZXF1ZXN0ID09IG90aGVyLm1fZm9udFNlbGVjdGlvblJlcXVlc3QKKyAgICAgICAgICAg
ICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9sb2NhbGUgPT0g
b3RoZXIubV9sb2NhbGUKKyAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9y
YXJlRGF0YSwgb3RoZXIubV9yYXJlRGF0YSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVkVmFsdWU7IH0KKworICAgIGZy
aWVuZCB2b2lkIGFkZChIYXNoZXImLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXkmKTsKKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbWFrZUZsYWdzS2V5KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICB1bnNpZ25l
ZCBmaXJzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zY3JpcHQoKSkgPDwg
MTUKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnNob3Vs
ZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkpIDw8IDE0CisgICAgICAgICAgICB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250
cygpKSA8PCAxMworICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24uZm9udFN0eWxlQXhpcygpID09IEZvbnRTdHlsZUF4aXM6OnNsbnQpIDw8IDEyCisgICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcHRpY2FsU2l6aW5nKCkp
IDw8IDExCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi50
ZXh0UmVuZGVyaW5nTW9kZSgpKSA8PCA5CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkZXNjcmlwdGlvbi5mb250U3ludGhlc2lzKCkpIDw8IDYKKyAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKSA8PCA0CisgICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5ub25DSktHbHlwaE9y
aWVudGF0aW9uKCkpIDw8IDMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
c2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpIDw8IDIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSk7CisgICAgICAgIHVuc2lnbmVk
IHNlY29uZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFz
aWFuUnVieSgpKSA8PCAyNworICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24udmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIDw8IDI1CisgICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuVmFyaWFudCgp
KSA8PCAyMgorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24u
dmFyaWFudEFsdGVybmF0ZXMoKSkgPDwgMjEKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oKSkgPDwgMjAKKyAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1l
cmljT3JkaW5hbCgpKSA8PCAxOQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGcmFjdGlvbigpKSA8PCAxNworICAgICAgICAgICAg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNTcGFjaW5n
KCkpIDw8IDE1CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlv
bi52YXJpYW50TnVtZXJpY0ZpZ3VyZSgpKSA8PCAxMworICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENhcHMoKSkgPDwgMTAKKyAgICAgICAgICAg
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRQb3NpdGlvbigpKSA8
PCA4CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJp
YW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgPDwgNgorICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoKSkgPDwg
NAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFu
dERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgPDwgMgorICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbW1vbkxpZ2F0dXJlcygpKTsKKyAgICAg
ICAgcmV0dXJuIHsgeyBmaXJzdCwgc2Vjb25kIH0gfTsKKyAgICB9CisKKyAgICBib29sIG1faXNE
ZWxldGVkVmFsdWUgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKKyAgICBG
b250U2VsZWN0aW9uUmVxdWVzdCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0OworICAgIHN0ZDo6YXJy
YXk8dW5zaWduZWQsIDI+IG1fZmxhZ3MgeyB7IDAsIDAgfSB9OworICAgIEF0b21TdHJpbmcgbV9s
b2NhbGU7CisgICAgUmVmUHRyPEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhPiBtX3JhcmVEYXRh
OworfTsKKworaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250RGVzY3Jp
cHRpb25LZXkmIGtleSkKK3sKKyAgICBhZGQoaGFzaGVyLCBrZXkubV9zaXplLCBrZXkubV9mb250
U2VsZWN0aW9uUmVxdWVzdCwga2V5Lm1fZmxhZ3MsIGtleS5tX2xvY2FsZSk7CisgICAgaWYgKGtl
eS5tX3JhcmVEYXRhKQorICAgICAgICBhZGQoaGFzaGVyLCAqa2V5Lm1fcmFyZURhdGEpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKKyAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkmIGtl
eSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5KTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleSYgYSwgY29uc3QgV2ViQ29yZTo6Rm9udERl
c2NyaXB0aW9uS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4geworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFz
cyBob2xkcyB0aGUgbmFtZSBvZiBhIGZvbnQgZmFtaWx5LCBhbmQgZGVmaW5lcyBoYXNoaW5nIGFu
ZCA9PSBvZiB0aGlzIG5hbWUgdG8KKy8vIHVzZSB0aGUgcnVsZXMgZm9yIGZvbnQgZmFtaWx5IG5h
bWVzIGluc3RlYWQgb2YgdXNpbmcgc3RyYWlnaHQgc3RyaW5nIGNvbXBhcmlzb24uCitjbGFzcyBG
b250RmFtaWx5TmFtZSB7CitwdWJsaWM6CisgICAgRm9udEZhbWlseU5hbWUoKTsKKyAgICBGb250
RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CisgICAgY29uc3QgQXRvbVN0cmluZyYgc3Ry
aW5nKCkgY29uc3Q7CisgICAgZnJpZW5kIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IEZvbnRGYW1p
bHlOYW1lJik7CisKK3ByaXZhdGU6CisgICAgQXRvbVN0cmluZyBtX25hbWU7Cit9OworCitib29s
IG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseU5hbWUmLCBjb25zdCBGb250RmFtaWx5TmFtZSYp
OworYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3QgRm9udEZhbWls
eU5hbWUmKTsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkgeworICAgIEZvbnREZXNjcmlw
dGlvbktleSBmb250RGVzY3JpcHRpb25LZXk7IC8vIFNoYXJlZCB3aXRoIHRoZSBsb3dlciBsZXZl
bCBGb250Q2FjaGUgKGNhY2hpbmcgRm9udCBvYmplY3RzKQorICAgIFZlY3RvcjxGb250RmFtaWx5
TmFtZSwgMz4gZmFtaWxpZXM7CisgICAgdW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7CisgICAgdW5z
aWduZWQgZm9udFNlbGVjdG9yVmVyc2lvbjsKK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBG
b250Q2FzY2FkZUNhY2hlS2V5JiwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYpOworCitzdHJ1
Y3QgRm9udENhc2NhZGVDYWNoZUVudHJ5IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CisKKyAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKKyAgICBSZWY8Rm9udENhc2Nh
ZGVGb250cz4gZm9udHM7Cit9OworCitzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2ggewor
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmKTsKKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25zdCBG
b250Q2FzY2FkZUNhY2hlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisK
K3N0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8Rm9udENh
c2NhZGVDYWNoZUtleT4geworICAgIHN0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5IGVtcHR5VmFs
dWUoKSB7IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoRm9udENhc2NhZGVDYWNoZUtleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LmZvbnRE
ZXNjcmlwdGlvbktleSkgRm9udERlc2NyaXB0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEZvbnRDYXNjYWRl
Q2FjaGVLZXkmIGtleSkgeyByZXR1cm4ga2V5LmZvbnREZXNjcmlwdGlvbktleS5pc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCitjbGFzcyBGb250Q2FzY2FkZUNhY2hlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FzY2FkZUNhY2hlKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGb250Q2FzY2FkZUNhY2hlKCkgPSBkZWZhdWx0Owor
CisgICAgc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGUmIGZvckN1cnJlbnRUaHJlYWQoKTsKKworICAg
IHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHZvaWQgY2xlYXJXaWR0aENhY2hlcygpOworICAgIHZv
aWQgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCk7CisgICAgdm9pZCBwcnVuZVN5c3RlbUZhbGxi
YWNrRm9udHMoKTsKKyAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hl
ZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVjdG9y
PiYmKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFz
aCwgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM+IG1fZW50cmllczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N5c3RlbUZhbGxiYWNrQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU3lzdGVtRmFsbGJhY2tDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzg1MDg5YjMxYjFm
ZDI4NWI2MjUyYzYzNGIzZjMzZjIwOTIyN2QwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUZhbGxiYWNrQ2FjaGUuY3BwCkBAIC0wLDAg
KzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
dgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN5c3RlbUZhbGxiYWNrQ2FjaGUuaCIKKworI2luY2x1
ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworU3lzdGVtRmFsbGJhY2tDYWNoZSYgU3lzdGVtRmFsbGJhY2tDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpCit7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLnN5c3RlbUZhbGxiYWNrQ2FjaGUoKTsKK30KKworUmVmUHRyPEZvbnQ+IFN5c3RlbUZhbGxi
YWNrQ2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3Rlcihjb25zdCBGb250KiBmb250
LCBVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
SXNGb3JQbGF0Zm9ybUZvbnQgaXNGb3JQbGF0Zm9ybUZvbnQpCit7CisgICAgYXV0byBmb250QWRk
UmVzdWx0ID0gbV9jaGFyYWN0ZXJGYWxsYmFja01hcHMuYWRkKGZvbnQsIENoYXJhY3RlckZhbGxi
YWNrTWFwKCkpOworCisgICAgaWYgKCFjaGFyYWN0ZXIpIHsKKyAgICAgICAgVUNoYXIgY29kZVVu
aXQgPSAwOworICAgICAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc3lz
dGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCBmb250LCBpc0ZvclBsYXRmb3Jt
Rm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sICZjb2RlVW5pdCwgMSk7Cisg
ICAgfQorCisgICAgYXV0byBrZXkgPSBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSB7IGRlc2NyaXB0
aW9uLmNvbXB1dGVkTG9jYWxlKCksIGNoYXJhY3RlciwgaXNGb3JQbGF0Zm9ybUZvbnQgIT0gSXNG
b3JQbGF0Zm9ybUZvbnQ6Ok5vIH07CisgICAgcmV0dXJuIGZvbnRBZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmVuc3VyZShXVEZNb3ZlKGtleSksIFsmXSB7CisgICAgICAgIFVDaGFyIGNvZGVVbml0
c1syXTsKKyAgICAgICAgdW5zaWduZWQgY29kZVVuaXRzTGVuZ3RoOworICAgICAgICBpZiAoVV9J
U19CTVAoY2hhcmFjdGVyKSkgeworICAgICAgICAgICAgY29kZVVuaXRzWzBdID0gRm9udENhc2Nh
ZGU6Om5vcm1hbGl6ZVNwYWNlcyhjaGFyYWN0ZXIpOworICAgICAgICAgICAgY29kZVVuaXRzTGVu
Z3RoID0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvZGVVbml0c1swXSA9IFUx
Nl9MRUFEKGNoYXJhY3Rlcik7CisgICAgICAgICAgICBjb2RlVW5pdHNbMV0gPSBVMTZfVFJBSUwo
Y2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGNvZGVVbml0c0xlbmd0aCA9IDI7CisgICAgICAgIH0K
KyAgICAgICAgYXV0byBmYWxsYmFja0ZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIGZvbnQsIGlzRm9yUGxh
dGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgY29kZVVuaXRzLCBj
b2RlVW5pdHNMZW5ndGgpLmdldCgpOworICAgICAgICBpZiAoZmFsbGJhY2tGb250KQorICAgICAg
ICAgICAgZmFsbGJhY2tGb250LT5zZXRJc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGUoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbGxiYWNrRm9udDsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cit9CisK
K3ZvaWQgU3lzdGVtRmFsbGJhY2tDYWNoZTo6cmVtb3ZlKEZvbnQqIGZvbnQpCit7CisgICAgbV9j
aGFyYWN0ZXJGYWxsYmFja01hcHMucmVtb3ZlKGZvbnQpOworCisgICAgaWYgKCFmb250LT5pc1Vz
ZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChh
dXRvJiBjaGFyYWN0ZXJNYXAgOiBtX2NoYXJhY3RlckZhbGxiYWNrTWFwcy52YWx1ZXMoKSkgewor
ICAgICAgICBWZWN0b3I8Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXksIDUxMj4gdG9SZW1vdmU7Cisg
ICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBjaGFyYWN0ZXJNYXApIHsKKyAgICAgICAgICAgIGlm
IChlbnRyeS52YWx1ZSA9PSBmb250KQorICAgICAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZChl
bnRyeS5rZXkpOworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYga2V5IDogdG9SZW1vdmUp
CisgICAgICAgICAgICBjaGFyYWN0ZXJNYXAucmVtb3ZlKGtleSk7CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TeXN0ZW1GYWxsYmFja0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TeXN0ZW1GYWxsYmFja0NhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM0N2UzMDdhOTY0Mzli
MzQxNTA5NTMzZTY0MmVlYjM4NDg3YjY0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUZhbGxiYWNrQ2FjaGUuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9udDsKK2NsYXNzIEZvbnREZXNj
cmlwdGlvbjsKK2VudW0gY2xhc3MgSXNGb3JQbGF0Zm9ybUZvbnQgOiBib29sOworCitjbGFzcyBT
eXN0ZW1GYWxsYmFja0NhY2hlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTeXN0ZW1GYWxs
YmFja0NhY2hlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgU3lzdGVtRmFsbGJhY2tDYWNoZSYgZm9yQ3VycmVudFRocmVhZCgpOworCisgICAgU3lz
dGVtRmFsbGJhY2tDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIFJlZlB0cjxGb250PiBzeXN0ZW1G
YWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCosIFVDaGFyMzIgY2hhcmFjdGVyLCBj
b25zdCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCk7CisgICAgdm9pZCByZW1v
dmUoRm9udCopOworCitwcml2YXRlOgorICAgIHN0cnVjdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtl
eSB7CisgICAgICAgIEF0b21TdHJpbmcgbG9jYWxlOworICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
ciB7IDAgfTsKKyAgICAgICAgYm9vbCBpc0ZvclBsYXRmb3JtRm9udCB7IGZhbHNlIH07CisKKyAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBvdGhl
cikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxvY2FsZSA9PSBvdGhlci5s
b2NhbGUgJiYgY2hhcmFjdGVyID09IG90aGVyLmNoYXJhY3RlciAmJiBpc0ZvclBsYXRmb3JtRm9u
dCA9PSBvdGhlci5pc0ZvclBsYXRmb3JtRm9udDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBz
dHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGtleSkgeyByZXR1cm4gY29t
cHV0ZUhhc2goa2V5LmxvY2FsZSwga2V5LmNoYXJhY3Rlciwga2V5LmlzRm9yUGxhdGZvcm1Gb250
KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01h
cEtleSYgYSwgY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7CisgICAgfTsKKworICAgIHN0cnVjdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtl
eUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8Q2hhcmFjdGVyRmFsbGJhY2tNYXBL
ZXk+IHsKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKENoYXJhY3Rl
ckZhbGxiYWNrTWFwS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIENoYXJhY3RlckZh
bGxiYWNrTWFwS2V5IHsgeyB9LCBVX1NFTlRJTkVMLCB7IH0gfTsgfQorICAgICAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYga2V5KSB7
IHJldHVybiBrZXkuY2hhcmFjdGVyID09IFVfU0VOVElORUw7IH0KKyAgICB9OworCisgICAgLy8g
Rm9udHMgYXJlIG5vdCByZWYnZCB0byBhdm9pZCBjeWNsZXMuCisgICAgLy8gRklYTUU6IENvbnNp
ZGVyIGNoYW5naW5nIHRoZXNlIG1hcHMgdG8gdXNlIFdlYWtQdHIgaW5zdGVhZCBvZiByYXcgcG9p
bnRlcnMuCisgICAgdXNpbmcgQ2hhcmFjdGVyRmFsbGJhY2tNYXAgPSBIYXNoTWFwPENoYXJhY3Rl
ckZhbGxiYWNrTWFwS2V5LCBGb250KiwgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoLCBDaGFy
YWN0ZXJGYWxsYmFja01hcEtleUhhc2hUcmFpdHM+OworCisgICAgSGFzaE1hcDxjb25zdCBGb250
KiwgQ2hhcmFjdGVyRmFsbGJhY2tNYXA+IG1fY2hhcmFjdGVyRmFsbGJhY2tNYXBzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="471675"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461020</attachid>
            <date>2022-07-19 15:40:09 -0700</date>
            <delta_ts>2022-07-19 17:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233974-20220720104007.patch</filename>
            <type>text/plain</type>
            <size>43946</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">RnJvbSAwMTYwNzllZTYzMjk5MWI5ZmRiZGFiNjE5ZTI0ZjJhYmIyYjIyYzZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogVHVlLCAyMyBOb3YgMjAyMSAxMTo1Mjo0MiArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIE1v
dmUgdGhlIEZvbnRDYXNjYWRlQ2FjaGUgdG8gYSBzZXBhcmF0ZSBmaWxlCiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTc0CgpSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KCkZvbnRDYXNjYWRlQ2FjaGUgaGFzIGFscmVhZHkgYmVlbiBtb3ZlZCB0byBoYW5n
IG9mZiBGb250Q2FjaGUgaW4KaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDg1OC4gVG8gbWFrZSBGb250Q2FjaGUuaC8KRm9udENhY2hlLmNwcCBsZXNzIGJ1c3ksIHRo
aXMgcGF0Y2ggbW92ZXMgdGhlIEZvbnRDYXNjYWRlQ2FjaGUgb3V0IHRvCmEgc2VwYXJhdGUgZmls
ZS4gVG8gbWFrZSB0aGUgaW50ZXJmYWNlIG9mIHRoZSBGb250Q2FzY2FkZUNhY2hlIG1vcmUKdW5k
ZXJzdGFuZGFibGUsIHRoaXMgcGF0Y2ggYWxzbyB3cmFwcyBpdCB1cCBpbiBhIGNsYXNzIGFuZCBh
ZGRzIHNvbWUKbWV0aG9kcyB0byBpbnRlcmFjdCB3aXRoIGl0LgoKKiBIZWFkZXJzLmNtYWtlOgoq
IFNvdXJjZXMudHh0OgoqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBwYWdl
L01lbW9yeVJlbGVhc2UuY3BwOgooV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KToK
KiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6CihXZWJDb3JlOjppbnZhbGlkYXRlQWZ0ZXJHZW5lcmlj
RmFtaWx5Q2hhbmdlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgooV2ViQ29y
ZTo6Rm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgooV2ViQ29yZTo6Rm9udENhY2hl
Ojp1cGRhdGVGb250Q2FzY2FkZSk6CihXZWJDb3JlOjpGb250Q2FjaGU6OmludmFsaWRhdGUpOgoo
V2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OkZvbnRGYW1pbHlOYW1lKTogRGVsZXRlZC4KKFdlYkNv
cmU6OkZvbnRGYW1pbHlOYW1lOjpzdHJpbmcgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6YWRk
KTogRGVsZXRlZC4KKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9u
dENhc2NhZGVDYWNoZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udENhY2hl
OjppbnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250Q2Fj
aGU6OmNsZWFyV2lkdGhDYWNoZXMpOiBEZWxldGVkLgooV2ViQ29yZTo6bWFrZUZvbnRDYXNjYWRl
Q2FjaGVLZXkpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNl
ZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250Q2Fj
aGU6OnBydW5lU3lzdGVtRmFsbGJhY2tGb250cyk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250Q2Fj
aGU6OnJldHJpZXZlT3JBZGRDYWNoZWRGb250cyk6IERlbGV0ZWQuCiogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmg6CihXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRDYXNjYWRlQ2FjaGUpOgoo
V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCihX
ZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6ZmVhdHVyZVNldHRpbmdzIGNvbnN0
KTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjp2YXJpYXRp
b25TZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlS
YXJlRGF0YTo6Zm9udFBhbGV0dGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5UmFyZURhdGE6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhKTog
RGVsZXRlZC4KKFdlYkNvcmU6OmFkZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RGVzY3JpcHRp
b25LZXk6OkZvbnREZXNjcmlwdGlvbktleSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb25LZXk6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5OjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbktleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgooV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uS2V5OjptYWtlRmxhZ3NLZXkpOiBEZWxldGVkLgooV1RGOjpE
ZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+OjpoYXNoKTogRGVsZXRlZC4K
KFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Pjo6ZXF1YWwpOiBE
ZWxldGVkLgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjplbXB0eVZhbHVlKTog
RGVsZXRlZC4KKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhh
c2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKTogRGVsZXRlZC4KKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUNhY2hlLmNwcDogQWRkZWQuCihXZWJDb3JlOjpGb250RmFtaWx5TmFtZTo6Rm9u
dEZhbWlseU5hbWUpOgooV2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OnN0cmluZyBjb25zdCk6CihX
ZWJDb3JlOjphZGQpOgooV2ViQ29yZTo6b3BlcmF0b3I9PSk6CihXZWJDb3JlOjpvcGVyYXRvciE9
KToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKToKKFdlYkNvcmU6OkZv
bnRDYXNjYWRlQ2FjaGU6OmZvckN1cnJlbnRUaHJlYWQpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVD
YWNoZTo6aW52YWxpZGF0ZSk6CihXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlOjpjbGVhcldpZHRo
Q2FjaGVzKToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGU6OnBydW5lVW5yZWZlcmVuY2VkRW50
cmllcyk6CihXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9u
dHMpOgooV2ViQ29yZTo6bWFrZUZvbnRDYXNjYWRlQ2FjaGVLZXkpOgooV2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKToKKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUNhY2hlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oLgooV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURh
dGE6OmNyZWF0ZSk6CihXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6ZmVhdHVy
ZVNldHRpbmdzIGNvbnN0KToKKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjp2
YXJpYXRpb25TZXR0aW5ncyBjb25zdCk6CihXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJl
RGF0YTo6Zm9udFBhbGV0dGUgY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFy
ZURhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFy
ZURhdGE6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhKToKKFdlYkNvcmU6OmFkZCk6CihXZWJD
b3JlOjpGb250RGVzY3JpcHRpb25LZXk6OkZvbnREZXNjcmlwdGlvbktleSk6CihXZWJDb3JlOjpG
b250RGVzY3JpcHRpb25LZXk6Om9wZXJhdG9yPT0gY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5OjpvcGVyYXRvciE9IGNvbnN0KToKKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uS2V5OjptYWtlRmxhZ3NLZXkpOgooV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXk+OjpoYXNoKToKKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5Pjo6ZXF1YWwpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVx
dWFsKToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjplbXB0eVZhbHVl
KToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmlzRGVs
ZXRlZFZhbHVlKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlICAgICAgICAgICAg
ICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAg
ICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiB8ICAgNiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwICAgICAgICAg
fCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCAgICAgICAgICB8
ICAgMiArLQogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCAgIHwg
MTA1ICstLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
ICB8IDIxMSArLS0tLS0tLS0tLS0tLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Q2FjaGUuY3BwICAgIHwgMTQwICsrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUNhY2hlLmggICAgICB8IDI2MiArKysrKysrKysrKysrKysrKysKIDkgZmlsZXMgY2hh
bmdlZCwgNDE4IGluc2VydGlvbnMoKyksIDMxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlQ2FjaGUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGZiMTY2NWNhZGM0MS4uNDQ3
YmQ5Y2NkOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE0OTYsNiArMTQ5Niw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
b250QmFzZWxpbmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlQ2FjaGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDcmVhdGlvbkNvbnRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhOTA4
ODBhNjI4MWQuLjMwYzc3NDdhYzEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwNTYsNiArMjA1Niw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5OWQ5ZTdkZTAwNDguLmE4MGE1MDJhMzYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyMyw2
ICsxMDIzLDcgQEAKIAkJMzJBNzBENTgyODM2MTM4RTAwODAwNjBDIC8qIFBvc2l0aW9uZWRHbHlw
aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMyQTcw
RDU2MjgzNjEzOEQwMDgwMDYwQyAvKiBQb3NpdGlvbmVkR2x5cGhzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM0NDA4QzQzM0Y4Q0E0QzEwMDQ0
MjM0IC8qIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM0NDA3NzQxMkQ5QkM0QTAwMDQ0MjM0IC8qIFNWR0xh
eWVyVHJhbnNmb3JtVXBkYXRlci5oICovOyB9OwogCQkzMjExMkUwRjI3NEI0N0NGMDA3MDQ3QTgg
LyogU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMyODk5RkI5Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxs
YmFja0ZvbnRDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTMyRUFGQjhEMjc0QzVFQTYwMDY1MDU1NyAvKiBGb250Q2FzY2FkZUNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMkVBRkI4QjI3
NEM1RUE1MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAv
KiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzNTAzQzk5MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkz
MzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdF
MSAvKiBKU05vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9yYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNGMDFF
QTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NTczLDYgKzg1NzQsOCBAQAogCQkzMkUy
NjhGQzI4NUZDOEY3MDA0NjYwQkIgLyogQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMyODk5RkI3Mjc0QjQxMEMwMDg1
NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
eXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMyODk5RkI5Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYgLyogRm9udENhc2NhZGVDYWNo
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZUNhY2hlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNj
YWRlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVD
YWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTND
NDZBN0YgLyogUmVuZGVyTWF0aE1MUGFkZGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlck1hdGhNTFBhZGRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVuZGVyTWF0aE1MU3BhY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU3BhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNh
dGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTm90aWZpY2F0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Mzk4LDYgKzI5NDAxLDggQEAKIAkJCQlCMkMzREE1
MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNE
NjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlLmNwcCAqLywKIAkJCQlCMkMzREE1MDBEMDA2Q0Q2MDBF
RjZGMjYgLyogRm9udENhc2NhZGUuaCAqLywKKwkJCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYg
LyogRm9udENhc2NhZGVDYWNoZS5jcHAgKi8sCisJCQkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3
IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAqLywKIAkJCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQg
LyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8sCiAJCQkJRTRFOEI0RjIyMTZCOEI2MDAw
Qjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLywKIAkJCQlCMkMzREE1NjBEMDA2
Q0Q2MDBFRjZGMjYgLyogRm9udENhc2NhZGVGb250cy5jcHAgKi8sCkBAIC0zNTE1NCw2ICszNTE1
OSw3IEBACiAJCQkJQjJDM0RBNjMwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzI0NThFNjMxRkU4OTdCMDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVU
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2MTBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dENhc2NhZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMyRUFGQjhEMjc0QzVFQTYwMDY1MDU1NyAv
KiBGb250Q2FzY2FkZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEU4QjRGNTIxNkI5NTY1
MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBNjgwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlRm9udHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0QTA2NEM4Mjc3RTQ4QzkwMEIwNkExNyAvKiBGb250Q29jb2EuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggZDAzZTNlYTIw
MmJiLi4yY2NhMTJhMGJlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5
UmVsZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkoTWFp
bnRhaW5NZW1vcnlDYWNoZSBtYWludGFpbk1lbW9yeUNhY2hlKQogCiAgICAgLy8gRklYTUU6IENs
ZWFyIHRoZXNlIGZvbnQgY2FjaGVzIGluIHdvcmtlcnMgdG9vPwogICAgIEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAgIEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLmNsZWFyV2lkdGhDYWNoZXMoKTsKKyAgICBGb250Q2FzY2FkZUNh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY2xlYXJXaWR0aENhY2hlcygpOwogCiAgICAgR2x5cGhE
aXNwbGF5TGlzdENhY2hlOjpzaW5nbGV0b24oKS5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzQmFzZS5jcHAKaW5kZXggMTZjYWY4NDM3MTdkLi4yNThmZTgzMjk0NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQg
aW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShQYWdlKiBwYWdlKQogewogICAgIC8v
IE5vIG5lZWQgdG8gaW52YWxpZGF0ZSBGb250Q2FzY2FkZUNhY2hlcyBpbiB3b3JrZXIgdGhyZWFk
cywgc2luY2Ugd29ya2VycwogICAgIC8vIGRvIG5vdCByZXNwb25kIHRvIGNoYW5nZXMgaW4gU2V0
dGluZ3MgdmFsdWVzLgotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmludmFsaWRh
dGVGb250Q2FzY2FkZUNhY2hlKCk7CisgICAgRm9udENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCgpLmludmFsaWRhdGUoKTsKIAogICAgIGlmIChwYWdlKQogICAgICAgICBwYWdlLT5zZXRO
ZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IGUyODI3YWJmYmUxYy4uOGExMjFkNzk3Y2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
QEAgLTUyLDM1ICs1Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRm9udEZhbWlseU5h
bWU6OkZvbnRGYW1pbHlOYW1lKCkgPSBkZWZhdWx0OwotCi1pbmxpbmUgRm9udEZhbWlseU5hbWU6
OkZvbnRGYW1pbHlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUgeyBu
YW1lIH0KLXsKLX0KLQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIEZvbnRGYW1pbHlOYW1lOjpz
dHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX25hbWU7Ci19Ci0KLWlubGluZSB2b2lkIGFk
ZChIYXNoZXImIGhhc2hlciwgY29uc3QgRm9udEZhbWlseU5hbWUmIG5hbWUpCi17Ci0gICAgLy8g
RklYTUU6IFdvdWxkIGJlIGJldHRlciB0byBoYXNoIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBuYW1l
IGluc3RlYWQgb2YgaGFzaGluZyBhIGhhc2guCi0gICAgaWYgKCFuYW1lLnN0cmluZygpLmlzTnVs
bCgpKQotICAgICAgICBhZGQoaGFzaGVyLCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlO
YW1lSGFzaChuYW1lLnN0cmluZygpKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udEZhbWlseU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQotewotICAgIHJl
dHVybiAoYS5zdHJpbmcoKS5pc051bGwoKSB8fCBiLnN0cmluZygpLmlzTnVsbCgpKSA/IGEuc3Ry
aW5nKCkgPT0gYi5zdHJpbmcoKSA6IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVz
QXJlRXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udEZhbWlseU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQot
ewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2Fj
aGVLZXkgewogICAgIEZvbnREZXNjcmlwdGlvbktleSBkZXNjcmlwdGlvbktleTsKICAgICBGb250
RmFtaWx5TmFtZSBmYW1pbHk7CkBAIC0zMTYsOCArMjg3LDggQEAgdm9pZCBGb250Q2FjaGU6OnB1
cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNvdW50KQogewogICAgIExPRyhGb250
cywgIkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCV1KSIsIHB1cmdlQ291bnQpOwog
Ci0gICAgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzRnJvbUZvbnRDYXNjYWRlQ2FjaGUoKTsKLSAg
ICBwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKKyAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUucHJ1
bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCk7CisgICAgbV9mb250Q2FzY2FkZUNhY2hlLnBydW5lU3lz
dGVtRmFsbGJhY2tGb250cygpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9mb250TG9jayB9OwpAQCAtMzYwLDI1ICszMzEsNiBAQCB2b2lkIEZvbnRD
YWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQpCiAgICAgcGxh
dGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpCi17
Ci0gICAgcmV0dXJuIGEuZm9udERlc2NyaXB0aW9uS2V5ID09IGIuZm9udERlc2NyaXB0aW9uS2V5
Ci0gICAgICAgICYmIGEuZm9udFNlbGVjdG9ySWQgPT0gYi5mb250U2VsZWN0b3JJZAotICAgICAg
ICAmJiBhLmZvbnRTZWxlY3RvclZlcnNpb24gPT0gYi5mb250U2VsZWN0b3JWZXJzaW9uCi0gICAg
ICAgICYmIGEuZmFtaWxpZXMgPT0gYi5mYW1pbGllczsKLX0KLQotdm9pZCBGb250Q2FjaGU6Omlu
dmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCkKLXsKLSAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuY2xl
YXIoKTsKLX0KLQotdm9pZCBGb250Q2FjaGU6OmNsZWFyV2lkdGhDYWNoZXMoKQotewotICAgIGZv
ciAoYXV0byYgdmFsdWUgOiBtX2ZvbnRDYXNjYWRlQ2FjaGUudmFsdWVzKCkpCi0gICAgICAgIHZh
bHVlLT5mb250cy5nZXQoKS53aWR0aENhY2hlKCkuY2xlYXIoKTsKLX0KLQogI2lmIEVOQUJMRShP
UEVOVFlQRV9WRVJUSUNBTCkKIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gRm9udENhY2hl
Ojp2ZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewpA
QCAtMzg5LDU4ICszNDEsOSBAQCBSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IEZvbnRDYWNo
ZTo6dmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYQogfQogI2VuZGlmCiAK
LXN0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBGb250U2VsZWN0b3IqIGZvbnRT
ZWxlY3RvcikKLXsKLSAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKLSAgICBrZXkuZm9udERl
c2NyaXB0aW9uS2V5ID0gRm9udERlc2NyaXB0aW9uS2V5KGRlc2NyaXB0aW9uKTsKLSAgICB1bnNp
Z25lZCBmYW1pbHlDb3VudCA9IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7Ci0gICAga2V5LmZh
bWlsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmFtaWx5Q291bnQpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudDsgKytpKQotICAgICAgICBrZXkuZmFtaWxpZXMu
dW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0aW9uLmZhbWlseUF0KGkpKTsKLSAgICBrZXkuZm9udFNl
bGVjdG9ySWQgPSBmb250U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPnVuaXF1ZUlkKCkgOiAwOwot
ICAgIGtleS5mb250U2VsZWN0b3JWZXJzaW9uID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9y
LT52ZXJzaW9uKCkgOiAwOwotICAgIHJldHVybiBrZXk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpw
cnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpCi17Ci0gICAgbV9m
b250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgIHJldHVy
biBlbnRyeS52YWx1ZS0+Zm9udHMuZ2V0KCkuaGFzT25lUmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKQotewotICAgIGZvciAoYXV0
byYgZW50cnkgOiBtX2ZvbnRDYXNjYWRlQ2FjaGUudmFsdWVzKCkpCi0gICAgICAgIGVudHJ5LT5m
b250cy0+cHJ1bmVTeXN0ZW1GYWxsYmFja3MoKTsKLX0KLQotUmVmPEZvbnRDYXNjYWRlRm9udHM+
IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2Vs
ZWN0b3IpCi17Ci0gICAgYXV0byBrZXkgPSBtYWtlRm9udENhc2NhZGVDYWNoZUtleShmb250RGVz
Y3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQoKSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2Zv
bnRDYXNjYWRlQ2FjaGUuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRz
LmdldCgpOwotCi0gICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OwotICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KEZvbnRD
YXNjYWRlQ2FjaGVFbnRyeSB7IFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRl
KFdURk1vdmUoZm9udFNlbGVjdG9yKSkgfSk7Ci0gICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGds
eXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCA9IDUwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heGltdW1FbnRyaWVzID0gNDAwOwotICAgIHN0YXRpYyB1bnNpZ25lZCBwcnVuZUNv
dW50ZXI7Ci0gICAgLy8gUmVmZXJlbmNlZCBGb250Q2FzY2FkZUZvbnRzIHdvdWxkIGV4aXN0IGFu
eXdheSBzbyBwcnVuaW5nIHRoZW0gc2F2ZXMgbGl0dGxlIG1lbW9yeS4KLSAgICBpZiAoISgrK3By
dW5lQ291bnRlciAlIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwpKQotICAgICAgICBwcnVuZVVu
cmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpOwotICAgIC8vIFByZXZlbnQg
cGF0aG9sb2dpY2FsIGdyb3d0aC4KLSAgICBpZiAobV9mb250Q2FzY2FkZUNhY2hlLnNpemUoKSA+
IG1heGltdW1FbnRyaWVzKQotICAgICAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUucmVtb3ZlKG1fZm9u
dENhc2NhZGVDYWNoZS5yYW5kb20oKSk7Ci0gICAgcmV0dXJuIGdseXBoczsKLX0KLQogdm9pZCBG
b250Q2FjaGU6OnVwZGF0ZUZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2Fk
ZSwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7Ci0gICAgZm9udENhc2Nh
ZGUudXBkYXRlRm9udHMocmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnRE
ZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAgICBmb250Q2FzY2FkZS51
cGRhdGVGb250cyhtX2ZvbnRDYXNjYWRlQ2FjaGUucmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZv
bnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKIH0K
IAogc2l6ZV90IEZvbnRDYWNoZTo6Zm9udENvdW50KCkKQEAgLTQ4MCw3ICszODMsNyBAQCB2b2lk
IEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQog
ICAgIG1fZm9udERhdGFDYWNoZXMtPnZlcnRpY2FsRGF0YS5jbGVhcigpOwogI2VuZGlmCi0gICAg
aW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKKyAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuaW52
YWxpZGF0ZSgpOwogCiAgICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5pbnZhbGlk
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgK
aW5kZXggZTk5MWY4M2MxZTAyLi42M2MwYzFlOWYxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGVGb250cy5oIgorI2luY2x1ZGUgIkZvbnRDYXNj
YWRlQ2FjaGUuaCIKICNpbmNsdWRlICJGb250Q3JlYXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
Rm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgpAQCAtODQs
MjA5ICs4NCw2IEBAIHVzaW5nIElNTGFuZ0ZvbnRMaW5rVHlwZSA9IElNTGFuZ0ZvbnRMaW5rMjsK
IHVzaW5nIElNTGFuZ0ZvbnRMaW5rVHlwZSA9IElNTGFuZ0ZvbnRMaW5rOwogI2VuZGlmCiAKLXN0
cnVjdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRE
ZXNjcmlwdGlvbktleVJhcmVEYXRhPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gY3JlYXRl
KEZvbnRGZWF0dXJlU2V0dGluZ3MmJiBmZWF0dXJlU2V0dGluZ3MsIEZvbnRWYXJpYXRpb25TZXR0
aW5ncyYmIHZhcmlhdGlvblNldHRpbmdzLCBGb250UGFsZXR0ZSYmIGZvbnRQYWxldHRlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udERlc2NyaXB0aW9uS2V5UmFyZURh
dGEoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSwg
V1RGTW92ZShmb250UGFsZXR0ZSkpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBGb250RmVhdHVyZVNl
dHRpbmdzJiBmZWF0dXJlU2V0dGluZ3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZmVhdHVyZVNldHRpbmdzOwotICAgIH0KLQotICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5n
cyYgdmFyaWF0aW9uU2V0dGluZ3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFy
aWF0aW9uU2V0dGluZ3M7Ci0gICAgfQotCi0gICAgY29uc3QgRm9udFBhbGV0dGUmIGZvbnRQYWxl
dHRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlOwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mZWF0dXJlU2V0dGluZ3MgPT0g
b3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKLSAgICAgICAgICAgICYmIG1fdmFyaWF0aW9uU2V0dGlu
Z3MgPT0gb3RoZXIubV92YXJpYXRpb25TZXR0aW5ncwotICAgICAgICAgICAgJiYgbV9mb250UGFs
ZXR0ZSA9PSBvdGhlci5tX2ZvbnRQYWxldHRlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGb250
RGVzY3JpcHRpb25LZXlSYXJlRGF0YShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRp
bmdzLCBGb250VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0
dGUmJiBmb250UGFsZXR0ZSkKLSAgICAgICAgOiBtX2ZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKGZl
YXR1cmVTZXR0aW5ncykpCi0gICAgICAgICwgbV92YXJpYXRpb25TZXR0aW5ncyhXVEZNb3ZlKHZh
cmlhdGlvblNldHRpbmdzKSkKLSAgICAgICAgLCBtX2ZvbnRQYWxldHRlKFdURk1vdmUoZm9udFBh
bGV0dGUpKQotICAgIHsKLSAgICB9Ci0KLSAgICBGb250RmVhdHVyZVNldHRpbmdzIG1fZmVhdHVy
ZVNldHRpbmdzOwotICAgIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBtX3ZhcmlhdGlvblNldHRpbmdz
OwotICAgIEZvbnRQYWxldHRlIG1fZm9udFBhbGV0dGU7Ci19OwotCi1pbmxpbmUgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhJiBrZXkpCi17
Ci0gICAgYWRkKGhhc2hlciwga2V5LmZlYXR1cmVTZXR0aW5ncygpLCBrZXkudmFyaWF0aW9uU2V0
dGluZ3MoKSwga2V5LmZvbnRQYWxldHRlKCkpOwotfQotCi0vLyBUaGlzIGtleSBjb250YWlucyB0
aGUgRm9udERlc2NyaXB0aW9uIGZpZWxkcyBvdGhlciB0aGFuIGZhbWlseSB0aGF0IG1hdHRlciB3
aGVuIGZldGNoaW5nIEZvbnREYXRhcyAocGxhdGZvcm0gZm9udHMpLgotc3RydWN0IEZvbnREZXNj
cmlwdGlvbktleSB7Ci0gICAgRm9udERlc2NyaXB0aW9uS2V5KCkgPSBkZWZhdWx0OwotCi0gICAg
Rm9udERlc2NyaXB0aW9uS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0g
ICAgICAgIDogbV9zaXplKGRlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCi0gICAgICAg
ICwgbV9mb250U2VsZWN0aW9uUmVxdWVzdChkZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVz
dCgpKQotICAgICAgICAsIG1fZmxhZ3MobWFrZUZsYWdzS2V5KGRlc2NyaXB0aW9uKSkKLSAgICAg
ICAgLCBtX2xvY2FsZShkZXNjcmlwdGlvbi5zcGVjaWZpZWRMb2NhbGUoKSkKLSAgICB7Ci0gICAg
ICAgIGF1dG8gZmVhdHVyZVNldHRpbmdzID0gZGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCk7
Ci0gICAgICAgIGF1dG8gdmFyaWF0aW9uU2V0dGluZ3MgPSBkZXNjcmlwdGlvbi52YXJpYXRpb25T
ZXR0aW5ncygpOwotICAgICAgICBhdXRvIGZvbnRQYWxldHRlID0gZGVzY3JpcHRpb24uZm9udFBh
bGV0dGUoKTsKLSAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpIHx8ICF2YXJp
YXRpb25TZXR0aW5ncy5pc0VtcHR5KCkgfHwgZm9udFBhbGV0dGUudHlwZSAhPSBGb250UGFsZXR0
ZTo6VHlwZTo6Tm9ybWFsKQotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IEZvbnREZXNjcmlwdGlv
bktleVJhcmVEYXRhOjpjcmVhdGUoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZh
cmlhdGlvblNldHRpbmdzKSwgV1RGTW92ZShmb250UGFsZXR0ZSkpOwotICAgIH0KLQotICAgIGV4
cGxpY2l0IEZvbnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
Ci0gICAgICAgIDogbV9pc0RlbGV0ZWRWYWx1ZSh0cnVlKQotICAgIHsgfQotCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZSA9PSBvdGhlci5tX2lzRGVsZXRlZFZhbHVl
Ci0gICAgICAgICAgICAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplCi0gICAgICAgICAgICAmJiBt
X2ZvbnRTZWxlY3Rpb25SZXF1ZXN0ID09IG90aGVyLm1fZm9udFNlbGVjdGlvblJlcXVlc3QKLSAg
ICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncwotICAgICAgICAgICAgJiYgbV9s
b2NhbGUgPT0gb3RoZXIubV9sb2NhbGUKLSAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVh
bERhdGEobV9yYXJlRGF0YSwgb3RoZXIubV9yYXJlRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVkVmFsdWU7IH0K
LQotICAgIGZyaWVuZCB2b2lkIGFkZChIYXNoZXImLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXkm
KTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbWFrZUZs
YWdzS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgewotICAgICAg
ICB1bnNpZ25lZCBmaXJzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zY3Jp
cHQoKSkgPDwgMTUKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLnNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkpIDw8IDE0Ci0gICAgICAgICAg
ICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0
YWxsZWRGb250cygpKSA8PCAxMwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24uZm9udFN0eWxlQXhpcygpID09IEZvbnRTdHlsZUF4aXM6OnNsbnQpIDw8IDEy
Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcHRpY2Fs
U2l6aW5nKCkpIDw8IDExCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNj
cmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKSA8PCA5Ci0gICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5mb250U3ludGhlc2lzKCkpIDw8IDYKLSAgICAgICAg
ICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKSA8
PCA0Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5ub25D
SktHbHlwaE9yaWVudGF0aW9uKCkpIDw8IDMKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpIDw8IDIKLSAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSk7Ci0gICAgICAg
IHVuc2lnbmVkIHNlY29uZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJp
YW50RWFzdEFzaWFuUnVieSgpKSA8PCAyNwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIDw8IDI1Ci0gICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFu
VmFyaWFudCgpKSA8PCAyMgotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24udmFyaWFudEFsdGVybmF0ZXMoKSkgPDwgMjEKLSAgICAgICAgICAgIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oKSkg
PDwgMjAKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZh
cmlhbnROdW1lcmljT3JkaW5hbCgpKSA8PCAxOQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGcmFjdGlvbigpKSA8PCAxNwotICAg
ICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVy
aWNTcGFjaW5nKCkpIDw8IDE1Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY0ZpZ3VyZSgpKSA8PCAxMwotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENhcHMoKSkgPDwgMTAKLSAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRQb3Np
dGlvbigpKSA8PCA4Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgPDwgNgotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVy
ZXMoKSkgPDwgNAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24udmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgPDwgMgotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbW1vbkxpZ2F0dXJlcygp
KTsKLSAgICAgICAgcmV0dXJuIHt7IGZpcnN0LCBzZWNvbmQgfX07Ci0gICAgfQotCi0gICAgYm9v
bCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07
Ci0gICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKLSAgICBz
dGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07Ci0gICAgQXRvbVN0cmlu
ZyBtX2xvY2FsZTsKLSAgICBSZWZQdHI8Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE+IG1fcmFy
ZURhdGE7Ci19OwotCi1pbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbktleSYga2V5KQotewotICAgIGFkZChoYXNoZXIsIGtleS5tX3NpemUsIGtleS5t
X2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBrZXkubV9mbGFncywga2V5Lm1fbG9jYWxlKTsKLSAgICBp
ZiAoa2V5Lm1fcmFyZURhdGEpCi0gICAgICAgIGFkZChoYXNoZXIsICprZXkubV9yYXJlRGF0YSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewot
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpG
b250RGVzY3JpcHRpb25LZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4g
OiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7Ci19
OwotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBjbGFzcyBob2xkcyB0aGUg
bmFtZSBvZiBhIGZvbnQgZmFtaWx5LCBhbmQgZGVmaW5lcyBoYXNoaW5nIGFuZCA9PSBvZiB0aGlz
IG5hbWUgdG8KLS8vIHVzZSB0aGUgcnVsZXMgZm9yIGZvbnQgZmFtaWx5IG5hbWVzIGluc3RlYWQg
b2YgdXNpbmcgc3RyYWlnaHQgc3RyaW5nIGNvbXBhcmlzb24uCi1jbGFzcyBGb250RmFtaWx5TmFt
ZSB7Ci1wdWJsaWM6Ci0gICAgRm9udEZhbWlseU5hbWUoKTsKLSAgICBGb250RmFtaWx5TmFtZShj
b25zdCBBdG9tU3RyaW5nJik7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKCkgY29uc3Q7
Ci0gICAgZnJpZW5kIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7Ci0K
LXByaXZhdGU6Ci0gICAgQXRvbVN0cmluZyBtX25hbWU7Ci19OwotCi1ib29sIG9wZXJhdG9yPT0o
Y29uc3QgRm9udEZhbWlseU5hbWUmLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOwotYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKLQot
c3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkgewotICAgIEZvbnREZXNjcmlwdGlvbktleSBmb250
RGVzY3JpcHRpb25LZXk7IC8vIFNoYXJlZCB3aXRoIHRoZSBsb3dlciBsZXZlbCBGb250Q2FjaGUg
KGNhY2hpbmcgRm9udCBvYmplY3RzKQotICAgIFZlY3RvcjxGb250RmFtaWx5TmFtZSwgMz4gZmFt
aWxpZXM7Ci0gICAgdW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7Ci0gICAgdW5zaWduZWQgZm9udFNl
bGVjdG9yVmVyc2lvbjsKLX07Ci0KLWlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29u
c3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5KQotewotICAgIGFkZChoYXNoZXIsIGtleS5mb250
RGVzY3JpcHRpb25LZXksIGtleS5mYW1pbGllcywga2V5LmZvbnRTZWxlY3RvcklkLCBrZXkuZm9u
dFNlbGVjdG9yVmVyc2lvbik7Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2Fk
ZUNhY2hlS2V5JiwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYpOwotCi1zdHJ1Y3QgRm9udENh
c2NhZGVDYWNoZUVudHJ5IHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0K
LSAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKLSAgICBSZWY8Rm9udENhc2NhZGVGb250cz4g
Zm9udHM7Ci19OwotCi1zdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2ggewotICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkgeyByZXR1cm4g
Y29tcHV0ZUhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZvbnRDYXNj
YWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5PiB7Ci0gICAgc3RhdGljIEZvbnRD
YXNjYWRlQ2FjaGVLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb250Q2FzY2FkZUNhY2hlS2V5JiBzbG90KSB7IG5l
dyAoTm90TnVsbCwgJnNsb3QuZm9udERlc2NyaXB0aW9uS2V5KSBGb250RGVzY3JpcHRpb25LZXko
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5KSB7IHJldHVybiBrZXkuZm9udERl
c2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLX07Ci0KLXVzaW5nIEZv
bnRDYXNjYWRlQ2FjaGUgPSBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCwgRm9u
dENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM+OwotCiBjbGFzcyBGb250Q2FjaGUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMzQ4LDggKzE0NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXRmb3JtUHVy
Z2VJbmFjdGl2ZUZvbnREYXRhKCk7CiAKICAgICB2b2lkIHVwZGF0ZUZvbnRDYXNjYWRlKGNvbnN0
IEZvbnRDYXNjYWRlJiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJik7Ci0gICAgdm9pZCBpbnZhbGlk
YXRlRm9udENhc2NhZGVDYWNoZSgpOwotICAgIHZvaWQgY2xlYXJXaWR0aENhY2hlcygpOwogCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIFJlZlB0cjxGb250PiBmb250RnJvbURlc2NyaXB0aW9uQW5k
TG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBMT0dGT05UJiwgU3RyaW5nJiBv
dXRGb250RmFtaWx5TmFtZSk7CkBAIC0zNzYsNiArMTcxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cHJld2FybShQcmV3YXJtSW5mb3JtYXRpb24mJik7CiAgICAgc3RhdGljIHZvaWQgcHJld2FybUds
b2JhbGx5KCk7CiAKKyAgICBGb250Q2FzY2FkZUNhY2hlJiBmb250Q2FzY2FkZUNhY2hlKCkgeyBy
ZXR1cm4gbV9mb250Q2FzY2FkZUNhY2hlOyB9CiAgICAgU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUm
IHN5c3RlbUZhbGxiYWNrRm9udENhY2hlKCkgeyByZXR1cm4gbV9zeXN0ZW1GYWxsYmFja0ZvbnRD
YWNoZTsgfQogCiBwcml2YXRlOgpAQCAtMzgzLDkgKzE3OSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhSWZOZWVkZWQoKTsKLSAgICB2b2lkIHBydW5lVW5yZWZlcmVuY2VkRW50
cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hlKCk7Ci0gICAgdm9pZCBwcnVuZVN5c3RlbUZhbGxiYWNr
Rm9udHMoKTsKLSAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hlZEZv
bnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYm
KTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmID0geyB9LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNh
Y2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc4Nzk2MGU1
NTc3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Rm9udENhc2NhZGVDYWNoZS5oIgorCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAi
Rm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRG
YW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSgpID0gZGVmYXVsdDsKKworaW5saW5lIEZvbnRGYW1p
bHlOYW1lOjpGb250RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQorICAgIDogbV9u
YW1lIHsgbmFtZSB9Cit7Cit9CisKK2lubGluZSBjb25zdCBBdG9tU3RyaW5nJiBGb250RmFtaWx5
TmFtZTo6c3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYW1lOworfQorCitpbmxpbmUg
dm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBuYW1lKQorewor
ICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFjdGVycyBpbiB0
aGUgbmFtZSBpbnN0ZWFkIG9mIGhhc2hpbmcgYSBoYXNoLgorICAgIGlmICghbmFtZS5zdHJpbmco
KS5pc051bGwoKSkKKyAgICAgICAgYWRkKGhhc2hlciwgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6
ZmFtaWx5TmFtZUhhc2gobmFtZS5zdHJpbmcoKSkpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikKK3sK
KyAgICByZXR1cm4gKGEuc3RyaW5nKCkuaXNOdWxsKCkgfHwgYi5zdHJpbmcoKS5pc051bGwoKSkg
PyBhLnN0cmluZygpID09IGIuc3RyaW5nKCkgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1p
bHlOYW1lc0FyZUVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOworfQorCitpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFt
ZSYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCitib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikK
K3sKKyAgICByZXR1cm4gYS5mb250RGVzY3JpcHRpb25LZXkgPT0gYi5mb250RGVzY3JpcHRpb25L
ZXkKKyAgICAgICAgJiYgYS5mb250U2VsZWN0b3JJZCA9PSBiLmZvbnRTZWxlY3RvcklkCisgICAg
ICAgICYmIGEuZm9udFNlbGVjdG9yVmVyc2lvbiA9PSBiLmZvbnRTZWxlY3RvclZlcnNpb24KKyAg
ICAgICAgJiYgYS5mYW1pbGllcyA9PSBiLmZhbWlsaWVzOworfQorCitGb250Q2FzY2FkZUNhY2hl
JiBGb250Q2FzY2FkZUNhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkKK3sKKyAgICByZXR1cm4gRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udENhc2NhZGVDYWNoZSgpOworfQorCit2b2lk
IEZvbnRDYXNjYWRlQ2FjaGU6OmludmFsaWRhdGUoKQoreworICAgIG1fZW50cmllcy5jbGVhcigp
OworfQorCit2b2lkIEZvbnRDYXNjYWRlQ2FjaGU6OmNsZWFyV2lkdGhDYWNoZXMoKQoreworICAg
IGZvciAoYXV0byYgdmFsdWUgOiBtX2VudHJpZXMudmFsdWVzKCkpCisgICAgICAgIHZhbHVlLT5m
b250cy5nZXQoKS53aWR0aENhY2hlKCkuY2xlYXIoKTsKK30KKwordm9pZCBGb250Q2FzY2FkZUNh
Y2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXMoKQoreworICAgIG1fZW50cmllcy5yZW1vdmVJ
ZihbXShhdXRvJiBlbnRyeSkgeworICAgICAgICByZXR1cm4gZW50cnkudmFsdWUtPmZvbnRzLmdl
dCgpLmhhc09uZVJlZigpOworICAgIH0pOworfQorCit2b2lkIEZvbnRDYXNjYWRlQ2FjaGU6OnBy
dW5lU3lzdGVtRmFsbGJhY2tGb250cygpCit7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50
cmllcy52YWx1ZXMoKSkKKyAgICAgICAgZW50cnktPmZvbnRzLT5wcnVuZVN5c3RlbUZhbGxiYWNr
cygpOworfQorCitzdGF0aWMgRm9udENhc2NhZGVDYWNoZUtleSBtYWtlRm9udENhc2NhZGVDYWNo
ZUtleShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgRm9udFNlbGVj
dG9yKiBmb250U2VsZWN0b3IpCit7CisgICAgRm9udENhc2NhZGVDYWNoZUtleSBrZXk7CisgICAg
a2V5LmZvbnREZXNjcmlwdGlvbktleSA9IEZvbnREZXNjcmlwdGlvbktleShkZXNjcmlwdGlvbik7
CisgICAgdW5zaWduZWQgZmFtaWx5Q291bnQgPSBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpOwor
ICAgIGtleS5mYW1pbGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZhbWlseUNvdW50KTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFtaWx5Q291bnQ7ICsraSkKKyAgICAgICAga2V5
LmZhbWlsaWVzLnVuY2hlY2tlZEFwcGVuZChkZXNjcmlwdGlvbi5mYW1pbHlBdChpKSk7CisgICAg
a2V5LmZvbnRTZWxlY3RvcklkID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9yLT51bmlxdWVJ
ZCgpIDogMDsKKyAgICBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbiA9IGZvbnRTZWxlY3RvciA/IGZv
bnRTZWxlY3Rvci0+dmVyc2lvbigpIDogMDsKKyAgICByZXR1cm4ga2V5OworfQorCitSZWY8Rm9u
dENhc2NhZGVGb250cz4gRm9udENhc2NhZGVDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRz
KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRyPEZv
bnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCit7CisgICAgYXV0byBrZXkgPSBtYWtlRm9udENh
c2NhZGVDYWNoZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQoKSk7CisgICAg
YXV0byBhZGRSZXN1bHQgPSBtX2VudHJpZXMuYWRkKGtleSwgbnVsbHB0cik7CisgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPmZvbnRzLmdldCgpOworCisgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOworICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hl
RW50cnk+KEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7IFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVG
b250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkgfSk7CisgICAgUmVmPEZvbnRDYXNj
YWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCA9IDUwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IG1heGltdW1FbnRyaWVzID0gNDAwOworICAgIHN0YXRpYyB1bnNp
Z25lZCBwcnVuZUNvdW50ZXI7CisgICAgLy8gUmVmZXJlbmNlZCBGb250Q2FzY2FkZUZvbnRzIHdv
dWxkIGV4aXN0IGFueXdheSBzbyBwcnVuaW5nIHRoZW0gc2F2ZXMgbGl0dGxlIG1lbW9yeS4KKyAg
ICBpZiAoISgrK3BydW5lQ291bnRlciAlIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwpKQorICAg
ICAgICBwcnVuZVVucmVmZXJlbmNlZEVudHJpZXMoKTsKKyAgICAvLyBQcmV2ZW50IHBhdGhvbG9n
aWNhbCBncm93dGguCisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPiBtYXhpbXVtRW50cmllcykK
KyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMucmFuZG9tKCkpOworICAgIHJldHVy
biBnbHlwaHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI3NTE4Y2M3MGY3YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuaApA
QCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNo
IE1vYmlsZSwgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250Q2FzY2FkZUZvbnRzLmgiCisjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiRm9udFRhZ2dlZFNldHRpbmdzLmgiCisj
aW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
UG9pbnRlckNvbXBhcmlzb24uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBG
b250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnREZXNjcmlw
dGlvbktleVJhcmVEYXRhPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gY3JlYXRlKEZvbnRG
ZWF0dXJlU2V0dGluZ3MmJiBmZWF0dXJlU2V0dGluZ3MsIEZvbnRWYXJpYXRpb25TZXR0aW5ncyYm
IHZhcmlhdGlvblNldHRpbmdzLCBGb250UGFsZXR0ZSYmIGZvbnRQYWxldHRlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEoV1RG
TW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSwgV1RGTW92
ZShmb250UGFsZXR0ZSkpKTsKKyAgICB9CisKKyAgICBjb25zdCBGb250RmVhdHVyZVNldHRpbmdz
JiBmZWF0dXJlU2V0dGluZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmVhdHVy
ZVNldHRpbmdzOworICAgIH0KKworICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFy
aWF0aW9uU2V0dGluZ3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFyaWF0aW9u
U2V0dGluZ3M7CisgICAgfQorCisgICAgY29uc3QgRm9udFBhbGV0dGUmIGZvbnRQYWxldHRlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlOworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIu
bV9mZWF0dXJlU2V0dGluZ3MKKyAgICAgICAgICAgICYmIG1fdmFyaWF0aW9uU2V0dGluZ3MgPT0g
b3RoZXIubV92YXJpYXRpb25TZXR0aW5ncworICAgICAgICAgICAgJiYgbV9mb250UGFsZXR0ZSA9
PSBvdGhlci5tX2ZvbnRQYWxldHRlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGb250RGVzY3Jp
cHRpb25LZXlSYXJlRGF0YShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRpbmdzLCBG
b250VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0dGUmJiBm
b250UGFsZXR0ZSkKKyAgICAgICAgOiBtX2ZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKGZlYXR1cmVT
ZXR0aW5ncykpCisgICAgICAgICwgbV92YXJpYXRpb25TZXR0aW5ncyhXVEZNb3ZlKHZhcmlhdGlv
blNldHRpbmdzKSkKKyAgICAgICAgLCBtX2ZvbnRQYWxldHRlKFdURk1vdmUoZm9udFBhbGV0dGUp
KQorICAgIHsKKyAgICB9CisKKyAgICBGb250RmVhdHVyZVNldHRpbmdzIG1fZmVhdHVyZVNldHRp
bmdzOworICAgIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBtX3ZhcmlhdGlvblNldHRpbmdzOworICAg
IEZvbnRQYWxldHRlIG1fZm9udFBhbGV0dGU7Cit9OworCitpbmxpbmUgdm9pZCBhZGQoSGFzaGVy
JiBoYXNoZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhJiBrZXkpCit7CisgICAg
YWRkKGhhc2hlciwga2V5LmZlYXR1cmVTZXR0aW5ncygpLCBrZXkudmFyaWF0aW9uU2V0dGluZ3Mo
KSwga2V5LmZvbnRQYWxldHRlKCkpOworfQorCisvLyBUaGlzIGtleSBjb250YWlucyB0aGUgRm9u
dERlc2NyaXB0aW9uIGZpZWxkcyBvdGhlciB0aGFuIGZhbWlseSB0aGF0IG1hdHRlciB3aGVuIGZl
dGNoaW5nIEZvbnREYXRhcyAocGxhdGZvcm0gZm9udHMpLgorc3RydWN0IEZvbnREZXNjcmlwdGlv
bktleSB7CisgICAgRm9udERlc2NyaXB0aW9uS2V5KCkgPSBkZWZhdWx0OworCisgICAgRm9udERl
c2NyaXB0aW9uS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgICAg
IDogbV9zaXplKGRlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCisgICAgICAgICwgbV9m
b250U2VsZWN0aW9uUmVxdWVzdChkZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVzdCgpKQor
ICAgICAgICAsIG1fZmxhZ3MobWFrZUZsYWdzS2V5KGRlc2NyaXB0aW9uKSkKKyAgICAgICAgLCBt
X2xvY2FsZShkZXNjcmlwdGlvbi5zcGVjaWZpZWRMb2NhbGUoKSkKKyAgICB7CisgICAgICAgIGF1
dG8gZmVhdHVyZVNldHRpbmdzID0gZGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCk7CisgICAg
ICAgIGF1dG8gdmFyaWF0aW9uU2V0dGluZ3MgPSBkZXNjcmlwdGlvbi52YXJpYXRpb25TZXR0aW5n
cygpOworICAgICAgICBhdXRvIGZvbnRQYWxldHRlID0gZGVzY3JpcHRpb24uZm9udFBhbGV0dGUo
KTsKKyAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpIHx8ICF2YXJpYXRpb25T
ZXR0aW5ncy5pc0VtcHR5KCkgfHwgZm9udFBhbGV0dGUudHlwZSAhPSBGb250UGFsZXR0ZTo6VHlw
ZTo6Tm9ybWFsKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IEZvbnREZXNjcmlwdGlvbktleVJh
cmVEYXRhOjpjcmVhdGUoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlv
blNldHRpbmdzKSwgV1RGTW92ZShmb250UGFsZXR0ZSkpOworICAgIH0KKworICAgIGV4cGxpY2l0
IEZvbnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAg
ICAgIDogbV9pc0RlbGV0ZWRWYWx1ZSh0cnVlKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZSA9PSBvdGhlci5tX2lzRGVsZXRlZFZhbHVlCisgICAg
ICAgICAgICAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplCisgICAgICAgICAgICAmJiBtX2ZvbnRT
ZWxlY3Rpb25SZXF1ZXN0ID09IG90aGVyLm1fZm9udFNlbGVjdGlvblJlcXVlc3QKKyAgICAgICAg
ICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncworICAgICAgICAgICAgJiYgbV9sb2NhbGUg
PT0gb3RoZXIubV9sb2NhbGUKKyAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEo
bV9yYXJlRGF0YSwgb3RoZXIubV9yYXJlRGF0YSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVkVmFsdWU7IH0KKworICAg
IGZyaWVuZCB2b2lkIGFkZChIYXNoZXImLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXkmKTsKKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbWFrZUZsYWdzS2V5
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICB1bnNp
Z25lZCBmaXJzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zY3JpcHQoKSkg
PDwgMTUKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnNo
b3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkpIDw8IDE0CisgICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRG
b250cygpKSA8PCAxMworICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3Jp
cHRpb24uZm9udFN0eWxlQXhpcygpID09IEZvbnRTdHlsZUF4aXM6OnNsbnQpIDw8IDEyCisgICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcHRpY2FsU2l6aW5n
KCkpIDw8IDExCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpKSA8PCA5CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZXNjcmlwdGlvbi5mb250U3ludGhlc2lzKCkpIDw8IDYKKyAgICAgICAgICAgIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKSA8PCA0Cisg
ICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5ub25DSktHbHlw
aE9yaWVudGF0aW9uKCkpIDw8IDMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpIDw8IDIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSk7CisgICAgICAgIHVuc2ln
bmVkIHNlY29uZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFz
dEFzaWFuUnVieSgpKSA8PCAyNworICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIDw8IDI1CisgICAgICAgICAgICB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuVmFyaWFu
dCgpKSA8PCAyMgorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24udmFyaWFudEFsdGVybmF0ZXMoKSkgPDwgMjEKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oKSkgPDwgMjAK
KyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRO
dW1lcmljT3JkaW5hbCgpKSA8PCAxOQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGcmFjdGlvbigpKSA8PCAxNworICAgICAgICAg
ICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNTcGFj
aW5nKCkpIDw8IDE1CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi52YXJpYW50TnVtZXJpY0ZpZ3VyZSgpKSA8PCAxMworICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENhcHMoKSkgPDwgMTAKKyAgICAgICAg
ICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRQb3NpdGlvbigp
KSA8PCA4CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52
YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgPDwgNgorICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoKSkg
PDwgNAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFy
aWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgPDwgMgorICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbW1vbkxpZ2F0dXJlcygpKTsKKyAg
ICAgICAgcmV0dXJuIHsgeyBmaXJzdCwgc2Vjb25kIH0gfTsKKyAgICB9CisKKyAgICBib29sIG1f
aXNEZWxldGVkVmFsdWUgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKKyAg
ICBGb250U2VsZWN0aW9uUmVxdWVzdCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0OworICAgIHN0ZDo6
YXJyYXk8dW5zaWduZWQsIDI+IG1fZmxhZ3MgeyB7IDAsIDAgfSB9OworICAgIEF0b21TdHJpbmcg
bV9sb2NhbGU7CisgICAgUmVmUHRyPEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhPiBtX3JhcmVE
YXRhOworfTsKKworaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250RGVz
Y3JpcHRpb25LZXkmIGtleSkKK3sKKyAgICBhZGQoaGFzaGVyLCBrZXkubV9zaXplLCBrZXkubV9m
b250U2VsZWN0aW9uUmVxdWVzdCwga2V5Lm1fZmxhZ3MsIGtleS5tX2xvY2FsZSk7CisgICAgaWYg
KGtleS5tX3JhcmVEYXRhKQorICAgICAgICBhZGQoaGFzaGVyLCAqa2V5Lm1fcmFyZURhdGEpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkm
IGtleSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5KTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleSYgYSwgY29uc3QgV2ViQ29yZTo6Rm9u
dERlc2NyaXB0aW9uS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IDog
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4geworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBj
bGFzcyBob2xkcyB0aGUgbmFtZSBvZiBhIGZvbnQgZmFtaWx5LCBhbmQgZGVmaW5lcyBoYXNoaW5n
IGFuZCA9PSBvZiB0aGlzIG5hbWUgdG8KKy8vIHVzZSB0aGUgcnVsZXMgZm9yIGZvbnQgZmFtaWx5
IG5hbWVzIGluc3RlYWQgb2YgdXNpbmcgc3RyYWlnaHQgc3RyaW5nIGNvbXBhcmlzb24uCitjbGFz
cyBGb250RmFtaWx5TmFtZSB7CitwdWJsaWM6CisgICAgRm9udEZhbWlseU5hbWUoKTsKKyAgICBG
b250RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJik7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
c3RyaW5nKCkgY29uc3Q7CisgICAgZnJpZW5kIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IEZvbnRG
YW1pbHlOYW1lJik7CisKK3ByaXZhdGU6CisgICAgQXRvbVN0cmluZyBtX25hbWU7Cit9OworCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseU5hbWUmLCBjb25zdCBGb250RmFtaWx5TmFt
ZSYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3QgRm9udEZh
bWlseU5hbWUmKTsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkgeworICAgIEZvbnREZXNj
cmlwdGlvbktleSBmb250RGVzY3JpcHRpb25LZXk7IC8vIFNoYXJlZCB3aXRoIHRoZSBsb3dlciBs
ZXZlbCBGb250Q2FjaGUgKGNhY2hpbmcgRm9udCBvYmplY3RzKQorICAgIFZlY3RvcjxGb250RmFt
aWx5TmFtZSwgMz4gZmFtaWxpZXM7CisgICAgdW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7CisgICAg
dW5zaWduZWQgZm9udFNlbGVjdG9yVmVyc2lvbjsKK307CisKK2lubGluZSB2b2lkIGFkZChIYXNo
ZXImIGhhc2hlciwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5KQoreworICAgIGFkZCho
YXNoZXIsIGtleS5mb250RGVzY3JpcHRpb25LZXksIGtleS5mYW1pbGllcywga2V5LmZvbnRTZWxl
Y3RvcklkLCBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbik7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShj
b25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYpOwor
CitzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUVudHJ5IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKKyAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKKyAgICBSZWY8Rm9u
dENhc2NhZGVGb250cz4gZm9udHM7Cit9OworCitzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhh
c2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkm
IGtleSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5KTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKworc3RydWN0IEZvbnRDYXNjYWRl
Q2FjaGVLZXlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5PiB7Cisg
ICAgc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGVLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsg
fQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb250Q2FzY2FkZUNhY2hl
S2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QuZm9udERlc2NyaXB0aW9uS2V5KSBGb250
RGVzY3JpcHRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5KSB7IHJl
dHVybiBrZXkuZm9udERlc2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0K
K307CisKK2NsYXNzIEZvbnRDYXNjYWRlQ2FjaGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEZvbnRDYXNjYWRlQ2FjaGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIEZvbnRDYXNjYWRlQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgRm9udENh
c2NhZGVDYWNoZSYgZm9yQ3VycmVudFRocmVhZCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7
CisgICAgdm9pZCBjbGVhcldpZHRoQ2FjaGVzKCk7CisgICAgdm9pZCBwcnVuZVVucmVmZXJlbmNl
ZEVudHJpZXMoKTsKKyAgICB2b2lkIHBydW5lU3lzdGVtRmFsbGJhY2tGb250cygpOworICAgIFJl
ZjxGb250Q2FzY2FkZUZvbnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYsIFJlZlB0cjxGb250U2VsZWN0b3I+JiYpOworCitwcml2YXRlOgor
ICAgIEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYXNj
YWRlQ2FjaGVFbnRyeT4sIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoLCBGb250Q2FzY2FkZUNhY2hl
S2V5SGFzaFRyYWl0cz4gbV9lbnRyaWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="489987"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461025</attachid>
            <date>2022-07-19 17:13:57 -0700</date>
            <delta_ts>2022-07-19 21:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233974-20220720121355.patch</filename>
            <type>text/plain</type>
            <size>43911</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">RnJvbSAwYTRhZGM1ODNkZTk2NDJkNjY2ZDY2MWU5ZGFjMjRlYTZkZmI4N2U2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogVHVlLCAyMyBOb3YgMjAyMSAxMTo1Mjo0MiArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIE1v
dmUgdGhlIEZvbnRDYXNjYWRlQ2FjaGUgdG8gYSBzZXBhcmF0ZSBmaWxlCiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTc0CgpSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KCkZvbnRDYXNjYWRlQ2FjaGUgaGFzIGFscmVhZHkgYmVlbiBtb3ZlZCB0byBoYW5n
IG9mZiBGb250Q2FjaGUgaW4KaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDg1OC4gVG8gbWFrZSBGb250Q2FjaGUuaC8KRm9udENhY2hlLmNwcCBsZXNzIGJ1c3ksIHRo
aXMgcGF0Y2ggbW92ZXMgdGhlIEZvbnRDYXNjYWRlQ2FjaGUgb3V0IHRvCmEgc2VwYXJhdGUgZmls
ZS4gVG8gbWFrZSB0aGUgaW50ZXJmYWNlIG9mIHRoZSBGb250Q2FzY2FkZUNhY2hlIG1vcmUKdW5k
ZXJzdGFuZGFibGUsIHRoaXMgcGF0Y2ggYWxzbyB3cmFwcyBpdCB1cCBpbiBhIGNsYXNzIGFuZCBh
ZGRzIHNvbWUKbWV0aG9kcyB0byBpbnRlcmFjdCB3aXRoIGl0LgoKKiBIZWFkZXJzLmNtYWtlOgoq
IFNvdXJjZXMudHh0OgoqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBwYWdl
L01lbW9yeVJlbGVhc2UuY3BwOgooV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KToK
KiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6CihXZWJDb3JlOjppbnZhbGlkYXRlQWZ0ZXJHZW5lcmlj
RmFtaWx5Q2hhbmdlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgooV2ViQ29y
ZTo6Rm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgooV2ViQ29yZTo6Rm9udENhY2hl
Ojp1cGRhdGVGb250Q2FzY2FkZSk6CihXZWJDb3JlOjpGb250Q2FjaGU6OmludmFsaWRhdGUpOgoo
V2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OkZvbnRGYW1pbHlOYW1lKTogRGVsZXRlZC4KKFdlYkNv
cmU6OkZvbnRGYW1pbHlOYW1lOjpzdHJpbmcgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6YWRk
KTogRGVsZXRlZC4KKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9u
dENhc2NhZGVDYWNoZUtleUhhc2g6Omhhc2gpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udENhY2hl
OjppbnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250Q2Fj
aGU6OmNsZWFyV2lkdGhDYWNoZXMpOiBEZWxldGVkLgooV2ViQ29yZTo6bWFrZUZvbnRDYXNjYWRl
Q2FjaGVLZXkpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNl
ZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250Q2Fj
aGU6OnBydW5lU3lzdGVtRmFsbGJhY2tGb250cyk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250Q2Fj
aGU6OnJldHJpZXZlT3JBZGRDYWNoZWRGb250cyk6IERlbGV0ZWQuCiogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmg6CihXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRDYXNjYWRlQ2FjaGUpOgoo
V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCihX
ZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6ZmVhdHVyZVNldHRpbmdzIGNvbnN0
KTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjp2YXJpYXRp
b25TZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlS
YXJlRGF0YTo6Zm9udFBhbGV0dGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5UmFyZURhdGE6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhKTog
RGVsZXRlZC4KKFdlYkNvcmU6OmFkZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RGVzY3JpcHRp
b25LZXk6OkZvbnREZXNjcmlwdGlvbktleSk6IERlbGV0ZWQuCihXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb25LZXk6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5OjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbktleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgooV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uS2V5OjptYWtlRmxhZ3NLZXkpOiBEZWxldGVkLgooV1RGOjpE
ZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+OjpoYXNoKTogRGVsZXRlZC4K
KFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Pjo6ZXF1YWwpOiBE
ZWxldGVkLgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjplbXB0eVZhbHVlKTog
RGVsZXRlZC4KKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjpjb25zdHJ1
Y3REZWxldGVkVmFsdWUpOiBEZWxldGVkLgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhh
c2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKTogRGVsZXRlZC4KKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUNhY2hlLmNwcDogQWRkZWQuCihXZWJDb3JlOjpGb250RmFtaWx5TmFtZTo6Rm9u
dEZhbWlseU5hbWUpOgooV2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OnN0cmluZyBjb25zdCk6CihX
ZWJDb3JlOjphZGQpOgooV2ViQ29yZTo6b3BlcmF0b3I9PSk6CihXZWJDb3JlOjpvcGVyYXRvciE9
KToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKToKKFdlYkNvcmU6OkZv
bnRDYXNjYWRlQ2FjaGU6OmZvckN1cnJlbnRUaHJlYWQpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVD
YWNoZTo6aW52YWxpZGF0ZSk6CihXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlOjpjbGVhcldpZHRo
Q2FjaGVzKToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGU6OnBydW5lVW5yZWZlcmVuY2VkRW50
cmllcyk6CihXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9u
dHMpOgooV2ViQ29yZTo6bWFrZUZvbnRDYXNjYWRlQ2FjaGVLZXkpOgooV2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKToKKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUNhY2hlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oLgooV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURh
dGE6OmNyZWF0ZSk6CihXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6ZmVhdHVy
ZVNldHRpbmdzIGNvbnN0KToKKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjp2
YXJpYXRpb25TZXR0aW5ncyBjb25zdCk6CihXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJl
RGF0YTo6Zm9udFBhbGV0dGUgY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFy
ZURhdGE6Om9wZXJhdG9yPT0gY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFy
ZURhdGE6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhKToKKFdlYkNvcmU6OmFkZCk6CihXZWJD
b3JlOjpGb250RGVzY3JpcHRpb25LZXk6OkZvbnREZXNjcmlwdGlvbktleSk6CihXZWJDb3JlOjpG
b250RGVzY3JpcHRpb25LZXk6Om9wZXJhdG9yPT0gY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5OjpvcGVyYXRvciE9IGNvbnN0KToKKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgooV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uS2V5OjptYWtlRmxhZ3NLZXkpOgooV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXk+OjpoYXNoKToKKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5Pjo6ZXF1YWwpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVx
dWFsKToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjplbXB0eVZhbHVl
KToKKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUpOgooV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmlzRGVs
ZXRlZFZhbHVlKToKLS0tCiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlICAgICAgICAgICAg
ICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAg
ICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiB8ICAgNiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwICAgICAgICAg
fCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCAgICAgICAgICB8
ICAgMiArLQogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCAgIHwg
MTA1ICstLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
ICB8IDIxMSArLS0tLS0tLS0tLS0tLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Q2FjaGUuY3BwICAgIHwgMTQwICsrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUNhY2hlLmggICAgICB8IDI2MiArKysrKysrKysrKysrKysrKysKIDkgZmlsZXMgY2hh
bmdlZCwgNDE4IGluc2VydGlvbnMoKyksIDMxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlQ2FjaGUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGZiMTY2NWNhZGM0MS4uNDQ3
YmQ5Y2NkOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE0OTYsNiArMTQ5Niw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
b250QmFzZWxpbmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlQ2FjaGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDcmVhdGlvbkNvbnRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhOTA4
ODBhNjI4MWQuLjMwYzc3NDdhYzEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwNTYsNiArMjA1Niw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5OWQ5ZTdkZTAwNDguLmE4MGE1MDJhMzYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAyMyw2
ICsxMDIzLDcgQEAKIAkJMzJBNzBENTgyODM2MTM4RTAwODAwNjBDIC8qIFBvc2l0aW9uZWRHbHlw
aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMyQTcw
RDU2MjgzNjEzOEQwMDgwMDYwQyAvKiBQb3NpdGlvbmVkR2x5cGhzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM0NDA4QzQzM0Y4Q0E0QzEwMDQ0
MjM0IC8qIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM0NDA3NzQxMkQ5QkM0QTAwMDQ0MjM0IC8qIFNWR0xh
eWVyVHJhbnNmb3JtVXBkYXRlci5oICovOyB9OwogCQkzMjExMkUwRjI3NEI0N0NGMDA3MDQ3QTgg
LyogU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMyODk5RkI5Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxs
YmFja0ZvbnRDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTMyRUFGQjhEMjc0QzVFQTYwMDY1MDU1NyAvKiBGb250Q2FzY2FkZUNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMkVBRkI4QjI3
NEM1RUE1MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAv
KiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMzNTAzQzk5MTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkz
MzUwM0NBNDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdF
MSAvKiBKU05vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMzRDAyMTJEMTMxREIzN0IwMDQwOTFBOCAvKiBDb29raWVTdG9yYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNGMDFF
QTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NTczLDYgKzg1NzQsOCBAQAogCQkzMkUy
NjhGQzI4NUZDOEY3MDA0NjYwQkIgLyogQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMyODk5RkI3Mjc0QjQxMEMwMDg1
NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
eXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMyODk5RkI5Mjc0QjQxMEMwMDg1NUE5RCAvKiBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYgLyogRm9udENhc2NhZGVDYWNo
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZUNhY2hlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNj
YWRlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVD
YWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTND
NDZBN0YgLyogUmVuZGVyTWF0aE1MUGFkZGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlck1hdGhNTFBhZGRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVuZGVyTWF0aE1MU3BhY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU3BhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNh
dGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTm90aWZpY2F0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Mzk4LDYgKzI5NDAxLDggQEAKIAkJCQlCMkMzREE1
MjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNE
NjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlLmNwcCAqLywKIAkJCQlCMkMzREE1MDBEMDA2Q0Q2MDBF
RjZGMjYgLyogRm9udENhc2NhZGUuaCAqLywKKwkJCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYg
LyogRm9udENhc2NhZGVDYWNoZS5jcHAgKi8sCisJCQkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3
IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAqLywKIAkJCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQg
LyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8sCiAJCQkJRTRFOEI0RjIyMTZCOEI2MDAw
Qjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLywKIAkJCQlCMkMzREE1NjBEMDA2
Q0Q2MDBFRjZGMjYgLyogRm9udENhc2NhZGVGb250cy5jcHAgKi8sCkBAIC0zNTE1NCw2ICszNTE1
OSw3IEBACiAJCQkJQjJDM0RBNjMwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzI0NThFNjMxRkU4OTdCMDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVU
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2MTBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dENhc2NhZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMyRUFGQjhEMjc0QzVFQTYwMDY1MDU1NyAv
KiBGb250Q2FzY2FkZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEU4QjRGNTIxNkI5NTY1
MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBNjgwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYXNjYWRlRm9udHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0QTA2NEM4Mjc3RTQ4QzkwMEIwNkExNyAvKiBGb250Q29jb2EuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggZDAzZTNlYTIw
MmJiLi4yY2NhMTJhMGJlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5
UmVsZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkoTWFp
bnRhaW5NZW1vcnlDYWNoZSBtYWludGFpbk1lbW9yeUNhY2hlKQogCiAgICAgLy8gRklYTUU6IENs
ZWFyIHRoZXNlIGZvbnQgY2FjaGVzIGluIHdvcmtlcnMgdG9vPwogICAgIEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAgIEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLmNsZWFyV2lkdGhDYWNoZXMoKTsKKyAgICBGb250Q2FzY2FkZUNh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuY2xlYXJXaWR0aENhY2hlcygpOwogCiAgICAgR2x5cGhE
aXNwbGF5TGlzdENhY2hlOjpzaW5nbGV0b24oKS5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzQmFzZS5jcHAKaW5kZXggMTZjYWY4NDM3MTdkLi4yNThmZTgzMjk0NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQg
aW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShQYWdlKiBwYWdlKQogewogICAgIC8v
IE5vIG5lZWQgdG8gaW52YWxpZGF0ZSBGb250Q2FzY2FkZUNhY2hlcyBpbiB3b3JrZXIgdGhyZWFk
cywgc2luY2Ugd29ya2VycwogICAgIC8vIGRvIG5vdCByZXNwb25kIHRvIGNoYW5nZXMgaW4gU2V0
dGluZ3MgdmFsdWVzLgotICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmludmFsaWRh
dGVGb250Q2FzY2FkZUNhY2hlKCk7CisgICAgRm9udENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCgpLmludmFsaWRhdGUoKTsKIAogICAgIGlmIChwYWdlKQogICAgICAgICBwYWdlLT5zZXRO
ZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IGUyODI3YWJmYmUxYy4uOGExMjFkNzk3Y2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
QEAgLTUyLDM1ICs1Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRm9udEZhbWlseU5h
bWU6OkZvbnRGYW1pbHlOYW1lKCkgPSBkZWZhdWx0OwotCi1pbmxpbmUgRm9udEZhbWlseU5hbWU6
OkZvbnRGYW1pbHlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCi0gICAgOiBtX25hbWUgeyBu
YW1lIH0KLXsKLX0KLQotaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIEZvbnRGYW1pbHlOYW1lOjpz
dHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX25hbWU7Ci19Ci0KLWlubGluZSB2b2lkIGFk
ZChIYXNoZXImIGhhc2hlciwgY29uc3QgRm9udEZhbWlseU5hbWUmIG5hbWUpCi17Ci0gICAgLy8g
RklYTUU6IFdvdWxkIGJlIGJldHRlciB0byBoYXNoIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBuYW1l
IGluc3RlYWQgb2YgaGFzaGluZyBhIGhhc2guCi0gICAgaWYgKCFuYW1lLnN0cmluZygpLmlzTnVs
bCgpKQotICAgICAgICBhZGQoaGFzaGVyLCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlO
YW1lSGFzaChuYW1lLnN0cmluZygpKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udEZhbWlseU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQotewotICAgIHJl
dHVybiAoYS5zdHJpbmcoKS5pc051bGwoKSB8fCBiLnN0cmluZygpLmlzTnVsbCgpKSA/IGEuc3Ry
aW5nKCkgPT0gYi5zdHJpbmcoKSA6IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVz
QXJlRXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udEZhbWlseU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQot
ewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2Fj
aGVLZXkgewogICAgIEZvbnREZXNjcmlwdGlvbktleSBkZXNjcmlwdGlvbktleTsKICAgICBGb250
RmFtaWx5TmFtZSBmYW1pbHk7CkBAIC0zMTYsOCArMjg3LDggQEAgdm9pZCBGb250Q2FjaGU6OnB1
cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNvdW50KQogewogICAgIExPRyhGb250
cywgIkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCV1KSIsIHB1cmdlQ291bnQpOwog
Ci0gICAgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzRnJvbUZvbnRDYXNjYWRlQ2FjaGUoKTsKLSAg
ICBwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKKyAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUucHJ1
bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCk7CisgICAgbV9mb250Q2FzY2FkZUNhY2hlLnBydW5lU3lz
dGVtRmFsbGJhY2tGb250cygpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9mb250TG9jayB9OwpAQCAtMzYwLDI1ICszMzEsNiBAQCB2b2lkIEZvbnRD
YWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQpCiAgICAgcGxh
dGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpCi17
Ci0gICAgcmV0dXJuIGEuZm9udERlc2NyaXB0aW9uS2V5ID09IGIuZm9udERlc2NyaXB0aW9uS2V5
Ci0gICAgICAgICYmIGEuZm9udFNlbGVjdG9ySWQgPT0gYi5mb250U2VsZWN0b3JJZAotICAgICAg
ICAmJiBhLmZvbnRTZWxlY3RvclZlcnNpb24gPT0gYi5mb250U2VsZWN0b3JWZXJzaW9uCi0gICAg
ICAgICYmIGEuZmFtaWxpZXMgPT0gYi5mYW1pbGllczsKLX0KLQotdm9pZCBGb250Q2FjaGU6Omlu
dmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCkKLXsKLSAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuY2xl
YXIoKTsKLX0KLQotdm9pZCBGb250Q2FjaGU6OmNsZWFyV2lkdGhDYWNoZXMoKQotewotICAgIGZv
ciAoYXV0byYgdmFsdWUgOiBtX2ZvbnRDYXNjYWRlQ2FjaGUudmFsdWVzKCkpCi0gICAgICAgIHZh
bHVlLT5mb250cy5nZXQoKS53aWR0aENhY2hlKCkuY2xlYXIoKTsKLX0KLQogI2lmIEVOQUJMRShP
UEVOVFlQRV9WRVJUSUNBTCkKIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gRm9udENhY2hl
Ojp2ZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewpA
QCAtMzg5LDU4ICszNDEsOSBAQCBSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IEZvbnRDYWNo
ZTo6dmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYQogfQogI2VuZGlmCiAK
LXN0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBGb250U2VsZWN0b3IqIGZvbnRT
ZWxlY3RvcikKLXsKLSAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKLSAgICBrZXkuZm9udERl
c2NyaXB0aW9uS2V5ID0gRm9udERlc2NyaXB0aW9uS2V5KGRlc2NyaXB0aW9uKTsKLSAgICB1bnNp
Z25lZCBmYW1pbHlDb3VudCA9IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7Ci0gICAga2V5LmZh
bWlsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmFtaWx5Q291bnQpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudDsgKytpKQotICAgICAgICBrZXkuZmFtaWxpZXMu
dW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0aW9uLmZhbWlseUF0KGkpKTsKLSAgICBrZXkuZm9udFNl
bGVjdG9ySWQgPSBmb250U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPnVuaXF1ZUlkKCkgOiAwOwot
ICAgIGtleS5mb250U2VsZWN0b3JWZXJzaW9uID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9y
LT52ZXJzaW9uKCkgOiAwOwotICAgIHJldHVybiBrZXk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpw
cnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpCi17Ci0gICAgbV9m
b250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgIHJldHVy
biBlbnRyeS52YWx1ZS0+Zm9udHMuZ2V0KCkuaGFzT25lUmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKQotewotICAgIGZvciAoYXV0
byYgZW50cnkgOiBtX2ZvbnRDYXNjYWRlQ2FjaGUudmFsdWVzKCkpCi0gICAgICAgIGVudHJ5LT5m
b250cy0+cHJ1bmVTeXN0ZW1GYWxsYmFja3MoKTsKLX0KLQotUmVmPEZvbnRDYXNjYWRlRm9udHM+
IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2Vs
ZWN0b3IpCi17Ci0gICAgYXV0byBrZXkgPSBtYWtlRm9udENhc2NhZGVDYWNoZUtleShmb250RGVz
Y3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQoKSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2Zv
bnRDYXNjYWRlQ2FjaGUuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRz
LmdldCgpOwotCi0gICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OwotICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KEZvbnRD
YXNjYWRlQ2FjaGVFbnRyeSB7IFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRl
KFdURk1vdmUoZm9udFNlbGVjdG9yKSkgfSk7Ci0gICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGds
eXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCA9IDUwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heGltdW1FbnRyaWVzID0gNDAwOwotICAgIHN0YXRpYyB1bnNpZ25lZCBwcnVuZUNv
dW50ZXI7Ci0gICAgLy8gUmVmZXJlbmNlZCBGb250Q2FzY2FkZUZvbnRzIHdvdWxkIGV4aXN0IGFu
eXdheSBzbyBwcnVuaW5nIHRoZW0gc2F2ZXMgbGl0dGxlIG1lbW9yeS4KLSAgICBpZiAoISgrK3By
dW5lQ291bnRlciAlIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwpKQotICAgICAgICBwcnVuZVVu
cmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpOwotICAgIC8vIFByZXZlbnQg
cGF0aG9sb2dpY2FsIGdyb3d0aC4KLSAgICBpZiAobV9mb250Q2FzY2FkZUNhY2hlLnNpemUoKSA+
IG1heGltdW1FbnRyaWVzKQotICAgICAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUucmVtb3ZlKG1fZm9u
dENhc2NhZGVDYWNoZS5yYW5kb20oKSk7Ci0gICAgcmV0dXJuIGdseXBoczsKLX0KLQogdm9pZCBG
b250Q2FjaGU6OnVwZGF0ZUZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2Fk
ZSwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7Ci0gICAgZm9udENhc2Nh
ZGUudXBkYXRlRm9udHMocmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnRE
ZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAgICBmb250Q2FzY2FkZS51
cGRhdGVGb250cyhtX2ZvbnRDYXNjYWRlQ2FjaGUucmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZv
bnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKIH0K
IAogc2l6ZV90IEZvbnRDYWNoZTo6Zm9udENvdW50KCkKQEAgLTQ4MCw3ICszODMsNyBAQCB2b2lk
IEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQog
ICAgIG1fZm9udERhdGFDYWNoZXMtPnZlcnRpY2FsRGF0YS5jbGVhcigpOwogI2VuZGlmCi0gICAg
aW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKKyAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuaW52
YWxpZGF0ZSgpOwogCiAgICAgU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5pbnZhbGlk
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgK
aW5kZXggZTk5MWY4M2MxZTAyLi42M2MwYzFlOWYxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGVGb250cy5oIgorI2luY2x1ZGUgIkZvbnRDYXNj
YWRlQ2FjaGUuaCIKICNpbmNsdWRlICJGb250Q3JlYXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAi
Rm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgpAQCAtODQs
MjA5ICs4NCw2IEBAIHVzaW5nIElNTGFuZ0ZvbnRMaW5rVHlwZSA9IElNTGFuZ0ZvbnRMaW5rMjsK
IHVzaW5nIElNTGFuZ0ZvbnRMaW5rVHlwZSA9IElNTGFuZ0ZvbnRMaW5rOwogI2VuZGlmCiAKLXN0
cnVjdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRE
ZXNjcmlwdGlvbktleVJhcmVEYXRhPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gY3JlYXRl
KEZvbnRGZWF0dXJlU2V0dGluZ3MmJiBmZWF0dXJlU2V0dGluZ3MsIEZvbnRWYXJpYXRpb25TZXR0
aW5ncyYmIHZhcmlhdGlvblNldHRpbmdzLCBGb250UGFsZXR0ZSYmIGZvbnRQYWxldHRlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udERlc2NyaXB0aW9uS2V5UmFyZURh
dGEoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSwg
V1RGTW92ZShmb250UGFsZXR0ZSkpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBGb250RmVhdHVyZVNl
dHRpbmdzJiBmZWF0dXJlU2V0dGluZ3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZmVhdHVyZVNldHRpbmdzOwotICAgIH0KLQotICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5n
cyYgdmFyaWF0aW9uU2V0dGluZ3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFy
aWF0aW9uU2V0dGluZ3M7Ci0gICAgfQotCi0gICAgY29uc3QgRm9udFBhbGV0dGUmIGZvbnRQYWxl
dHRlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlOwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mZWF0dXJlU2V0dGluZ3MgPT0g
b3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKLSAgICAgICAgICAgICYmIG1fdmFyaWF0aW9uU2V0dGlu
Z3MgPT0gb3RoZXIubV92YXJpYXRpb25TZXR0aW5ncwotICAgICAgICAgICAgJiYgbV9mb250UGFs
ZXR0ZSA9PSBvdGhlci5tX2ZvbnRQYWxldHRlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGb250
RGVzY3JpcHRpb25LZXlSYXJlRGF0YShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRp
bmdzLCBGb250VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0
dGUmJiBmb250UGFsZXR0ZSkKLSAgICAgICAgOiBtX2ZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKGZl
YXR1cmVTZXR0aW5ncykpCi0gICAgICAgICwgbV92YXJpYXRpb25TZXR0aW5ncyhXVEZNb3ZlKHZh
cmlhdGlvblNldHRpbmdzKSkKLSAgICAgICAgLCBtX2ZvbnRQYWxldHRlKFdURk1vdmUoZm9udFBh
bGV0dGUpKQotICAgIHsKLSAgICB9Ci0KLSAgICBGb250RmVhdHVyZVNldHRpbmdzIG1fZmVhdHVy
ZVNldHRpbmdzOwotICAgIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBtX3ZhcmlhdGlvblNldHRpbmdz
OwotICAgIEZvbnRQYWxldHRlIG1fZm9udFBhbGV0dGU7Ci19OwotCi1pbmxpbmUgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhJiBrZXkpCi17
Ci0gICAgYWRkKGhhc2hlciwga2V5LmZlYXR1cmVTZXR0aW5ncygpLCBrZXkudmFyaWF0aW9uU2V0
dGluZ3MoKSwga2V5LmZvbnRQYWxldHRlKCkpOwotfQotCi0vLyBUaGlzIGtleSBjb250YWlucyB0
aGUgRm9udERlc2NyaXB0aW9uIGZpZWxkcyBvdGhlciB0aGFuIGZhbWlseSB0aGF0IG1hdHRlciB3
aGVuIGZldGNoaW5nIEZvbnREYXRhcyAocGxhdGZvcm0gZm9udHMpLgotc3RydWN0IEZvbnREZXNj
cmlwdGlvbktleSB7Ci0gICAgRm9udERlc2NyaXB0aW9uS2V5KCkgPSBkZWZhdWx0OwotCi0gICAg
Rm9udERlc2NyaXB0aW9uS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0g
ICAgICAgIDogbV9zaXplKGRlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCi0gICAgICAg
ICwgbV9mb250U2VsZWN0aW9uUmVxdWVzdChkZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVz
dCgpKQotICAgICAgICAsIG1fZmxhZ3MobWFrZUZsYWdzS2V5KGRlc2NyaXB0aW9uKSkKLSAgICAg
ICAgLCBtX2xvY2FsZShkZXNjcmlwdGlvbi5zcGVjaWZpZWRMb2NhbGUoKSkKLSAgICB7Ci0gICAg
ICAgIGF1dG8gZmVhdHVyZVNldHRpbmdzID0gZGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCk7
Ci0gICAgICAgIGF1dG8gdmFyaWF0aW9uU2V0dGluZ3MgPSBkZXNjcmlwdGlvbi52YXJpYXRpb25T
ZXR0aW5ncygpOwotICAgICAgICBhdXRvIGZvbnRQYWxldHRlID0gZGVzY3JpcHRpb24uZm9udFBh
bGV0dGUoKTsKLSAgICAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpIHx8ICF2YXJp
YXRpb25TZXR0aW5ncy5pc0VtcHR5KCkgfHwgZm9udFBhbGV0dGUudHlwZSAhPSBGb250UGFsZXR0
ZTo6VHlwZTo6Tm9ybWFsKQotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IEZvbnREZXNjcmlwdGlv
bktleVJhcmVEYXRhOjpjcmVhdGUoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZh
cmlhdGlvblNldHRpbmdzKSwgV1RGTW92ZShmb250UGFsZXR0ZSkpOwotICAgIH0KLQotICAgIGV4
cGxpY2l0IEZvbnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
Ci0gICAgICAgIDogbV9pc0RlbGV0ZWRWYWx1ZSh0cnVlKQotICAgIHsgfQotCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZSA9PSBvdGhlci5tX2lzRGVsZXRlZFZhbHVl
Ci0gICAgICAgICAgICAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplCi0gICAgICAgICAgICAmJiBt
X2ZvbnRTZWxlY3Rpb25SZXF1ZXN0ID09IG90aGVyLm1fZm9udFNlbGVjdGlvblJlcXVlc3QKLSAg
ICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncwotICAgICAgICAgICAgJiYgbV9s
b2NhbGUgPT0gb3RoZXIubV9sb2NhbGUKLSAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVh
bERhdGEobV9yYXJlRGF0YSwgb3RoZXIubV9yYXJlRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVkVmFsdWU7IH0K
LQotICAgIGZyaWVuZCB2b2lkIGFkZChIYXNoZXImLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXkm
KTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbWFrZUZs
YWdzS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgewotICAgICAg
ICB1bnNpZ25lZCBmaXJzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zY3Jp
cHQoKSkgPDwgMTUKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLnNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nKCkpIDw8IDE0Ci0gICAgICAgICAg
ICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0
YWxsZWRGb250cygpKSA8PCAxMwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24uZm9udFN0eWxlQXhpcygpID09IEZvbnRTdHlsZUF4aXM6OnNsbnQpIDw8IDEy
Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcHRpY2Fs
U2l6aW5nKCkpIDw8IDExCi0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNj
cmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKSA8PCA5Ci0gICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5mb250U3ludGhlc2lzKCkpIDw8IDYKLSAgICAgICAg
ICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKSA8
PCA0Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5ub25D
SktHbHlwaE9yaWVudGF0aW9uKCkpIDw8IDMKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpIDw8IDIKLSAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSk7Ci0gICAgICAg
IHVuc2lnbmVkIHNlY29uZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJp
YW50RWFzdEFzaWFuUnVieSgpKSA8PCAyNwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIDw8IDI1Ci0gICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFu
VmFyaWFudCgpKSA8PCAyMgotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24udmFyaWFudEFsdGVybmF0ZXMoKSkgPDwgMjEKLSAgICAgICAgICAgIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oKSkg
PDwgMjAKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZh
cmlhbnROdW1lcmljT3JkaW5hbCgpKSA8PCAxOQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGcmFjdGlvbigpKSA8PCAxNwotICAg
ICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVy
aWNTcGFjaW5nKCkpIDw8IDE1Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY0ZpZ3VyZSgpKSA8PCAxMwotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENhcHMoKSkgPDwgMTAKLSAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRQb3Np
dGlvbigpKSA8PCA4Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKSkgPDwgNgotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVy
ZXMoKSkgPDwgNAotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24udmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSkgPDwgMgotICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbW1vbkxpZ2F0dXJlcygp
KTsKLSAgICAgICAgcmV0dXJuIHt7IGZpcnN0LCBzZWNvbmQgfX07Ci0gICAgfQotCi0gICAgYm9v
bCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07
Ci0gICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKLSAgICBz
dGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07Ci0gICAgQXRvbVN0cmlu
ZyBtX2xvY2FsZTsKLSAgICBSZWZQdHI8Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE+IG1fcmFy
ZURhdGE7Ci19OwotCi1pbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbktleSYga2V5KQotewotICAgIGFkZChoYXNoZXIsIGtleS5tX3NpemUsIGtleS5t
X2ZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBrZXkubV9mbGFncywga2V5Lm1fbG9jYWxlKTsKLSAgICBp
ZiAoa2V5Lm1fcmFyZURhdGEpCi0gICAgICAgIGFkZChoYXNoZXIsICprZXkubV9yYXJlRGF0YSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewot
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpG
b250RGVzY3JpcHRpb25LZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4g
OiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7Ci19
OwotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBjbGFzcyBob2xkcyB0aGUg
bmFtZSBvZiBhIGZvbnQgZmFtaWx5LCBhbmQgZGVmaW5lcyBoYXNoaW5nIGFuZCA9PSBvZiB0aGlz
IG5hbWUgdG8KLS8vIHVzZSB0aGUgcnVsZXMgZm9yIGZvbnQgZmFtaWx5IG5hbWVzIGluc3RlYWQg
b2YgdXNpbmcgc3RyYWlnaHQgc3RyaW5nIGNvbXBhcmlzb24uCi1jbGFzcyBGb250RmFtaWx5TmFt
ZSB7Ci1wdWJsaWM6Ci0gICAgRm9udEZhbWlseU5hbWUoKTsKLSAgICBGb250RmFtaWx5TmFtZShj
b25zdCBBdG9tU3RyaW5nJik7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKCkgY29uc3Q7
Ci0gICAgZnJpZW5kIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7Ci0K
LXByaXZhdGU6Ci0gICAgQXRvbVN0cmluZyBtX25hbWU7Ci19OwotCi1ib29sIG9wZXJhdG9yPT0o
Y29uc3QgRm9udEZhbWlseU5hbWUmLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOwotYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKLQot
c3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkgewotICAgIEZvbnREZXNjcmlwdGlvbktleSBmb250
RGVzY3JpcHRpb25LZXk7IC8vIFNoYXJlZCB3aXRoIHRoZSBsb3dlciBsZXZlbCBGb250Q2FjaGUg
KGNhY2hpbmcgRm9udCBvYmplY3RzKQotICAgIFZlY3RvcjxGb250RmFtaWx5TmFtZSwgMz4gZmFt
aWxpZXM7Ci0gICAgdW5zaWduZWQgZm9udFNlbGVjdG9ySWQ7Ci0gICAgdW5zaWduZWQgZm9udFNl
bGVjdG9yVmVyc2lvbjsKLX07Ci0KLWlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29u
c3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5KQotewotICAgIGFkZChoYXNoZXIsIGtleS5mb250
RGVzY3JpcHRpb25LZXksIGtleS5mYW1pbGllcywga2V5LmZvbnRTZWxlY3RvcklkLCBrZXkuZm9u
dFNlbGVjdG9yVmVyc2lvbik7Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2Fk
ZUNhY2hlS2V5JiwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYpOwotCi1zdHJ1Y3QgRm9udENh
c2NhZGVDYWNoZUVudHJ5IHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0K
LSAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKLSAgICBSZWY8Rm9udENhc2NhZGVGb250cz4g
Zm9udHM7Ci19OwotCi1zdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2ggewotICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkgeyByZXR1cm4g
Y29tcHV0ZUhhc2goa2V5KTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZvbnRDYXNj
YWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IGZhbHNlOwotfTsKLQotc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5PiB7Ci0gICAgc3RhdGljIEZvbnRD
YXNjYWRlQ2FjaGVLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb250Q2FzY2FkZUNhY2hlS2V5JiBzbG90KSB7IG5l
dyAoTm90TnVsbCwgJnNsb3QuZm9udERlc2NyaXB0aW9uS2V5KSBGb250RGVzY3JpcHRpb25LZXko
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYga2V5KSB7IHJldHVybiBrZXkuZm9udERl
c2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLX07Ci0KLXVzaW5nIEZv
bnRDYXNjYWRlQ2FjaGUgPSBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCwgRm9u
dENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM+OwotCiBjbGFzcyBGb250Q2FjaGUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMzQ4LDggKzE0NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXRmb3JtUHVy
Z2VJbmFjdGl2ZUZvbnREYXRhKCk7CiAKICAgICB2b2lkIHVwZGF0ZUZvbnRDYXNjYWRlKGNvbnN0
IEZvbnRDYXNjYWRlJiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJik7Ci0gICAgdm9pZCBpbnZhbGlk
YXRlRm9udENhc2NhZGVDYWNoZSgpOwotICAgIHZvaWQgY2xlYXJXaWR0aENhY2hlcygpOwogCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIFJlZlB0cjxGb250PiBmb250RnJvbURlc2NyaXB0aW9uQW5k
TG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBMT0dGT05UJiwgU3RyaW5nJiBv
dXRGb250RmFtaWx5TmFtZSk7CkBAIC0zNzYsNiArMTcxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cHJld2FybShQcmV3YXJtSW5mb3JtYXRpb24mJik7CiAgICAgc3RhdGljIHZvaWQgcHJld2FybUds
b2JhbGx5KCk7CiAKKyAgICBGb250Q2FzY2FkZUNhY2hlJiBmb250Q2FzY2FkZUNhY2hlKCkgeyBy
ZXR1cm4gbV9mb250Q2FzY2FkZUNhY2hlOyB9CiAgICAgU3lzdGVtRmFsbGJhY2tGb250Q2FjaGUm
IHN5c3RlbUZhbGxiYWNrRm9udENhY2hlKCkgeyByZXR1cm4gbV9zeXN0ZW1GYWxsYmFja0ZvbnRD
YWNoZTsgfQogCiBwcml2YXRlOgpAQCAtMzgzLDkgKzE3OSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhSWZOZWVkZWQoKTsKLSAgICB2b2lkIHBydW5lVW5yZWZlcmVuY2VkRW50
cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hlKCk7Ci0gICAgdm9pZCBwcnVuZVN5c3RlbUZhbGxiYWNr
Rm9udHMoKTsKLSAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hlZEZv
bnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYm
KTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmID0geyB9LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNh
Y2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjliYzdlNTNj
MzgzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Rm9udENhc2NhZGVDYWNoZS5oIgorCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAi
Rm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRG
YW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSgpID0gZGVmYXVsdDsKKworRm9udEZhbWlseU5hbWU6
OkZvbnRGYW1pbHlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCisgICAgOiBtX25hbWUgeyBu
YW1lIH0KK3sKK30KKworY29uc3QgQXRvbVN0cmluZyYgRm9udEZhbWlseU5hbWU6OnN0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmFtZTsKK30KKwordm9pZCBhZGQoSGFzaGVyJiBoYXNo
ZXIsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBuYW1lKQoreworICAgIC8vIEZJWE1FOiBXb3VsZCBi
ZSBiZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgbmFtZSBpbnN0ZWFkIG9mIGhh
c2hpbmcgYSBoYXNoLgorICAgIGlmICghbmFtZS5zdHJpbmcoKS5pc051bGwoKSkKKyAgICAgICAg
YWRkKGhhc2hlciwgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZmFtaWx5TmFtZUhhc2gobmFtZS5z
dHJpbmcoKSkpOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseU5hbWUmIGEs
IGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQoreworICAgIHJldHVybiAoYS5zdHJpbmcoKS5pc051
bGwoKSB8fCBiLnN0cmluZygpLmlzTnVsbCgpKSA/IGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKSA6
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVzQXJlRXF1YWwoYS5zdHJpbmcoKSwg
Yi5zdHJpbmcoKSk7Cit9CisKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5TmFtZSYg
YSwgY29uc3QgRm9udEZhbWlseU5hbWUmIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30K
KworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZv
bnRDYXNjYWRlQ2FjaGVLZXkmIGIpCit7CisgICAgcmV0dXJuIGEuZm9udERlc2NyaXB0aW9uS2V5
ID09IGIuZm9udERlc2NyaXB0aW9uS2V5CisgICAgICAgICYmIGEuZm9udFNlbGVjdG9ySWQgPT0g
Yi5mb250U2VsZWN0b3JJZAorICAgICAgICAmJiBhLmZvbnRTZWxlY3RvclZlcnNpb24gPT0gYi5m
b250U2VsZWN0b3JWZXJzaW9uCisgICAgICAgICYmIGEuZmFtaWxpZXMgPT0gYi5mYW1pbGllczsK
K30KKworRm9udENhc2NhZGVDYWNoZSYgRm9udENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpCit7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRDYXNj
YWRlQ2FjaGUoKTsKK30KKwordm9pZCBGb250Q2FzY2FkZUNhY2hlOjppbnZhbGlkYXRlKCkKK3sK
KyAgICBtX2VudHJpZXMuY2xlYXIoKTsKK30KKwordm9pZCBGb250Q2FzY2FkZUNhY2hlOjpjbGVh
cldpZHRoQ2FjaGVzKCkKK3sKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogbV9lbnRyaWVzLnZhbHVl
cygpKQorICAgICAgICB2YWx1ZS0+Zm9udHMuZ2V0KCkud2lkdGhDYWNoZSgpLmNsZWFyKCk7Cit9
CisKK3ZvaWQgRm9udENhc2NhZGVDYWNoZTo6cHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCkKK3sK
KyAgICBtX2VudHJpZXMucmVtb3ZlSWYoW10oYXV0byYgZW50cnkpIHsKKyAgICAgICAgcmV0dXJu
IGVudHJ5LnZhbHVlLT5mb250cy5nZXQoKS5oYXNPbmVSZWYoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBGb250Q2FzY2FkZUNhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKQoreworICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX2VudHJpZXMudmFsdWVzKCkpCisgICAgICAgIGVudHJ5LT5mb250
cy0+cHJ1bmVTeXN0ZW1GYWxsYmFja3MoKTsKK30KKworc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGVL
ZXkgbWFrZUZvbnRDYXNjYWRlQ2FjaGVLZXkoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKQoreworICAgIEZvbnRDYXNj
YWRlQ2FjaGVLZXkga2V5OworICAgIGtleS5mb250RGVzY3JpcHRpb25LZXkgPSBGb250RGVzY3Jp
cHRpb25LZXkoZGVzY3JpcHRpb24pOworICAgIHVuc2lnbmVkIGZhbWlseUNvdW50ID0gZGVzY3Jp
cHRpb24uZmFtaWx5Q291bnQoKTsKKyAgICBrZXkuZmFtaWxpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShmYW1pbHlDb3VudCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZhbWlseUNv
dW50OyArK2kpCisgICAgICAgIGtleS5mYW1pbGllcy51bmNoZWNrZWRBcHBlbmQoZGVzY3JpcHRp
b24uZmFtaWx5QXQoaSkpOworICAgIGtleS5mb250U2VsZWN0b3JJZCA9IGZvbnRTZWxlY3RvciA/
IGZvbnRTZWxlY3Rvci0+dW5pcXVlSWQoKSA6IDA7CisgICAga2V5LmZvbnRTZWxlY3RvclZlcnNp
b24gPSBmb250U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPnZlcnNpb24oKSA6IDA7CisgICAgcmV0
dXJuIGtleTsKK30KKworUmVmPEZvbnRDYXNjYWRlRm9udHM+IEZvbnRDYXNjYWRlQ2FjaGU6OnJl
dHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKQoreworICAg
IGF1dG8ga2V5ID0gbWFrZUZvbnRDYXNjYWRlQ2FjaGVLZXkoZm9udERlc2NyaXB0aW9uLCBmb250
U2VsZWN0b3IuZ2V0KCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9lbnRyaWVzLmFkZChrZXks
IG51bGxwdHIpOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVy
biBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5mb250cy5nZXQoKTsKKworICAgIGF1dG8mIG5l
d0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBuZXdFbnRyeSA9IG1ha2VV
bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihGb250Q2FzY2FkZUNhY2hlRW50cnkgeyBXVEZN
b3ZlKGtleSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3Rvcikp
IH0pOworICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Zm9udHMu
Z2V0KCk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5l
SW50ZXJ2YWwgPSA1MDsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhpbXVtRW50cmllcyA9
IDQwMDsKKyAgICBzdGF0aWMgdW5zaWduZWQgcHJ1bmVDb3VudGVyOworICAgIC8vIFJlZmVyZW5j
ZWQgRm9udENhc2NhZGVGb250cyB3b3VsZCBleGlzdCBhbnl3YXkgc28gcHJ1bmluZyB0aGVtIHNh
dmVzIGxpdHRsZSBtZW1vcnkuCisgICAgaWYgKCEoKytwcnVuZUNvdW50ZXIgJSB1bnJlZmVyZW5j
ZWRQcnVuZUludGVydmFsKSkKKyAgICAgICAgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCk7Cisg
ICAgLy8gUHJldmVudCBwYXRob2xvZ2ljYWwgZ3Jvd3RoLgorICAgIGlmIChtX2VudHJpZXMuc2l6
ZSgpID4gbWF4aW11bUVudHJpZXMpCisgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVz
LnJhbmRvbSgpKTsKKyAgICByZXR1cm4gZ2x5cGhzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNzUxOGNj
NzBmN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUNhY2hlLmgKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRm9udENh
c2NhZGVGb250cy5oIgorI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkZv
bnRUYWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21wYXJpc29uLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Rm9udERlc2NyaXB0aW9uS2V5
UmFyZURhdGE+IGNyZWF0ZShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRpbmdzLCBG
b250VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0dGUmJiBm
b250UGFsZXR0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnREZXNj
cmlwdGlvbktleVJhcmVEYXRhKFdURk1vdmUoZmVhdHVyZVNldHRpbmdzKSwgV1RGTW92ZSh2YXJp
YXRpb25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBhbGV0dGUpKSk7CisgICAgfQorCisgICAgY29u
c3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2ZlYXR1cmVTZXR0aW5nczsKKyAgICB9CisKKyAgICBjb25zdCBGb250
VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNldHRpbmdzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3ZhcmlhdGlvblNldHRpbmdzOworICAgIH0KKworICAgIGNvbnN0IEZvbnRQ
YWxldHRlJiBmb250UGFsZXR0ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mb250
UGFsZXR0ZTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0
aW9uS2V5UmFyZURhdGEmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmVh
dHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRpbmdzCisgICAgICAgICAgICAmJiBt
X3ZhcmlhdGlvblNldHRpbmdzID09IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKKyAgICAgICAg
ICAgICYmIG1fZm9udFBhbGV0dGUgPT0gb3RoZXIubV9mb250UGFsZXR0ZTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEoRm9udEZlYXR1cmVTZXR0aW5n
cyYmIGZlYXR1cmVTZXR0aW5ncywgRm9udFZhcmlhdGlvblNldHRpbmdzJiYgdmFyaWF0aW9uU2V0
dGluZ3MsIEZvbnRQYWxldHRlJiYgZm9udFBhbGV0dGUpCisgICAgICAgIDogbV9mZWF0dXJlU2V0
dGluZ3MoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpKQorICAgICAgICAsIG1fdmFyaWF0aW9uU2V0
dGluZ3MoV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncykpCisgICAgICAgICwgbV9mb250UGFsZXR0
ZShXVEZNb3ZlKGZvbnRQYWxldHRlKSkKKyAgICB7CisgICAgfQorCisgICAgRm9udEZlYXR1cmVT
ZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKKyAgICBGb250VmFyaWF0aW9uU2V0dGluZ3MgbV92
YXJpYXRpb25TZXR0aW5nczsKKyAgICBGb250UGFsZXR0ZSBtX2ZvbnRQYWxldHRlOworfTsKKwor
aW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXlS
YXJlRGF0YSYga2V5KQoreworICAgIGFkZChoYXNoZXIsIGtleS5mZWF0dXJlU2V0dGluZ3MoKSwg
a2V5LnZhcmlhdGlvblNldHRpbmdzKCksIGtleS5mb250UGFsZXR0ZSgpKTsKK30KKworLy8gVGhp
cyBrZXkgY29udGFpbnMgdGhlIEZvbnREZXNjcmlwdGlvbiBmaWVsZHMgb3RoZXIgdGhhbiBmYW1p
bHkgdGhhdCBtYXR0ZXIgd2hlbiBmZXRjaGluZyBGb250RGF0YXMgKHBsYXRmb3JtIGZvbnRzKS4K
K3N0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgeworICAgIEZvbnREZXNjcmlwdGlvbktleSgpID0g
ZGVmYXVsdDsKKworICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVs
U2l6ZSgpKQorICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVlc3QoZGVzY3JpcHRpb24uZm9u
dFNlbGVjdGlvblJlcXVlc3QoKSkKKyAgICAgICAgLCBtX2ZsYWdzKG1ha2VGbGFnc0tleShkZXNj
cmlwdGlvbikpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24uc3BlY2lmaWVkTG9jYWxl
KCkpCisgICAgeworICAgICAgICBhdXRvIGZlYXR1cmVTZXR0aW5ncyA9IGRlc2NyaXB0aW9uLmZl
YXR1cmVTZXR0aW5ncygpOworICAgICAgICBhdXRvIHZhcmlhdGlvblNldHRpbmdzID0gZGVzY3Jp
cHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKTsKKyAgICAgICAgYXV0byBmb250UGFsZXR0ZSA9IGRl
c2NyaXB0aW9uLmZvbnRQYWxldHRlKCk7CisgICAgICAgIGlmICghZmVhdHVyZVNldHRpbmdzLmlz
RW1wdHkoKSB8fCAhdmFyaWF0aW9uU2V0dGluZ3MuaXNFbXB0eSgpIHx8IGZvbnRQYWxldHRlLnR5
cGUgIT0gRm9udFBhbGV0dGU6OlR5cGU6Ok5vcm1hbCkKKyAgICAgICAgICAgIG1fcmFyZURhdGEg
PSBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Y3JlYXRlKFdURk1vdmUoZmVhdHVyZVNldHRp
bmdzKSwgV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBhbGV0dGUpKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBGb250RGVzY3JpcHRpb25LZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1faXNEZWxldGVkVmFsdWUodHJ1ZSkKKyAgICB7
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNEZWxldGVkVmFsdWUgPT0gb3RoZXIu
bV9pc0RlbGV0ZWRWYWx1ZQorICAgICAgICAgICAgJiYgbV9zaXplID09IG90aGVyLm1fc2l6ZQor
ICAgICAgICAgICAgJiYgbV9mb250U2VsZWN0aW9uUmVxdWVzdCA9PSBvdGhlci5tX2ZvbnRTZWxl
Y3Rpb25SZXF1ZXN0CisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKKyAg
ICAgICAgICAgICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCisgICAgICAgICAgICAmJiBh
cmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZURhdGEsIG90aGVyLm1fcmFyZURhdGEpOworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0K
KworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lz
RGVsZXRlZFZhbHVlOyB9CisKKyAgICBmcmllbmQgdm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgRm9u
dERlc2NyaXB0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8dW5z
aWduZWQsIDI+IG1ha2VGbGFnc0tleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24uc2NyaXB0KCkpIDw8IDE1CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2luZygpKSA8
PCAxNAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uc2hv
dWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkgPDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmZvbnRTdHlsZUF4aXMoKSA9PSBGb250U3R5bGVB
eGlzOjpzbG50KSA8PCAxMgorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVz
Y3JpcHRpb24ub3B0aWNhbFNpemluZygpKSA8PCAxMQorICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSkgPDwgOQorICAgICAg
ICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uZm9udFN5bnRoZXNpcygp
KSA8PCA2CisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi53
aWR0aFZhcmlhbnQoKSkgPDwgNAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24ubm9uQ0pLR2x5cGhPcmllbnRhdGlvbigpKSA8PCAzCisgICAgICAgICAgICB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKSA8PCAyCisg
ICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZW5kZXJpbmdN
b2RlKCkpOworICAgICAgICB1bnNpZ25lZCBzZWNvbmQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhblJ1YnkoKSkgPDwgMjcKKyAgICAgICAgICAgIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgp
KSA8PCAyNQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24u
dmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgPDwgMjIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRBbHRlcm5hdGVzKCkpIDw8IDIxCisgICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJp
Y1NsYXNoZWRaZXJvKCkpIDw8IDIwCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY09yZGluYWwoKSkgPDwgMTkKKyAgICAgICAgICAg
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljRnJhY3Rp
b24oKSkgPDwgMTcKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLnZhcmlhbnROdW1lcmljU3BhY2luZygpKSA8PCAxNQorICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGaWd1cmUoKSkgPDwgMTMK
KyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRD
YXBzKCkpIDw8IDEwCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi52YXJpYW50UG9zaXRpb24oKSkgPDwgOAorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpIDw8IDYK
KyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRI
aXN0b3JpY2FsTGlnYXR1cmVzKCkpIDw8IDQKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKCkpIDw8IDIK
KyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRD
b21tb25MaWdhdHVyZXMoKSk7CisgICAgICAgIHJldHVybiB7IHsgZmlyc3QsIHNlY29uZCB9IH07
CisgICAgfQorCisgICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsKKyAgICB1bnNp
Z25lZCBtX3NpemUgeyAwIH07CisgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0
aW9uUmVxdWVzdDsKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtX2ZsYWdzIHsgeyAwLCAw
IH0gfTsKKyAgICBBdG9tU3RyaW5nIG1fbG9jYWxlOworICAgIFJlZlB0cjxGb250RGVzY3JpcHRp
b25LZXlSYXJlRGF0YT4gbV9yYXJlRGF0YTsKK307CisKK2lubGluZSB2b2lkIGFkZChIYXNoZXIm
IGhhc2hlciwgY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBrZXkpCit7CisgICAgYWRkKGhhc2hl
ciwga2V5Lm1fc2l6ZSwga2V5Lm1fZm9udFNlbGVjdGlvblJlcXVlc3QsIGtleS5tX2ZsYWdzLCBr
ZXkubV9sb2NhbGUpOworICAgIGlmIChrZXkubV9yYXJlRGF0YSkKKyAgICAgICAgYWRkKGhhc2hl
ciwgKmtleS5tX3JhcmVEYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9u
dERlc2NyaXB0aW9uS2V5PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29y
ZTo6Rm9udERlc2NyaXB0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGNvbXB1dGVIYXNoKGtleSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkm
IGEsIGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleSYgYikgeyByZXR1cm4gYSA9PSBi
OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxl
dGVkID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxXZWJDb3JlOjpGb250
RGVzY3JpcHRpb25LZXk+IHsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaG9sZHMgdGhlIG5hbWUgb2YgYSBmb250IGZhbWls
eSwgYW5kIGRlZmluZXMgaGFzaGluZyBhbmQgPT0gb2YgdGhpcyBuYW1lIHRvCisvLyB1c2UgdGhl
IHJ1bGVzIGZvciBmb250IGZhbWlseSBuYW1lcyBpbnN0ZWFkIG9mIHVzaW5nIHN0cmFpZ2h0IHN0
cmluZyBjb21wYXJpc29uLgorY2xhc3MgRm9udEZhbWlseU5hbWUgeworcHVibGljOgorICAgIEZv
bnRGYW1pbHlOYW1lKCk7CisgICAgRm9udEZhbWlseU5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwor
ICAgIGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZygpIGNvbnN0OworICAgIGZyaWVuZCB2b2lkIGFk
ZChIYXNoZXImLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOworCitwcml2YXRlOgorICAgIEF0b21T
dHJpbmcgbV9uYW1lOworfTsKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1l
JiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFt
aWx5TmFtZSYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7CisKK3N0cnVjdCBGb250Q2FzY2FkZUNh
Y2hlS2V5IHsKKyAgICBGb250RGVzY3JpcHRpb25LZXkgZm9udERlc2NyaXB0aW9uS2V5OyAvLyBT
aGFyZWQgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgRm9udENhY2hlIChjYWNoaW5nIEZvbnQgb2JqZWN0
cykKKyAgICBWZWN0b3I8Rm9udEZhbWlseU5hbWUsIDM+IGZhbWlsaWVzOworICAgIHVuc2lnbmVk
IGZvbnRTZWxlY3RvcklkOworICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb247Cit9Owor
CitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVL
ZXkmIGtleSkKK3sKKyAgICBhZGQoaGFzaGVyLCBrZXkuZm9udERlc2NyaXB0aW9uS2V5LCBrZXku
ZmFtaWxpZXMsIGtleS5mb250U2VsZWN0b3JJZCwga2V5LmZvbnRTZWxlY3RvclZlcnNpb24pOwor
fQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYsIGNvbnN0IEZv
bnRDYXNjYWRlQ2FjaGVLZXkmKTsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgRm9udENhc2NhZGVDYWNo
ZUtleSBrZXk7CisgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGZvbnRzOworfTsKKworc3RydWN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpIHsgcmV0dXJuIGNvbXB1dGVIYXNoKGtleSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25z
dCBGb250Q2FzY2FkZUNhY2hlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307
CisKK3N0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8Rm9u
dENhc2NhZGVDYWNoZUtleT4geworICAgIHN0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5IGVtcHR5
VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVk
VmFsdWUoRm9udENhc2NhZGVDYWNoZUtleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LmZv
bnREZXNjcmlwdGlvbktleSkgRm9udERlc2NyaXB0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEZvbnRDYXNj
YWRlQ2FjaGVLZXkmIGtleSkgeyByZXR1cm4ga2V5LmZvbnREZXNjcmlwdGlvbktleS5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCitjbGFzcyBGb250Q2FzY2FkZUNhY2hlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FzY2FkZUNhY2hlKTsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGb250Q2FzY2FkZUNhY2hlKCkgPSBkZWZhdWx0
OworCisgICAgc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGUmIGZvckN1cnJlbnRUaHJlYWQoKTsKKwor
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHZvaWQgY2xlYXJXaWR0aENhY2hlcygpOworICAg
IHZvaWQgcHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKCk7CisgICAgdm9pZCBwcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKTsKKyAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVj
dG9yPiYmKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5
SGFzaCwgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM+IG1fZW50cmllczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>