<?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>233749</bug_id>
          
          <creation_ts>2021-12-01 23:09:30 -0800</creation_ts>
          <short_desc>move shouldAutoActivateFontIfNeeded knownFamilies cache to FontCache</short_desc>
          <delta_ts>2021-12-07 17:38:41 -0800</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>
          <dependson>233747</dependson>
          <blocked>233488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</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>1819581</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:09:30 -0800</bug_when>
    <thetext>With OffscreenCanvas, we can call shouldAutoActivateFontIfNeeded on a worker thread, and the knownFamilies HashSet is not thread safe. Also, the AtomStrings it stores are thread-specific. Move it to FontCache, so each thread has its own set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819582</commentid>
    <comment_count>1</comment_count>
      <attachid>445675</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:10:38 -0800</bug_when>
    <thetext>Created attachment 445675
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819584</commentid>
    <comment_count>2</comment_count>
      <attachid>445676</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:11:56 -0800</bug_when>
    <thetext>Created attachment 445676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820929</commentid>
    <comment_count>3</comment_count>
      <attachid>445676</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-07 00:47:12 -0800</bug_when>
    <thetext>Comment on attachment 445676
Patch

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

Good idea.

&gt; Source/WebCore/platform/graphics/FontCache.h:378
&gt; +#if PLATFORM(MAC)

I think generally our policy is to only ifdef function definitions, not declarations (just to reduce visual noise).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820930</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-07 00:47:54 -0800</bug_when>
    <thetext>It&apos;s probably worth investigating whether this cache actually saves us any perf at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821203</commentid>
    <comment_count>5</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 13:16:15 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #3)
&gt; I think generally our policy is to only ifdef function definitions, not
&gt; declarations (just to reduce visual noise).

OK.  I guess it would need to be #ifdefed it were using some platform-specific type (and we didn&apos;t already have a typedef pointing to the platform-specific type we could use).

There is some benefit from the #ifdef, which is to point out to the reader that these are indeed only available on some platform/configuration, but maybe they can just discover that themselves when they try to call the function and it&apos;s not defined everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821296</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 17:09:46 -0800</bug_when>
    <thetext>/Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821301</commentid>
    <comment_count>7</comment_count>
      <attachid>446261</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 17:18:58 -0800</bug_when>
    <thetext>Created attachment 446261
[fast-cq] Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821313</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 17:36:57 -0800</bug_when>
    <thetext>Committed r286634 (?): &lt;https://commits.webkit.org/r286634&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446261.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821316</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 17:38:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/86185239&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445675</attachid>
            <date>2021-12-01 23:10:38 -0800</date>
            <delta_ts>2021-12-01 23:10:38 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-233749-20211202181036.patch</filename>
            <type>text/plain</type>
            <size>62950</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MTgxOGY3YjkyNDNk
