<?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>233750</bug_id>
          
          <creation_ts>2021-12-01 23:19:42 -0800</creation_ts>
          <short_desc>remove expandAroundIdeographs static variables</short_desc>
          <delta_ts>2021-12-07 21:12:27 -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>
          
          <blocked>233488</blocked>
    
    <blocked>233747</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>1819585</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:19:42 -0800</bug_when>
    <thetext>With OffscreenCanvas, we can call into ComplexTextController::adjustGlyphsAndAdvances, FontCascade::expansionOpportunityCountInternal, and WidthIterator::calculateAdditionalWidth from worker threads.  These all have a static variable variable with an initializer that calls FontCascade::canExpandAroundIdeographsInComplexText, and such initializers are not safe under -fno-threadsafe-statics.

canExpandAroundIdeographsInComplexText is a simple enough function in all ports (it just returns a constant bool) that it&apos;s not worth caching the result in a static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819587</commentid>
    <comment_count>1</comment_count>
      <attachid>445677</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:20:59 -0800</bug_when>
    <thetext>Created attachment 445677
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819588</commentid>
    <comment_count>2</comment_count>
      <attachid>445678</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-01 23:21:23 -0800</bug_when>
    <thetext>Created attachment 445678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820931</commentid>
    <comment_count>3</comment_count>
      <attachid>445678</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-07 00:51:45 -0800</bug_when>
    <thetext>Comment on attachment 445678
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        canExpandAroundIdeographsInComplexText is a simple enough function in
&gt; +        all ports (it just returns a constant bool) that it&apos;s not worth caching
&gt; +        the result in a static.

Can we make the function constexpr?

Do you know why the other ports can&apos;t expand around ideographs? Expanding around ideographs is a property of written language, not a property of which OS you&apos;re running on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821190</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 13:04:15 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #3)
&gt; Can we make the function constexpr?

Since constexpr functions are implicitly inline, we&apos;d need to define new header files like FontCascadeInlines{Cocoa,Win,Cairo}.h and include the right one in the cpp files that call the function.  I don&apos;t think it&apos;s worth it.

&gt; Do you know why the other ports can&apos;t expand around ideographs? Expanding
&gt; around ideographs is a property of written language, not a property of which
&gt; OS you&apos;re running on.

I don&apos;t know.  The function was added in bug 53184 and I suspect it&apos;s just that support wasn&apos;t added for non-Cocoa ports at the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821216</commentid>
    <comment_count>5</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 14:04:52 -0800</bug_when>
    <thetext>Offline discussion with Myles led us to conclude that all ports are now using ComplexTextController, and so we can remove canExpandAroundIdeographsInComplexText entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821224</commentid>
    <comment_count>6</comment_count>
      <attachid>446238</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 14:34:56 -0800</bug_when>
    <thetext>Created attachment 446238
Patch to remove canExpandAroundIdeographsInComplexText which had test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821227</commentid>
    <comment_count>7</comment_count>
      <attachid>446238</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-07 14:47:01 -0800</bug_when>
    <thetext>Comment on attachment 446238
Patch to remove canExpandAroundIdeographsInComplexText which had test failures

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

Very excited!

&gt; Source/WebCore/ChangeLog:14
&gt; +        With OffscreenCanvas, we can call into
&gt; +        ComplexTextController::adjustGlyphsAndAdvances,
&gt; +        FontCascade::expansionOpportunityCountInternal, and
&gt; +        WidthIterator::calculateAdditionalWidth from worker threads.
&gt; +        These all have a static variable variable with an initializer
&gt; +        that calls FontCascade::canExpandAroundIdeographsInComplexText,
&gt; +        and such initializers are not safe under -fno-threadsafe-statics.

This should probably be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821230</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 14:54:04 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #7)
&gt; This should probably be updated.

It&apos;s still accurate as a description of the code before the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821259</commentid>
    <comment_count>9</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 16:05:12 -0800</bug_when>
    <thetext>There&apos;s a failure in a ruby test on Windows, so perhaps it&apos;s not safe after all to remove those functions? At least without further digging. I&apos;m going to move that removal patch to another bug, and land the original one here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821299</commentid>
    <comment_count>10</comment_count>
      <attachid>446260</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 17:15:00 -0800</bug_when>
    <thetext>Created attachment 446260
Patch to remove static variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821325</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 18:12:21 -0800</bug_when>
    <thetext>Committed r286637 (244950@main): &lt;https://commits.webkit.org/244950@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446260.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821326</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 18:13:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/86186510&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445677</attachid>
            <date>2021-12-01 23:20:59 -0800</date>
            <delta_ts>2021-12-07 14:34:46 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-233750-20211202182057.patch</filename>
            <type>text/plain</type>
            <size>68306</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MTgxOGY3YjkyNDNk