MzcwNGFiNjk4OTk2N2IwN2I4ZGMxNTNkMy4uNjlmNmQxOTIxNDZjMzQ2OTgzNGZlOTZmODFmMDAx
YWJjODAwMjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAyMS0xMi0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc2hvdWxk
QXV0b0FjdGl2YXRlRm9udElmTmVlZGVkIGtub3duRmFtaWxpZXMgY2FjaGUgdG8gRm9udENhY2hl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NDkK
KworICAgICAgICBXaXRoIE9mZnNjcmVlbkNhbnZhcywgd2UgY2FuIGNhbGwgc2hvdWxkQXV0b0Fj
dGl2YXRlRm9udElmTmVlZGVkIG9uIGEKKyAgICAgICAgd29ya2VyIHRocmVhZCwgYW5kIHRoZSBr
bm93bkZhbWlsaWVzIEhhc2hTZXQgaXMgbm90IHRocmVhZCBzYWZlLiBBbHNvLAorICAgICAgICB0
aGUgQXRvbVN0cmluZ3MgaXQgc3RvcmVzIGFyZSB0aHJlYWQtc3BlY2lmaWMuIE1vdmUgaXQgdG8g
Rm9udENhY2hlLCBzbworICAgICAgICBlYWNoIHRocmVhZCBoYXMgaXRzIG93biBzZXQuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6c2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZCk6IERlbGV0ZWQu
CisKKzIwMjEtMTItMDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIEZvbnRDYWNoZSBzaW5nbGV0b24gYW5kIGluc3RhbmNlIG9uIFdvcmtlckds
b2JhbFNjb3BlIHRvIFRocmVhZEdsb2JhbERhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSB2YXJpb3VzIHBsYWNlcyBpbiBmb250IGNv
ZGUgd2hlcmUgd2UgbmVlZCBhY2Nlc3MgdG8gYQorICAgICAgICBGb250Q2FjaGUgaW5zdGFuY2Uu
IEN1cnJlbnRseSB3ZToKKworICAgICAgICAtIGFzc3VtZSB0aGF0IHdlJ3JlIG9uIHRoZSBtYWlu
IHRocmVhZCBhbmQgY2FsbAorICAgICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCksIG9yCisg
ICAgICAgIC0gZ2V0IGEgRm9udENhY2hlIG9mZiBXb3JrZXJHbG9iYWxTY29wZSBhbmQgcGFzcyBp
dCBkb3duIChvciBzdG9yZSBpdCkKKyAgICAgICAgICB3aGVyZSBpdCdzIG5lZWRlZCwgdGhlbiBw
YXNzIGl0IHRvIGZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24uCisKKyAgICAgICAgSGF2
aW5nIHRvIHRocmVhZCB0aHJvdWdoLCBvciBzdG9yZSwgdGhlIEZvbnRDYWNoZSBwb2ludGVyIGlz
CisgICAgICAgIGluY29udmVuaWVudCwgYW5kIHRoZXJlIGFyZSBzb21lIHBsYWNlcyB3aGVyZSB3
ZSBkb24ndCBoYXZlIGFjY2VzcyB0bworICAgICAgICBhIEZvbnRDYWNoZSBwb2ludGVyLCBidXQg
d2UncmUgb24gYSB3b3JrZXIsIGFuZCB3ZSBjYWxsCisgICAgICAgIGZvbnRDYWNoZUZhbGxpbmdC
YWNrVG9TaW5nbGV0b24gYW5kIHdyb25nbHkgZ2V0IGJhY2sgdGhlIG1haW4gdGhyZWFkJ3MKKyAg
ICAgICAgaW5zdGFuY2UuCisKKyAgICAgICAgSSB0aGluayBpdCB3b3VsZCBiZSBjbGVhbmVyIGlm
IHdlIG1vdmVkIGJvdGggdGhlIG1haW4gdGhyZWFkIEZvbnRDYWNoZQorICAgICAgICBzaW5nbGV0
b24sIGFuZCB0aGUgb25lIHN0b3JlZCBvbiBhIFdvcmtlckdsb2JhbFNjb3BlLCB0bworICAgICAg
ICBUaHJlYWRHbG9iYWxEYXRhLCB3aGljaCBpcyBlYXNpbHkgZ2xvYmFsbHkgYWNjZXNzaWJsZS4g
UGVyZm9ybWluZyBhCisgICAgICAgIFRMUyBsb29rdXAgaXMgY2hlYXAgdGhlc2UgZGF5cy4KKwor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbik6CisgICAg
ICAgIFJlbW92ZSBmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uIGFuZCByZXBsYWNlIGNh
bGxzIHRvIGl0IHdpdGgKKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQpOgorICAg
ICAgICBSZXBsYWNlIGdldHRpbmcgdGhlIEZvbnRDYWNoZSBmcm9tIHRoZSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHdpdGggYQorICAgICAgICBjYWxsIHRvIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZC4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNvdXJjZTo6Zm9udCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250QXR0cmli
dXRlQ2hhbmdlc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENoYW5nZXM6OnBsYXRm
b3JtRm9udEZhbWlseU5hbWVGb3JDU1MgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyk6CisgICAgICAgICogcGFn
ZS9NZW1vcnlSZWxlYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VOb25jcml0aWNh
bE1lbW9yeSk6CisgICAgICAgICogcGFnZS9Qcm9jZXNzV2FybWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OlByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpwcmV3YXJtV2l0aEluZm9ybWF0aW9uKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRl
QWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKToKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBGb250
Q2FjaGU6OnNpbmdsZXRvbiB3aXRoIGNhbGxzIHRvCisgICAgICAgIEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZC4KKworICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6fkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6
OmZvbnRSYW5nZXNGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjpmYWxsYmFja0ZvbnRBdCk6CisgICAgICAgIFJlbW92ZSBDU1NGb250U2VsZWN0b3I6Om1fZm9u
dENhY2hlIGFuZCB1c2UKKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkIGluc3Rl
YWQuCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmZvbnRDYWNoZSk6CisgICAgICAgIFJlbW92ZSB0aGUgRm9udENh
Y2hlIG1lbWJlci4KKworICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGE6OmZvbnRD
YWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZEdsb2JhbERhdGE6OmluaXRpYWxpemVGb250Q2FjaGUpOgorICAgICAgICBBZGQgYW4g
YWNjZXNzb3IgZm9yIGEgbGF6aWx5IGNyZWF0ZWQgRm9udENhY2hlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OkZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6c3lzdGVtRmFsbGJhY2tGb250
Rm9yQ2hhcmFjdGVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmNyZWF0ZUZvbnQpOgorICAgICAgICBS
ZW1vdmUgRm9udENhY2hlIGFyZ3VtZW50cyBhbmQgdXNlIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCBpbgorICAgICAgICB0aGVpciBwbGFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZSk6
CisgICAgICAgIENoYW5nZSBmYWN0b3J5IGZ1bmN0aW9uIHRvIHJldHVybiBhIHVuaXF1ZV9wdHIu
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQpOgorICAgICAgICBSZXBsYWNlIEZvbnRD
YWNoZTo6c2luZ2xldG9uIHdpdGggRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLCB3aGljaAor
ICAgICAgICBsb29rcyB1cCB0aGUgRm9udENhY2hlIG9uIFRocmVhZEdsb2JhbERhdGEuCisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzKToKKyAgICAg
ICAgTmV3IGZ1bmN0aW9uIHRoYXQgd2lsbCBpbiB0aGUgZnV0dXJlIGludmFsaWRhdGUgdGhlIG1h
aW4gdGhyZWFkIGFuZAorICAgICAgICBhbGwgd29ya2VyIHRocmVhZCBGb250Q2FjaGVzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIFJlbW92ZSBy
ZWZjb3VudGluZyBmcm9tIEZvbnRDYWNoZSBzaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0byBzdG9y
ZSBhCisgICAgICAgIHN0cm9uZyByZWZlcmVuY2UgdG8gaXQgb24gb3RoZXIgb2JqZWN0cy4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRv
bik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6aXNDdXJyZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp1cGRhdGUgY29uc3QpOgorICAgICAgICBDYWxs
IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgZnJvbSB0
aGUKKyAgICAgICAgRm9udFNlbGVjdG9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRz
OjpGb250Q2FzY2FkZUZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWxpemVOZXh0RmFsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVGb250czo6cmVhbGl6ZUZhbGxiYWNr
UmFuZ2VzQXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVGb250czo6Z2x5cGhEYXRh
Rm9yU3lzdGVtRmFsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmZv
bnRGb3JDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZSBjb25zdCk6CisgICAgICAgIFVzZSBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250U2VsZWN0b3IuaDoKKyAgICAgICAgUmVtb3ZlIGZvbnRDYWNoZSBtZXRob2QuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmb250Q2FjaGVSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9u
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnByZXdhcm1HbG9iYWxseSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c3lzdGVtRm9udFBhcmFtZXRlcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0
UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVU
byk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaG91bGRNb2NrQm9s
ZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgVXNlIEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGb250Q2FjaGUp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6aW52YWxpZGF0ZUZvbnRDYWNoZSk6CisgICAgICAgIENhbGwgdGhlIG5ldyBGb250
Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDSktDb2Rl
UGFnZU1hc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tG
b3JDaGFyYWN0ZXJzKToKKyAgICAgICAgVXNlIHRoZSBGb250Q2FjaGUgaW5zdGFuY2Ugd2UgaGF2
ZSBhY2Nlc3MgdG8gcmF0aGVyIHRoYW4gY2FsbAorICAgICAgICBGb250Q2FjaGU6OnNpbmdsZXRv
bi4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckds
b2JhbFNjb3BlOjpmb250Q2FjaGUpOgorICAgICAgICBSZW1vdmUgdGhlIEZvbnRDYWNoZSBtZW1i
ZXIgYW5kIGFjY2Vzc29yLgorCiAyMDIxLTEyLTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcm9sbGluZyBjb21wbGV4IHdlYnNpdGVzIGNhbiBz
dHV0dGVyOiBzY3JvbGxpbmcgdGhyZWFkIGZyYW1lIGNhbiBmYWlsIHRvIHByb2Nlc3Mgd2hlZWwg
ZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGY2ZjliYzEzODVlMjYzNmQ3Y2RiOTdjMWJmMmZkNWU1ZDIwOTQx
ODIuLmVmMzVkYjA3M2I0OWU2NzhhYmMzZDdjYzY4ZDczM2JkMjcyZjRmMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjEtMTItMDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRDYWNoZSBzaW5nbGV0b24gYW5kIGluc3RhbmNl
IG9uIFdvcmtlckdsb2JhbFNjb3BlIHRvIFRocmVhZEdsb2JhbERhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc0NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAg
VXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWEgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNpbmdsZXRv
bigpIHRvIHVzZQorICAgICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4KKwogMjAy
MS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEF2
b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkgbWVtb3J5IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBh
IFNoYXJlZEJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg2ZTVkOTk1OGM2
NTJhNWFmM2Y3ODVjMDViNTUwNDIzYWJmZTEwYTMuLjUyM2M5ZjU5NjhmZmI4OWY2OWRiZmQ1ZDMx
ZTRlNjBjNTVjYzY3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2Vy
R2xvYmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAg
ICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBjYWNoZWRGb250RGF0YUNvdW50XSk6CisgICAgICAg
ICgrW1dlYkNvcmVTdGF0aXN0aWNzIGNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudF0pOgorICAg
ICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBwdXJnZUluYWN0aXZlRm9udERhdGFdKToKKyAgICAg
ICAgVXBkYXRlIGV4aXN0aW5nIG1haW4gdGhyZWFkIGNhbGxlcnMgb2YgRm9udENhY2hlOjpzaW5n
bGV0b24oKSB0byB1c2UKKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuCisK
IDIwMjEtMTItMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdyZXNzaW9uKHIyODM5MTIpIEJyb2tlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIFN3aWZ0
IGJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggY2FkNjFhNzdhMDEwY2Rk
ODcwZjBhNWM2N2QyMTM5Njk2NmJiNjBhYy4uMGUxYjc1NjEyYjg0ZmYxMDM2MzIyN2EyYzVhMTI4
OTdjNGM3MWRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIxLTEyLTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBGb250Q2FjaGUgc2luZ2xldG9uIGFuZCBpbnN0YW5jZSBvbiBXb3JrZXJHbG9i
YWxTY29wZSB0byBUaHJlYWRHbG9iYWxEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUNvdW50KToKKyAgICAgICAgKFdlYkNvcmVT
dGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUluYWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZVN0YXRpc3RpY3M6OnB1cmdlSW5hY3RpdmVGb250RGF0YSk6CisgICAgICAgIFVwZGF0ZSBleGlz
dGluZyBtYWluIHRocmVhZCBjYWxsZXJzIG9mIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkgdG8gdXNl
CisgICAgICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLgorCiAyMDIxLTExLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDog
VXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3Bw
CmluZGV4IDEzNDk0OGNiZmRiNzdkNmMyNTI3NzY0MTQ5MWU3OWZhMTNlYzgxNWQuLmViM2JjMGIz
MjI0ZDc1YTYxMjNkYzJiYWQ3OTY4M2M3N2I5YTg1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcApAQCAtMzk2LDEzICszOTYsNiBAQCBEb2N1bWVudCogQ1NTRm9udEZhY2U6OmRvY3Vt
ZW50KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRm9udENhY2hlJiBDU1NGb250RmFjZTo6
Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbigpCi17Ci0gICAgaWYgKG1fd3JhcHBlciAm
JiBtX3dyYXBwZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIG1f
d3JhcHBlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5mb250Q2FjaGUoKTsKLSAgICByZXR1
cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKLX0KLQogYm9vbCBDU1NGb250RmFjZTo6Y29tcHV0
ZUZhaWx1cmVTdGF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXR1cygpID09IFN0YXR1czo6RmFp
bHVyZSkKQEAgLTY3Niw5ICs2NjksOCBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2U6OmZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvb2wgc3ludAogICAgICAg
ICBzd2l0Y2ggKHNvdXJjZS0+c3RhdHVzKCkpIHsKICAgICAgICAgY2FzZSBDU1NGb250RmFjZVNv
dXJjZTo6U3RhdHVzOjpQZW5kaW5nOgogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpT
dGF0dXM6OkxvYWRpbmc6IHsKLSAgICAgICAgICAgIGF1dG8mIGZvbnRDYWNoZSA9IGZvbnRDYWNo
ZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oKTsKICAgICAgICAgICAgIEZvbnQ6OlZpc2liaWxpdHkg
dmlzaWJpbGl0eSA9IFdlYkNvcmU6OnZpc2liaWxpdHkoc3RhdHVzKCksIGZvbnRMb2FkVGltaW5n
KCkpOwotICAgICAgICAgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShmb250Q2FjaGUubGFzdFJlc29y
dEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pLT5wbGF0Zm9ybURhdGEoKSwgRm9udDo6T3Jp
Z2luOjpMb2NhbCwgJmZvbnRDYWNoZSwgRm9udDo6SW50ZXJzdGl0aWFsOjpZZXMsIHZpc2liaWxp
dHkpOworICAgICAgICAgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5sYXN0UmVzb3J0RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlvbiktPnBsYXRm
b3JtRGF0YSgpLCBGb250OjpPcmlnaW46OkxvY2FsLCBGb250OjpJbnRlcnN0aXRpYWw6Olllcywg
dmlzaWJpbGl0eSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NGb250RmFjZVNvdXJjZTo6
U3RhdHVzOjpTdWNjZXNzOiB7CiAgICAgICAgICAgICBGb250Q3JlYXRpb25Db250ZXh0IGZvbnRD
cmVhdGlvbkNvbnRleHQgeyBtX2ZlYXR1cmVTZXR0aW5ncywgbV9mb250U2VsZWN0aW9uQ2FwYWJp
bGl0aWVzLCBmb250UGFsZXR0ZVZhbHVlcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRl
eCA3ODk5M2VmZWY1N2I1ZTY3OTk2YWQxYmRhZWY4NzcxN2ZhMTYwZGU4Li4xYjhjZWFhNmUyNTFm
ZjhlYmU1N2JmNDAxNWZhMTJhMTZhNTE0ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaApA
QCAtNDYsNyArNDYsNiBAQCBjbGFzcyBDU1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NTZWdtZW50
ZWRGb250RmFjZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgQ1NTVmFsdWVMaXN0OwotY2xhc3Mg
Rm9udENhY2hlOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlw
dGlvbjsKIGNsYXNzIEZvbnQ7CkBAIC0xNzQsNyArMTczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHRpbWVvdXRGaXJlZCgpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7Ci0gICAgRm9udENh
Y2hlJiBmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKCk7CiAKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBtX2ZhbWlsaWVzOwogICAgIFZlY3RvcjxVbmljb2RlUmFuZ2U+IG1fcmFuZ2Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggYTc2YWFjZTk3NDQ0ZTIz
YjVhYjAzYWU1YzA0OWE0NGQ3NGRmYWZhYS4uNjJlZWNiNWE1ZDI0MWRjYmU4YjI0OTM1YmI2YzJm
MzI4OTQ5MTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JG
YW1pbHlSZWdpc3RlcmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICBpZiAoIW1fb3duaW5nRm9u
dFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IG1fb3du
aW5nRm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVz
KCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPyBBbGxvd1VzZXJJbnN0YWxsZWRGb250
czo6WWVzIDogQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vOwotICAgIFZlY3RvcjxGb250U2Vs
ZWN0aW9uQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMgPSBtX293bmluZ0ZvbnRTZWxlY3Rvci0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5mb250Q2FjaGUoKS5nZXRGb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzSW5GYW1pbHkoZmFtaWx5TmFtZSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwor
ICAgIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMgPSBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5nZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5G
YW1pbHkoZmFtaWx5TmFtZSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgIGlmIChjYXBh
YmlsaXRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0
NzUyNjU2MGJhZGQuLmFlYjRiNmNjNTBhMTI2Yzk4MzBkNjA2YWJiMGMzYThjNjlhOWMzMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShtX2ZhbWlseU5hbWVPclVSSSk7
CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEpOwogICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKG1f
ZmFjZS5hbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2Zh
bWlseU5hbWVPclVSSSwgeyB9LCB0cnVlKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgbV9m
YW1pbHlOYW1lT3JVUkksIHsgfSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNz
RW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQo
KS5sb2dGb250TG9hZCgqZG9jdW1lbnQsIG1fZmFtaWx5TmFtZU9yVVJJLnN0cmluZygpLCBzdWNj
ZXNzKTsKICAgICAgICAgfQpAQCAtMjEwLDcgKzIxMCw3IEBAIFJlZlB0cjxGb250PiBDU1NGb250
RmFjZVNvdXJjZTo6Zm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
Ym9vCiAKICAgICAgICAgLy8gV2UncmUgbG9jYWwuIEp1c3QgcmV0dXJuIGEgRm9udCBmcm9tIHRo
ZSBub3JtYWwgY2FjaGUuCiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2hlY2sgYWx0ZXJu
YXRlIGZvbnQgZmFtaWx5IG5hbWVzIGhlcmUsIHNvIHBhc3MgdHJ1ZSBhcyB0aGUgY2hlY2tpbmdB
bHRlcm5hdGVOYW1lIHBhcmFtZXRlci4KLSAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCBm
b250Q3JlYXRpb25Db250ZXh0LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2ZhbWlseU5h
bWVPclVSSSwgZm9udENyZWF0aW9uQ29udGV4dCwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1f
Zm9udFJlcXVlc3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXgg
YWUxMWE4YjljZThlMGY3YWYyZTFjNzI5YTFhMzVkNTk4NDZlZTk4Ni4uNjcwNGNhOWQ0OTdlNTcz
ODJjNGQ5ZTUzOGI5NDBiNTY2M2M0ZDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAKQEAgLTY1LDcgKzY1LDYgQEAgc3RhdGljIHVuc2lnbmVkIGZvbnRTZWxlY3Rvcklk
OwogQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQotICAgICwgbV9mb250Q2FjaGUoY29udGV4dC5mb250Q2FjaGUoKSkKICAg
ICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKICAgICAs
IG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIoW3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCiAgICAg
LCBtX3VuaXF1ZUlkKCsrZm9udFNlbGVjdG9ySWQpCkBAIC04MSw3ICs4MCw3IEBAIENTU0ZvbnRT
ZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiAgICAgICAgICAgICBtX2ZvbnRGYW1pbHlOYW1lcy51bmNoZWNrZWRBcHBlbmQoZmFtaWx5TmFt
ZSk7CiAgICAgfQogCi0gICAgbV9mb250Q2FjaGUtPmFkZENsaWVudCgqdGhpcyk7CisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuYWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2Nzc0Zv
bnRGYWNlU2V0LT5hZGRGb250TW9kaWZpZWRPYnNlcnZlcihtX2ZvbnRNb2RpZmllZE9ic2VydmVy
KTsKICAgICBMT0coRm9udHMsICJDU1NGb250U2VsZWN0b3IgJXAgY3RvciIsIHRoaXMpOwogCkBA
IC05Myw3ICs5Miw3IEBAIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAg
TE9HKEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAogICAgIGNsZWFy
Rm9udHMoKTsKLSAgICBtX2ZvbnRDYWNoZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBGb250
RmFjZVNldCogQ1NTRm9udFNlbGVjdG9yOjpmb250RmFjZVNldElmRXhpc3RzKCkKQEAgLTM1OSw3
ICszNTgsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWls
eShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogCiAgICAgaWYgKCFyZXNvbHZlR2Vu
ZXJpY0ZhbWlseUZpcnN0KQogICAgICAgICByZXNvbHZlQW5kQXNzaWduR2VuZXJpY0ZhbWlseSgp
OwotICAgIGF1dG8gZm9udCA9IG1fZm9udENhY2hlLT5mb250Rm9yRmFtaWx5KCpmb250RGVzY3Jp
cHRpb25Gb3JMb29rdXAsIGZhbWlseUZvckxvb2t1cCwgeyB7IH0sIHsgfSwgZm9udFBhbGV0dGVW
YWx1ZXMgfSk7CisgICAgYXV0byBmb250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCku
Zm9udEZvckZhbWlseSgqZm9udERlc2NyaXB0aW9uRm9yTG9va3VwLCBmYW1pbHlGb3JMb29rdXAs
IHsgeyB9LCB7IH0sIGZvbnRQYWxldHRlVmFsdWVzIH0pOwogICAgIGlmIChkb2N1bWVudCAmJiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NF
bmFibGVkKCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dGb250
TG9hZCgqZG9jdW1lbnQsIGZhbWlseUZvckxvb2t1cC5zdHJpbmcoKSwgISFmb250KTsKICAgICBy
ZXR1cm4gRm9udFJhbmdlcyB7IFdURk1vdmUoZm9udCkgfTsKQEAgLTM5MCw3ICszODksNyBAQCBS
ZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIGlmICghbV9jb250ZXh0LT5zZXR0aW5nc1ZhbHVl
cygpLmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocykKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgYXV0byYgcGljdG9ncmFwaEZvbnRGYW1pbHkgPSBtX2NvbnRleHQtPnNldHRpbmdz
VmFsdWVzKCkuZm9udEdlbmVyaWNGYW1pbGllcy5waWN0b2dyYXBoRm9udEZhbWlseSgpOwotICAg
IGF1dG8gZm9udCA9IG1fZm9udENhY2hlLT5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwg
cGljdG9ncmFwaEZvbnRGYW1pbHkpOworICAgIGF1dG8gZm9udCA9IEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBwaWN0b2dyYXBoRm9u
dEZhbWlseSk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSAmJiBpczxEb2N1bWVudD4obV9jb250ZXh0KSkK
ICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKGRvd25j
YXN0PERvY3VtZW50PigqbV9jb250ZXh0KSwgcGljdG9ncmFwaEZvbnRGYW1pbHksICEhZm9udCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCAxNGEwNDU0OWQ0MTA4Y2U1
MzI5MjU4M2IzOGU0NzAzMjdmMTk0YmE1Li5mYjhlYzg5MjFjM2M1YmI5YWE3M2U5NWU1NWFkMjEw
OTdiZTVjYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC03Miw3ICs3
Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEZvbnRGYWNlUnVsZShTdHlsZVJ1bGVGb250RmFj
ZSYsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7CiAgICAg
dm9pZCBhZGRGb250UGFsZXR0ZVZhbHVlc1J1bGUoU3R5bGVSdWxlRm9udFBhbGV0dGVWYWx1ZXMm
KTsKIAotICAgIEZvbnRDYWNoZSYgZm9udENhY2hlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9m
b250Q2FjaGUuZ2V0KCk7IH0KICAgICB2b2lkIGZvbnRDYWNoZUludmFsaWRhdGVkKCkgZmluYWw7
CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTEyMyw3ICsxMjIsNiBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxQZW5kaW5nRm9udEZhY2VSdWxlPiBtX3N0YWdpbmdBcmVhOwogCiAgICAg
V2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmPEZvbnRD
YWNoZT4gbV9mb250Q2FjaGU7CiAgICAgUmVmUHRyPEZvbnRGYWNlU2V0PiBtX2ZvbnRGYWNlU2V0
OwogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9jc3NGb250RmFjZVNldDsKICAgICBIYXNoU2V0
PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBhNTZlMzBkMjQ4NzA3MzA2NDJiMzI3NTUy
MThjNWEyNTYwYTRkNjcxLi45NTQ0Njc5NDM3ZjhlMWUwMTQ3M2NiNmE3MGNkNWQwNzJmYzcxYzM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCi0jaW5jbHVkZSAiRm9udENhY2hl
LmgiCiAjaW5jbHVkZSAiRm9udExvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCkBAIC0yMjMsMTEgKzIyMiw2
IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBVUkwmKQogewogfQogCi1Gb250Q2FjaGUmIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmZvbnRDYWNoZSgpCi17Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7Ci19
Ci0KIENTU1ZhbHVlUG9vbCYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y3NzVmFsdWVQb29sKCkK
IHsKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFmM2IxMWM4YzM5NTQ2N2VhZGEw
Nzc1OGU2NGZkMmFhNjQ1ZDQ2MTUuLjM1MzNjMjBlMmVlNTc5NjBiNTRiZmUxNTM2ZGUzZmIyZjhj
Y2ExODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApA
QCAtNjYsNyArNjYsNiBAQCBjbGFzcyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBFdmVudFF1ZXVl
OwogY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRUYXJnZXQ7Ci1jbGFzcyBG
b250Q2FjaGU7CiBjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNs
YXNzIFBlcm1pc3Npb25Db250cm9sbGVyOwpAQCAtMTY4LDcgKzE2Nyw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYp
OwogCi0gICAgdmlydHVhbCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwogICAgIHZpcnR1YWwgQ1NT
Rm9udFNlbGVjdG9yKiBjc3NGb250U2VsZWN0b3IoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
dmlydHVhbCBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpOwogICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYgdXJsLCBi
b29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUs
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCmluZGV4IGQ0MzFmNzIy
ZTI0YWFiM2JkMTc3MjhiNDM1OGI3ODY5OGI3ODZmNGIuLjg2YjkzMjEwNzZjZTVmNmU5MDBlNzgx
ODk3NDQ1Y2NhYjIyMmYyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KQEAgLTQ4LDcgKzQ4LDcgQEAg
Y29uc3QgU3RyaW5nJiBGb250Q2hhbmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZvckNTUygp
IGNvbnN0CiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwogICAgIGRlc2NyaXB0aW9u
LnNldElzSXRhbGljKG1faXRhbGljLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgZGVzY3JpcHRpb24u
c2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSB7IG1fYm9sZC52YWx1ZV9vcihmYWxzZSkgPyA5
MDAgOiA1MDAgfSk7Ci0gICAgaWYgKGF1dG8gZm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCku
Zm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgbV9mb250RmFtaWx5KSkKKyAgICBpZiAoYXV0byBm
b250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvckZhbWlseShkZXNjcmlw
dGlvbiwgbV9mb250RmFtaWx5KSkKICAgICAgICAgZm9udE5hbWVGcm9tRGVzY3JpcHRpb24gPSBh
ZG9wdENGKENURm9udENvcHlQb3N0U2NyaXB0TmFtZShmb250LT5nZXRDVEZvbnQoKSkpOwogCiAg
ICAgaWYgKGZvbnROYW1lRnJvbURlc2NyaXB0aW9uICYmIENGU3RyaW5nQ29tcGFyZShjZkZvbnRO
YW1lLmdldCgpLCBmb250TmFtZUZyb21EZXNjcmlwdGlvbi5nZXQoKSwgMCkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDYzYzExM2UyZWExMGRlMWI4NmY1MDViMzQzYzEyYzY3
NGZiYmQxN2UuLjc5YTMyNDUwYWQ0NmQ0YTFkZGQ3M2U5YzkxYjY1ZmQ4ZGMzM2I2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpT
T046OkFycmF5T2Y8U3RyaW5nPj4+IEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3IKIHsKICAg
ICBhdXRvIGZvbnRGYW1pbHlOYW1lcyA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBzeXN0ZW1Gb250RmFtaWxpZXMgPSBGb250Q2FjaGU6OnNp
bmdsZXRvbigpLnN5c3RlbUZvbnRGYW1pbGllcygpOworICAgIFZlY3RvcjxTdHJpbmc+IHN5c3Rl
bUZvbnRGYW1pbGllcyA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZvbnRG
YW1pbGllcygpOwogICAgIGZvciAoY29uc3QgYXV0byYgZmFtaWx5TmFtZSA6IHN5c3RlbUZvbnRG
YW1pbGllcykKICAgICAgICAgZm9udEZhbWlseU5hbWVzLT5hZGRJdGVtKGZhbWlseU5hbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBlZjc5NTMwZTdjNWMyMGM0
MTg0MDY5ZWRjNTg2NWRjMjhiOTkzZjZmLi5iYmE5NWZhM2U2NzljYWZiMWIyOTE0ODA1N2RmMjdi
Y2IwNjgxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTcwLDgg
KzcwLDkgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KE1haW50YWluTWVt
b3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKIHsKICAgICBSZW5kZXJUaGVtZTo6c2luZ2xl
dG9uKCkucHVyZ2VDYWNoZXMoKTsKIAotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhKCk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5jbGVhcldpZHRo
Q2FjaGVzKCk7CisgICAgLy8gRklYTUU6IENsZWFyIHRoZXNlIGZvbnQgY2FjaGVzIGluIHdvcmtl
cnMgdG9vPworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3RpdmVG
b250RGF0YSgpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNsZWFyV2lkdGhD
YWNoZXMoKTsKIAogICAgIFRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKaW5kZXggM2UzZjNhZDgyYTRkZDI5
MzM5OTI1MDI1NWQ3ZGZjMzUzYmExYjM3NS4uZWM4MGFlNDNhYmU3OTEzNjk3OGM3ZmQwMDM5MGMy
MTZiNjliNzczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcm9jZXNzV2FybWluZy5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgdm9pZCBQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KCkKICAgICBj
b21tb25WTSgpOwogCiAgICAgLy8gUHJld2FybSBmb250IGNhY2hlCi0gICAgRm9udENhY2hlOjpz
aW5nbGV0b24oKS5wcmV3YXJtR2xvYmFsbHkoKTsKKyAgICBGb250Q2FjaGU6OnByZXdhcm1HbG9i
YWxseSgpOwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIFRl
bGVwaG9uZU51bWJlckRldGVjdG9yOjpwcmV3YXJtKCk7CkBAIC04NiwxMiArODYsMTIgQEAgdm9p
ZCBQcm9jZXNzV2FybWluZzo6cHJld2FybUdsb2JhbGx5KCkKIAogV2ViQ29yZTo6UHJld2FybUlu
Zm9ybWF0aW9uIFByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkKIHsK
LSAgICByZXR1cm4geyBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmNvbGxlY3RQcmV3YXJtSW5mb3Jt
YXRpb24oKSB9OworICAgIHJldHVybiB7IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNv
bGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSB9OwogfQogCiB2b2lkIFByb2Nlc3NXYXJtaW5nOjpw
cmV3YXJtV2l0aEluZm9ybWF0aW9uKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYgcHJld2FybUlu
Zm8pCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wcmV3YXJtKHByZXdhcm1JbmZvLmZv
bnRDYWNoZSk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHJld2FybShwcmV3
YXJtSW5mby5mb250Q2FjaGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5j
cHAKaW5kZXggMzllMGE5ZjUwNzk3Yjg0ZmE4NGY3OWQ0OTkzMDJiMzU1YTUyMTU1Ny4uNzhkNjgw
Y2FjYWZiYTM0ODAyYWVjM2NjYTI5MWNkMTA3YjNjYTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3NCYXNlLmNwcApAQCAtNTcsNyArNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyB2b2lkIGludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UoUGFnZSogcGFnZSkK
IHsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hl
KCk7CisgICAgLy8gRklYTUU6IENhbGwgaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKSBvbiBh
bGwgd29ya2Vycy4KKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZhbGlkYXRl
Rm9udENhc2NhZGVDYWNoZSgpOwogICAgIGlmIChwYWdlKQogICAgICAgICBwYWdlLT5zZXROZWVk
c1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggMjYyOTU0NzBlNzEwYTVkOTNmNTU4OWE2N2U3ZmFj
NDk4NDU5YjhiZS4uNjViMTc2NTk5MjA0NWFiODFiOTgwNDNlYzU1MTc2ZTVhZmQzNDcxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWVDYWNoZS5oIgog
I2luY2x1ZGUgIlRleHRDb2RlY0lDVS5oIgpAQCAtNjMsNiArNjQsOCBAQCB2b2lkIFRocmVhZEds
b2JhbERhdGE6OmRlc3Ryb3koKQogICAgIG1fZXZlbnROYW1lcyA9IG51bGxwdHI7CiAgICAgbV90
aHJlYWRUaW1lcnMgPSBudWxscHRyOwogICAgIG1fcXVhbGlmaWVkTmFtZUNhY2hlID0gbnVsbHB0
cjsKKyAgICBpZiAobV9mb250Q2FjaGUpCisgICAgICAgIG1fZm9udENhY2hlLT5pbnZhbGlkYXRl
KCk7CiB9CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKQEAgLTEzOSw0ICsxNDIsMTAgQEAgdm9pZCBU
aHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplTWltZVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERh
dGEoKQogICAgIG1fTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgpOwogfQogCit2
b2lkIFRocmVhZEdsb2JhbERhdGE6OmluaXRpYWxpemVGb250Q2FjaGUoKQoreworICAgIEFTU0VS
VCghbV9mb250Q2FjaGUpOworICAgIG1fZm9udENhY2hlID0gRm9udENhY2hlOjpjcmVhdGUoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5oCmluZGV4IGMwMmE1YTJmMWI1NDgwOTU0NjE5MTFhOTJhNTkzMWRmMmYw
N2U4NDIuLmI1YzJkMTkxMDQxNmZhOTg0YzFlMmY1YTUxMWViOWMyMjk5Mzc3OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKQEAgLTM3LDYgKzM3LDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRm9u
dENhY2hlOwogY2xhc3MgUXVhbGlmaWVkTmFtZUNhY2hlOwogY2xhc3MgVGhyZWFkVGltZXJzOwog
CkBAIC05NSwxMSArOTYsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaXNJblJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnM7
IH0KICAgICB2b2lkIHNldElzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVycyhib29sIHZhbHVlKSB7
IG1faXNJblJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzID0gdmFsdWU7IH0KIAorICAgIEZvbnRDYWNo
ZSYgZm9udENhY2hlKCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbV9mb250Q2FjaGUp
KQorICAgICAgICAgICAgaW5pdGlhbGl6ZUZvbnRDYWNoZSgpOworICAgICAgICByZXR1cm4gKm1f
Zm9udENhY2hlOworICAgIH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbml0aWFsaXplRXZlbnROYW1lcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW5pdGlhbGl6ZVF1YWxpZmllZE5hbWVDYWNoZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplRm9udENhY2hlKCk7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4gbV9jYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBtX2V2ZW50
TmFtZXM7CkBAIC0xMDgsNiArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBtX2N1cnJlbnRTdGF0ZSB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SUNV
Q29udmVydGVyV3JhcHBlcj4gbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE1JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxEYXRhPiBtX01JTUVUeXBlUmVnaXN0cnlU
aHJlYWRHbG9iYWxEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FjaGU+IG1fZm9udENh
Y2hlOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9pc01haW5UaHJlYWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThm
NWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MuLjRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2Zi
YWYyMWY1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBA
IC02MCwxNSArNjAsMTAgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihG
b250KTsKIAogUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZp
c2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxi
YWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmll
cikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2lu
LCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZp
ZXIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0
YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ss
IGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnRDYWNoZSogZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5
IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJz
dGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250
Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKLX0KLQotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRD
YWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7
CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5n
KTsKQEAgLTc2LDEwICs3MSwxMCBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbAogICAgIGRlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShmb250U2l6ZSk7CiAgICAgLy8gRklYTUU6IFdoeSBkb2Vz
bid0IHRoaXMgcGFzcyBpbiBhbnkgbWVhbmluZ2Z1bCBkYXRhIGZvciB0aGUgbGFzdCBmZXcgYXJn
dW1lbnRzPwogICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRh
RnJvbUN1c3RvbURhdGEoKmN1c3RvbUZvbnREYXRhLCBkZXNjcmlwdGlvbiwgc3ludGhldGljQm9s
ZCwgc3ludGhldGljSXRhbGljLCB7IH0pOwotICAgIHJldHVybiBGb250OjpjcmVhdGUoV1RGTW92
ZShwbGF0Zm9ybURhdGEpLCBvcmlnaW4sIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSk7CisgICAg
cmV0dXJuIEZvbnQ6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtRGF0YSksIG9yaWdpbik7CiB9CiAK
LUZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4g
b3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxpdHks
IE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
Rm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitGb250OjpGb250KGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFs
IGludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNr
IG9yaWVudGF0aW9uRmFsbGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgOiBtX3BsYXRmb3JtRGF0
YShwbGF0Zm9ybURhdGEpCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCkBAIC0xMDAs
MTEgKzk1LDkgQEAgRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnQKICAgICBwbGF0Zm9ybUNoYXJXaWR0
aEluaXQoKTsKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgaWYgKHBsYXRmb3Jt
RGF0YS5vcmllbnRhdGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwgJiYgb3JpZW50
YXRpb25GYWxsYmFjayA9PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObykgewotICAgICAgICBtX3Zl
cnRpY2FsRGF0YSA9IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSA/IGZvbnRDYWNoZUZvclZlcnRp
Y2FsRGF0YS0+dmVydGljYWxEYXRhKHBsYXRmb3JtRGF0YSkgOiBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLnZlcnRpY2FsRGF0YShwbGF0Zm9ybURhdGEpOworICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9
IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnZlcnRpY2FsRGF0YShwbGF0Zm9ybURhdGEp
OwogICAgICAgICBtX2hhc1ZlcnRpY2FsR2x5cGhzID0gbV92ZXJ0aWNhbERhdGEuZ2V0KCkgJiYg
bV92ZXJ0aWNhbERhdGEtPmhhc1ZlcnRpY2FsTWV0cmljcygpOwogICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSk7CiAjZW5kaWYKIH0KIApAQCAt
NTk2LDEzICs1ODksMTMgQEAgc3RhdGljIFN5c3RlbUZhbGxiYWNrQ2FjaGUmIHN5c3RlbUZhbGxi
YWNrQ2FjaGUoKQogICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKLVJlZlB0cjxGb250PiBGb250
OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlzRm9yUGxh
dGZvcm1Gb250LCBGb250Q2FjaGUmIGZvbnRDYWNoZSkgY29uc3QKK1JlZlB0cjxGb250PiBGb250
OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlzRm9yUGxh
dGZvcm1Gb250KSBjb25zdAogewogICAgIGF1dG8gZm9udEFkZFJlc3VsdCA9IHN5c3RlbUZhbGxi
YWNrQ2FjaGUoKS5hZGQodGhpcywgQ2hhcmFjdGVyRmFsbGJhY2tNYXAoKSk7CiAKICAgICBpZiAo
IWNoYXJhY3RlcikgewogICAgICAgICBVQ2hhciBjb2RlVW5pdCA9IDA7Ci0gICAgICAgIHJldHVy
biBmb250Q2FjaGUuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlz
LCBpc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sICZj
b2RlVW5pdCwgMSk7CisgICAgICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxh
dGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgJmNvZGVVbml0LCAx
KTsKICAgICB9CiAKICAgICBhdXRvIGtleSA9IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsgZGVz
Y3JpcHRpb24uY29tcHV0ZWRMb2NhbGUoKSwgY2hhcmFjdGVyLCBpc0ZvclBsYXRmb3JtRm9udCAh
PSBJc0ZvclBsYXRmb3JtRm9udDo6Tm8gfTsKQEAgLTYxNyw3ICs2MTAsNyBAQCBSZWZQdHI8Rm9u
dD4gRm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVy
LCBjb25zdCBGb250RAogICAgICAgICAgICAgY29kZVVuaXRzWzFdID0gVTE2X1RSQUlMKGNoYXJh
Y3Rlcik7CiAgICAgICAgICAgICBjb2RlVW5pdHNMZW5ndGggPSAyOwogICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gZm9udCA9IGZvbnRDYWNoZS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVz
Y3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9y
ZWRGb250OjpObywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOworICAgICAgICBh
dXRvIGZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2Fj
aGU6OlByZWZlckNvbG9yZWRGb250OjpObywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdl
dCgpOwogICAgICAgICBpZiAoZm9udCkKICAgICAgICAgICAgIGZvbnQtPm1faXNVc2VkSW5TeXN0
ZW1GYWxsYmFja0NhY2hlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZvbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0
MzgwODI5ZTE1YmJhYjZmNC4uNzQ0MjAwNGYwMGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2NmNzg1MTRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODEsMTEgKzgx
LDggQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgSW50ZXJzdGl0aWFsIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52aXNp
YmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsID0g
SW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2lu
LCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50
ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUs
IE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRp
YWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxs
YmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBG
b250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKQEAgLTE2NCw3
ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyKSBj
b25zdDsKICAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgc3RkOjpv
cHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAg
UmVmUHRyPEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyLCBjb25z
dCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlJikgY29uc3Q7
CisgICAgUmVmUHRyPEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMy
LCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCkgY29uc3Q7CiAKICAg
ICBjb25zdCBHbHlwaFBhZ2UqIGdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVtYmVyKSBjb25zdDsK
IApAQCAtMjA5LDcgKzIwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdF
QkNPUkVfRVhQT1JUIEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJz
dGl0aWFsLCBWaXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4sIEZvbnRDYWNoZSopOworICAgIFdFQkNPUkVfRVhQ
T1JUIEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0aWFsLCBW
aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4pOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKICAgICB2b2lk
IHBsYXRmb3JtR2x5cGhJbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcAppbmRleCBjZjEyY2Q3OGJkMjU2NTM5YWMwZGJiNGZhMThiNWUxYmQ1
YWIyMTAyLi4xYjEyYzdlNDliNTRhNGU2ODNjNGU1ZDE4YjY1ZGEwMjQ5NjFhNGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTM1LDcg
KzM1LDkgQEAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udFNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlRocmVhZEdsb2JhbERh
dGEuaCIKICNpbmNsdWRlICJXZWJLaXRGb250RmFtaWx5TmFtZXMuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KQEAgLTE0OCwxNiArMTUwLDE0IEBAIHN0cnVjdCBGb250Q2FjaGU6OkZvbnREYXRhQ2Fj
aGVzIHsKICNlbmRpZgogfTsKIAotUmVmPEZvbnRDYWNoZT4gRm9udENhY2hlOjpjcmVhdGUoKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDYWNoZT4gRm9udENhY2hlOjpjcmVhdGUoKQogewotICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRDYWNo
ZSgpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEZvbnRDYWNoZT4obmV3IEZvbnRDYWNo
ZSk7CiB9CiAKLUZvbnRDYWNoZSYgRm9udENhY2hlOjpzaW5nbGV0b24oKQorRm9udENhY2hlJiBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Rm9udENhY2hlPiBnbG9iYWxGb250Q2FjaGU7Ci0gICAgcmV0dXJuIGdsb2Jh
bEZvbnRDYWNoZTsKKyAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmZvbnRDYWNoZSgpOwog
fQogCiBGb250Q2FjaGU6OkZvbnRDYWNoZSgpCkBAIC0yODEsNyArMjgxLDcgQEAgUmVmPEZvbnQ+
IEZvbnRDYWNoZTo6Zm9udEZvclBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiAjZW5kaWYKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RGF0YUNh
Y2hlcy0+ZGF0YS5lbnN1cmUocGxhdGZvcm1EYXRhLCBbJl0gewotICAgICAgICByZXR1cm4gRm9u
dDo6Y3JlYXRlKHBsYXRmb3JtRGF0YSwgRm9udDo6T3JpZ2luOjpMb2NhbCwgdGhpcyk7CisgICAg
ICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhLCBGb250OjpPcmlnaW46OkxvY2Fs
KTsKICAgICB9KTsKIAogICAgIEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5wbGF0
Zm9ybURhdGEoKSA9PSBwbGF0Zm9ybURhdGEpOwpAQCAtNDg5LDYgKzQ4OSwxNCBAQCB2b2lkIEZv
bnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAgICAgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAK
K3ZvaWQgRm9udENhY2hlOjppbnZhbGlkYXRlQWxsRm9udENhY2hlcygpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIEZJWE1FOiBJbnZhbGlkYXRlIEZvbnRDYWNoZXMg
aW4gd29ya2VycyB0b28uCisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuaW52YWxp
ZGF0ZSgpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCiBGb250Q2FjaGU6OlByZXdhcm1J
bmZvcm1hdGlvbiBGb250Q2FjaGU6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA5ZWM1
NGY2M2IzYWJjZTlkMDNlYTY2MGVmZjE1ZGEzOTk2MjM1MjAyLi44ZjNkM2EzNmU0ZGRlMzE5MTkx
NmI3ZWNkMDU4ZGMwMDNlZTNjNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaApAQCAtMjgwLDE0ICsyODAsMTEgQEAgc3RydWN0IEZvbnRDYXNjYWRl
Q2FjaGVLZXlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5PiB7CiAK
IHVzaW5nIEZvbnRDYXNjYWRlQ2FjaGUgPSBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5
SGFzaCwgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM+OwogCi1jbGFzcyBGb250Q2FjaGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxGb250Q2FjaGU+IHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8Rm9udENhY2hlLCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzPjsKLQorY2xhc3MgRm9u
dENhY2hlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FjaGUpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvbnRDYWNoZT4gY3JlYXRl
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZvbnRDYWNoZSYgc2luZ2xldG9uKCk7Ci0g
ICAgc3RhdGljIEZvbnRDYWNoZSYgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihSZWZQ
dHI8Rm9udFNlbGVjdG9yPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FjaGU+
IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGb250Q2FjaGUmIGZvckN1cnJl
bnRUaHJlYWQoKTsKIAogICAgIH5Gb250Q2FjaGUoKTsKIApAQCAtMzI0LDYgKzMyMSw3IEBAIHB1
YmxpYzoKIAogICAgIHVuc2lnbmVkIHNob3J0IGdlbmVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRpb247IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWxsRm9udENhY2hlcygpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IGZvbnRDb3VudCgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBpbmFjdGl2ZUZvbnRDb3VudCgpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIFByZXdhcm1JbmZvcm1hdGlvbiBjb2xsZWN0UHJld2FybUluZm9ybWF0
aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYp
OwotICAgIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7CisgICAgc3RhdGljIHZvaWQgcHJld2FybUds
b2JhbGx5KCk7CiAKIHByaXZhdGU6CiAgICAgRm9udENhY2hlKCk7CkBAIC0zNzcsNiArMzc1LDEw
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBhbHRl
cm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFTQ0lJTGl0ZXJhbD4gcGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYp
OwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGJvb2wgc2hvdWxkQXV0b0FjdGl2YXRlRm9udElm
TmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSk7CisjZW5kaWYKKwogICAgIFRpbWVyIG1f
cHVyZ2VUaW1lcjsKICAgICAKICAgICBib29sIG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eSB7IGZhbHNlIH07CkBAIC0zOTIsNiArMzk0LDEwIEBAIHByaXZhdGU6CiAg
ICAgUmVjdXJzaXZlTG9jayBtX2ZvbnRMb2NrOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
CisgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBtX2tub3duRmFtaWxpZXM7CisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gbV9zZWVuRmFtaWxpZXNG
b3JQcmV3YXJtaW5nOwogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gbV9mb250TmFtZXNSZXF1aXJp
bmdTeXN0ZW1GYWxsYmFja0ZvclByZXdhcm1pbmc7CkBAIC00NDUsOSArNDUxLDQgQEAgc3RkOjpv
cHRpb25hbDxGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbj4gRm9udENhY2hlOjpQcmV3YXJt
SW5mb3JtYXRpb246OmRlY28KICAgICByZXR1cm4gcHJld2FybUluZm9ybWF0aW9uOwogfQogCi1p
bmxpbmUgRm9udENhY2hlJiBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0
b24oUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKQotewotICAgIHJldHVybiBmb250
U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPmZvbnRDYWNoZSgpIDogRm9udENhY2hlOjpzaW5nbGV0
b24oKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCmluZGV4IDZjMWQzNDczZDU3NTE4YWI4MzE4MjI4YTkwNDc4YzcyYmVhYTQ3
ODAuLmEyNmFjZWMwNmZhZWZiYzlkYWEzZDk3MjdhYTYwZGJiNDU5MmUxYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCBib29sIEZvbnRDYXNjYWRlOjppc0N1cnJlbnQoY29uc3QgRm9udFNlbGVjdG9y
JiBmb250U2VsZWN0b3IpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZvbnRzKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKG1fZm9udHMtPmdlbmVyYXRpb24oKSAhPSBmb250U2VsZWN0b3Iu
Zm9udENhY2hlKCkuZ2VuZXJhdGlvbigpKQorICAgIGlmIChtX2ZvbnRzLT5nZW5lcmF0aW9uKCkg
IT0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fZm9udHMtPmZvbnRTZWxlY3RvclZlcnNpb24oKSAhPSBm
b250U2VsZWN0b3IudmVyc2lvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTQsNyAr
MTU0LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlRm9udHMoUmVmPEZvbnRDYXNjYWRlRm9u
dHM+JiYgZm9udHMpIGNvbnN0CiAKIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9u
dFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKIHsKLSAgICBGb250Q2FjaGU6OmZvbnRD
YWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKS51cGRhdGVGb250Q2FzY2Fk
ZSgqdGhpcywgV1RGTW92ZShmb250U2VsZWN0b3IpKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS51cGRhdGVGb250Q2FzY2FkZSgqdGhpcywgV1RGTW92ZShmb250U2VsZWN0b3Ip
KTsKIH0KIAogR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29k
ZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApp
bmRleCBhMjQyZDM2NWY4OWRiYTljN2RhZDgwZjY5ODdjYjQ1ZGZjZjRhZGU4Li5kMzYyZmZlMmRm
N2M1ZWUzYmUzMzBhYzY4ZmVjNGRiOTI1OTZjZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtMTAyLDcgKzEw
Miw3IEBAIEZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMoUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4mJiBmb250U2VsZWN0b3IpCiAgICAgOiBtX2NhY2hlZFByaW1hcnlGb250KG51bGxwdHIp
CiAgICAgLCBtX2ZvbnRTZWxlY3Rvcihmb250U2VsZWN0b3IpCiAgICAgLCBtX2ZvbnRTZWxlY3Rv
clZlcnNpb24obV9mb250U2VsZWN0b3IgPyBtX2ZvbnRTZWxlY3Rvci0+dmVyc2lvbigpIDogMCkK
LSAgICAsIG1fZ2VuZXJhdGlvbihGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5n
bGV0b24obV9mb250U2VsZWN0b3IpLmdlbmVyYXRpb24oKSkKKyAgICAsIG1fZ2VuZXJhdGlvbihG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5nZW5lcmF0aW9uKCkpCiB7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQpAQCAtMTEzLDEwICsxMTMsMTAgQEAg
Rm9udENhc2NhZGVGb250czo6Rm9udENhc2NhZGVGb250cyhSZWZQdHI8Rm9udFNlbGVjdG9yPiYm
IGZvbnRTZWxlY3RvcikKIEZvbnRDYXNjYWRlRm9udHM6OkZvbnRDYXNjYWRlRm9udHMoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogICAgIDogbV9jYWNoZWRQcmltYXJ5Rm9u
dChudWxscHRyKQogICAgICwgbV9mb250U2VsZWN0b3JWZXJzaW9uKDApCi0gICAgLCBtX2dlbmVy
YXRpb24oRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVy
YXRpb24oRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogICAgICwg
bV9pc0ZvclBsYXRmb3JtRm9udCh0cnVlKQogewotICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdl
cy5hcHBlbmQoRm9udFJhbmdlcyhGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JQbGF0Zm9y
bURhdGEocGxhdGZvcm1EYXRhKSkpOworICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBl
bmQoRm9udFJhbmdlcyhGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yUGxhdGZv
cm1EYXRhKHBsYXRmb3JtRGF0YSkpKTsKIH0KIAogRm9udENhc2NhZGVGb250czo6fkZvbnRDYXNj
YWRlRm9udHMoKSA9IGRlZmF1bHQ7CkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIEZvbnRSYW5n
ZXMgcmVhbGl6ZU5leHRGYWxsYmFjayhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwKIHsKICAgICBBU1NFUlQoaW5kZXggPCBkZXNjcmlwdGlvbi5lZmZlY3RpdmVGYW1p
bHlDb3VudCgpKTsKIAotICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6Zm9udENhY2hl
RmFsbGluZ0JhY2tUb1NpbmdsZXRvbihmb250U2VsZWN0b3IpOworICAgIGF1dG8mIGZvbnRDYWNo
ZSA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpOwogICAgIHdoaWxlIChpbmRleCA8IGRl
c2NyaXB0aW9uLmVmZmVjdGl2ZUZhbWlseUNvdW50KCkpIHsKICAgICAgICAgYXV0byB2aXNpdG9y
ID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KSAtPiBGb250
UmFuZ2VzIHsKICAgICAgICAgICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQpAQCAtMTgxLDcgKzE4
MSw3IEBAIGNvbnN0IEZvbnRSYW5nZXMmIEZvbnRDYXNjYWRlRm9udHM6OnJlYWxpemVGYWxsYmFj
a1Jhbmdlc0F0KGNvbnN0IEZvbnRDYXNjYWRlRGVzCiAgICAgICAgIHJldHVybiBtX3JlYWxpemVk
RmFsbGJhY2tSYW5nZXNbaW5kZXhdOwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fcmVhbGl6ZWRG
YWxsYmFja1Jhbmdlcy5zaXplKCkpOwotICAgIEFTU0VSVChGb250Q2FjaGU6OmZvbnRDYWNoZUZh
bGxpbmdCYWNrVG9TaW5nbGV0b24obV9mb250U2VsZWN0b3IpLmdlbmVyYXRpb24oKSA9PSBtX2dl
bmVyYXRpb24pOworICAgIEFTU0VSVChGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5nZW5l
cmF0aW9uKCkgPT0gbV9nZW5lcmF0aW9uKTsKIAogICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdl
cy5hcHBlbmQoRm9udFJhbmdlcygpKTsKICAgICBhdXRvJiBmb250UmFuZ2VzID0gbV9yZWFsaXpl
ZEZhbGxiYWNrUmFuZ2VzLmxhc3QoKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBjb25zdCBGb250UmFu
Z2VzJiBGb250Q2FzY2FkZUZvbnRzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250
Q2FzY2FkZURlcwogICAgICAgICBpZiAoZm9udFJhbmdlcy5pc051bGwoKSAmJiBtX2ZvbnRTZWxl
Y3RvcikKICAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBtX2ZvbnRTZWxlY3Rvci0+Zm9udFJhbmdl
c0ZvckZhbWlseShkZXNjcmlwdGlvbiwgZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0lu
ZGV4OjpTdGFuZGFyZEZhbWlseSkpOwogICAgICAgICBpZiAoZm9udFJhbmdlcy5pc051bGwoKSkK
LSAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKEZvbnRDYWNoZTo6Zm9udENhY2hl
RmFsbGluZ0JhY2tUb1NpbmdsZXRvbihtX2ZvbnRTZWxlY3RvcikubGFzdFJlc29ydEZhbGxiYWNr
Rm9udChkZXNjcmlwdGlvbikpOworICAgICAgICAgICAgZm9udFJhbmdlcyA9IEZvbnRSYW5nZXMo
Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChkZXNj
cmlwdGlvbikpOwogICAgICAgICByZXR1cm4gZm9udFJhbmdlczsKICAgICB9CiAKQEAgLTM1MSw3
ICszNTEsNyBAQCBHbHlwaERhdGEgRm9udENhc2NhZGVGb250czo6Z2x5cGhEYXRhRm9yU3lzdGVt
RmFsbGJhY2soVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0CiAgICAgaWYgKCFmb250KQogICAgICAg
ICBmb250ID0gJnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGRlc2NyaXB0aW9uLCAwKS5mb250Rm9y
Rmlyc3RSYW5nZSgpOwogCi0gICAgYXV0byBzeXN0ZW1GYWxsYmFja0ZvbnQgPSBmb250LT5zeXN0
ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBkZXNjcmlwdGlvbiwgbV9pc0Zv
clBsYXRmb3JtRm9udCA/IElzRm9yUGxhdGZvcm1Gb250OjpZZXMgOiBJc0ZvclBsYXRmb3JtRm9u
dDo6Tm8sIEZvbnRDYWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihtX2ZvbnRT
ZWxlY3RvcikpOworICAgIGF1dG8gc3lzdGVtRmFsbGJhY2tGb250ID0gZm9udC0+c3lzdGVtRmFs
bGJhY2tGb250Rm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZGVzY3JpcHRpb24sIG1faXNGb3JQbGF0
Zm9ybUZvbnQgPyBJc0ZvclBsYXRmb3JtRm9udDo6WWVzIDogSXNGb3JQbGF0Zm9ybUZvbnQ6Ok5v
KTsKICAgICBpZiAoIXN5c3RlbUZhbGxiYWNrRm9udCkKICAgICAgICAgcmV0dXJuIEdseXBoRGF0
YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rv
ci5oCmluZGV4IDY1NDhlNzZmOTk2MWZmN2UxYTU4OWY1Y2JiMWMwNTcyZWJiYWQ4OGMuLmE5YzIz
NzY2NmMxYjNjNmRmMjg2NTExMjhmY2M3OTlmNDcxNmFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCkBAIC01NSw3ICs1NSw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvcHBvcnR1bmlzdGljYWxseVN0YXJ0Rm9udERhdGFV
UkxMb2FkaW5nKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBjb25zdCBBdG9tU3RyaW5n
JiBmYW1pbHkpID0gMDsKIAotICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvbnRDYWNoZUludmFsaWRhdGVkKCkgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVj
dG9yQ2xpZW50JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCBjNzE3ZTNi
NmM0MDAzYzI1MjVlNjAzNDg5NzcxYmQ1ZDRhYmI1ZDFhLi44MzE1YzIxM2EyZTM2NWNkYTE5MTZm
OTc1MjhlODg5YjU4NmI4MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtMTM4
LDcgKzEzOCw3IEBAIGNvbnN0IEZvbnQqIEZvbnRDYXNjYWRlOjpmb250Rm9yQ29tYmluaW5nQ2hh
cmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqIG9yaWdpbmFsCiAgICAgICAgICAgICByZXR1cm4g
ZmFsbGJhY2tGb250OwogICAgIH0KIAotICAgIGlmIChhdXRvIHN5c3RlbUZhbGxiYWNrID0gRm9u
dENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKGZvbnRTZWxlY3RvcigpKS5z
eXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMobV9mb250RGVzY3JpcHRpb24sIGJhc2VGb250LCBJ
c0ZvclBsYXRmb3JtRm9udDo6Tm8sIHByZWZlckNvbG9yZWRGb250ID8gRm9udENhY2hlOjpQcmVm
ZXJDb2xvcmVkRm9udDo6WWVzIDogRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNo
YXJhY3RlcnMsIGxlbmd0aCkpIHsKKyAgICBpZiAoYXV0byBzeXN0ZW1GYWxsYmFjayA9IEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhtX2Zv
bnREZXNjcmlwdGlvbiwgYmFzZUZvbnQsIElzRm9yUGxhdGZvcm1Gb250OjpObywgcHJlZmVyQ29s
b3JlZEZvbnQgPyBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpZZXMgOiBGb250Q2FjaGU6
OlByZWZlckNvbG9yZWRGb250OjpObywgY2hhcmFjdGVycywgbGVuZ3RoKSkgewogICAgICAgICBp
ZiAoc3lzdGVtRmFsbGJhY2stPmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNo
YXJhY3RlcnMsIGxlbmd0aCkgJiYgKCFwcmVmZXJDb2xvcmVkRm9udCB8fCBzeXN0ZW1GYWxsYmFj
ay0+cGxhdGZvcm1EYXRhKCkuaXNDb2xvckJpdG1hcEZvbnQoKSkpCiAgICAgICAgICAgICByZXR1
cm4gc3lzdGVtRmFsbGJhY2suZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAx
NzI3NGJmYzM0OWQ0MzlkYjMyNjc3ZjFhZWVhNmYyNWE1YmE3NjNhLi4zNWYyMTNlOWUxN2Y3YzA3
YmFhNzg4N2NlNWE4MzVmYzI1ODdkYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC03
NTcsNyArNzU3LDcgQEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogCiBzdGF0
aWMgdm9pZCBmb250Q2FjaGVSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJh
Y2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmluZ1JlZiwg
Y29uc3Qgdm9pZCAqLCBDRkRpY3Rpb25hcnlSZWYpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChvYnNl
cnZlciwgb2JzZXJ2ZXIgPT0gJkZvbnRDYWNoZTo6c2luZ2xldG9uKCkpOworICAgIEFTU0VSVF9V
TlVTRUQob2JzZXJ2ZXIsIGlzTWFpblRocmVhZCgpICYmIG9ic2VydmVyID09ICZGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKSk7CiAKICAgICBpbnZhbGlkYXRlRm9udENhY2hlKCk7CiB9CkBA
IC0xMjQ5LDEzICsxMjQ5LDE2IEBAIHN0YXRpYyBGb250TG9va3VwIHBsYXRmb3JtRm9udExvb2t1
cFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBGb250U2VsCiBzdGF0aWMgdm9p
ZCBpbnZhbGlkYXRlRm9udENhY2hlKCkKIHsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW10gewor
ICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC4KICAgICAgICAgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRv
bigpLmNsZWFyKCk7CisgICAgICAgIC8vIEZJWE1FOiBXb3JrZXJzIG5lZWQgdG8gYWNjZXNzIEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHRDYWNoZS4KICAgICAgICAgY2xlYXJGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUoKTsKIAorICAgICAgICAvLyBGSVhNRTogV29y
a2VycyBuZWVkIHRvIGFjY2VzcyBGb250RGF0YWJhc2UuCiAgICAgICAgIEZvbnREYXRhYmFzZTo6
c2luZ2xldG9uQWxsb3dpbmdVc2VySW5zdGFsbGVkRm9udHMoKS5jbGVhcigpOwogICAgICAgICBG
b250RGF0YWJhc2U6OnNpbmdsZXRvbkRpc2FsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCkuY2xl
YXIoKTsKIAotICAgICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUoKTsKKyAg
ICAgICAgRm9udENhY2hlOjppbnZhbGlkYXRlQWxsRm9udENhY2hlcygpOwogICAgIH0pOwogfQog
CkBAIC0xMjg3LDcgKzEyOTAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gZm9udFdp
dGhGYW1pbHlTcGVjaWFsQ2FzZShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksCiAKICAgICBpZiAo
ZmFtaWx5LnN0YXJ0c1dpdGgoIlVJQ1RGb250VGV4dFN0eWxlIikpIHsKICAgICAgICAgY29uc3Qg
YXV0byYgcmVxdWVzdCA9IGZvbnREZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVzdCgpOwot
ICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSAoaXNGb250V2VpZ2h0Qm9sZChy
ZXF1ZXN0LndlaWdodCkgfHwgRm9udENhY2hlOjpzaW5nbGV0b24oKS5zaG91bGRNb2NrQm9sZFN5
c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgPyBrQ1RGb250VHJhaXRCb2xkIDogMCkgfCAoaXNJ
dGFsaWMocmVxdWVzdC5zbG9wZSkgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsKKyAgICAgICAg
Q1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKGlzRm9udFdlaWdodEJvbGQocmVxdWVzdC53
ZWlnaHQpIHx8IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnNob3VsZE1vY2tCb2xkU3lz
dGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSA/IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChpc0l0
YWxpYyhyZXF1ZXN0LnNsb3BlKSA/IGtDVEZvbnRUcmFpdEl0YWxpYyA6IDApOwogICAgICAgICBh
dXRvIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0
eWxlKGZhbWlseS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBSZW5kZXJUaGVtZUNv
Y29hOjpzaW5nbGV0b24oKS5jb250ZW50U2l6ZUNhdGVnb3J5KCksIGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZExvY2FsZSgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICAg
ICAgaWYgKHRyYWl0cykKICAgICAgICAgICAgIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVDb3B5V2l0aFN5bWJvbGljVHJhaXRzKGRlc2NyaXB0b3IuZ2V0KCksIHRy
YWl0cywgdHJhaXRzKSk7CkBAIC0xMzM1LDIzICsxMzM4LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q1RGb250UmVmPiBmb250V2l0aEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIGNvbnN0
IEZvbnRECiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgYm9vbCBzaG91bGRBdXRvQWN0
aXZhdGVGb250SWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KQorYm9vbCBGb250Q2Fj
aGU6OnNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9tU3RyaW5nJiBmYW1p
bHkpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIC8vIFRoaXMgY2FjaGUgaXMgbm90IHRocmVhZCBz
YWZlIHNvIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGlzIHRoZXJlIHRvCi0gICAgLy8gbWFrZSBz
dXJlIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGNhbGxlZCBmcm9tIHRoZSBzYW1lIHRocmVhZC4K
LSAgICBzdGF0aWMgVGhyZWFkKiBpbml0VGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwotICAg
IEFTU0VSVChpbml0VGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0jZW5kaWYKLQotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21TdHJpbmc+PiBrbm93bkZhbWlsaWVz
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZVNpemUgPSAxMjg7Ci0gICAgQVNT
RVJUKGtub3duRmFtaWxpZXMuZ2V0KCkuc2l6ZSgpIDw9IG1heENhY2hlU2l6ZSk7Ci0gICAgaWYg
KGtub3duRmFtaWxpZXMuZ2V0KCkuc2l6ZSgpID09IG1heENhY2hlU2l6ZSkKLSAgICAgICAga25v
d25GYW1pbGllcy5nZXQoKS5yZW1vdmUoa25vd25GYW1pbGllcy5nZXQoKS5yYW5kb20oKSk7Cisg
ICAgQVNTRVJUKG1fa25vd25GYW1pbGllcy5zaXplKCkgPD0gbWF4Q2FjaGVTaXplKTsKKyAgICBp
ZiAobV9rbm93bkZhbWlsaWVzLnNpemUoKSA9PSBtYXhDYWNoZVNpemUpCisgICAgICAgIG1fa25v
d25GYW1pbGllcy5yZW1vdmUobV9rbm93bkZhbWlsaWVzLnJhbmRvbSgpKTsKIAogICAgIC8vIE9u
bHkgYXR0ZW1wdCB0byBhdXRvLWFjdGl2YXRlIGZvbnRzIG9uY2UgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCi0gICAgcmV0dXJuIGtub3duRmFtaWxpZXMuZ2V0KCkuYWRkKGZhbWlseSkuaXNOZXdF
bnRyeTsKKyAgICByZXR1cm4gbV9rbm93bkZhbWlsaWVzLmFkZChmYW1pbHkpLmlzTmV3RW50cnk7
CiB9CiAKIHN0YXRpYyB2b2lkIGF1dG9BY3RpdmF0ZUZvbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBD
R0Zsb2F0IHNpemUpCkBAIC0xNjk2LDcgKzE2OTEsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHJld2Fy
bUdsb2JhbGx5KCkKIAogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1J
bmZvOwogICAgIHByZXdhcm1JbmZvLnNlZW5GYW1pbGllcyA9IFdURk1vdmUoZmFtaWxpZXMpOwot
ICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucHJld2FybShwcmV3YXJtSW5mbyk7CisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHJld2FybShwcmV3YXJtSW5mbyk7CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApp
bmRleCBhZGJjYzI0NDhmMWVlOWU1ODI4NGYzMmRhMzc2M2Y2MzA5ZWM3Nzk1Li4zYjRkYTRmNTI3
YmM4NGU1YTQ3MTY4YTk5NDZlN2ZiNjg3NzRlN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIEZvbnRSYW5n
ZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvCiAKICAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CiAKLSAgICBy
ZXR1cm4gRm9udFJhbmdlcyhGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JQbGF0Zm9ybURh
dGEoKmZvbnRQbGF0Zm9ybURhdGEpKTsKKyAgICByZXR1cm4gRm9udFJhbmdlcyhGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yUGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRh
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAppbmRl
eCBmM2U2ZmJjODgyYTBjMmQ1MTViOGU4ZjYxZjY5YzFkMmUzYmUyMzk3Li41NzYyZTA4OTNkOTkz
YjQzOWI5MDU4OTJiMTYyNTY3NjA5YjViZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQ6OkNhc2NhZGVMaXN0UGFyYW1ldGVycyBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6
c3kKICAgICByZXN1bHQuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPSBhbGxvd1VzZXJJbnN0YWxs
ZWRGb250czsKIAogICAgIGF1dG8gd2VpZ2h0ID0gZGVzY3JpcHRpb24ud2VpZ2h0KCk7Ci0gICAg
aWYgKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNj
ZXNzaWJpbGl0eSgpKQorICAgIGlmIChGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zaG91
bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkpCiAgICAgICAgIHdlaWdodCA9
IHdlaWdodCArIEZvbnRTZWxlY3Rpb25WYWx1ZSgyMDApOwogCiAgICAgcmVzdWx0LndlaWdodCA9
IG1hcFdlaWdodCh3ZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0
Lm1tCmluZGV4IDMzMmQxZWYyNmE5ZWI4YzNhYWM0OWUyMWExYjk5MGJlYjJkZGM0ZGMuLjk3Njgx
MzJkNzBjOGE5MzkwN2QwOTlmYmFiZTI2ZjQwZmIxZTVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3Qg
VUNoYXIqIGNwLAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSBydW5Gb250
UGxhdGZvcm1EYXRhKHJ1bkNURm9udCwgQ1RGb250R2V0U2l6ZShydW5DVEZvbnQpKTsKLSAgICAg
ICAgICAgICAgICAgICAgcnVuRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvclBs
YXRmb3JtRGF0YShydW5Gb250UGxhdGZvcm1EYXRhKS5wdHIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcnVuRm9udCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRGb3JQbGF0Zm9y
bURhdGEocnVuRm9udFBsYXRmb3JtRGF0YSkucHRyKCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmIChtX2ZhbGxiYWNrRm9udHMgJiYgcnVuRm9udCAhPSAmbV9mb250LnBy
aW1hcnlGb250KCkpCiAgICAgICAgICAgICAgICAgICAgIG1fZmFsbGJhY2tGb250cy0+YWRkKHJ1
bkZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENhY2hlV2luLmNwcAppbmRleCBjYjRjZGMwNTlhNzdhY2JlZGJmYmMxZTEyYjAwNTBlNmU4
MTUyYWI0Li45MTFkZDVjYTAwNzMyOGNkNTlmZDlmMDExNjgwODkzZGE3ODQ4NDVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiogZ2V0
TGlua2VkRm9udHMoU3RyaW5nJiBmYW1pbHkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rh
dGljIGNvbnN0IFZlY3RvcjxEV09SRCwgND4mIGdldENKS0NvZGVQYWdlTWFza3MoKQorc3RhdGlj
IGNvbnN0IFZlY3RvcjxEV09SRCwgND4mIGdldENKS0NvZGVQYWdlTWFza3MoRm9udENhY2hlJiBm
b250Q2FjaGUpCiB7CiAgICAgLy8gVGhlIGRlZmF1bHQgb3JkZXIgaW4gd2hpY2ggd2UgbG9vayBm
b3IgYSBmb250IGZvciBhIENKSyBjaGFyYWN0ZXIuIElmIHRoZSB1c2VyJ3MgZGVmYXVsdCBjb2Rl
IHBhZ2UgaXMKICAgICAvLyBvbmUgb2YgdGhlc2UsIHdlIHdpbGwgdXNlIGl0IGZpcnN0LgpAQCAt
MTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2Rl
UGFnZU1hc2tzKCkKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAgICBpZiAoIWluaXRp
YWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgSU1MYW5nRm9u
dExpbmtUeXBlKiBsYW5nRm9udExpbmsgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldEZvbnRM
aW5rSW50ZXJmYWNlKCk7CisgICAgICAgIElNTGFuZ0ZvbnRMaW5rVHlwZSogbGFuZ0ZvbnRMaW5r
ID0gZm9udENhY2hlLmdldEZvbnRMaW5rSW50ZXJmYWNlKCk7CiAgICAgICAgIGlmICghbGFuZ0Zv
bnRMaW5rKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVQYWdlTWFza3M7CiAKQEAgLTI1Nyw3ICsy
NTcsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3Rl
cnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogICAgICAgICAgICAgICAgIC8vIFRoZSBD
SksgY2hhcmFjdGVyIG1heSBiZWxvbmcgdG8gbXVsdGlwbGUgY29kZSBwYWdlcy4gV2Ugd2FudCB0
bwogICAgICAgICAgICAgICAgIC8vIGRvIGZvbnQgbGlua2luZyBhZ2FpbnN0IGEgc2luZ2xlIG9u
ZSBvZiB0aGVtLCBwcmVmZXJyaW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgLy8gY29k
ZSBwYWdlIGZvciB0aGUgdXNlcidzIGxvY2FsZS4KLSAgICAgICAgICAgICAgICBjb25zdCBWZWN0
b3I8RFdPUkQsIDQ+JiBDSktDb2RlUGFnZU1hc2tzID0gZ2V0Q0pLQ29kZVBhZ2VNYXNrcygpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxEV09SRCwgND4mIENKS0NvZGVQYWdlTWFza3Mg
PSBnZXRDSktDb2RlUGFnZU1hc2tzKCp0aGlzKTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBu
dW1Db2RlUGFnZXMgPSBDSktDb2RlUGFnZU1hc2tzLnNpemUoKTsKICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29kZVBhZ2VzICYmICFoZm9udDsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGhmb250ID0gY3JlYXRlTUxhbmdGb250KGxhbmdGb250TGluaywg
aGRjLCBDSktDb2RlUGFnZU1hc2tzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCmluZGV4IDFmYzA5ZjMyZTdlMTJhMDM2MmU5MzQ0Mjg4MTdhYWYwZjg2
YThjYzMuLmUyOWM1Y2FmNDc5MmQzZjg5MjIzMzIyYWI4YzZhOGQyMDA0ZGMzNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTMxLDcgKzEzMSw4
IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNl
dHRpbmdzKQogI2VuZGlmCiAKICAgICBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxk
TW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkpOwotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hv
dWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lz
dGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOworICAgIC8vIEZJWE1FOiBDYWxsIHNldFNob3VsZE1v
Y2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSBvbiBhbGwgd29ya2Vycy4KKyAgICBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRG
b3JBY2Nlc3NpYmlsaXR5KG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0
eSk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIEF1ZGlvQ29udGV4dDo6c2V0RGVmYXVs
dFNhbXBsZVJhdGVGb3JUZXN0aW5nKHN0ZDo6bnVsbG9wdCk7CkBAIC01NzAsNyArNTcxLDggQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hvdWxkTW9ja0JvbGRTeXN0
ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogICAgIFJlbmRlclRoZW1lOjpzaW5n
bGV0b24oKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVp
cmVzKTsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkocmVxdWlyZXMpOworICAgIC8vIEZJWE1FOiBDYWxsIHNldFNo
b3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkoKSBvbiBhbGwgd29ya2Vycy4K
KyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zZXRTaG91bGRNb2NrQm9sZFN5c3Rl
bUZvbnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVpcmVzKTsKICAgICByZXR1cm4geyB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDJlOWMwZDY4NThlYzkxYzMxOWNi
MjMzNGNlMGIyMjE1MzMxZmE2Yy4uOGU5OTdjNDViODRmZjAxNTkwZTJmMmU3YjlmYjJlMjQxZTlj
MzNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTg1Miw3ICsxODUy
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKGJvb2wgZmxhZykKIAogdm9pZCBJbnRlcm5hbHM6OmludmFsaWRhdGVGb250
Q2FjaGUoKQogewotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOworICAg
IEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKTsKIH0KIAogdm9pZCBJbnRlcm5h
bHM6OnNldEZvbnRTbW9vdGhpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdk
N2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li40MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRi
NDcxN2E3NzA1NzI4YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFJlZlB0cjxGb250PiBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpCiB7CiAgICAgQVNTRVJUKG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgQVNTRVJU
KG1fY29udGV4dCk7Ci0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEtPmZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNJdGFsaWMsIGZvbnRDcmVhdGlvbkNvbnRleHQpLCBGb250OjpPcmlnaW46OlJlbW90
ZSwgJm1fY29udGV4dC0+Zm9udENhY2hlKCkpOworICAgIHJldHVybiBGb250OjpjcmVhdGUobV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwg
c3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250Q3JlYXRpb25Db250ZXh0KSwgRm9u
dDo6T3JpZ2luOjpSZW1vdGUpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6c2V0
Q2xpZW50KEZvbnRMb2FkUmVxdWVzdENsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBkMWJlNjM2ZjEyYTlhMGI4NzBiMzNi
Y2ExNjQ2ZjRhZTAyNDE3YzExLi4wOWEzZjQwZmU1MzM4NTYwYzAzY2YzYWJkODAxYzdmYjMxMmM5
Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ3J5cHRvLmgiCi0jaW5jbHVkZSAiRm9udENh
Y2hlLmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZv
bnRGYWNlU2V0LmgiCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblByb3h5LmgiCkBAIC02NCw2ICs2
Myw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1h
cGhvcmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTI2LDEzICs1MjYsNiBAQCBDU1NG
b250U2VsZWN0b3IqIFdvcmtlckdsb2JhbFNjb3BlOjpjc3NGb250U2VsZWN0b3IoKQogICAgIHJl
dHVybiBtX2Nzc0ZvbnRTZWxlY3Rvci5nZXQoKTsKIH0KIAotRm9udENhY2hlJiBXb3JrZXJHbG9i
YWxTY29wZTo6Zm9udENhY2hlKCkKLXsKLSAgICBpZiAoIW1fZm9udENhY2hlKQotICAgICAgICBt
X2ZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX2ZvbnRDYWNo
ZTsKLX0KLQogUmVmPEZvbnRGYWNlU2V0PiBXb3JrZXJHbG9iYWxTY29wZTo6Zm9udHMoKQogewog
ICAgIEFTU0VSVChjc3NGb250U2VsZWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMzVkNzNhY2NlZTMyN2ViODlkZjkzYTNmYjRjZjkwNTMx
OThhNzc3OC4uYzAxYWQ4ZWZmNzc0ZmJlMTY1NTM0NzkwYjYwODhiZmNhY2RjMGY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMTM3LDcgKzEzNyw2
IEBAIHB1YmxpYzoKIAogICAgIENTU1ZhbHVlUG9vbCYgY3NzVmFsdWVQb29sKCkgZmluYWw7CiAg
ICAgQ1NTRm9udFNlbGVjdG9yKiBjc3NGb250U2VsZWN0b3IoKSBmaW5hbDsKLSAgICBGb250Q2Fj
aGUmIGZvbnRDYWNoZSgpIGZpbmFsOwogICAgIFJlZjxGb250RmFjZVNldD4gZm9udHMoKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU3RyaW5n
JiB1cmwsIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkgZmluYWw7CiAgICAgdm9pZCBiZWdpbkxv
YWRpbmdGb250U29vbihGb250TG9hZFJlcXVlc3QmKSBmaW5hbDsKQEAgLTIxOSw3ICsyMTgsNiBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1ZhbHVlUG9vbD4gbV9j
c3NWYWx1ZVBvb2w7CiAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9jc3NGb250U2VsZWN0
b3I7Ci0gICAgUmVmUHRyPEZvbnRDYWNoZT4gbV9mb250Q2FjaGU7CiAgICAgUmVmZXJyZXJQb2xp
Y3kgbV9yZWZlcnJlclBvbGljeTsKICAgICBTZXR0aW5nczo6VmFsdWVzIG1fc2V0dGluZ3NWYWx1
ZXM7CiAgICAgV29ya2VyVHlwZSBtX3dvcmtlclR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggOTQzMDRiNzExZmQ0ZmFlYTNiMjBlNzM5Yzk5NmE0N2I4Yzcy
YWQzNC4uMWI5NTMyNWIzYTFhNzc4MzI2NDMyNmYzOTBkOTRiN2MzMWY0MDBmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODY3LDcgKzg2Nyw4IEBAIHZvaWQg
V2ViUHJvY2Vzczo6dGVybWluYXRlKCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgR0NDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVjdE5vdygpOwotICAgIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkuaW52YWxpZGF0ZSgpOworICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IEZvbnRDYWNo
ZXMgb24gd29ya2VyIHRocmVhZHM/CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCku
aW52YWxpZGF0ZSgpOwogICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlZCh0
cnVlKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQppbmRleCA5MjhhZTdkNTFlM2YwYjdkOTEwMjBjN2RhMjg4ZWRlMjQ1
YzM4NTk1Li40MWFkMWIwOTg3ODlkZWNkZGEwNDVjMzg1NjE3NDRjOWYwZDBhOTFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAg
LTE0MCwxNyArMTQwLDE3IEBAICsgKHNpemVfdClpY29uc1dpdGhEYXRhQ291bnQKIAogKyAoc2l6
ZV90KWNhY2hlZEZvbnREYXRhQ291bnQKIHsKLSAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0
b24oKS5mb250Q291bnQoKTsKKyAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFk
KCkuZm9udENvdW50KCk7CiB9CiAKICsgKHNpemVfdCljYWNoZWRGb250RGF0YUluYWN0aXZlQ291
bnQKIHsKLSAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbmFjdGl2ZUZvbnRDb3Vu
dCgpOworICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbmFjdGl2ZUZv
bnRDb3VudCgpOwogfQogCiArICh2b2lkKXB1cmdlSW5hY3RpdmVGb250RGF0YQogewotICAgIEZv
bnRDYWNoZTo6c2luZ2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9udENh
Y2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKICsg
KHNpemVfdClnbHlwaFBhZ2VDb3VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuY3BwCmluZGV4IDljOTZhNjdlOWQwYzFmOTA0NDJmMGI0MGM0NDgyNmI1YzU2
YjVhMzMuLjM1Njk4M2M1MmIzNzQ4YTRjZGJjYTVhZDkxZjk1MzUxMmE4ODliZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTIxMCw3ICsy
MTAsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUNvdW50KF9P
dXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udENv
dW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgp
LmZvbnRDb3VudCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0yMTgsMTMgKzIxOCwxMyBA
QCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUluYWN0aXZlQ291bnQo
X091dF8gVUlOVCAqY291bnQpCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbmFj
dGl2ZUZvbnRDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKS5pbmFjdGl2ZUZvbnRDb3VudCgpOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEodm9pZCkKIHsK
LSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworICAg
IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwog
ICAgIHJldHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445676</attachid>
            <date>2021-12-01 23:11:56 -0800</date>
            <delta_ts>2021-12-07 17:09:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233749-20211202181154.patch</filename>
            <type>text/plain</type>
            <size>3708</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA0ZGZlYzRmNzI3OTg0
NjM1M2M1NDQ0YzZmY2EyMDFhM2QyMWU4MS4uNjlmNmQxOTIxNDZjMzQ2OTgzNGZlOTZmODFmMDAx
YWJjODAwMjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTAxICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBzaG91bGRB
dXRvQWN0aXZhdGVGb250SWZOZWVkZWQga25vd25GYW1pbGllcyBjYWNoZSB0byBGb250Q2FjaGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc0OQor
CisgICAgICAgIFdpdGggT2Zmc2NyZWVuQ2FudmFzLCB3ZSBjYW4gY2FsbCBzaG91bGRBdXRvQWN0
aXZhdGVGb250SWZOZWVkZWQgb24gYQorICAgICAgICB3b3JrZXIgdGhyZWFkLCBhbmQgdGhlIGtu
b3duRmFtaWxpZXMgSGFzaFNldCBpcyBub3QgdGhyZWFkIHNhZmUuIEFsc28sCisgICAgICAgIHRo
ZSBBdG9tU3RyaW5ncyBpdCBzdG9yZXMgYXJlIHRocmVhZC1zcGVjaWZpYy4gTW92ZSBpdCB0byBG
b250Q2FjaGUsIHNvCisgICAgICAgIGVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIHNldC4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKTogRGVsZXRlZC4K
KwogMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFuY2Ugb24gV29ya2VyR2xv
YmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCAzMzZlOWIzNjdjNWE5OGNmZWVhOTdjMjRiNzJmZTU0
OTYyNGZhY2RjLi44ZjNkM2EzNmU0ZGRlMzE5MTkxNmI3ZWNkMDU4ZGMwMDNlZTNjNWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMzc1LDYg
KzM3NSwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFTQ0lJTGl0ZXJh
bD4gYWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxBU0NJSUxpdGVyYWw+IHBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBT
dHJpbmcmKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIHNob3VsZEF1dG9BY3RpdmF0
ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpOworI2VuZGlmCisKICAgICBU
aW1lciBtX3B1cmdlVGltZXI7CiAgICAgCiAgICAgYm9vbCBtX3Nob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkgeyBmYWxzZSB9OwpAQCAtMzkwLDYgKzM5NCwxMCBAQCBwcml2
YXRlOgogICAgIFJlY3Vyc2l2ZUxvY2sgbV9mb250TG9jazsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gbV9rbm93bkZhbWlsaWVzOworI2VuZGlm
CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IG1fc2VlbkZh
bWlsaWVzRm9yUHJld2FybWluZzsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IG1fZm9udE5hbWVz
UmVxdWlyaW5nU3lzdGVtRmFsbGJhY2tGb3JQcmV3YXJtaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IGNhZGVhZWE2ZjI5MWQ2M2Y2ZmRlOTI2ZTcwNjNmOGQ4MWJhNDQ5YTEuLjM1ZjIx
M2U5ZTE3ZjdjMDdiYWE3ODg3Y2U1YTgzNWZjMjU4N2RiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTEzMzgsMjMgKzEzMzgsMTUgQEAgc3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+
IGZvbnRXaXRoRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEQKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBib29sIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJ
Zk5lZWRlZChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCitib29sIEZvbnRDYWNoZTo6c2hvdWxk
QXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKIHsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgLy8gVGhpcyBjYWNoZSBpcyBub3QgdGhyZWFkIHNhZmUgc28gdGhl
IGZvbGxvd2luZyBhc3NlcnRpb24gaXMgdGhlcmUgdG8KLSAgICAvLyBtYWtlIHN1cmUgdGhpcyBm
dW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGZyb20gdGhlIHNhbWUgdGhyZWFkLgotICAgIHN0YXRp
YyBUaHJlYWQqIGluaXRUaHJlYWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7Ci0gICAgQVNTRVJUKGlu
aXRUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSNlbmRpZgotCi0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8QXRvbVN0cmluZz4+IGtub3duRmFtaWxpZXM7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heENhY2hlU2l6ZSA9IDEyODsKLSAgICBBU1NFUlQoa25vd25G
YW1pbGllcy5nZXQoKS5zaXplKCkgPD0gbWF4Q2FjaGVTaXplKTsKLSAgICBpZiAoa25vd25GYW1p
bGllcy5nZXQoKS5zaXplKCkgPT0gbWF4Q2FjaGVTaXplKQotICAgICAgICBrbm93bkZhbWlsaWVz
LmdldCgpLnJlbW92ZShrbm93bkZhbWlsaWVzLmdldCgpLnJhbmRvbSgpKTsKKyAgICBBU1NFUlQo
bV9rbm93bkZhbWlsaWVzLnNpemUoKSA8PSBtYXhDYWNoZVNpemUpOworICAgIGlmIChtX2tub3du
RmFtaWxpZXMuc2l6ZSgpID09IG1heENhY2hlU2l6ZSkKKyAgICAgICAgbV9rbm93bkZhbWlsaWVz
LnJlbW92ZShtX2tub3duRmFtaWxpZXMucmFuZG9tKCkpOwogCiAgICAgLy8gT25seSBhdHRlbXB0
IHRvIGF1dG8tYWN0aXZhdGUgZm9udHMgb25jZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KLSAg
ICByZXR1cm4ga25vd25GYW1pbGllcy5nZXQoKS5hZGQoZmFtaWx5KS5pc05ld0VudHJ5OworICAg
IHJldHVybiBtX2tub3duRmFtaWxpZXMuYWRkKGZhbWlseSkuaXNOZXdFbnRyeTsKIH0KIAogc3Rh
dGljIHZvaWQgYXV0b0FjdGl2YXRlRm9udChjb25zdCBTdHJpbmcmIG5hbWUsIENHRmxvYXQgc2l6
ZSkK
</data>
<flag name="review"
          id="470910"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="471608"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446261</attachid>
            <date>2021-12-07 17:18:58 -0800</date>
            <delta_ts>2021-12-07 17:37:01 -0800</delta_ts>
            <desc>[fast-cq] Patch for landing</desc>
            <filename>bug-233749-20211208121857.patch</filename>
            <type>text/plain</type>
            <size>3739</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZlM2ExMjM2MjRhNjAz