MzcwNGFiNjk4OTk2N2IwN2I4ZGMxNTNkMy4uZGI3OGE4MTI2YjkwNmUyYWIxZTAzYWQ4Nzk5Njhi
OTE4MDI1NTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAorMjAyMS0xMi0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBleHBh
bmRBcm91bmRJZGVvZ3JhcGhzIHN0YXRpYyB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpdGggT2Zmc2NyZWVuQ2FudmFzLCB3ZSBjYW4g
Y2FsbCBpbnRvCisgICAgICAgIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5k
QWR2YW5jZXMsCisgICAgICAgIEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50
SW50ZXJuYWwsIGFuZAorICAgICAgICBXaWR0aEl0ZXJhdG9yOjpjYWxjdWxhdGVBZGRpdGlvbmFs
V2lkdGggZnJvbSB3b3JrZXIgdGhyZWFkcy4KKyAgICAgICAgVGhlc2UgYWxsIGhhdmUgYSBzdGF0
aWMgdmFyaWFibGUgdmFyaWFibGUgd2l0aCBhbiBpbml0aWFsaXplcgorICAgICAgICB0aGF0IGNh
bGxzIEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCwK
KyAgICAgICAgYW5kIHN1Y2ggaW5pdGlhbGl6ZXJzIGFyZSBub3Qgc2FmZSB1bmRlciAtZm5vLXRo
cmVhZHNhZmUtc3RhdGljcy4KKworICAgICAgICBjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5D
b21wbGV4VGV4dCBpcyBhIHNpbXBsZSBlbm91Z2ggZnVuY3Rpb24gaW4KKyAgICAgICAgYWxsIHBv
cnRzIChpdCBqdXN0IHJldHVybnMgYSBjb25zdGFudCBib29sKSB0aGF0IGl0J3Mgbm90IHdvcnRo
IGNhY2hpbmcKKyAgICAgICAgdGhlIHJlc3VsdCBpbiBhIHN0YXRpYy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldpZHRoSXRlcmF0b3I6OmNhbGN1bGF0ZUFkZGl0aW9uYWxXaWR0aCBjb25zdCk6CisK
KzIwMjEtMTItMDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZCBrbm93bkZhbWlsaWVzIGNh
Y2hlIHRvIEZvbnRDYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNzQ5CisKKyAgICAgICAgV2l0aCBPZmZzY3JlZW5DYW52YXMsIHdlIGNhbiBj
YWxsIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZCBvbiBhCisgICAgICAgIHdvcmtlciB0
aHJlYWQsIGFuZCB0aGUga25vd25GYW1pbGllcyBIYXNoU2V0IGlzIG5vdCB0aHJlYWQgc2FmZS4g
QWxzbywKKyAgICAgICAgdGhlIEF0b21TdHJpbmdzIGl0IHN0b3JlcyBhcmUgdGhyZWFkLXNwZWNp
ZmljLiBNb3ZlIGl0IHRvIEZvbnRDYWNoZSwgc28KKyAgICAgICAgZWFjaCB0aHJlYWQgaGFzIGl0
cyBvd24gc2V0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnNob3VsZEF1dG9BY3RpdmF0ZUZv
bnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZO
ZWVkZWQpOiBEZWxldGVkLgorCisyMDIxLTEyLTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBGb250Q2FjaGUgc2luZ2xldG9uIGFuZCBpbnN0
YW5jZSBvbiBXb3JrZXJHbG9iYWxTY29wZSB0byBUaHJlYWRHbG9iYWxEYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgdmFyaW91cyBw
bGFjZXMgaW4gZm9udCBjb2RlIHdoZXJlIHdlIG5lZWQgYWNjZXNzIHRvIGEKKyAgICAgICAgRm9u
dENhY2hlIGluc3RhbmNlLiBDdXJyZW50bHkgd2U6CisKKyAgICAgICAgLSBhc3N1bWUgdGhhdCB3
ZSdyZSBvbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGNhbGwKKyAgICAgICAgICBGb250Q2FjaGU6OnNp
bmdsZXRvbigpLCBvcgorICAgICAgICAtIGdldCBhIEZvbnRDYWNoZSBvZmYgV29ya2VyR2xvYmFs
U2NvcGUgYW5kIHBhc3MgaXQgZG93biAob3Igc3RvcmUgaXQpCisgICAgICAgICAgd2hlcmUgaXQn
cyBuZWVkZWQsIHRoZW4gcGFzcyBpdCB0byBmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9u
LgorCisgICAgICAgIEhhdmluZyB0byB0aHJlYWQgdGhyb3VnaCwgb3Igc3RvcmUsIHRoZSBGb250
Q2FjaGUgcG9pbnRlciBpcworICAgICAgICBpbmNvbnZlbmllbnQsIGFuZCB0aGVyZSBhcmUgc29t
ZSBwbGFjZXMgd2hlcmUgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8KKyAgICAgICAgYSBGb250Q2Fj
aGUgcG9pbnRlciwgYnV0IHdlJ3JlIG9uIGEgd29ya2VyLCBhbmQgd2UgY2FsbAorICAgICAgICBm
b250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uIGFuZCB3cm9uZ2x5IGdldCBiYWNrIHRoZSBt
YWluIHRocmVhZCdzCisgICAgICAgIGluc3RhbmNlLgorCisgICAgICAgIEkgdGhpbmsgaXQgd291
bGQgYmUgY2xlYW5lciBpZiB3ZSBtb3ZlZCBib3RoIHRoZSBtYWluIHRocmVhZCBGb250Q2FjaGUK
KyAgICAgICAgc2luZ2xldG9uLCBhbmQgdGhlIG9uZSBzdG9yZWQgb24gYSBXb3JrZXJHbG9iYWxT
Y29wZSwgdG8KKyAgICAgICAgVGhyZWFkR2xvYmFsRGF0YSwgd2hpY2ggaXMgZWFzaWx5IGdsb2Jh
bGx5IGFjY2Vzc2libGUuIFBlcmZvcm1pbmcgYQorICAgICAgICBUTFMgbG9va3VwIGlzIGNoZWFw
IHRoZXNlIGRheXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuaDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmZvbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9T
aW5nbGV0b24pOgorICAgICAgICBSZW1vdmUgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRv
biBhbmQgcmVwbGFjZSBjYWxscyB0byBpdCB3aXRoCisgICAgICAgIEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZC4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlS
ZWdpc3RlcmVkKToKKyAgICAgICAgUmVwbGFjZSBnZXR0aW5nIHRoZSBGb250Q2FjaGUgZnJvbSB0
aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB3aXRoIGEKKyAgICAgICAgY2FsbCB0byBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmZvbnQpOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDaGFuZ2VzOjpwbGF0Zm9ybUZvbnRGYW1pbHlOYW1lRm9yQ1NTIGNvbnN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMp
OgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvUHJvY2Vzc1dhcm1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSk6
CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6cHJld2FybVdpdGhJbmZv
cm1hdGlvbik6CisgICAgICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZSk6CisgICAgICAgIFJlcGxh
Y2UgY2FsbHMgdG8gRm9udENhY2hlOjpzaW5nbGV0b24gd2l0aCBjYWxscyB0bworICAgICAgICBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQpOgorICAgICAgICBSZW1vdmUgQ1NTRm9u
dFNlbGVjdG9yOjptX2ZvbnRDYWNoZSBhbmQgdXNlCisgICAgICAgIEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCBpbnN0ZWFkLgorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpmb250Q2FjaGUpOgorICAgICAgICBS
ZW1vdmUgdGhlIEZvbnRDYWNoZSBtZW1iZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRH
bG9iYWxEYXRhOjpmb250Q2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6ZGVzdHJveSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplRm9udENhY2hlKToK
KyAgICAgICAgQWRkIGFuIGFjY2Vzc29yIGZvciBhIGxhemlseSBjcmVhdGVkIEZvbnRDYWNoZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnN5
c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9u
dEZvclBsYXRmb3JtRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpjcmVhdGVG
b250KToKKyAgICAgICAgUmVtb3ZlIEZvbnRDYWNoZSBhcmd1bWVudHMgYW5kIHVzZSBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQgaW4KKyAgICAgICAgdGhlaXIgcGxhY2UuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpjcmVhdGUpOgorICAgICAgICBDaGFuZ2UgZmFjdG9yeSBmdW5jdGlvbiB0byByZXR1
cm4gYSB1bmlxdWVfcHRyLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKToKKyAgICAg
ICAgUmVwbGFjZSBGb250Q2FjaGU6OnNpbmdsZXRvbiB3aXRoIEZvbnRDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCwgd2hpY2gKKyAgICAgICAgbG9va3MgdXAgdGhlIEZvbnRDYWNoZSBvbiBUaHJlYWRH
bG9iYWxEYXRhLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjppbnZhbGlkYXRlQWxsRm9u
dENhY2hlcyk6CisgICAgICAgIE5ldyBmdW5jdGlvbiB0aGF0IHdpbGwgaW4gdGhlIGZ1dHVyZSBp
bnZhbGlkYXRlIHRoZSBtYWluIHRocmVhZCBhbmQKKyAgICAgICAgYWxsIHdvcmtlciB0aHJlYWQg
Rm9udENhY2hlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgor
ICAgICAgICBSZW1vdmUgcmVmY291bnRpbmcgZnJvbSBGb250Q2FjaGUgc2luY2Ugd2Ugbm8gbG9u
Z2VyIG5lZWQgdG8gc3RvcmUgYQorICAgICAgICBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0IG9uIG90
aGVyIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxp
bmdCYWNrVG9TaW5nbGV0b24pOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmlzQ3Vy
cmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dXBkYXRlIGNvbnN0
KToKKyAgICAgICAgQ2FsbCBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQgaW5zdGVhZCBvZiBn
ZXR0aW5nIGl0IGZyb20gdGhlCisgICAgICAgIEZvbnRTZWxlY3Rvci4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGVGb250czo6Rm9udENhc2NhZGVGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWFsaXplTmV4dEZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6
OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
Rm9udHM6OmdseXBoRGF0YUZvclN5c3RlbUZhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpmb250Rm9yQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UgY29uc3QpOgor
ICAgICAgICBVc2UgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdG9yLmg6CisgICAgICAgIFJlbW92ZSBmb250Q2FjaGUg
bWV0aG9kLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hh
bmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRXaXRoRmFt
aWx5U3BlY2lhbENhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwcmV3YXJtR2xv
YmFsbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQubW06CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNv
bGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6
QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6
c2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIFVz
ZSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZh
bGlkYXRlRm9udENhY2hlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmludmFsaWRhdGVGb250Q2FjaGUpOgorICAgICAgICBD
YWxsIHRoZSBuZXcgRm9udENhY2hlOjppbnZhbGlkYXRlQWxsRm9udENhY2hlcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Q0pLQ29kZVBhZ2VNYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyk6CisgICAgICAgIFVzZSB0aGUgRm9udENhY2hl
IGluc3RhbmNlIHdlIGhhdmUgYWNjZXNzIHRvIHJhdGhlciB0aGFuIGNhbGwKKyAgICAgICAgRm9u
dENhY2hlOjpzaW5nbGV0b24uCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6Zm9udENhY2hlKToKKyAgICAgICAgUmVtb3ZlIHRo
ZSBGb250Q2FjaGUgbWVtYmVyIGFuZCBhY2Nlc3Nvci4KKwogMjAyMS0xMi0wMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JvbGxpbmcgY29tcGxl
eCB3ZWJzaXRlcyBjYW4gc3R1dHRlcjogc2Nyb2xsaW5nIHRocmVhZCBmcmFtZSBjYW4gZmFpbCB0
byBwcm9jZXNzIHdoZWVsIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNmY5YmMxMzg1ZTI2MzZkN2NkYjk3
YzFiZjJmZDVlNWQyMDk0MTgyLi5lZjM1ZGIwNzNiNDllNjc4YWJjM2Q3Y2M2OGQ3MzNiZDI3MmY0
ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTAxICBDYW1lcm9uIE1jQ29y
bWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBGb250Q2FjaGUgc2luZ2xl
dG9uIGFuZCBpbnN0YW5jZSBvbiBXb3JrZXJHbG9iYWxTY29wZSB0byBUaHJlYWRHbG9iYWxEYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3NDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnRlcm1p
bmF0ZSk6CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBtYWluIHRocmVhIGNhbGxlcnMgb2YgRm9u
dENhY2hlOjpzaW5nbGV0b24oKSB0byB1c2UKKyAgICAgICAgRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkuCisKIDIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBBdm9pZCBhbGxvY2F0aW5nIGFuZCBjb3B5IG1lbW9yeSBmcm9tIGEgU2hh
cmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCA4NmU1ZDk5NThjNjUyYTVhZjNmNzg1YzA1YjU1MDQyM2FiZmUxMGEzLi41MjNjOWY1OTY4
ZmZiODlmNjlkYmZkNWQzMWU0ZTYwYzU1Y2M2N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5
Y2FtQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRDYWNoZSBzaW5nbGV0b24gYW5kIGlu
c3RhbmNlIG9uIFdvcmtlckdsb2JhbFNjb3BlIHRvIFRocmVhZEdsb2JhbERhdGEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzc0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJDb3JlU3Rh
dGlzdGljcy5tbToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgY2FjaGVkRm9udERhdGFD
b3VudF0pOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBjYWNoZWRGb250RGF0YUluYWN0
aXZlQ291bnRdKToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgcHVyZ2VJbmFjdGl2ZUZv
bnREYXRhXSk6CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBtYWluIHRocmVhZCBjYWxsZXJzIG9m
IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkgdG8gdXNlCisgICAgICAgIEZvbnRDYWNoZTo6Zm9yQ3Vy
cmVudFRocmVhZCgpLgorCiAyMDIxLTEyLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMjgzOTEyKSBCcm9rZSBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5IGZvciBTd2lmdCBiaW5kaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4
IGNhZDYxYTc3YTAxMGNkZDg3MGYwYTVjNjdkMjEzOTY5NjZiYjYwYWMuLjBlMWI3NTYxMmI4NGZm
MTAzNjMyMjdhMmM1YTEyODk3YzRjNzFkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1A
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRm9udENhY2hlIHNpbmdsZXRvbiBhbmQgaW5zdGFu
Y2Ugb24gV29ya2VyR2xvYmFsU2NvcGUgdG8gVGhyZWFkR2xvYmFsRGF0YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3RhdGlzdGljcy5j
cHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50KToK
KyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgorICAg
ICAgICBVcGRhdGUgZXhpc3RpbmcgbWFpbiB0aHJlYWQgY2FsbGVycyBvZiBGb250Q2FjaGU6OnNp
bmdsZXRvbigpIHRvIHVzZQorICAgICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS4K
KwogMjAyMS0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgQVg6IFVzZSBPYmplY3RJZGVudGlmaWVyIGZvciBBWElECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmNwcAppbmRleCAxMzQ5NDhjYmZkYjc3ZDZjMjUyNzc2NDE0OTFlNzlmYTEz
ZWM4MTVkLi5lYjNiYzBiMzIyNGQ3NWE2MTIzZGMyYmFkNzk2ODNjNzdiOWE4NTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTM5NiwxMyArMzk2LDYgQEAgRG9jdW1lbnQqIENT
U0ZvbnRGYWNlOjpkb2N1bWVudCgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUZvbnRDYWNo
ZSYgQ1NTRm9udEZhY2U6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oKQotewotICAg
IGlmIChtX3dyYXBwZXIgJiYgbV93cmFwcGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgICAgIHJldHVybiBtX3dyYXBwZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Zm9udENh
Y2hlKCk7Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7Ci19Ci0KIGJvb2wgQ1NT
Rm9udEZhY2U6OmNvbXB1dGVGYWlsdXJlU3RhdGUoKSBjb25zdAogewogICAgIGlmIChzdGF0dXMo
KSA9PSBTdGF0dXM6OkZhaWx1cmUpCkBAIC02NzYsOSArNjY5LDggQEAgUmVmUHRyPEZvbnQ+IENT
U0ZvbnRGYWNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBi
b29sIHN5bnQKICAgICAgICAgc3dpdGNoIChzb3VyY2UtPnN0YXR1cygpKSB7CiAgICAgICAgIGNh
c2UgQ1NTRm9udEZhY2VTb3VyY2U6OlN0YXR1czo6UGVuZGluZzoKICAgICAgICAgY2FzZSBDU1NG
b250RmFjZVNvdXJjZTo6U3RhdHVzOjpMb2FkaW5nOiB7Ci0gICAgICAgICAgICBhdXRvJiBmb250
Q2FjaGUgPSBmb250Q2FjaGVGYWxsaW5nQmFja1RvU2luZ2xldG9uKCk7CiAgICAgICAgICAgICBG
b250OjpWaXNpYmlsaXR5IHZpc2liaWxpdHkgPSBXZWJDb3JlOjp2aXNpYmlsaXR5KHN0YXR1cygp
LCBmb250TG9hZFRpbWluZygpKTsKLSAgICAgICAgICAgIHJldHVybiBGb250OjpjcmVhdGUoZm9u
dENhY2hlLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9uKS0+cGxhdGZvcm1E
YXRhKCksIEZvbnQ6Ok9yaWdpbjo6TG9jYWwsICZmb250Q2FjaGUsIEZvbnQ6OkludGVyc3RpdGlh
bDo6WWVzLCB2aXNpYmlsaXR5KTsKKyAgICAgICAgICAgIHJldHVybiBGb250OjpjcmVhdGUoRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVz
Y3JpcHRpb24pLT5wbGF0Zm9ybURhdGEoKSwgRm9udDo6T3JpZ2luOjpMb2NhbCwgRm9udDo6SW50
ZXJzdGl0aWFsOjpZZXMsIHZpc2liaWxpdHkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
Rm9udEZhY2VTb3VyY2U6OlN0YXR1czo6U3VjY2VzczogewogICAgICAgICAgICAgRm9udENyZWF0
aW9uQ29udGV4dCBmb250Q3JlYXRpb25Db250ZXh0IHsgbV9mZWF0dXJlU2V0dGluZ3MsIG1fZm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllcywgZm9udFBhbGV0dGVWYWx1ZXMgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlLmgKaW5kZXggNzg5OTNlZmVmNTdiNWU2Nzk5NmFkMWJkYWVmODc3MTdmYTE2MGRl
OC4uMWI4Y2VhYTZlMjUxZmY4ZWJlNTdiZjQwMTVmYTEyYTE2YTUxNGViMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwog
Y2xhc3MgQ1NTU2VnbWVudGVkRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIENTU1Zh
bHVlTGlzdDsKLWNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250OwpAQCAtMTc0LDcgKzE3Myw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0aW1lb3V0RmlyZWQoKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpOwotICAgIEZvbnRDYWNoZSYgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbigpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbV9mYW1pbGllczsKICAgICBWZWN0b3I8VW5pY29k
ZVJhbmdlPiBtX3JhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4
IGE3NmFhY2U5NzQ0NGUyM2I1YWIwM2FlNWMwNDlhNDRkNzRkZmFmYWEuLjYyZWVjYjVhNWQyNDFk
Y2JlOGIyNDkzNWJiNmMyZjMyODk0OTE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxv
Y2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAg
aWYgKCFtX293bmluZ0ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFs
bGVkRm9udHMgPSBtX293bmluZ0ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZXR0aW5nc1ZhbHVlcygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzID8gQWxsb3dV
c2VySW5zdGFsbGVkRm9udHM6OlllcyA6IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpObzsKLSAg
ICBWZWN0b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzID0gbV9vd25p
bmdGb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Zm9udENhY2hlKCkuZ2V0
Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWx5KGZhbWlseU5hbWUsIGFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKTsKKyAgICBWZWN0b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4gY2Fw
YWJpbGl0aWVzID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZ2V0Rm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllc0luRmFtaWx5KGZhbWlseU5hbWUsIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KTsKICAgICBpZiAoY2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBjYWRjNGEwNTk0YzVi
ZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi5hZWI0YjZjYzUwYTEyNmM5ODMwZDYwNmFiYjBj
M2E4YzY5YTljMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAK
QEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkobV9m
YW1pbHlOYW1lT3JVUkkpOwogICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZSgxKTsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTaG91bGRBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyhtX2ZhY2UuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7Ci0gICAgICAg
ICAgICBzdWNjZXNzID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnRE
ZXNjcmlwdGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIHsgfSwgdHJ1ZSk7CisgICAgICAgICAgICBz
dWNjZXNzID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuZm9udEZvckZhbWlseShmb250
RGVzY3JpcHRpb24sIG1fZmFtaWx5TmFtZU9yVVJJLCB7IH0sIHRydWUpOwogICAgICAgICAgICAg
aWYgKGRvY3VtZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
d2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKmRvY3VtZW50LCBtX2ZhbWlseU5hbWVPclVS
SS5zdHJpbmcoKSwgc3VjY2Vzcyk7CiAgICAgICAgIH0KQEAgLTIxMCw3ICsyMTAsNyBAQCBSZWZQ
dHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIGJvbwogCiAgICAgICAgIC8vIFdlJ3JlIGxvY2FsLiBKdXN0IHJldHVy
biBhIEZvbnQgZnJvbSB0aGUgbm9ybWFsIGNhY2hlLgogICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRvIGNoZWNrIGFsdGVybmF0ZSBmb250IGZhbWlseSBuYW1lcyBoZXJlLCBzbyBwYXNzIHRydWUg
YXMgdGhlIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSBwYXJhbWV0ZXIuCi0gICAgICAgIHJldHVybiBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBtX2Zh
bWlseU5hbWVPclVSSSwgZm9udENyZWF0aW9uQ29udGV4dCwgdHJ1ZSk7CisgICAgICAgIHJldHVy
biBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlw
dGlvbiwgbV9mYW1pbHlOYW1lT3JVUkksIGZvbnRDcmVhdGlvbkNvbnRleHQsIHRydWUpOwogICAg
IH0KIAogICAgIGlmIChtX2ZvbnRSZXF1ZXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuY3BwCmluZGV4IGFlMTFhOGI5Y2U4ZTBmN2FmMmUxYzcyOWExYTM1ZDU5ODQ2ZWU5ODYu
LjY3MDRjYTlkNDk3ZTU3MzgyYzRkOWU1MzhiOTQwYjU2NjNjNGQ0NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02NSw3ICs2NSw2IEBAIHN0YXRpYyB1bnNpZ25l
ZCBmb250U2VsZWN0b3JJZDsKIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRl
eHQpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fZm9udENhY2hlKGNvbnRleHQu
Zm9udENhY2hlKCkpCiAgICAgLCBtX2Nzc0ZvbnRGYWNlU2V0KENTU0ZvbnRGYWNlU2V0OjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX2ZvbnRNb2RpZmllZE9ic2VydmVyKFt0aGlzXSB7IGZvbnRNb2Rp
ZmllZCgpOyB9KQogICAgICwgbV91bmlxdWVJZCgrK2ZvbnRTZWxlY3RvcklkKQpAQCAtODEsNyAr
ODAsNyBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgbV9mb250RmFtaWx5TmFtZXMudW5jaGVja2Vk
QXBwZW5kKGZhbWlseU5hbWUpOwogICAgIH0KIAotICAgIG1fZm9udENhY2hlLT5hZGRDbGllbnQo
KnRoaXMpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmFkZENsaWVudCgqdGhp
cyk7CiAgICAgbV9jc3NGb250RmFjZVNldC0+YWRkRm9udE1vZGlmaWVkT2JzZXJ2ZXIobV9mb250
TW9kaWZpZWRPYnNlcnZlcik7CiAgICAgTE9HKEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGN0
b3IiLCB0aGlzKTsKIApAQCAtOTMsNyArOTIsNyBAQCBDU1NGb250U2VsZWN0b3I6On5DU1NGb250
U2VsZWN0b3IoKQogICAgIExPRyhGb250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBkdG9yIiwgdGhp
cyk7CiAKICAgICBjbGVhckZvbnRzKCk7Ci0gICAgbV9mb250Q2FjaGUtPnJlbW92ZUNsaWVudCgq
dGhpcyk7CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkucmVtb3ZlQ2xpZW50KCp0
aGlzKTsKIH0KIAogRm9udEZhY2VTZXQqIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udEZhY2VTZXRJZkV4
aXN0cygpCkBAIC0zNTksNyArMzU4LDcgQEAgRm9udFJhbmdlcyBDU1NGb250U2VsZWN0b3I6OmZv
bnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3IKIAogICAg
IGlmICghcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCkKICAgICAgICAgcmVzb2x2ZUFuZEFzc2ln
bkdlbmVyaWNGYW1pbHkoKTsKLSAgICBhdXRvIGZvbnQgPSBtX2ZvbnRDYWNoZS0+Zm9udEZvckZh
bWlseSgqZm9udERlc2NyaXB0aW9uRm9yTG9va3VwLCBmYW1pbHlGb3JMb29rdXAsIHsgeyB9LCB7
IH0sIGZvbnRQYWxldHRlVmFsdWVzIH0pOworICAgIGF1dG8gZm9udCA9IEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLmZvbnRGb3JGYW1pbHkoKmZvbnREZXNjcmlwdGlvbkZvckxvb2t1cCwg
ZmFtaWx5Rm9yTG9va3VwLCB7IHsgfSwgeyB9LCBmb250UGFsZXR0ZVZhbHVlcyB9KTsKICAgICBp
ZiAoZG9jdW1lbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQogICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkKCkubG9nRm9udExvYWQoKmRvY3VtZW50LCBmYW1pbHlGb3JMb29rdXAuc3RyaW5nKCks
ICEhZm9udCk7CiAgICAgcmV0dXJuIEZvbnRSYW5nZXMgeyBXVEZNb3ZlKGZvbnQpIH07CkBAIC0z
OTAsNyArMzg5LDcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250
QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHQKICAgICBpZiAoIW1fY29udGV4
dC0+c2V0dGluZ3NWYWx1ZXMoKS5mb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8mIHBpY3RvZ3JhcGhGb250RmFtaWx5ID0gbV9j
b250ZXh0LT5zZXR0aW5nc1ZhbHVlcygpLmZvbnRHZW5lcmljRmFtaWxpZXMucGljdG9ncmFwaEZv
bnRGYW1pbHkoKTsKLSAgICBhdXRvIGZvbnQgPSBtX2ZvbnRDYWNoZS0+Zm9udEZvckZhbWlseShm
b250RGVzY3JpcHRpb24sIHBpY3RvZ3JhcGhGb250RmFtaWx5KTsKKyAgICBhdXRvIGZvbnQgPSBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlv
biwgcGljdG9ncmFwaEZvbnRGYW1pbHkpOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVkKCkgJiYgaXM8RG9jdW1l
bnQ+KG1fY29udGV4dCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5s
b2dGb250TG9hZChkb3duY2FzdDxEb2N1bWVudD4oKm1fY29udGV4dCksIHBpY3RvZ3JhcGhGb250
RmFtaWx5LCAhIWZvbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXgg
MTRhMDQ1NDlkNDEwOGNlNTMyOTI1ODNiMzhlNDcwMzI3ZjE5NGJhNS4uZmI4ZWM4OTIxYzNjNWJi
OWFhNzNlOTVlNTVhZDIxMDk3YmU1Y2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaApAQCAtNzIsNyArNzIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRGb250RmFjZVJ1bGUo
U3R5bGVSdWxlRm9udEZhY2UmLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNo
YWRvd1RyZWUpOwogICAgIHZvaWQgYWRkRm9udFBhbGV0dGVWYWx1ZXNSdWxlKFN0eWxlUnVsZUZv
bnRQYWxldHRlVmFsdWVzJik7CiAKLSAgICBGb250Q2FjaGUmIGZvbnRDYWNoZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZm9udENhY2hlLmdldCgpOyB9CiAgICAgdm9pZCBmb250Q2FjaGVJbnZh
bGlkYXRlZCgpIGZpbmFsOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CkBAIC0xMjMsNyAr
MTIyLDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UGVuZGluZ0ZvbnRGYWNlUnVsZT4gbV9zdGFn
aW5nQXJlYTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0
OwotICAgIFJlZjxGb250Q2FjaGU+IG1fZm9udENhY2hlOwogICAgIFJlZlB0cjxGb250RmFjZVNl
dD4gbV9mb250RmFjZVNldDsKICAgICBSZWY8Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VT
ZXQ7CiAgICAgSGFzaFNldDxGb250U2VsZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYTU2ZTMwZDI0
ODcwNzMwNjQyYjMyNzU1MjE4YzVhMjU2MGE0ZDY3MS4uOTU0NDY3OTQzN2Y4ZTFlMDE0NzNjYjZh
NzBjZDVkMDcyZmM3MWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1
ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgpA
QCAtMjIzLDExICsyMjIsNiBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJikKIHsKIH0KIAotRm9udENhY2hlJiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpmb250Q2FjaGUoKQotewotICAgIHJldHVybiBGb250Q2FjaGU6
OnNpbmdsZXRvbigpOwotfQotCiBDU1NWYWx1ZVBvb2wmIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNzc1ZhbHVlUG9vbCgpCiB7CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZjNi
MTFjOGMzOTU0NjdlYWRhMDc3NThlNjRmZDJhYTY0NWQ0NjE1Li4zNTMzYzIwZTJlZTU3OTYwYjU0
YmZlMTUzNmRlM2ZiMmY4Y2NhMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKQEAgLTY2LDcgKzY2LDYgQEAgY2xhc3MgRGF0YWJhc2VDb250ZXh0Owog
Y2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cDsKIGNsYXNzIEV2ZW50
VGFyZ2V0OwotY2xhc3MgRm9udENhY2hlOwogY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3Mg
TWVzc2FnZVBvcnQ7CiBjbGFzcyBQZXJtaXNzaW9uQ29udHJvbGxlcjsKQEAgLTE2OCw3ICsxNjcs
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgRm9udENhY2hlJiBmb250Q2FjaGUoKTsK
ICAgICB2aXJ0dWFsIENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHZpcnR1YWwgQ1NTVmFsdWVQb29sJiBjc3NWYWx1ZVBvb2woKTsKICAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVz
dChTdHJpbmcmIHVybCwgYm9vbCBpc1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2Vy
QWdlbnRTaGFkb3dUcmVlLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5t
bQppbmRleCBkNDMxZjcyMmUyNGFhYjNiZDE3NzI4YjQzNThiNzg2OThiNzg2ZjRiLi44NmI5MzIx
MDc2Y2U1ZjZlOTAwZTc4MTg5NzQ0NWNjYWIyMjJmMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCkBA
IC00OCw3ICs0OCw3IEBAIGNvbnN0IFN0cmluZyYgRm9udENoYW5nZXM6OnBsYXRmb3JtRm9udEZh
bWlseU5hbWVGb3JDU1MoKSBjb25zdAogICAgIEZvbnREZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsK
ICAgICBkZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhtX2l0YWxpYy52YWx1ZV9vcihmYWxzZSkpOwog
ICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUgeyBtX2JvbGQudmFs
dWVfb3IoZmFsc2UpID8gOTAwIDogNTAwIH0pOwotICAgIGlmIChhdXRvIGZvbnQgPSBGb250Q2Fj
aGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZGVzY3JpcHRpb24sIG1fZm9udEZhbWlseSkp
CisgICAgaWYgKGF1dG8gZm9udCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmZvbnRG
b3JGYW1pbHkoZGVzY3JpcHRpb24sIG1fZm9udEZhbWlseSkpCiAgICAgICAgIGZvbnROYW1lRnJv
bURlc2NyaXB0aW9uID0gYWRvcHRDRihDVEZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udC0+Z2V0
Q1RGb250KCkpKTsKIAogICAgIGlmIChmb250TmFtZUZyb21EZXNjcmlwdGlvbiAmJiBDRlN0cmlu
Z0NvbXBhcmUoY2ZGb250TmFtZS5nZXQoKSwgZm9udE5hbWVGcm9tRGVzY3JpcHRpb24uZ2V0KCks
IDApID09IGtDRkNvbXBhcmVFcXVhbFRvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA2M2MxMTNlMmVhMTBkZTFi
ODZmNTA1YjM0M2MxMmM2NzRmYmJkMTdlLi43OWEzMjQ1MGFkNDZkNGExZGRkNzNlOWM5MWI2NWZk
OGRjMzNiNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+PiBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0U3VwcG9yCiB7CiAgICAgYXV0byBmb250RmFtaWx5TmFtZXMgPSBKU09OOjpBcnJheU9mPFN0
cmluZz46OmNyZWF0ZSgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gc3lzdGVtRm9udEZhbWlsaWVz
ID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5zeXN0ZW1Gb250RmFtaWxpZXMoKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBzeXN0ZW1Gb250RmFtaWxpZXMgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS5zeXN0ZW1Gb250RmFtaWxpZXMoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZhbWlseU5h
bWUgOiBzeXN0ZW1Gb250RmFtaWxpZXMpCiAgICAgICAgIGZvbnRGYW1pbHlOYW1lcy0+YWRkSXRl
bShmYW1pbHlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlS
ZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXgg
ZWY3OTUzMGU3YzVjMjBjNDE4NDA2OWVkYzU4NjVkYzI4Yjk5M2Y2Zi4uYmJhOTVmYTNlNjc5Y2Fm
YjFiMjkxNDgwNTdkZjI3YmNiMDY4MTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVh
c2UuY3BwCkBAIC03MCw4ICs3MCw5IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNhbE1l
bW9yeShNYWludGFpbk1lbW9yeUNhY2hlIG1haW50YWluTWVtb3J5Q2FjaGUpCiB7CiAgICAgUmVu
ZGVyVGhlbWU6OnNpbmdsZXRvbigpLnB1cmdlQ2FjaGVzKCk7CiAKLSAgICBGb250Q2FjaGU6OnNp
bmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwotICAgIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuY2xlYXJXaWR0aENhY2hlcygpOworICAgIC8vIEZJWE1FOiBDbGVhciB0aGVzZSBmb250
IGNhY2hlcyBpbiB3b3JrZXJzIHRvbz8KKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQo
KS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS5jbGVhcldpZHRoQ2FjaGVzKCk7CiAKICAgICBUZXh0UGFpbnRlcjo6Y2xlYXJHbHlwaERp
c3BsYXlMaXN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Byb2Nlc3NX
YXJtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dhcm1pbmcuY3BwCmluZGV4
IDNlM2YzYWQ4MmE0ZGQyOTMzOTkyNTAyNTVkN2RmYzM1M2JhMWIzNzUuLmVjODBhZTQzYWJlNzkx
MzY5NzhjN2ZkMDAzOTBjMjE2YjY5Yjc3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUHJvY2Vzc1dhcm1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJvY2Vzc1dh
cm1pbmcuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1H
bG9iYWxseSgpCiAgICAgY29tbW9uVk0oKTsKIAogICAgIC8vIFByZXdhcm0gZm9udCBjYWNoZQot
ICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucHJld2FybUdsb2JhbGx5KCk7CisgICAgRm9udENh
Y2hlOjpwcmV3YXJtR2xvYmFsbHkoKTsKIAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikKICAgICBUZWxlcGhvbmVOdW1iZXJEZXRlY3Rvcjo6cHJld2FybSgpOwpAQCAtODYs
MTIgKzg2LDEyIEBAIHZvaWQgUHJvY2Vzc1dhcm1pbmc6OnByZXdhcm1HbG9iYWxseSgpCiAKIFdl
YkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiBQcm9jZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1J
bmZvcm1hdGlvbigpCiB7Ci0gICAgcmV0dXJuIHsgRm9udENhY2hlOjpzaW5nbGV0b24oKS5jb2xs
ZWN0UHJld2FybUluZm9ybWF0aW9uKCkgfTsKKyAgICByZXR1cm4geyBGb250Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKS5jb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgfTsKIH0KIAogdm9pZCBQ
cm9jZXNzV2FybWluZzo6cHJld2FybVdpdGhJbmZvcm1hdGlvbihjb25zdCBQcmV3YXJtSW5mb3Jt
YXRpb24mIHByZXdhcm1JbmZvKQogewotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucHJld2Fy
bShwcmV3YXJtSW5mby5mb250Q2FjaGUpOworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVh
ZCgpLnByZXdhcm0ocHJld2FybUluZm8uZm9udENhY2hlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5nc0Jhc2UuY3BwCmluZGV4IDM5ZTBhOWY1MDc5N2I4NGZhODRmNzlkNDk5MzAyYjM1
NWE1MjE1NTcuLjc4ZDY4MGNhY2FmYmEzNDgwMmFlYzNjY2EyOTFjZDEwN2IzY2E5MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTU3LDcgKzU3LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hh
bmdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbnZhbGlkYXRl
Rm9udENhc2NhZGVDYWNoZSgpOworICAgIC8vIEZJWE1FOiBDYWxsIGludmFsaWRhdGVGb250Q2Fz
Y2FkZUNhY2hlKCkgb24gYWxsIHdvcmtlcnMuCisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkuaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKICAgICBpZiAocGFnZSkKICAgICAg
ICAgcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IDI2Mjk1NDcwZTcxMGE1
ZDkzZjU1ODlhNjdlN2ZhYzQ5ODQ1OWI4YmUuLjY1YjE3NjU5OTIwNDVhYjgxYjk4MDQzZWM1NTE3
NmU1YWZkMzQ3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEds
b2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZvbnRD
YWNoZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lQ2FjaGUuaCIKICNpbmNsdWRlICJUZXh0Q29kZWNJQ1UuaCIKQEAgLTYzLDYgKzY0LDgg
QEAgdm9pZCBUaHJlYWRHbG9iYWxEYXRhOjpkZXN0cm95KCkKICAgICBtX2V2ZW50TmFtZXMgPSBu
dWxscHRyOwogICAgIG1fdGhyZWFkVGltZXJzID0gbnVsbHB0cjsKICAgICBtX3F1YWxpZmllZE5h
bWVDYWNoZSA9IG51bGxwdHI7CisgICAgaWYgKG1fZm9udENhY2hlKQorICAgICAgICBtX2ZvbnRD
YWNoZS0+aW52YWxpZGF0ZSgpOwogfQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCkBAIC0xMzksNCAr
MTQyLDEwIEBAIHZvaWQgVGhyZWFkR2xvYmFsRGF0YTo6aW5pdGlhbGl6ZU1pbWVUeXBlUmVnaXN0
cnlUaHJlYWRHbG9iYWxEYXRhKCkKICAgICBtX01JTUVUeXBlUmVnaXN0cnlUaHJlYWRHbG9iYWxE
YXRhID0gTUlNRVR5cGVSZWdpc3RyeTo6Y3JlYXRlTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2Jh
bERhdGEoKTsKIH0KIAordm9pZCBUaHJlYWRHbG9iYWxEYXRhOjppbml0aWFsaXplRm9udENhY2hl
KCkKK3sKKyAgICBBU1NFUlQoIW1fZm9udENhY2hlKTsKKyAgICBtX2ZvbnRDYWNoZSA9IEZvbnRD
YWNoZTo6Y3JlYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAppbmRleCBjMDJhNWEyZjFiNTQ4MDk1NDYx
OTExYTkyYTU5MzFkZjJmMDdlODQyLi5iNWMyZDE5MTA0MTZmYTk4NGMxZTJmNWE1MTFlYjljMjI5
OTM3NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBA
IC0zNyw2ICszNyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIFF1YWxpZmllZE5hbWVDYWNoZTsKIGNsYXNz
IFRocmVhZFRpbWVyczsKIApAQCAtOTUsMTEgKzk2LDE5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5SZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJuIG1faXNJblJlbW92ZUFs
bEV2ZW50TGlzdGVuZXJzOyB9CiAgICAgdm9pZCBzZXRJc0luUmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoYm9vbCB2YWx1ZSkgeyBtX2lzSW5SZW1vdmVBbGxFdmVudExpc3RlbmVycyA9IHZhbHVlOyB9
CiAKKyAgICBGb250Q2FjaGUmIGZvbnRDYWNoZSgpCisgICAgeworICAgICAgICBpZiAoVU5MSUtF
TFkoIW1fZm9udENhY2hlKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVGb250Q2FjaGUoKTsKKyAg
ICAgICAgcmV0dXJuICptX2ZvbnRDYWNoZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0aWFsaXplQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUV2ZW50TmFtZXMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVRdWFsaWZpZWROYW1lQ2FjaGUoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVNaW1lVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFs
RGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUZvbnRDYWNoZSgpOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+IG1f
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZl
bnROYW1lcz4gbV9ldmVudE5hbWVzOwpAQCAtMTA4LDYgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogbV9jdXJyZW50U3RhdGUgeyBudWxscHRyIH07CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElDVUNvbnZlcnRlcldyYXBwZXI+IG1fY2FjaGVkQ29udmVydGVySUNVOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YT4gbV9N
SU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dENhY2hlPiBtX2ZvbnRDYWNoZTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faXNNYWlu
VGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDFjNTM3NDkyOWE2Y2JjMzhiZTBhY2Uz
NmM3Y2U2Y2Y4YTAwMmJhYS4uZmQ2MDJmM2Q1M2ZjYmI0MDFiYWQ0MmM5MDE3N2JkMjFkZDg1MDI3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC03NTIsOCArNzUyLDcgQEAgdm9pZCBDb21wbGV4
VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAg
ICBpZiAocnVuRm9yYmlkc1JpZ2h0RXhwYW5zaW9uKQogICAgICAgICAgICAgICAgICAgICBmb3Ji
aWRSaWdodEV4cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gaXNMYXN0Q2hhcmFjdGVyIDogaXNGaXJz
dENoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAvLyBIYW5kbGUganVzdGlmaWNhdGlvbiBhbmQg
d29yZC1zcGFjaW5nLgotICAgICAgICAgICAgICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElk
ZW9ncmFwaHMgPSBGb250Q2FzY2FkZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxl
eFRleHQoKTsKLSAgICAgICAgICAgICAgICBib29sIGlkZW9ncmFwaCA9IGV4cGFuZEFyb3VuZElk
ZW9ncmFwaHMgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2gpOworICAg
ICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBoID0gRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3Vu
ZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBo
T3JTeW1ib2woY2gpOwogICAgICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UgfHwgaWRlb2dy
YXBoIHx8IGZvcmNlTGVmdEV4cGFuc2lvbiB8fCBmb3JjZVJpZ2h0RXhwYW5zaW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIERpc3RyaWJ1dGUgdGhlIHJ1bidzIHRvdGFsIGV4cGFuc2lvbiBl
dmVubHkgb3ZlciBhbGwgZXhwYW5zaW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhlIHJ1bi4KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4
Nzk1ZDMzN2MuLjRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2ZiYWYyMWY1NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02MCwxNSArNjAsMTAg
QEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihGb250KTsKIAogUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9y
aWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJp
bGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWws
IHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIG51bGxwdHIpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRl
cnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsK
IH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxE
YXRhLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxpdHksIE9y
aWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmls
aXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNh
bERhdGEpKTsKLX0KLQotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hl
Rm9yVmVydGljYWxEYXRhKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJv
b2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFw
cGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKQEAgLTc2LDEwICs3
MSwxMCBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbAogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1
dGVkU2l6ZShmb250U2l6ZSk7CiAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgcGFzcyBp
biBhbnkgbWVhbmluZ2Z1bCBkYXRhIGZvciB0aGUgbGFzdCBmZXcgYXJndW1lbnRzPwogICAgIGF1
dG8gcGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
KmN1c3RvbUZvbnREYXRhLCBkZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRh
bGljLCB7IH0pOwotICAgIHJldHVybiBGb250OjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybURhdGEp
LCBvcmlnaW4sIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSk7CisgICAgcmV0dXJuIEZvbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHBsYXRmb3JtRGF0YSksIG9yaWdpbik7CiB9CiAKLUZvbnQ6OkZvbnQoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0
aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFs
bGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgRm9udENhY2hlKiBmb250
Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitGb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCwg
VmlzaWJpbGl0eSB2aXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFs
bGJhY2ssIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgOiBtX3BsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEp
CiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCkBAIC0xMDAsMTEgKzk1LDkgQEAgRm9u
dDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmln
aW4sIEludGVyc3RpdGlhbCBpbnQKICAgICBwbGF0Zm9ybUNoYXJXaWR0aEluaXQoKTsKICNpZiBF
TkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgaWYgKHBsYXRmb3JtRGF0YS5vcmllbnRhdGlv
bigpID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwgJiYgb3JpZW50YXRpb25GYWxsYmFjayA9
PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObykgewotICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSA/IGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YS0+dmVydGlj
YWxEYXRhKHBsYXRmb3JtRGF0YSkgOiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnZlcnRpY2FsRGF0
YShwbGF0Zm9ybURhdGEpOworICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IEZvbnRDYWNoZTo6Zm9y
Q3VycmVudFRocmVhZCgpLnZlcnRpY2FsRGF0YShwbGF0Zm9ybURhdGEpOwogICAgICAgICBtX2hh
c1ZlcnRpY2FsR2x5cGhzID0gbV92ZXJ0aWNhbERhdGEuZ2V0KCkgJiYgbV92ZXJ0aWNhbERhdGEt
Pmhhc1ZlcnRpY2FsTWV0cmljcygpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSk7CiAjZW5kaWYKIH0KIApAQCAtNTk2LDEzICs1ODksMTMg
QEAgc3RhdGljIFN5c3RlbUZhbGxiYWNrQ2FjaGUmIHN5c3RlbUZhbGxiYWNrQ2FjaGUoKQogICAg
IHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKLVJlZlB0cjxGb250PiBGb250OjpzeXN0ZW1GYWxsYmFj
a0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlzRm9yUGxhdGZvcm1Gb250LCBGb250
Q2FjaGUmIGZvbnRDYWNoZSkgY29uc3QKK1JlZlB0cjxGb250PiBGb250OjpzeXN0ZW1GYWxsYmFj
a0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlzRm9yUGxhdGZvcm1Gb250KSBjb25z
dAogewogICAgIGF1dG8gZm9udEFkZFJlc3VsdCA9IHN5c3RlbUZhbGxiYWNrQ2FjaGUoKS5hZGQo
dGhpcywgQ2hhcmFjdGVyRmFsbGJhY2tNYXAoKSk7CiAKICAgICBpZiAoIWNoYXJhY3Rlcikgewog
ICAgICAgICBVQ2hhciBjb2RlVW5pdCA9IDA7Ci0gICAgICAgIHJldHVybiBmb250Q2FjaGUuc3lz
dGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBpc0ZvclBsYXRmb3Jt
Rm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sICZjb2RlVW5pdCwgMSk7Cisg
ICAgICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFj
a0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250
Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgJmNvZGVVbml0LCAxKTsKICAgICB9CiAKICAg
ICBhdXRvIGtleSA9IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsgZGVzY3JpcHRpb24uY29tcHV0
ZWRMb2NhbGUoKSwgY2hhcmFjdGVyLCBpc0ZvclBsYXRmb3JtRm9udCAhPSBJc0ZvclBsYXRmb3Jt
Rm9udDo6Tm8gfTsKQEAgLTYxNyw3ICs2MTAsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6c3lzdGVt
RmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyLCBjb25zdCBGb250RAog
ICAgICAgICAgICAgY29kZVVuaXRzWzFdID0gVTE2X1RSQUlMKGNoYXJhY3Rlcik7CiAgICAgICAg
ICAgICBjb2RlVW5pdHNMZW5ndGggPSAyOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gZm9udCA9
IGZvbnRDYWNoZS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMs
IGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRGb250OjpObywgY29k
ZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOworICAgICAgICBhdXRvIGZvbnQgPSBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVz
Y3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9y
ZWRGb250OjpObywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOwogICAgICAgICBp
ZiAoZm9udCkKICAgICAgICAgICAgIGZvbnQtPm1faXNVc2VkSW5TeXN0ZW1GYWxsYmFja0NhY2hl
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZvbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZm
NC4uNzQ0MjAwNGYwMGI1ZGJhMjdmM2MzMmU2NjdiMzZiY2NmNzg1MTRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODEsMTEgKzgxLDggQEAgcHVibGljOgog
ICAgIGVudW0gY2xhc3MgSW50ZXJzdGl0aWFsIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVt
IGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52aXNpYmxlIH07CiAgICAgZW51
bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpO
bywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9u
RmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBzdGF0aWMgUmVmPEZv
bnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250Q2FjaGUqIGZv
bnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywK
LSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFs
bGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwg
Rm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5
bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4g
PSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmls
aXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0
aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZs
b2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKQEAgLTE2NCw3ICsxNjEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyKSBjb25zdDsKICAgICBib29s
IHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgc3RkOjpvcHRpb25hbDxVQ2hhcjMy
PiB2YXJpYXRpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgUmVmUHRyPEZvbnQ+IHN5
c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyLCBjb25zdCBGb250RGVzY3JpcHRp
b24mLCBJc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlJikgY29uc3Q7CisgICAgUmVmUHRyPEZv
bnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCkgY29uc3Q7CiAKICAgICBjb25zdCBHbHlwaFBh
Z2UqIGdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVtYmVyKSBjb25zdDsKIApAQCAtMjA5LDcgKzIw
Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIEZv
bnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0aWFsLCBWaXNpYmls
aXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4sIEZvbnRDYWNoZSopOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnQoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5LCBPcmll
bnRhdGlvbkZhbGxiYWNrLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4pOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKICAgICB2b2lkIHBsYXRmb3JtR2x5cGhJ
bml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAppbmRleCBjZjEyY2Q3OGJkMjU2NTM5YWMwZGJiNGZhMThiNWUxYmQ1YWIyMTAyLi4xYjEyYzdl
NDliNTRhNGU2ODNjNGU1ZDE4YjY1ZGEwMjQ5NjFhNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRl
ICJXZWJLaXRGb250RmFtaWx5TmFtZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJl
YWQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE0OCwx
NiArMTUwLDE0IEBAIHN0cnVjdCBGb250Q2FjaGU6OkZvbnREYXRhQ2FjaGVzIHsKICNlbmRpZgog
fTsKIAotUmVmPEZvbnRDYWNoZT4gRm9udENhY2hlOjpjcmVhdGUoKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDYWNoZT4gRm9udENhY2hlOjpjcmVhdGUoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRDYWNoZSgpKTsKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPEZvbnRDYWNoZT4obmV3IEZvbnRDYWNoZSk7CiB9CiAKLUZvbnRD
YWNoZSYgRm9udENhY2hlOjpzaW5nbGV0b24oKQorRm9udENhY2hlJiBGb250Q2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Rm9u
dENhY2hlPiBnbG9iYWxGb250Q2FjaGU7Ci0gICAgcmV0dXJuIGdsb2JhbEZvbnRDYWNoZTsKKyAg
ICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmZvbnRDYWNoZSgpOwogfQogCiBGb250Q2FjaGU6
OkZvbnRDYWNoZSgpCkBAIC0yODEsNyArMjgxLDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6Zm9u
dEZvclBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAj
ZW5kaWYKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RGF0YUNhY2hlcy0+ZGF0YS5lbnN1
cmUocGxhdGZvcm1EYXRhLCBbJl0gewotICAgICAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRm
b3JtRGF0YSwgRm9udDo6T3JpZ2luOjpMb2NhbCwgdGhpcyk7CisgICAgICAgIHJldHVybiBGb250
OjpjcmVhdGUocGxhdGZvcm1EYXRhLCBGb250OjpPcmlnaW46OkxvY2FsKTsKICAgICB9KTsKIAog
ICAgIEFTU0VSVChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5wbGF0Zm9ybURhdGEoKSA9PSBw
bGF0Zm9ybURhdGEpOwpAQCAtNDg5LDYgKzQ4OSwxNCBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxp
ZGF0ZSgpCiAgICAgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKK3ZvaWQgRm9udENhY2hl
OjppbnZhbGlkYXRlQWxsRm9udENhY2hlcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIC8vIEZJWE1FOiBJbnZhbGlkYXRlIEZvbnRDYWNoZXMgaW4gd29ya2VycyB0b28u
CisgICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuaW52YWxpZGF0ZSgpOworfQorCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQogCiBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250
Q2FjaGU6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA5ZWM1NGY2M2IzYWJjZTlkMDNl
YTY2MGVmZjE1ZGEzOTk2MjM1MjAyLi44ZjNkM2EzNmU0ZGRlMzE5MTkxNmI3ZWNkMDU4ZGMwMDNl
ZTNjNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aApAQCAtMjgwLDE0ICsyODAsMTEgQEAgc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxGb250Q2FzY2FkZUNhY2hlS2V5PiB7CiAKIHVzaW5nIEZvbnRDYXNj
YWRlQ2FjaGUgPSBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q2FzY2FkZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCwgRm9udENhc2Nh
ZGVDYWNoZUtleUhhc2hUcmFpdHM+OwogCi1jbGFzcyBGb250Q2FjaGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxGb250Q2FjaGU+IHsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Rm9udENh
Y2hlLCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzPjsKLQorY2xhc3MgRm9udENhY2hlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvbnRDYWNoZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEZvbnRDYWNoZSYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIEZvbnRD
YWNoZSYgZm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihSZWZQdHI8Rm9udFNlbGVjdG9y
Pik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FjaGU+IGNyZWF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGb250Q2FjaGUmIGZvckN1cnJlbnRUaHJlYWQoKTsKIAog
ICAgIH5Gb250Q2FjaGUoKTsKIApAQCAtMzI0LDYgKzMyMSw3IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIHNob3J0IGdlbmVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRpb247IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWxsRm9udENhY2hlcygpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IGZvbnRDb3VudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBpbmFj
dGl2ZUZvbnRDb3VudCgpOwpAQCAtMzU5LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogICAg
IFByZXdhcm1JbmZvcm1hdGlvbiBjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkgY29uc3Q7CiAg
ICAgdm9pZCBwcmV3YXJtKGNvbnN0IFByZXdhcm1JbmZvcm1hdGlvbiYpOwotICAgIHZvaWQgcHJl
d2FybUdsb2JhbGx5KCk7CisgICAgc3RhdGljIHZvaWQgcHJld2FybUdsb2JhbGx5KCk7CiAKIHBy
aXZhdGU6CiAgICAgRm9udENhY2hlKCk7CkBAIC0zNzcsNiArMzc1LDEwIEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBhbHRlcm5hdGVGYW1pbHlOYW1l
KGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFTQ0lJTGl0ZXJhbD4g
cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpOwogCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGJvb2wgc2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKGNvbnN0IEF0
b21TdHJpbmcmIGZhbWlseSk7CisjZW5kaWYKKwogICAgIFRpbWVyIG1fcHVyZ2VUaW1lcjsKICAg
ICAKICAgICBib29sIG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSB7
IGZhbHNlIH07CkBAIC0zOTIsNiArMzk0LDEwIEBAIHByaXZhdGU6CiAgICAgUmVjdXJzaXZlTG9j
ayBtX2ZvbnRMb2NrOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgSGFzaFNldDxB
dG9tU3RyaW5nPiBtX2tub3duRmFtaWxpZXM7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gbV9zZWVuRmFtaWxpZXNGb3JQcmV3YXJtaW5nOwog
ICAgIExpc3RIYXNoU2V0PFN0cmluZz4gbV9mb250TmFtZXNSZXF1aXJpbmdTeXN0ZW1GYWxsYmFj
a0ZvclByZXdhcm1pbmc7CkBAIC00NDUsOSArNDUxLDQgQEAgc3RkOjpvcHRpb25hbDxGb250Q2Fj
aGU6OlByZXdhcm1JbmZvcm1hdGlvbj4gRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb246OmRl
Y28KICAgICByZXR1cm4gcHJld2FybUluZm9ybWF0aW9uOwogfQogCi1pbmxpbmUgRm9udENhY2hl
JiBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oUmVmUHRyPEZvbnRT
ZWxlY3Rvcj4gZm9udFNlbGVjdG9yKQotewotICAgIHJldHVybiBmb250U2VsZWN0b3IgPyBmb250
U2VsZWN0b3ItPmZvbnRDYWNoZSgpIDogRm9udENhY2hlOjpzaW5nbGV0b24oKTsKLX0KLQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmlu
ZGV4IDZjMWQzNDczZDU3NTE4YWI4MzE4MjI4YTkwNDc4YzcyYmVhYTQ3ODAuLjdhZjk3ODZmZWUy
Mzk4ZmIwMzhjYjljNDg5NWE3OTdkYzk3ZTFhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29s
IEZvbnRDYXNjYWRlOjppc0N1cnJlbnQoY29uc3QgRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3Ip
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZvbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1fZm9udHMtPmdlbmVyYXRpb24oKSAhPSBmb250U2VsZWN0b3IuZm9udENhY2hlKCkuZ2Vu
ZXJhdGlvbigpKQorICAgIGlmIChtX2ZvbnRzLT5nZW5lcmF0aW9uKCkgIT0gRm9udENhY2hlOjpm
b3JDdXJyZW50VGhyZWFkKCkuZ2VuZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKG1fZm9udHMtPmZvbnRTZWxlY3RvclZlcnNpb24oKSAhPSBmb250U2VsZWN0b3IudmVy
c2lvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBG
b250Q2FzY2FkZTo6dXBkYXRlRm9udHMoUmVmPEZvbnRDYXNjYWRlRm9udHM+JiYgZm9udHMpIGNv
bnN0CiAKIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZv
bnRTZWxlY3RvcikgY29uc3QKIHsKLSAgICBGb250Q2FjaGU6OmZvbnRDYWNoZUZhbGxpbmdCYWNr
VG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKS51cGRhdGVGb250Q2FzY2FkZSgqdGhpcywgV1RGTW92
ZShmb250U2VsZWN0b3IpKTsKKyAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS51cGRh
dGVGb250Q2FzY2FkZSgqdGhpcywgV1RGTW92ZShmb250U2VsZWN0b3IpKTsKIH0KIAogR2x5cGhC
dWZmZXIgRm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29u
c3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhh
c2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdApAQCAtMTAwMSw3ICsxMDAxLDYgQEAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudEludGVybmFsKGNvbnN0IEwKIAogc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2Fz
Y2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFeHBhbnNp
b25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcikKIHsKLSAgICBzdGF0aWMgYm9vbCBleHBhbmRB
cm91bmRJZGVvZ3JhcGhzID0gY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQo
KTsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0g
KGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmJpZExlZnRFeHBh
bnNpb247CiAgICAgaWYgKChleHBhbnNpb25CZWhhdmlvciAmIExlZnRFeHBhbnNpb25NYXNrKSA9
PSBGb3JjZUxlZnRFeHBhbnNpb24pIHsKQEAgLTEwMjAsNyArMTAxOSw3IEBAIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRl
cm5hbChjb25zdCBVCiAgICAgICAgICAgICAgICAgY2hhcmFjdGVyID0gVTE2X0dFVF9TVVBQTEVN
RU5UQVJZKGNoYXJhY3RlciwgY2hhcmFjdGVyc1tpICsgMV0pOwogICAgICAgICAgICAgICAgIGkr
KzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChleHBhbmRBcm91bmRJZGVvZ3JhcGhz
ICYmIGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hhcmFjdGVyKSkgeworICAgICAgICAgICAgaWYg
KGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkgJiYgaXNDSktJZGVvZ3Jh
cGhPclN5bWJvbChjaGFyYWN0ZXIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FmdGVyRXhw
YW5zaW9uKQogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgIGNv
dW50Kys7CkBAIC0xMDQxLDcgKzEwNDAsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZv
bnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoY29uc3QgVQogICAg
ICAgICAgICAgICAgIGNoYXJhY3RlciA9IFUxNl9HRVRfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXJz
W2kgLSAyXSwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoZXhwYW5kQXJvdW5kSWRlb2dyYXBocyAmJiBpc0NKS0lkZW9ncmFw
aE9yU3ltYm9sKGNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIGlmIChjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpICYmIGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hhcmFj
dGVyKSkgewogICAgICAgICAgICAgICAgIGlmICghaXNBZnRlckV4cGFuc2lvbikKICAgICAgICAg
ICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICBjb3VudCsrOwpkaWZmIC0tZ2l0
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
cGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBjOGI1NmVhZjJkNjU5N2M4NWZlNzc4YTQ2MDFjOGVj
YjQzZGI4Mzg0Li5hZmQ3N2RlNDFhODIwMGU2ZGI5ZDllMTNmZTM5MWQ3M2RiMzVlNjdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cApAQCAtMzkwLDggKzM5MCw3IEBAIGF1dG8gV2lkdGhJdGVyYXRvcjo6Y2FsY3VsYXRlQWRkaXRp
b25hbFdpZHRoKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgR2x5cGhCdWZmCiAgICAgICAgICAg
ICBib29sIGZvcmJpZExlZnRFeHBhbnNpb24gPSBpc0xlZnRtb3N0Q2hhcmFjdGVyICYmIChtX3J1
bi5leHBhbnNpb25CZWhhdmlvcigpICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmJpZExlZnRF
eHBhbnNpb247CiAgICAgICAgICAgICBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gaXNSaWdo
dG1vc3RDaGFyYWN0ZXIgJiYgKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBSaWdodEV4cGFu
c2lvbk1hc2spID09IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogCi0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBleHBhbmRBcm91bmRJZGVvZ3JhcGhzID0gRm9udENhc2NhZGU6OmNhbkV4cGFu
ZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7Ci0gICAgICAgICAgICBib29sIGlzSWRl
b2dyYXBoID0gZXhwYW5kQXJvdW5kSWRlb2dyYXBocyAmJiBGb250Q2FzY2FkZTo6aXNDSktJZGVv
Z3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpOworICAgICAgICAgICAgYm9vbCBpc0lkZW9ncmFwaCA9
IEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpICYm
IEZvbnRDYXNjYWRlOjppc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNoYXJhY3Rlcik7CiAKICAgICAg
ICAgICAgIGlmICh0cmVhdEFzU3BhY2UgfHwgaXNJZGVvZ3JhcGggfHwgZm9yY2VMZWZ0RXhwYW5z
aW9uIHx8IGZvcmNlUmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgICAgICAgICBhdXRvIFtleHBh
bmRMZWZ0LCBleHBhbmRSaWdodF0gPSBleHBhbnNpb25Mb2NhdGlvbihpc0lkZW9ncmFwaCwgdHJl
YXRBc1NwYWNlLCBtX3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWZ0RXhw
YW5zaW9uLCBmb3JiaWRSaWdodEV4cGFuc2lvbiwgZm9yY2VMZWZ0RXhwYW5zaW9uLCBmb3JjZVJp
Z2h0RXhwYW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKaW5kZXggYzcxN2UzYjZj
NDAwM2MyNTI1ZTYwMzQ4OTc3MWJkNWQ0YWJiNWQxYS4uODMxNWMyMTNhMmUzNjVjZGExOTE2Zjk3
NTI4ZTg4OWI1ODZiODM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTEzOCw3
ICsxMzgsNyBAQCBjb25zdCBGb250KiBGb250Q2FzY2FkZTo6Zm9udEZvckNvbWJpbmluZ0NoYXJh
Y3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBvcmlnaW5hbAogICAgICAgICAgICAgcmV0dXJuIGZh
bGxiYWNrRm9udDsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeXN0ZW1GYWxsYmFjayA9IEZvbnRD
YWNoZTo6Zm9udENhY2hlRmFsbGluZ0JhY2tUb1NpbmdsZXRvbihmb250U2VsZWN0b3IoKSkuc3lz
dGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKG1fZm9udERlc2NyaXB0aW9uLCBiYXNlRm9udCwgSXNG
b3JQbGF0Zm9ybUZvbnQ6Ok5vLCBwcmVmZXJDb2xvcmVkRm9udCA/IEZvbnRDYWNoZTo6UHJlZmVy
Q29sb3JlZEZvbnQ6OlllcyA6IEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6Ok5vLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgaWYgKGF1dG8gc3lzdGVtRmFsbGJhY2sgPSBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMobV9mb250
RGVzY3JpcHRpb24sIGJhc2VGb250LCBJc0ZvclBsYXRmb3JtRm9udDo6Tm8sIHByZWZlckNvbG9y
ZWRGb250ID8gRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6WWVzIDogRm9udENhY2hlOjpQ
cmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsKICAgICAgICAgaWYg
KHN5c3RlbUZhbGxiYWNrLT5jYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjaGFy
YWN0ZXJzLCBsZW5ndGgpICYmICghcHJlZmVyQ29sb3JlZEZvbnQgfHwgc3lzdGVtRmFsbGJhY2st
PnBsYXRmb3JtRGF0YSgpLmlzQ29sb3JCaXRtYXBGb250KCkpKQogICAgICAgICAgICAgcmV0dXJu
IHN5c3RlbUZhbGxiYWNrLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggMTcy
NzRiZmMzNDlkNDM5ZGIzMjY3N2YxYWVlYTZmMjVhNWJhNzYzYS4uMzVmMjEzZTllMTdmN2MwN2Jh
YTc4ODdjZTVhODM1ZmMyNTg3ZGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtNzU3
LDcgKzc1Nyw3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVGb250Q2FjaGUoKTsKIAogc3RhdGlj
IHZvaWQgZm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNr
KENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYsIGNv
bnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9VTlVTRUQob2JzZXJ2
ZXIsIG9ic2VydmVyID09ICZGb250Q2FjaGU6OnNpbmdsZXRvbigpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKG9ic2VydmVyLCBpc01haW5UaHJlYWQoKSAmJiBvYnNlcnZlciA9PSAmRm9udENhY2hlOjpm
b3JDdXJyZW50VGhyZWFkKCkpOwogCiAgICAgaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogfQpAQCAt
MTI0OSwxMyArMTI0OSwxNiBAQCBzdGF0aWMgRm9udExvb2t1cCBwbGF0Zm9ybUZvbnRMb29rdXBX
aXRoRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgRm9udFNlbAogc3RhdGljIHZvaWQg
aW52YWxpZGF0ZUZvbnRDYWNoZSgpCiB7CiAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtdIHsKKyAg
ICAgICAgLy8gRklYTUU6IFdvcmtlcnMgbmVlZCB0byBhY2Nlc3MgU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQuCiAgICAgICAgIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24o
KS5jbGVhcigpOworICAgICAgICAvLyBGSVhNRTogV29ya2VycyBuZWVkIHRvIGFjY2VzcyBGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Q2FjaGUuCiAgICAgICAgIGNsZWFyRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dENhY2hlKCk7CiAKKyAgICAgICAgLy8gRklYTUU6IFdvcmtl
cnMgbmVlZCB0byBhY2Nlc3MgRm9udERhdGFiYXNlLgogICAgICAgICBGb250RGF0YWJhc2U6OnNp
bmdsZXRvbkFsbG93aW5nVXNlckluc3RhbGxlZEZvbnRzKCkuY2xlYXIoKTsKICAgICAgICAgRm9u
dERhdGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0YWxsZWRGb250cygpLmNsZWFy
KCk7CiAKLSAgICAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbnZhbGlkYXRlKCk7CisgICAg
ICAgIEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKTsKICAgICB9KTsKIH0KIApA
QCAtMTI4Nyw3ICsxMjkwLDcgQEAgc3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvbnRXaXRo
RmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LAogCiAgICAgaWYgKGZh
bWlseS5zdGFydHNXaXRoKCJVSUNURm9udFRleHRTdHlsZSIpKSB7CiAgICAgICAgIGNvbnN0IGF1
dG8mIHJlcXVlc3QgPSBmb250RGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKTsKLSAg
ICAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKGlzRm9udFdlaWdodEJvbGQocmVx
dWVzdC53ZWlnaHQpIHx8IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2hvdWxkTW9ja0JvbGRTeXN0
ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpID8ga0NURm9udFRyYWl0Qm9sZCA6IDApIHwgKGlzSXRh
bGljKHJlcXVlc3Quc2xvcGUpID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7CisgICAgICAgIENU
Rm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChpc0ZvbnRXZWlnaHRCb2xkKHJlcXVlc3Qud2Vp
Z2h0KSB8fCBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zaG91bGRNb2NrQm9sZFN5c3Rl
bUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgPyBrQ1RGb250VHJhaXRCb2xkIDogMCkgfCAoaXNJdGFs
aWMocmVxdWVzdC5zbG9wZSkgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsKICAgICAgICAgYXV0
byBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHls
ZShmYW1pbHkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgUmVuZGVyVGhlbWVDb2Nv
YTo6c2luZ2xldG9uKCkuY29udGVudFNpemVDYXRlZ29yeSgpLCBmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRMb2NhbGUoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgICAg
IGlmICh0cmFpdHMpCiAgICAgICAgICAgICBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNj
cmlwdG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0cyhkZXNjcmlwdG9yLmdldCgpLCB0cmFp
dHMsIHRyYWl0cykpOwpAQCAtMTMzNSwyMyArMTMzOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPENU
Rm9udFJlZj4gZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBjb25zdCBG
b250RAogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIGJvb2wgc2hvdWxkQXV0b0FjdGl2
YXRlRm9udElmTmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKK2Jvb2wgRm9udENhY2hl
OjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5
KQogewotI2lmbmRlZiBOREVCVUcKLSAgICAvLyBUaGlzIGNhY2hlIGlzIG5vdCB0aHJlYWQgc2Fm
ZSBzbyB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBpcyB0aGVyZSB0bwotICAgIC8vIG1ha2Ugc3Vy
ZSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQgZnJvbSB0aGUgc2FtZSB0aHJlYWQuCi0g
ICAgc3RhdGljIFRocmVhZCogaW5pdFRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKLSAgICBB
U1NFUlQoaW5pdFRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0KLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9tU3RyaW5nPj4ga25vd25GYW1pbGllczsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2FjaGVTaXplID0gMTI4OwotICAgIEFTU0VS
VChrbm93bkZhbWlsaWVzLmdldCgpLnNpemUoKSA8PSBtYXhDYWNoZVNpemUpOwotICAgIGlmIChr
bm93bkZhbWlsaWVzLmdldCgpLnNpemUoKSA9PSBtYXhDYWNoZVNpemUpCi0gICAgICAgIGtub3du
RmFtaWxpZXMuZ2V0KCkucmVtb3ZlKGtub3duRmFtaWxpZXMuZ2V0KCkucmFuZG9tKCkpOworICAg
IEFTU0VSVChtX2tub3duRmFtaWxpZXMuc2l6ZSgpIDw9IG1heENhY2hlU2l6ZSk7CisgICAgaWYg
KG1fa25vd25GYW1pbGllcy5zaXplKCkgPT0gbWF4Q2FjaGVTaXplKQorICAgICAgICBtX2tub3du
RmFtaWxpZXMucmVtb3ZlKG1fa25vd25GYW1pbGllcy5yYW5kb20oKSk7CiAKICAgICAvLyBPbmx5
IGF0dGVtcHQgdG8gYXV0by1hY3RpdmF0ZSBmb250cyBvbmNlIGZvciBwZXJmb3JtYW5jZSByZWFz
b25zLgotICAgIHJldHVybiBrbm93bkZhbWlsaWVzLmdldCgpLmFkZChmYW1pbHkpLmlzTmV3RW50
cnk7CisgICAgcmV0dXJuIG1fa25vd25GYW1pbGllcy5hZGQoZmFtaWx5KS5pc05ld0VudHJ5Owog
fQogCiBzdGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dG
bG9hdCBzaXplKQpAQCAtMTY5Niw3ICsxNjkxLDcgQEAgdm9pZCBGb250Q2FjaGU6OnByZXdhcm1H
bG9iYWxseSgpCiAKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBwcmV3YXJtSW5m
bzsKICAgICBwcmV3YXJtSW5mby5zZWVuRmFtaWxpZXMgPSBXVEZNb3ZlKGZhbWlsaWVzKTsKLSAg
ICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnByZXdhcm0ocHJld2FybUluZm8pOworICAgIEZvbnRD
YWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnByZXdhcm0ocHJld2FybUluZm8pOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5k
ZXggYWRiY2MyNDQ4ZjFlZTllNTgyODRmMzJkYTM3NjNmNjMwOWVjNzc5NS4uM2I0ZGE0ZjUyN2Jj
ODRlNWE0NzE2OGE5OTQ2ZTdmYjY4Nzc0ZTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBGb250UmFuZ2Vz
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmbwogCiAgICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOwogCi0gICAgcmV0
dXJuIEZvbnRSYW5nZXMoRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1EYXRh
KCpmb250UGxhdGZvcm1EYXRhKSk7CisgICAgcmV0dXJuIEZvbnRSYW5nZXMoRm9udENhY2hlOjpm
b3JDdXJyZW50VGhyZWFkKCkuZm9udEZvclBsYXRmb3JtRGF0YSgqZm9udFBsYXRmb3JtRGF0YSkp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKaW5kZXgg
ZjNlNmZiYzg4MmEwYzJkNTE1YjhlOGY2MWY2OWMxZDJlM2JlMjM5Ny4uNTc2MmUwODkzZDk5M2I0
MzliOTA1ODkyYjE2MjU2NzYwOWI1YmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpDYXNjYWRlTGlzdFBhcmFtZXRlcnMgU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnN5
CiAgICAgcmVzdWx0LmFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHM7CiAKICAgICBhdXRvIHdlaWdodCA9IGRlc2NyaXB0aW9uLndlaWdodCgpOwotICAgIGlm
IChGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vz
c2liaWxpdHkoKSkKKyAgICBpZiAoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2hvdWxk
TW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSgpKQogICAgICAgICB3ZWlnaHQgPSB3
ZWlnaHQgKyBGb250U2VsZWN0aW9uVmFsdWUoMjAwKTsKIAogICAgIHJlc3VsdC53ZWlnaHQgPSBt
YXBXZWlnaHQod2VpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bQppbmRleCAzMzJkMWVmMjZhOWViOGMzYWFjNDllMjFhMWI5OTBiZWIyZGRjNGRjLi45NzY4MTMy
ZDcwYzhhOTM5MDdkMDk5ZmJhYmUyNmY0MGZiMWU1ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVD
aGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEgcnVuRm9udFBs
YXRmb3JtRGF0YShydW5DVEZvbnQsIENURm9udEdldFNpemUocnVuQ1RGb250KSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJ1bkZvbnQgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JQbGF0
Zm9ybURhdGEocnVuRm9udFBsYXRmb3JtRGF0YSkucHRyKCk7CisgICAgICAgICAgICAgICAgICAg
IHJ1bkZvbnQgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Rm9yUGxhdGZvcm1E
YXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBpZiAobV9mYWxsYmFja0ZvbnRzICYmIHJ1bkZvbnQgIT0gJm1fZm9udC5wcmlt
YXJ5Rm9udCgpKQogICAgICAgICAgICAgICAgICAgICBtX2ZhbGxiYWNrRm9udHMtPmFkZChydW5G
b250KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKaW5kZXggY2I0Y2RjMDU5YTc3YWNiZWRiZmJjMWUxMmIwMDUwZTZlODE1
MmFiNC4uOTExZGQ1Y2EwMDczMjhjZDU5ZmQ5ZjAxMTY4MDg5M2RhNzg0ODQ1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4qIGdldExp
bmtlZEZvbnRzKFN0cmluZyYgZmFtaWx5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1hc2tzKCkKK3N0YXRpYyBj
b25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFnZU1hc2tzKEZvbnRDYWNoZSYgZm9u
dENhY2hlKQogewogICAgIC8vIFRoZSBkZWZhdWx0IG9yZGVyIGluIHdoaWNoIHdlIGxvb2sgZm9y
IGEgZm9udCBmb3IgYSBDSksgY2hhcmFjdGVyLiBJZiB0aGUgdXNlcidzIGRlZmF1bHQgY29kZSBw
YWdlIGlzCiAgICAgLy8gb25lIG9mIHRoZXNlLCB3ZSB3aWxsIHVzZSBpdCBmaXJzdC4KQEAgLTE2
MSw3ICsxNjEsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPERXT1JELCA0PiYgZ2V0Q0pLQ29kZVBh
Z2VNYXNrcygpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFs
aXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAgICAgIElNTGFuZ0ZvbnRM
aW5rVHlwZSogbGFuZ0ZvbnRMaW5rID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZXRGb250TGlu
a0ludGVyZmFjZSgpOworICAgICAgICBJTUxhbmdGb250TGlua1R5cGUqIGxhbmdGb250TGluayA9
IGZvbnRDYWNoZS5nZXRGb250TGlua0ludGVyZmFjZSgpOwogICAgICAgICBpZiAoIWxhbmdGb250
TGluaykKICAgICAgICAgICAgIHJldHVybiBjb2RlUGFnZU1hc2tzOwogCkBAIC0yNTcsNyArMjU3
LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJz
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3IKICAgICAgICAgICAgICAgICAvLyBUaGUgQ0pL
IGNoYXJhY3RlciBtYXkgYmVsb25nIHRvIG11bHRpcGxlIGNvZGUgcGFnZXMuIFdlIHdhbnQgdG8K
ICAgICAgICAgICAgICAgICAvLyBkbyBmb250IGxpbmtpbmcgYWdhaW5zdCBhIHNpbmdsZSBvbmUg
b2YgdGhlbSwgcHJlZmVycmluZyB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgIC8vIGNvZGUg
cGFnZSBmb3IgdGhlIHVzZXIncyBsb2NhbGUuCi0gICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PERXT1JELCA0PiYgQ0pLQ29kZVBhZ2VNYXNrcyA9IGdldENKS0NvZGVQYWdlTWFza3MoKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBDSktDb2RlUGFnZU1hc2tzID0g
Z2V0Q0pLQ29kZVBhZ2VNYXNrcygqdGhpcyk7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVt
Q29kZVBhZ2VzID0gQ0pLQ29kZVBhZ2VNYXNrcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUNvZGVQYWdlcyAmJiAhaGZvbnQ7ICsraSkgewogICAg
ICAgICAgICAgICAgICAgICBoZm9udCA9IGNyZWF0ZU1MYW5nRm9udChsYW5nRm9udExpbmssIGhk
YywgQ0pLQ29kZVBhZ2VNYXNrc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAppbmRleCAxZmMwOWYzMmU3ZTEyYTAzNjJlOTM0NDI4ODE3YWFmMGY4NmE4
Y2MzLi5lMjljNWNhZjQ3OTJkM2Y4OTIyMzMyMmFiOGM2YThkMjAwNGRjMzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTEzMSw3ICsxMzEsOCBA
QCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0
aW5ncykKICNlbmRpZgogCiAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnNldFNob3VsZE1v
Y2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkobV9zaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KTsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3Vs
ZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkobV9zaG91bGRNb2NrQm9sZFN5c3Rl
bUZvbnRGb3JBY2Nlc3NpYmlsaXR5KTsKKyAgICAvLyBGSVhNRTogQ2FsbCBzZXRTaG91bGRNb2Nr
Qm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgb24gYWxsIHdvcmtlcnMuCisgICAgRm9u
dENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9y
QWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkp
OwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBBdWRpb0NvbnRleHQ6OnNldERlZmF1bHRT
YW1wbGVSYXRlRm9yVGVzdGluZyhzdGQ6Om51bGxvcHQpOwpAQCAtNTcwLDcgKzU3MSw4IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsU2V0dGluZ3M6OnNldFNob3VsZE1vY2tCb2xkU3lzdGVt
Rm9udEZvckFjY2Vzc2liaWxpdHkoCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAgICBSZW5kZXJUaGVtZTo6c2luZ2xl
dG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShyZXF1aXJl
cyk7Ci0gICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZv
bnRGb3JBY2Nlc3NpYmlsaXR5KHJlcXVpcmVzKTsKKyAgICAvLyBGSVhNRTogQ2FsbCBzZXRTaG91
bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KCkgb24gYWxsIHdvcmtlcnMuCisg
ICAgRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1G
b250Rm9yQWNjZXNzaWJpbGl0eShyZXF1aXJlcyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyZTljMGQ2ODU4ZWM5MWMzMTljYjIz
MzRjZTBiMjIxNTMzMWZhNmMuLjhlOTk3YzQ1Yjg0ZmYwMTU5MGUyZjJlN2I5ZmIyZTI0MWU5YzMz
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE4NTIsNyArMTg1Miw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZChib29sIGZsYWcpCiAKIHZvaWQgSW50ZXJuYWxzOjppbnZhbGlkYXRlRm9udENh
Y2hlKCkKIHsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmludmFsaWRhdGUoKTsKKyAgICBG
b250Q2FjaGU6OmludmFsaWRhdGVBbGxGb250Q2FjaGVzKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxz
OjpzZXRGb250U21vb3RoaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdi
NjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uNDMzZDllMWE0NWMyOTg4NTQyYjA1ZTc0YjQ3
MTdhNzcwNTcyOGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcApAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8Rm9udD4gV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjpjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2Ny
aQogewogICAgIEFTU0VSVChtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgIEFTU0VSVCht
X2NvbnRleHQpOwotICAgIHJldHVybiBGb250OjpjcmVhdGUobV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhLT5mb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3lu
dGhldGljSXRhbGljLCBmb250Q3JlYXRpb25Db250ZXh0KSwgRm9udDo6T3JpZ2luOjpSZW1vdGUs
ICZtX2NvbnRleHQtPmZvbnRDYWNoZSgpKTsKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS0+Zm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udENyZWF0aW9uQ29udGV4dCksIEZvbnQ6
Ok9yaWdpbjo6UmVtb3RlKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OnNldENs
aWVudChGb250TG9hZFJlcXVlc3RDbGllbnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZDFiZTYzNmYxMmE5YTBiODcwYjMzYmNh
MTY0NmY0YWUwMjQxN2MxMS4uMDlhM2Y0MGZlNTMzODU2MGMwM2NmM2FiZDgwMWM3ZmIzMTJjOWY5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyeXB0by5oIgotI2luY2x1ZGUgIkZvbnRDYWNo
ZS5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250
RmFjZVNldC5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Qcm94eS5oIgpAQCAtNjQsNiArNjMs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBo
b3JlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyNiwxMyArNTI2LDYgQEAgQ1NTRm9u
dFNlbGVjdG9yKiBXb3JrZXJHbG9iYWxTY29wZTo6Y3NzRm9udFNlbGVjdG9yKCkKICAgICByZXR1
cm4gbV9jc3NGb250U2VsZWN0b3IuZ2V0KCk7CiB9CiAKLUZvbnRDYWNoZSYgV29ya2VyR2xvYmFs
U2NvcGU6OmZvbnRDYWNoZSgpCi17Ci0gICAgaWYgKCFtX2ZvbnRDYWNoZSkKLSAgICAgICAgbV9m
b250Q2FjaGUgPSBGb250Q2FjaGU6OmNyZWF0ZSgpOwotICAgIHJldHVybiAqbV9mb250Q2FjaGU7
Ci19Ci0KIFJlZjxGb250RmFjZVNldD4gV29ya2VyR2xvYmFsU2NvcGU6OmZvbnRzKCkKIHsKICAg
ICBBU1NFUlQoY3NzRm9udFNlbGVjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCmluZGV4IDM1ZDczYWNjZWUzMjdlYjg5ZGY5M2EzZmI0Y2Y5MDUzMTk4
YTc3NzguLmMwMWFkOGVmZjc3NGZiZTE2NTUzNDc5MGI2MDg4YmZjYWNkYzBmNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTEzNyw3ICsxMzcsNiBA
QCBwdWJsaWM6CiAKICAgICBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpIGZpbmFsOwogICAg
IENTU0ZvbnRTZWxlY3RvciogY3NzRm9udFNlbGVjdG9yKCkgZmluYWw7Ci0gICAgRm9udENhY2hl
JiBmb250Q2FjaGUoKSBmaW5hbDsKICAgICBSZWY8Rm9udEZhY2VTZXQ+IGZvbnRzKCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0KFN0cmluZyYg
dXJsLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpIGZpbmFsOwogICAgIHZvaWQgYmVnaW5Mb2Fk
aW5nRm9udFNvb24oRm9udExvYWRSZXF1ZXN0JikgZmluYWw7CkBAIC0yMTksNyArMjE4LDYgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NWYWx1ZVBvb2w+IG1fY3Nz
VmFsdWVQb29sOwogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fY3NzRm9udFNlbGVjdG9y
OwotICAgIFJlZlB0cjxGb250Q2FjaGU+IG1fZm9udENhY2hlOwogICAgIFJlZmVycmVyUG9saWN5
IG1fcmVmZXJyZXJQb2xpY3k7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBtX3NldHRpbmdzVmFsdWVz
OwogICAgIFdvcmtlclR5cGUgbV93b3JrZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDk0MzA0YjcxMWZkNGZhZWEzYjIwZTczOWM5OTZhNDdiOGM3MmFk
MzQuLjFiOTUzMjViM2ExYTc3ODMyNjQzMjZmMzkwZDk0YjdjMzFmNDAwZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTg2Nyw3ICs4NjcsOCBAQCB2b2lkIFdl
YlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEdDQ29udHJvbGxl
cjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKLSAgICBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmludmFsaWRhdGUoKTsKKyAgICAvLyBGSVhNRTogV2hhdCBhYm91dCBGb250Q2FjaGVz
IG9uIHdvcmtlciB0aHJlYWRzPworICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmlu
dmFsaWRhdGUoKTsKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZWQodHJ1
ZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW0KaW5kZXggOTI4YWU3ZDUxZTNmMGI3ZDkxMDIwYzdkYTI4OGVkZTI0NWMz
ODU5NS4uNDFhZDFiMDk4Nzg5ZGVjZGRhMDQ1YzM4NTYxNzQ0YzlmMGQwYTkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0x
NDAsMTcgKzE0MCwxNyBAQCArIChzaXplX3QpaWNvbnNXaXRoRGF0YUNvdW50CiAKICsgKHNpemVf
dCljYWNoZWRGb250RGF0YUNvdW50CiB7Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuZm9udENvdW50KCk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgp
LmZvbnRDb3VudCgpOwogfQogCiArIChzaXplX3QpY2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50
CiB7Ci0gICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW5hY3RpdmVGb250Q291bnQo
KTsKKyAgICByZXR1cm4gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuaW5hY3RpdmVGb250
Q291bnQoKTsKIH0KIAogKyAodm9pZClwdXJnZUluYWN0aXZlRm9udERhdGEKIHsKLSAgICBGb250
Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworICAgIEZvbnRDYWNo
ZTo6Zm9yQ3VycmVudFRocmVhZCgpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQogCiArIChz
aXplX3QpZ2x5cGhQYWdlQ291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dGF0aXN0aWNzLmNwcAppbmRleCA5Yzk2YTY3ZTlkMGMxZjkwNDQyZjBiNDBjNDQ4MjZiNWM1NmI1
YTMzLi4zNTY5ODNjNTJiMzc0OGE0Y2RiY2E1YWQ5MWY5NTM1MTJhODg5YmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC0yMTAsNyArMjEw
LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFDb3VudChfT3V0
XyBVSU5UICpjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwotICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRDb3Vu
dCgpOworICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5m
b250Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjE4LDEzICsyMTgsMTMgQEAg
SFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50KF9P
dXRfIFVJTlQgKmNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW5hY3Rp
dmVGb250Q291bnQoKTsKKyAgICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpmb3JDdXJyZW50
VGhyZWFkKCkuaW5hY3RpdmVGb250Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHZvaWQpCiB7Ci0g
ICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445678</attachid>
            <date>2021-12-01 23:21:23 -0800</date>
            <delta_ts>2021-12-07 17:11:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233750-20211202182121.patch</filename>
            <type>text/plain</type>
            <size>6074</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmNmQxOTIxNDZjMzQ2
OTgzNGZlOTZmODFmMDAxYWJjODAwMjU5OS4uZGI3OGE4MTI2YjkwNmUyYWIxZTAzYWQ4Nzk5Njhi
OTE4MDI1NTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTEyLTAxICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGV4cGFu
ZEFyb3VuZElkZW9ncmFwaHMgc3RhdGljIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBPZmZzY3JlZW5DYW52YXMsIHdlIGNhbiBj
YWxsIGludG8KKyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRB
ZHZhbmNlcywKKyAgICAgICAgRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJ
bnRlcm5hbCwgYW5kCisgICAgICAgIFdpZHRoSXRlcmF0b3I6OmNhbGN1bGF0ZUFkZGl0aW9uYWxX
aWR0aCBmcm9tIHdvcmtlciB0aHJlYWRzLgorICAgICAgICBUaGVzZSBhbGwgaGF2ZSBhIHN0YXRp
YyB2YXJpYWJsZSB2YXJpYWJsZSB3aXRoIGFuIGluaXRpYWxpemVyCisgICAgICAgIHRoYXQgY2Fs
bHMgRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0LAor
ICAgICAgICBhbmQgc3VjaCBpbml0aWFsaXplcnMgYXJlIG5vdCBzYWZlIHVuZGVyIC1mbm8tdGhy
ZWFkc2FmZS1zdGF0aWNzLgorCisgICAgICAgIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNv
bXBsZXhUZXh0IGlzIGEgc2ltcGxlIGVub3VnaCBmdW5jdGlvbiBpbgorICAgICAgICBhbGwgcG9y
dHMgKGl0IGp1c3QgcmV0dXJucyBhIGNvbnN0YW50IGJvb2wpIHRoYXQgaXQncyBub3Qgd29ydGgg
Y2FjaGluZworICAgICAgICB0aGUgcmVzdWx0IGluIGEgc3RhdGljLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkdGhJdGVyYXRvcjo6Y2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoIGNvbnN0KToKKwog
MjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgc2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkIGtub3duRmFtaWxpZXMgY2Fj
aGUgdG8gRm9udENhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBkMWM1Mzc0OTI5YTZjYmMz
OGJlMGFjZTM2YzdjZTZjZjhhMDAyYmFhLi5mZDYwMmYzZDUzZmNiYjQwMWJhZDQyYzkwMTc3YmQy
MWRkODUwMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTc1Miw4ICs3NTIsNyBAQCB2b2lk
IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAg
ICAgICAgICAgIGlmIChydW5Gb3JiaWRzUmlnaHRFeHBhbnNpb24pCiAgICAgICAgICAgICAgICAg
ICAgIGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIg
OiBpc0ZpcnN0Q2hhcmFjdGVyOwogICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBqdXN0aWZpY2F0
aW9uIGFuZCB3b3JkLXNwYWNpbmcuCi0gICAgICAgICAgICAgICAgc3RhdGljIGJvb2wgZXhwYW5k
QXJvdW5kSWRlb2dyYXBocyA9IEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhz
SW5Db21wbGV4VGV4dCgpOwotICAgICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBoID0gZXhwYW5k
QXJvdW5kSWRlb2dyYXBocyAmJiBGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChj
aCk7CisgICAgICAgICAgICAgICAgYm9vbCBpZGVvZ3JhcGggPSBGb250Q2FzY2FkZTo6Y2FuRXhw
YW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKSAmJiBGb250Q2FzY2FkZTo6aXNDSktJ
ZGVvZ3JhcGhPclN5bWJvbChjaCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8
fCBpZGVvZ3JhcGggfHwgZm9yY2VMZWZ0RXhwYW5zaW9uIHx8IGZvcmNlUmlnaHRFeHBhbnNpb24p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGlzdHJpYnV0ZSB0aGUgcnVuJ3MgdG90YWwgZXhw
YW5zaW9uIGV2ZW5seSBvdmVyIGFsbCBleHBhbnNpb24gb3Bwb3J0dW5pdGllcyBpbiB0aGUgcnVu
LgogICAgICAgICAgICAgICAgICAgICBpZiAobV9leHBhbnNpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBhMjZhY2VjMDZm
YWVmYmM5ZGFhM2Q5NzI3YWE2MGRiYjQ1OTJlMWFhLi43YWY5Nzg2ZmVlMjM5OGZiMDM4Y2I5YzQ4
OTVhNzk3ZGM5N2UxYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCkBAIC0xMDAxLDcgKzEwMDEsNiBAQCBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwo
Y29uc3QgTAogCiBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbkJlaGF2aW9yKQogewotICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFw
aHMgPSBjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwogICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKICAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSAoZXhwYW5zaW9uQmVo
YXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICBp
ZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmNlTGVmdEV4
cGFuc2lvbikgewpAQCAtMTAyMCw3ICsxMDE5LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29s
PiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFUK
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFj
dGVyLCBjaGFyYWN0ZXJzW2kgKyAxXSk7CiAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgaXNDSktJZGVv
Z3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBpZiAoY2FuRXhwYW5kQXJv
dW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKSAmJiBpc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNo
YXJhY3RlcikpIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWZ0ZXJFeHBhbnNpb24pCiAgICAg
ICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTEw
NDEsNyArMTA0MCw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBVCiAgICAgICAgICAgICAgICAg
Y2hhcmFjdGVyID0gVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcnNbaSAtIDJdLCBjaGFy
YWN0ZXIpOwogICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChleHBhbmRBcm91bmRJZGVvZ3JhcGhzICYmIGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hh
cmFjdGVyKSkgeworICAgICAgICAgICAgaWYgKGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNv
bXBsZXhUZXh0KCkgJiYgaXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FmdGVyRXhwYW5zaW9uKQogICAgICAgICAgICAgICAgICAgICBj
b3VudCsrOwogICAgICAgICAgICAgICAgIGNvdW50Kys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IGM4YjU2ZWFmMmQ2NTk3
Yzg1ZmU3NzhhNDYwMWM4ZWNiNDNkYjgzODQuLmFmZDc3ZGU0MWE4MjAwZTZkYjlkOWUxM2ZlMzkx
ZDczZGIzNWU2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTAsOCArMzkwLDcgQEAgYXV0byBXaWR0aEl0ZXJhdG9y
OjpjYWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBHbHlw
aEJ1ZmYKICAgICAgICAgICAgIGJvb2wgZm9yYmlkTGVmdEV4cGFuc2lvbiA9IGlzTGVmdG1vc3RD
aGFyYWN0ZXIgJiYgKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFz
aykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICAgICAgICAgIGJvb2wgZm9yYmlkUmlnaHRF
eHBhbnNpb24gPSBpc1JpZ2h0bW9zdENoYXJhY3RlciAmJiAobV9ydW4uZXhwYW5zaW9uQmVoYXZp
b3IoKSAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkUmlnaHRFeHBhbnNpb247CiAKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgPSBGb250
Q2FzY2FkZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKLSAgICAg
ICAgICAgIGJvb2wgaXNJZGVvZ3JhcGggPSBleHBhbmRBcm91bmRJZGVvZ3JhcGhzICYmIEZvbnRD
YXNjYWRlOjppc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNoYXJhY3Rlcik7CisgICAgICAgICAgICBi
b29sIGlzSWRlb2dyYXBoID0gRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJ
bkNvbXBsZXhUZXh0KCkgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hh
cmFjdGVyKTsKIAogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpc0lkZW9ncmFwaCB8
fCBmb3JjZUxlZnRFeHBhbnNpb24gfHwgZm9yY2VSaWdodEV4cGFuc2lvbikgewogICAgICAgICAg
ICAgICAgIGF1dG8gW2V4cGFuZExlZnQsIGV4cGFuZFJpZ2h0XSA9IGV4cGFuc2lvbkxvY2F0aW9u
KGlzSWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNp
b24sIGZvcmJpZExlZnRFeHBhbnNpb24sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBmb3JjZUxlZnRF
eHBhbnNpb24sIGZvcmNlUmlnaHRFeHBhbnNpb24pOwo=
</data>
<flag name="commit-queue"
          id="471609"
          type_id="3"
          status="+"
          setter="heycam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446238</attachid>
            <date>2021-12-07 14:34:56 -0800</date>
            <delta_ts>2021-12-07 17:14:01 -0800</delta_ts>
            <desc>Patch to remove canExpandAroundIdeographsInComplexText which had test failures</desc>
            <filename>bug-233750-20211208093454.patch</filename>
            <type>text/plain</type>
            <size>9950</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM5NmMzM2NjM2M4OTk3