MGU2MjFmZWQ1MTUzODk5NGQ4ZjhlNWY4Ny4uMTlhOGI1NGZlY2I0YzkzZDlhZDU1YzFjOGIxZDRm
ZDNlMTJkODI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEyLTAxICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBzaG91bGRB
dXRvQWN0aXZhdGVGb250SWZOZWVkZWQga25vd25GYW1pbGllcyBjYWNoZSB0byBGb250Q2FjaGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc0OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE15bGVzIE1heGZpZWxkLgorCisgICAgICAgIFdpdGggT2Zm
c2NyZWVuQ2FudmFzLCB3ZSBjYW4gY2FsbCBzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQg
b24gYQorICAgICAgICB3b3JrZXIgdGhyZWFkLCBhbmQgdGhlIGtub3duRmFtaWxpZXMgSGFzaFNl
dCBpcyBub3QgdGhyZWFkIHNhZmUuIEFsc28sCisgICAgICAgIHRoZSBBdG9tU3RyaW5ncyBpdCBz
dG9yZXMgYXJlIHRocmVhZC1zcGVjaWZpYy4gTW92ZSBpdCB0byBGb250Q2FjaGUsIHNvCisgICAg
ICAgIGVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIHNldC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c2hvdWxk
QXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEF1dG9B
Y3RpdmF0ZUZvbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisKIDIwMjEtMTItMDEgIENhbWVyb24gTWND
b3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEZvbnRDYWNoZSBzaW5n
bGV0b24gYW5kIGluc3RhbmNlIG9uIFdvcmtlckdsb2JhbFNjb3BlIHRvIFRocmVhZEdsb2JhbERh
dGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXgg
ODYxZTY5OTA5MGQ1Y2M4YTk0OWJlZTVjNzdlNDQ5Yjg2NTU1NmQ5ZC4uNzZiYjlmM2JiYjUxNGIw
MTQ1YjdhOWUxNzQ3NzNjNTM0NzEzNWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTM3NCw2ICszNzQsMTAgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxBU0NJSUxpdGVyYWw+IGFsdGVybmF0ZUZhbWlseU5hbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBwbGF0
Zm9ybUFsdGVybmF0ZUZhbWlseU5hbWUoY29uc3QgU3RyaW5nJik7CiAKKyNpZiBQTEFURk9STShN
QUMpCisgICAgYm9vbCBzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQoY29uc3QgQXRvbVN0
cmluZyYgZmFtaWx5KTsKKyNlbmRpZgorCiAgICAgVGltZXIgbV9wdXJnZVRpbWVyOwogICAgIAog
ICAgIGJvb2wgbV9zaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5IHsgZmFs
c2UgfTsKQEAgLTM4OSw2ICszOTMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWN1cnNpdmVMb2NrIG1f
Zm9udExvY2s7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBIYXNoU2V0PEF0b21T
dHJpbmc+IG1fa25vd25GYW1pbGllczsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5GYW1pbGllc0ZvclByZXdhcm1pbmc7CiAgICAg
TGlzdEhhc2hTZXQ8U3RyaW5nPiBtX2ZvbnROYW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrRm9y
UHJld2FybWluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBjYWRlYWVhNmYyOTFkNjNm
NmZkZTkyNmU3MDYzZjhkODFiYTQ0OWExLi4zNWYyMTNlOWUxN2Y3YzA3YmFhNzg4N2NlNWE4MzVm
YzI1ODdkYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMzM4LDIzICsxMzM4LDE1
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250V2l0aEZhbWlseShjb25zdCBBdG9t
U3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRECiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0
aWMgYm9vbCBzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5KQorYm9vbCBGb250Q2FjaGU6OnNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIC8vIFRoaXMg
Y2FjaGUgaXMgbm90IHRocmVhZCBzYWZlIHNvIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGlzIHRo
ZXJlIHRvCi0gICAgLy8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGNhbGxlZCBm
cm9tIHRoZSBzYW1lIHRocmVhZC4KLSAgICBzdGF0aWMgVGhyZWFkKiBpbml0VGhyZWFkID0gJlRo
cmVhZDo6Y3VycmVudCgpOwotICAgIEFTU0VSVChpbml0VGhyZWFkID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7Ci0jZW5kaWYKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21T
dHJpbmc+PiBrbm93bkZhbWlsaWVzOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNo
ZVNpemUgPSAxMjg7Ci0gICAgQVNTRVJUKGtub3duRmFtaWxpZXMuZ2V0KCkuc2l6ZSgpIDw9IG1h
eENhY2hlU2l6ZSk7Ci0gICAgaWYgKGtub3duRmFtaWxpZXMuZ2V0KCkuc2l6ZSgpID09IG1heENh
Y2hlU2l6ZSkKLSAgICAgICAga25vd25GYW1pbGllcy5nZXQoKS5yZW1vdmUoa25vd25GYW1pbGll
cy5nZXQoKS5yYW5kb20oKSk7CisgICAgQVNTRVJUKG1fa25vd25GYW1pbGllcy5zaXplKCkgPD0g
bWF4Q2FjaGVTaXplKTsKKyAgICBpZiAobV9rbm93bkZhbWlsaWVzLnNpemUoKSA9PSBtYXhDYWNo
ZVNpemUpCisgICAgICAgIG1fa25vd25GYW1pbGllcy5yZW1vdmUobV9rbm93bkZhbWlsaWVzLnJh
bmRvbSgpKTsKIAogICAgIC8vIE9ubHkgYXR0ZW1wdCB0byBhdXRvLWFjdGl2YXRlIGZvbnRzIG9u
Y2UgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCi0gICAgcmV0dXJuIGtub3duRmFtaWxpZXMuZ2V0
KCkuYWRkKGZhbWlseSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9rbm93bkZhbWlsaWVzLmFk
ZChmYW1pbHkpLmlzTmV3RW50cnk7CiB9CiAKIHN0YXRpYyB2b2lkIGF1dG9BY3RpdmF0ZUZvbnQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBDR0Zsb2F0IHNpemUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>