NDEwMjJmZjUxYzY3MjIxYTQ0NjE4MjZjZi4uYjRjZTkxNjA0NTk3YWJlMTkxYzIzOTI4YjZjZDhj
YWEwNDFhZTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTEyLTAxICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGV4cGFu
ZEFyb3VuZElkZW9ncmFwaHMgc3RhdGljIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBPZmZzY3JlZW5DYW52YXMsIHdlIGNhbiBj
YWxsIGludG8KKyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRB
ZHZhbmNlcywKKyAgICAgICAgRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJ
bnRlcm5hbCwgYW5kCisgICAgICAgIFdpZHRoSXRlcmF0b3I6OmNhbGN1bGF0ZUFkZGl0aW9uYWxX
aWR0aCBmcm9tIHdvcmtlciB0aHJlYWRzLgorICAgICAgICBUaGVzZSBhbGwgaGF2ZSBhIHN0YXRp
YyB2YXJpYWJsZSB2YXJpYWJsZSB3aXRoIGFuIGluaXRpYWxpemVyCisgICAgICAgIHRoYXQgY2Fs
bHMgRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0LAor
ICAgICAgICBhbmQgc3VjaCBpbml0aWFsaXplcnMgYXJlIG5vdCBzYWZlIHVuZGVyIC1mbm8tdGhy
ZWFkc2FmZS1zdGF0aWNzLgorCisgICAgICAgIEFsbCBwb3J0cyB1c2UgQ29tcGxleFRleHRDb250
cm9sbGVyIHRoZXNlIGRheXMsIGFuZCBzbyB3ZSBjYW4gcmVtb3ZlCisgICAgICAgIGNhbkV4cGFu
ZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0IGFuZCBhcHBseSB0aGUgc3BhY2luZworICAg
ICAgICB1bmNvbmRpdGlvbmFsbHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6bGVmdEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6Y2FsY3Vs
YXRlQWRkaXRpb25hbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0lu
Q29tcGxleFRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91
bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCk6IERlbGV0ZWQuCisKIDIwMjEtMTItMDEgIENhbWVy
b24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHNob3VsZEF1
dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZCBrbm93bkZhbWlsaWVzIGNhY2hlIHRvIEZvbnRDYWNoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDFjNTM3NDkyOWE2Y2JjMzhiZTBhY2UzNmM3Y2U2Y2Y4
YTAwMmJhYS4uNjIxODFmY2U4NTZiZGMzYTYxNzA5YWJlZTlmY2ZkZWE0OGZmMDU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC03NTIsOCArNzUyLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgICAgICAgICBpZiAocnVu
Rm9yYmlkc1JpZ2h0RXhwYW5zaW9uKQogICAgICAgICAgICAgICAgICAgICBmb3JiaWRSaWdodEV4
cGFuc2lvbiA9IG1fcnVuLmx0cigpID8gaXNMYXN0Q2hhcmFjdGVyIDogaXNGaXJzdENoYXJhY3Rl
cjsKICAgICAgICAgICAgICAgICAvLyBIYW5kbGUganVzdGlmaWNhdGlvbiBhbmQgd29yZC1zcGFj
aW5nLgotICAgICAgICAgICAgICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFwaHMg
PSBGb250Q2FzY2FkZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
LSAgICAgICAgICAgICAgICBib29sIGlkZW9ncmFwaCA9IGV4cGFuZEFyb3VuZElkZW9ncmFwaHMg
JiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2gpOworICAgICAgICAgICAg
ICAgIGJvb2wgaWRlb2dyYXBoID0gRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2wo
Y2gpOwogICAgICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UgfHwgaWRlb2dyYXBoIHx8IGZv
cmNlTGVmdEV4cGFuc2lvbiB8fCBmb3JjZVJpZ2h0RXhwYW5zaW9uKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIERpc3RyaWJ1dGUgdGhlIHJ1bidzIHRvdGFsIGV4cGFuc2lvbiBldmVubHkgb3Zl
ciBhbGwgZXhwYW5zaW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhlIHJ1bi4KICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggYTI2YWNlYzA2ZmFlZmJjOWRhYTNkOTcyN2Fh
NjBkYmI0NTkyZTFhYS4uZDJmMzQ2YzU2NGE0Y2Q3OThiYTcxM2Q2ZWRhNDg1ZWI5YmU1ZGMwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cApAQCAtMTAwMSw3ICsxMDAxLDYgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2Fz
Y2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IEwKIAogc3RkOjpw
YWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3Vu
dEludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcikK
IHsKLSAgICBzdGF0aWMgYm9vbCBleHBhbmRBcm91bmRJZGVvZ3JhcGhzID0gY2FuRXhwYW5kQXJv
dW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAg
ICAgYm9vbCBpc0FmdGVyRXhwYW5zaW9uID0gKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFu
c2lvbk1hc2spID09IEZvcmJpZExlZnRFeHBhbnNpb247CiAgICAgaWYgKChleHBhbnNpb25CZWhh
dmlvciAmIExlZnRFeHBhbnNpb25NYXNrKSA9PSBGb3JjZUxlZnRFeHBhbnNpb24pIHsKQEAgLTEw
MjAsNyArMTAxOSw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBVCiAgICAgICAgICAgICAgICAg
Y2hhcmFjdGVyID0gVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGNoYXJhY3RlciwgY2hhcmFjdGVyc1tp
ICsgMV0pOwogICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChleHBhbmRBcm91bmRJZGVvZ3JhcGhzICYmIGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hh
cmFjdGVyKSkgeworICAgICAgICAgICAgaWYgKGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hhcmFj
dGVyKSkgewogICAgICAgICAgICAgICAgIGlmICghaXNBZnRlckV4cGFuc2lvbikKICAgICAgICAg
ICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtMTA0MSw3
ICsxMDQwLDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFUKICAgICAgICAgICAgICAgICBjaGFy
YWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyc1tpIC0gMl0sIGNoYXJhY3Rl
cik7CiAgICAgICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgaXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaGFyYWN0
ZXIpKSB7CisgICAgICAgICAgICBpZiAoaXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaGFyYWN0ZXIp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FmdGVyRXhwYW5zaW9uKQogICAgICAgICAgICAg
ICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgIGNvdW50Kys7CkBAIC0xMDg5LDcgKzEw
ODgsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpsZWZ0RXhwYW5zaW9uT3Bwb3J0dW5pdHkoU3RyaW5n
VmlldyBzdHJpbmdWaWV3LCBUZXh0RGlyZWN0aW9uCiAgICAgICAgICAgICBpbml0aWFsQ2hhcmFj
dGVyID0gVTE2X0dFVF9TVVBQTEVNRU5UQVJZKHN0cmluZ1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgo
KSAtIDJdLCBpbml0aWFsQ2hhcmFjdGVyKTsKICAgICB9CiAKLSAgICByZXR1cm4gY2FuRXhwYW5k
QXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKSAmJiBpc0NKS0lkZW9ncmFwaE9yU3ltYm9s
KGluaXRpYWxDaGFyYWN0ZXIpOworICAgIHJldHVybiBpc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGlu
aXRpYWxDaGFyYWN0ZXIpOwogfQogCiBib29sIEZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9w
cG9ydHVuaXR5KFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24p
CkBAIC0xMTA4LDcgKzExMDcsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpyaWdodEV4cGFuc2lvbk9w
cG9ydHVuaXR5KFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbgogICAgICAgICAg
ICAgZmluYWxDaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoZmluYWxDaGFyYWN0ZXIs
IHN0cmluZ1ZpZXdbMV0pOwogICAgIH0KIAotICAgIHJldHVybiB0cmVhdEFzU3BhY2UoZmluYWxD
aGFyYWN0ZXIpIHx8IChjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpICYm
IGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woZmluYWxDaGFyYWN0ZXIpKTsKKyAgICByZXR1cm4gdHJl
YXRBc1NwYWNlKGZpbmFsQ2hhcmFjdGVyKSB8fCBpc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGZpbmFs
Q2hhcmFjdGVyKTsKIH0KIAogYm9vbCBGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRFbXBoYXNp
cyhVQ2hhcjMyIGMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaAppbmRleCA2YWY1ODEyZDhhNzIyYjhmZGJkMzkzODFiZDY0ODMyNzY5ZTRmYTNhLi43
ZjRmNjI2OTUzOGQ3MTg4MTZiNWVjOGU2NjcxNWFkYzU1MTY5YTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTIzMCw3ICsyMzAsNiBA
QCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNpc01hcmtH
bHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgY2Fu
UmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCk7Ci0gICAgc3RhdGljIGJvb2wgY2Fu
RXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAogICAgIEdseXBoQnVmZmVy
IGxheW91dENvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0Owog
ICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNl
dDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAppbmRleCBjOGI1NmVhZjJkNjU5N2M4NWZlNzc4YTQ2MDFjOGVjYjQzZGI4Mzg0Li45
Y2FmOWRmODJlMjJlOGYyNmIyMWQwNWQ3YmIwMzE2Njc2ZGI3M2IwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMzkwLDgg
KzM5MCw3IEBAIGF1dG8gV2lkdGhJdGVyYXRvcjo6Y2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoKEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgR2x5cGhCdWZmCiAgICAgICAgICAgICBib29sIGZvcmJp
ZExlZnRFeHBhbnNpb24gPSBpc0xlZnRtb3N0Q2hhcmFjdGVyICYmIChtX3J1bi5leHBhbnNpb25C
ZWhhdmlvcigpICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmJpZExlZnRFeHBhbnNpb247CiAg
ICAgICAgICAgICBib29sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gaXNSaWdodG1vc3RDaGFyYWN0
ZXIgJiYgKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBSaWdodEV4cGFuc2lvbk1hc2spID09
IEZvcmJpZFJpZ2h0RXhwYW5zaW9uOwogCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBl
eHBhbmRBcm91bmRJZGVvZ3JhcGhzID0gRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9n
cmFwaHNJbkNvbXBsZXhUZXh0KCk7Ci0gICAgICAgICAgICBib29sIGlzSWRlb2dyYXBoID0gZXhw
YW5kQXJvdW5kSWRlb2dyYXBocyAmJiBGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJv
bChjaGFyYWN0ZXIpOworICAgICAgICAgICAgYm9vbCBpc0lkZW9ncmFwaCA9IEZvbnRDYXNjYWRl
Ojppc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNoYXJhY3Rlcik7CiAKICAgICAgICAgICAgIGlmICh0
cmVhdEFzU3BhY2UgfHwgaXNJZGVvZ3JhcGggfHwgZm9yY2VMZWZ0RXhwYW5zaW9uIHx8IGZvcmNl
UmlnaHRFeHBhbnNpb24pIHsKICAgICAgICAgICAgICAgICBhdXRvIFtleHBhbmRMZWZ0LCBleHBh
bmRSaWdodF0gPSBleHBhbnNpb25Mb2NhdGlvbihpc0lkZW9ncmFwaCwgdHJlYXRBc1NwYWNlLCBt
X3J1bi5sdHIoKSwgbV9pc0FmdGVyRXhwYW5zaW9uLCBmb3JiaWRMZWZ0RXhwYW5zaW9uLCBmb3Ji
aWRSaWdodEV4cGFuc2lvbiwgZm9yY2VMZWZ0RXhwYW5zaW9uLCBmb3JjZVJpZ2h0RXhwYW5zaW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyb0hhcmZidXp6TkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKaW5kZXggODMxNWMyMTNhMmUzNjVjZGExOTE2
Zjk3NTI4ZTg4OWI1ODZiODM4ZC4uZjVjMWE4NDM0YjBjNmU0NDM4ODFhYzc0YzAwYWNmMThhZGEz
MDkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvSGFyZmJ1enpORy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTQwLDExICs0MCw2IEBAIGJv
b2wgRm9udENhc2NhZGU6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0
aWMgYm9vbCBjaGFyYWN0ZXJTZXF1ZW5jZUlzRW1vamkoU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0
ZXJhdG9yJiBpdGVyYXRvciwgVUNoYXIzMiBmaXJzdENoYXJhY3RlciwgdW5zaWduZWQgZmlyc3RD
bHVzdGVyTGVuZ3RoKQogewogICAgIFVDaGFyMzIgY2hhcmFjdGVyID0gZmlyc3RDaGFyYWN0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FzY2FkZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EuY3BwCmluZGV4IDVhYzUxNDYzYmExOTQ1NGQwNWU3OWU2MGY0MTM2
Y2IyOTMzZjVmMDIuLjQ3MGRiYWM5YjUxNzg4OWRkOTEyYWYyNzhhZmE2ZTQxODJhNzFkNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNj
YWRlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EuY3BwCkBAIC0zMCw5ICszMCw0IEBAIGJvb2wgRm9udENhc2NhZGU6
OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBs
ZXhUZXh0KCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCmluZGV4IDUyY2I4OGY1M2QwNWEx
MDE5NmU2NTFiZmQyYWNkMDMyZGM3OTIyZWEuLjYyZTJiYjUxZGY1ZWQwNTk2YmFmNDQ5Zjk5MGU4
OGI0MzAxOGEyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFdpbi5jcHAKQEAgLTQyLDkgKzQyLDQgQEAgYm9vbCBGb250Q2FzY2FkZTo6Y2FuUmV0
dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBGb250Q2FzY2FkZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQo
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfQo=
</data>
<flag name="review"
          id="471579"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="471594"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446260</attachid>
            <date>2021-12-07 17:15:00 -0800</date>
            <delta_ts>2021-12-07 18:12:24 -0800</delta_ts>
            <desc>Patch to remove static variables</desc>
            <filename>bug-233750-20211202182121.patch</filename>
            <type>text/plain</type>
            <size>6074</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjlmNmQxOTIxNDZjMzQ2
OTgzNGZlOTZmODFmMDAxYWJjODAwMjU5OS4uZGI3OGE4MTI2YjkwNmUyYWIxZTAzYWQ4Nzk5Njhi
OTE4MDI1NTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTEyLTAxICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGV4cGFu
ZEFyb3VuZElkZW9ncmFwaHMgc3RhdGljIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgV2l0aCBPZmZzY3JlZW5DYW52YXMsIHdlIGNhbiBj
YWxsIGludG8KKyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRB
ZHZhbmNlcywKKyAgICAgICAgRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJ
bnRlcm5hbCwgYW5kCisgICAgICAgIFdpZHRoSXRlcmF0b3I6OmNhbGN1bGF0ZUFkZGl0aW9uYWxX
aWR0aCBmcm9tIHdvcmtlciB0aHJlYWRzLgorICAgICAgICBUaGVzZSBhbGwgaGF2ZSBhIHN0YXRp
YyB2YXJpYWJsZSB2YXJpYWJsZSB3aXRoIGFuIGluaXRpYWxpemVyCisgICAgICAgIHRoYXQgY2Fs
bHMgRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0LAor
ICAgICAgICBhbmQgc3VjaCBpbml0aWFsaXplcnMgYXJlIG5vdCBzYWZlIHVuZGVyIC1mbm8tdGhy
ZWFkc2FmZS1zdGF0aWNzLgorCisgICAgICAgIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNv
bXBsZXhUZXh0IGlzIGEgc2ltcGxlIGVub3VnaCBmdW5jdGlvbiBpbgorICAgICAgICBhbGwgcG9y
dHMgKGl0IGp1c3QgcmV0dXJucyBhIGNvbnN0YW50IGJvb2wpIHRoYXQgaXQncyBub3Qgd29ydGgg
Y2FjaGluZworICAgICAgICB0aGUgcmVzdWx0IGluIGEgc3RhdGljLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkdGhJdGVyYXRvcjo6Y2FsY3VsYXRlQWRkaXRpb25hbFdpZHRoIGNvbnN0KToKKwog
MjAyMS0xMi0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgc2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkIGtub3duRmFtaWxpZXMgY2Fj
aGUgdG8gRm9udENhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBkMWM1Mzc0OTI5YTZjYmMz
OGJlMGFjZTM2YzdjZTZjZjhhMDAyYmFhLi5mZDYwMmYzZDUzZmNiYjQwMWJhZDQyYzkwMTc3YmQy
MWRkODUwMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTc1Miw4ICs3NTIsNyBAQCB2b2lk
IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAg
ICAgICAgICAgIGlmIChydW5Gb3JiaWRzUmlnaHRFeHBhbnNpb24pCiAgICAgICAgICAgICAgICAg
ICAgIGZvcmJpZFJpZ2h0RXhwYW5zaW9uID0gbV9ydW4ubHRyKCkgPyBpc0xhc3RDaGFyYWN0ZXIg
OiBpc0ZpcnN0Q2hhcmFjdGVyOwogICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBqdXN0aWZpY2F0
aW9uIGFuZCB3b3JkLXNwYWNpbmcuCi0gICAgICAgICAgICAgICAgc3RhdGljIGJvb2wgZXhwYW5k
QXJvdW5kSWRlb2dyYXBocyA9IEZvbnRDYXNjYWRlOjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhz
SW5Db21wbGV4VGV4dCgpOwotICAgICAgICAgICAgICAgIGJvb2wgaWRlb2dyYXBoID0gZXhwYW5k
QXJvdW5kSWRlb2dyYXBocyAmJiBGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChj
aCk7CisgICAgICAgICAgICAgICAgYm9vbCBpZGVvZ3JhcGggPSBGb250Q2FzY2FkZTo6Y2FuRXhw
YW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKSAmJiBGb250Q2FzY2FkZTo6aXNDSktJ
ZGVvZ3JhcGhPclN5bWJvbChjaCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8
fCBpZGVvZ3JhcGggfHwgZm9yY2VMZWZ0RXhwYW5zaW9uIHx8IGZvcmNlUmlnaHRFeHBhbnNpb24p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRGlzdHJpYnV0ZSB0aGUgcnVuJ3MgdG90YWwgZXhw
YW5zaW9uIGV2ZW5seSBvdmVyIGFsbCBleHBhbnNpb24gb3Bwb3J0dW5pdGllcyBpbiB0aGUgcnVu
LgogICAgICAgICAgICAgICAgICAgICBpZiAobV9leHBhbnNpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBhMjZhY2VjMDZm
YWVmYmM5ZGFhM2Q5NzI3YWE2MGRiYjQ1OTJlMWFhLi43YWY5Nzg2ZmVlMjM5OGZiMDM4Y2I5YzQ4
OTVhNzk3ZGM5N2UxYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCkBAIC0xMDAxLDcgKzEwMDEsNiBAQCBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwo
Y29uc3QgTAogCiBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbkJlaGF2aW9yKQogewotICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFw
aHMgPSBjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwogICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKICAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSAoZXhwYW5zaW9uQmVo
YXZpb3IgJiBMZWZ0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICBp
ZiAoKGV4cGFuc2lvbkJlaGF2aW9yICYgTGVmdEV4cGFuc2lvbk1hc2spID09IEZvcmNlTGVmdEV4
cGFuc2lvbikgewpAQCAtMTAyMCw3ICsxMDE5LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29s
PiBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFUK
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFj
dGVyLCBjaGFyYWN0ZXJzW2kgKyAxXSk7CiAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgaXNDSktJZGVv
Z3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBpZiAoY2FuRXhwYW5kQXJv
dW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKSAmJiBpc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNo
YXJhY3RlcikpIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWZ0ZXJFeHBhbnNpb24pCiAgICAg
ICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTEw
NDEsNyArMTA0MCw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBVCiAgICAgICAgICAgICAgICAg
Y2hhcmFjdGVyID0gVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcnNbaSAtIDJdLCBjaGFy
YWN0ZXIpOwogICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChleHBhbmRBcm91bmRJZGVvZ3JhcGhzICYmIGlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hh
cmFjdGVyKSkgeworICAgICAgICAgICAgaWYgKGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNv
bXBsZXhUZXh0KCkgJiYgaXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FmdGVyRXhwYW5zaW9uKQogICAgICAgICAgICAgICAgICAgICBj
b3VudCsrOwogICAgICAgICAgICAgICAgIGNvdW50Kys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IGM4YjU2ZWFmMmQ2NTk3
Yzg1ZmU3NzhhNDYwMWM4ZWNiNDNkYjgzODQuLmFmZDc3ZGU0MWE4MjAwZTZkYjlkOWUxM2ZlMzkx
ZDczZGIzNWU2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTAsOCArMzkwLDcgQEAgYXV0byBXaWR0aEl0ZXJhdG9y
OjpjYWxjdWxhdGVBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBHbHlw
aEJ1ZmYKICAgICAgICAgICAgIGJvb2wgZm9yYmlkTGVmdEV4cGFuc2lvbiA9IGlzTGVmdG1vc3RD
aGFyYWN0ZXIgJiYgKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWZ0RXhwYW5zaW9uTWFz
aykgPT0gRm9yYmlkTGVmdEV4cGFuc2lvbjsKICAgICAgICAgICAgIGJvb2wgZm9yYmlkUmlnaHRF
eHBhbnNpb24gPSBpc1JpZ2h0bW9zdENoYXJhY3RlciAmJiAobV9ydW4uZXhwYW5zaW9uQmVoYXZp
b3IoKSAmIFJpZ2h0RXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkUmlnaHRFeHBhbnNpb247CiAKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgPSBGb250
Q2FzY2FkZTo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKLSAgICAg
ICAgICAgIGJvb2wgaXNJZGVvZ3JhcGggPSBleHBhbmRBcm91bmRJZGVvZ3JhcGhzICYmIEZvbnRD
YXNjYWRlOjppc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNoYXJhY3Rlcik7CisgICAgICAgICAgICBi
b29sIGlzSWRlb2dyYXBoID0gRm9udENhc2NhZGU6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJ
bkNvbXBsZXhUZXh0KCkgJiYgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woY2hh
cmFjdGVyKTsKIAogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCBpc0lkZW9ncmFwaCB8
fCBmb3JjZUxlZnRFeHBhbnNpb24gfHwgZm9yY2VSaWdodEV4cGFuc2lvbikgewogICAgICAgICAg
ICAgICAgIGF1dG8gW2V4cGFuZExlZnQsIGV4cGFuZFJpZ2h0XSA9IGV4cGFuc2lvbkxvY2F0aW9u
KGlzSWRlb2dyYXBoLCB0cmVhdEFzU3BhY2UsIG1fcnVuLmx0cigpLCBtX2lzQWZ0ZXJFeHBhbnNp
b24sIGZvcmJpZExlZnRFeHBhbnNpb24sIGZvcmJpZFJpZ2h0RXhwYW5zaW9uLCBmb3JjZUxlZnRF
eHBhbnNpb24sIGZvcmNlUmlnaHRFeHBhbnNpb24pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>