<?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>219672</bug_id>
          
          <creation_ts>2020-12-09 00:41:49 -0800</creation_ts>
          <short_desc>[GPU Process] Cache Font objects</short_desc>
          <delta_ts>2021-06-23 11:08:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219666</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206118</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227229</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713062</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-09 00:41:49 -0800</bug_when>
    <thetext>Reduce the cost of drawing glyph in GPU process by caching Font objects
when it&apos;s first used, and reference it later using a rendering resource identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713063</commentid>
    <comment_count>1</comment_count>
      <attachid>415728</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-09 00:45:58 -0800</bug_when>
    <thetext>Created attachment 415728
WIP

This WIP patch improves the core of Design from ~5 to 86 compared to non-GPU process score of 116 (~35% regression after the change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713195</commentid>
    <comment_count>2</comment_count>
      <attachid>415728</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-09 09:22:33 -0800</bug_when>
    <thetext>Comment on attachment 415728
WIP

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:934
&gt; +class CacheFont {

CacheFont is an odd name. CachedFont?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:955
&gt; +    uint32_t itemID() const { return m_itemID; }

This doesn&apos;t seem to be used?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:966
&gt; +    static WEBCORE_EXPORT uint32_t s_currentItemID;

Why WEBCORE_EXPORT? Can we give this a typedef?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713196</commentid>
    <comment_count>3</comment_count>
      <attachid>415728</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-09 09:23:39 -0800</bug_when>
    <thetext>Comment on attachment 415728
WIP

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:934
&gt;&gt; +class CacheFont {
&gt; 
&gt; CacheFont is an odd name. CachedFont?

As a display list item, CacheFont is a more reasonable name, since it describes what the item is doing.

But perhaps something like &quot;RegisterCachedFont&quot; would be more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713199</commentid>
    <comment_count>4</comment_count>
      <attachid>415728</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-09 09:26:41 -0800</bug_when>
    <thetext>Comment on attachment 415728
WIP

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:934
&gt;&gt;&gt; +class CacheFont {
&gt;&gt; 
&gt;&gt; CacheFont is an odd name. CachedFont?
&gt; 
&gt; As a display list item, CacheFont is a more reasonable name, since it describes what the item is doing.
&gt; 
&gt; But perhaps something like &quot;RegisterCachedFont&quot; would be more clear.

Oh I missed that this is a DL item because there&apos;s no inheritance. Maybe CacheFontItem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713205</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-09 09:48:38 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 415728 [details]
&gt; WIP
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415728&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:934
&gt; &gt;&gt;&gt; +class CacheFont {
&gt; &gt;&gt; 
&gt; &gt;&gt; CacheFont is an odd name. CachedFont?
&gt; &gt; 
&gt; &gt; As a display list item, CacheFont is a more reasonable name, since it describes what the item is doing.
&gt; &gt; 
&gt; &gt; But perhaps something like &quot;RegisterCachedFont&quot; would be more clear.
&gt; 
&gt; Oh I missed that this is a DL item because there&apos;s no inheritance. Maybe
&gt; CacheFontItem?

Perhaps. But if we want to add an &quot;Item&quot; suffix here, I&apos;d prefer to do that for all display list items for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713473</commentid>
    <comment_count>6</comment_count>
      <attachid>415847</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-10 02:12:45 -0800</bug_when>
    <thetext>Created attachment 415847
Updated for ToT and enabled web fonts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713474</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-10 02:14:06 -0800</bug_when>
    <thetext>Turns out we have to use IPC to send the font over since it contains shared buffer in the case of web fonts. But the perf appears to be pretty similar ~84 vs. ~87 so it&apos;s probably fine for now. Some kind of pre-warming, etc... can be added in the future to further reduce the IPC cost in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713836</commentid>
    <comment_count>8</comment_count>
      <attachid>415973</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-10 23:31:27 -0800</bug_when>
    <thetext>Created attachment 415973
Adds Font cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713942</commentid>
    <comment_count>9</comment_count>
      <attachid>415973</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-11 10:17:22 -0800</bug_when>
    <thetext>Comment on attachment 415973
Adds Font cache

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:153
&gt; +void RemoteResourceCacheProxy::releaseMemory()
&gt; +{
&gt; +    m_fontLastRenderingUpdateMap.clear();
&gt; +    m_numberOfFontsUsedInCurrentRenderingUpdate = 0;
&gt; +    m_remoteRenderingBackendProxy.deleteAllFonts();
&gt; +}

How does this cache lifetime compare to non-GPU process font cache lifetime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714069</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-11 13:23:37 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; Comment on attachment 415973 [details]
&gt; Adds Font cache
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415973&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:153
&gt; &gt; +void RemoteResourceCacheProxy::releaseMemory()
&gt; &gt; +{
&gt; &gt; +    m_fontLastRenderingUpdateMap.clear();
&gt; &gt; +    m_numberOfFontsUsedInCurrentRenderingUpdate = 0;
&gt; &gt; +    m_remoteRenderingBackendProxy.deleteAllFonts();
&gt; &gt; +}
&gt; 
&gt; How does this cache lifetime compare to non-GPU process font cache lifetime?

FontCache in WebCore just removes the inactive font but the cache in the GPU Process can be a bit more aggressive because we don&apos;t get sync JS API like updating layout or style on it. We can just remove the inactive fonts if this proves to be an issue in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714122</commentid>
    <comment_count>11</comment_count>
      <attachid>415973</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-11 15:38:39 -0800</bug_when>
    <thetext>Comment on attachment 415973
Adds Font cache

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

The rendering backend and DisplayList changes look reasonable to me.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:136
&gt; +    if (unusedFontCount &lt; totalFontCount / minimumFractionOfUnusedFontCountToTriggerRemoval &amp;&amp; unusedFontCount &lt;= maximumUnusedFontCountToSkipRemoval)

Nit - `minimumFractionOfUnusedFontCountToTriggerRemoval` sounds like it would be some fraction less than 1 (i.e. 0.25), and then we&apos;d do something like:

unusedFontCount &lt; minimumFractionOfUnusedFontCountToTriggerRemoval * totalFontCount

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:69
&gt; +    HashMap&lt;WebCore::RenderingResourceIdentifier, uint64_t&gt; m_fontLastRenderingUpdateMap;

Nit - maybe `m_fontIdentifierToLastRenderingUpdateVersionMap`?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:71
&gt; +    uint64_t m_currentRenderingUpdateVersion { 1 };

Can we can add a `using RenderingUpdateVersion = uint64_t;` instead of just using uint64_t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714177</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-11 16:56:28 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #11)
&gt; Comment on attachment 415973 [details]
&gt; Adds Font cache
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415973&amp;action=review
&gt; 
&gt; The rendering backend and DisplayList changes look reasonable to me.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:136
&gt; &gt; +    if (unusedFontCount &lt; totalFontCount / minimumFractionOfUnusedFontCountToTriggerRemoval &amp;&amp; unusedFontCount &lt;= maximumUnusedFontCountToSkipRemoval)
&gt; 
&gt; Nit - `minimumFractionOfUnusedFontCountToTriggerRemoval` sounds like it
&gt; would be some fraction less than 1 (i.e. 0.25), and then we&apos;d do something
&gt; like:

Yeah, I had that exact thought. Double precision math is slightly less efficient than division by unsigned but maybe clang can optimize it. It&apos;s not a useful perf cost anyway given we&apos;d be sending a bunch of IPCs later. Done this.

&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:69
&gt; &gt; +    HashMap&lt;WebCore::RenderingResourceIdentifier, uint64_t&gt; m_fontLastRenderingUpdateMap;
&gt; 
&gt; Nit - maybe `m_fontIdentifierToLastRenderingUpdateVersionMap`?

Yeah, I had that exact thought. I was trying to come up with a more terse name but maybe it&apos;s okay to use a long name here. Done the rename.

&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:71
&gt; &gt; +    uint64_t m_currentRenderingUpdateVersion { 1 };
&gt; 
&gt; Can we can add a `using RenderingUpdateVersion = uint64_t;` instead of just
&gt; using uint64_t?

I don&apos;t think it&apos;s a meaningful distinction since anyone cast it interchangeably with uint64_t. I&apos;d keep it as uint64_t for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714191</commentid>
    <comment_count>13</comment_count>
      <attachid>416074</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-12-11 17:10:57 -0800</bug_when>
    <thetext>Created attachment 416074
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714206</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-11 18:13:18 -0800</bug_when>
    <thetext>Committed r270725: &lt;https://trac.webkit.org/changeset/270725&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416074.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714207</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-11 18:14:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/72246783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715131</commentid>
    <comment_count>16</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-16 09:22:59 -0800</bug_when>
    <thetext>*** Bug 219666 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415728</attachid>
            <date>2020-12-09 00:45:58 -0800</date>
            <delta_ts>2020-12-10 02:12:45 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip219672.patch</filename>
            <type>text/plain</type>
            <size>35028</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNTRiOWI3NWVm
NzFjLi42MGI2YTkwMzEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCkBAIC0xNTgsNiArMTU4LDEzIEBAIEZvbnQ6On5Gb250KCkKICAgICByZW1vdmVGcm9t
U3lzdGVtRmFsbGJhY2tDYWNoZSgpOwogfQogCitSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
Rm9udDo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Cisg
ICAgcmV0dXJuICptX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKK30KKwogc3RhdGljIGJv
b2wgZmlsbEdseXBoUGFnZShHbHlwaFBhZ2UmIHBhZ2VUb0ZpbGwsIFVDaGFyKiBidWZmZXIsIHVu
c2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRm9udCYgZm9udCkKIHsKICAgICBib29sIGhhc0ds
eXBocyA9IHBhZ2VUb0ZpbGwuZmlsbChidWZmZXIsIGJ1ZmZlckxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggZWFmNzc2MDI3NzRjLi44Njg2NjNlMTI3
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM0LDYgKzM0
LDcgQEAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAjaW5jbHVkZSAiT3BlblR5cGVW
ZXJ0aWNhbERhdGEuaCIKICNlbmRpZgorI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xMDYsNiArMTA3LDggQEAgcHVibGlj
OgogICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxEYXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25zdCB7
IHJldHVybiBtX3ZlcnRpY2FsRGF0YS5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkgY29uc3Q7CisKICAgICBjb25zdCBGb250KiBzbWFsbENhcHNGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYpIGNvbnN0OwogICAgIGNvbnN0IEZvbnQmIG5vU3ludGhlc2l6YWJsZUZlYXR1
cmVzRm9udCgpIGNvbnN0OwogICAgIGNvbnN0IEZvbnQqIGVtcGhhc2lzTWFya0ZvbnQoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJikgY29uc3Q7CkBAIC0yNjcsNiArMjcwLDggQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IG1fdmVydGljYWxEYXRhOwogI2VuZGlmCiAK
KyAgICBtdXRhYmxlIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisKICAgICBzdHJ1Y3QgRGVyaXZlZEZvbnRzIHsKICAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAgLTM3
Nyw2ICszODIsOCBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5
cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIHdpZHRoOwogfQogCit1c2luZyBGb250UmVuZGVy
aW5nUmVzb3VyY2VNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVm
PEZvbnQ+PjsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDgxMjA0ZGYwODdlNi4uODJmNjc1ZjA1NjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTIzMiw2ICsyMzIsOCBAQCB2b2lkIERpc3Bs
YXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogU3VwcG9ydCB0aGUgYWJpbGl0eSB0byBj
bG9uZSBkaXNwbGF5IGxpc3RzICh0aGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIGRpc3Bs
YXkgbGlzdCB0cmFja2luZykuCiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkNhY2hlRm9udDoK
KyAgICAgICAgcmV0dXJuIGFwcGVuZDxDYWNoZUZvbnQ+KGl0ZW0uZ2V0PENhY2hlRm9udD4oKSk7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxE
cmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMS4u
NDFjNjQyYjVmMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
SXRlbVR5cGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGb250LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJ
bWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQorICAgIEZvbnRSZW5kZXJp
bmdSZXNvdXJjZU1hcCYgZm9udHMoKSB7IHJldHVybiBtX2ZvbnRzOyB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQq
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQqKTsKQEAgLTE4MSwxMSArMTgzLDE5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKwor
ICAgIGJvb2wgY2FjaGVGb250KEZvbnQmIGZvbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9m
b250cy5lbnN1cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgewor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYoZm9udCk7CisgICAgICAgIH0pLmlzTmV3RW50cnk7
CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdz
LCBJdGVtSGFuZGxlKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
ICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgRm9udFJlbmRlcmlu
Z1Jlc291cmNlTWFwIG1fZm9udHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEl0ZW1CdWZmZXI+IG1f
aXRlbXM7CiAgICAgVmVjdG9yPE9wdGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRl
bnRzOwogICAgIGJvb2wgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgeyB0cnVlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHAKaW5kZXggOGJjMDAxNDI4MjBlLi40NTEyNDRhN2JiOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRl
cjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3Rh
dAogICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0YXRlKSk7
CiAgICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKLSAgICBtX293
bmVyLmFwcGVuZDxEcmF3R2x5cGhzPigqbV9vcmlnaW5hbEZvbnQsIGdseXBocywgY29tcHV0ZUFk
dmFuY2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCku
ZGF0YSgpLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwg
bV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENh
Y2hlZEZvbnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3Np
dGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQs
IGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9k
ZSk7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAtMzYz
LDcgKzM2Myw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UoQ0dS
ZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiB2b2lkIERyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5
cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAg
ICBpZiAobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29uc3RydWN0
aW9uOjpEb250RGVjb25zdHJ1Y3QpIHsKLSAgICAgICAgbV9vd25lci5hcHBlbmQ8RHJhd0dseXBo
cz4oZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhm
cm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICAgICAgbV9v
d25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVmZmVy
LmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3Rh
cnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcAppbmRleCBiMWRkM2UwOTAyYzIuLjM3ZDUzMWQwODg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ckhhcmZCdXp6LmNwcApAQCAtNDMsNyArNDMsNyBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdH
bHlwaHNSZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgog
CiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZDxEcmF3R2x5cGhzPihmb250LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJh
d0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSks
IGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290
aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKaW5k
ZXggYjFkZDNlMDkwMmMyLi5hMTA3ZmY4MmNhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYgb3du
ZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbgogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
c3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293
bmVyLmFwcGVuZDxEcmF3R2x5cGhzPihmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGds
eXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGlu
Z01vZGUpOworICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChm
b250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20p
LCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCmluZGV4IGNlNmIwZTliMThiZC4uM2MwMjg1NmRkZWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMTM2LDYgKzEzNiw4IEBAIHZvaWQg
SXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICBnZXQ8
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkNhY2hlRm9udDoKKyAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHsKICAgICAgICAgZ2V0PERyYXdHbHlwaHM+
KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMiw2ICszMTQsMTAgQEAg
dm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgZ2V0PERyYXdGb2N1c1JpbmdSZWN0
cz4oKS5+RHJhd0ZvY3VzUmluZ1JlY3RzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
Y2FzZSBJdGVtVHlwZTo6Q2FjaGVGb250OiB7CisgICAgICAgIGdldDxDYWNoZUZvbnQ+KCkufkNh
Y2hlRm9udCgpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdHbHlwaHM6IHsKICAgICAgICAgZ2V0PERyYXdHbHlwaHM+KCkufkRyYXdHbHlwaHMoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTcxLDYgKzU3NywxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmNvcHlU
byhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgICAgICBuZXcgKGl0ZW1PZmZzZXQp
IERyYXdGb2N1c1JpbmdSZWN0cyhnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpDYWNoZUZvbnQ6IHsKKyAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBDYWNoZUZvbnQoZ2V0PENhY2hlRm9udD4oKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogewogICAgICAgICBu
ZXcgKGl0ZW1PZmZzZXQpIERyYXdHbHlwaHMoZ2V0PERyYXdHbHlwaHM+KCkpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggZjEx
YTlmZWRkMDdjLi5hOTllMDYwNDFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5jcHAKQEAgLTgwLDYgKzgwLDggQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5C
eXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKENsaXBQYXRoKTsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgICAgIHJldHVybiBz
aXplb2YoQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDYWNoZUZv
bnQ6CisgICAgICAgIHJldHVybiBzaXplb2YoQ2FjaGVGb250KTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKQEAgLTE4Myw2ICsxODUsNyBAQCBib29sIGlz
RHJhd2luZ0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVt
VHlwZTo6Q29uY2F0ZW5hdGVDVE06CisgICAgY2FzZSBJdGVtVHlwZTo6Q2FjaGVGb250OgogICAg
IGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgpAQCAtMjU1LDYgKzI1OCw3IEBAIGJvb2wgaXNJbmxp
bmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6CisgICAgY2FzZSBJdGVtVHlwZTo6Q2FjaGVGb250OgogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1
c1JpbmdSZWN0czoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggOWRmZTJiOTkyZDAxLi5jZGM3ODZjYzVmYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTIsNiArNTIsNyBA
QCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgQ2xpcE91dFRvUGF0aCwKICAg
ICBDbGlwUGF0aCwKICAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAgQ2FjaGVGb250LAog
ICAgIERyYXdHbHlwaHMsCiAgICAgRHJhd0ltYWdlQnVmZmVyLAogICAgIERyYXdOYXRpdmVJbWFn
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAzMzExOTgzMzBlMTQu
LmI2Yjg2ZWY3N2ZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAt
MzU3LDE4ICszNTcsMzIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IENsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRlbSkKICAgICByZXR1cm4gdHM7
CiB9CiAKLURyYXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgVmVjdG9yPEds
eXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2Us
IDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9v
dGhpbmdNb2RlIHNtb290aGluZ01vZGUpCi0gICAgOiBtX2ZvbnQobWFrZVJlZlB0cihjb25zdF9j
YXN0PEZvbnQmPihmb250KSkpCit1aW50MzJfdCBDYWNoZUZvbnQ6OnNfY3VycmVudEl0ZW1JRCA9
IDA7CisKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUCit2b2lkIENhY2hlRm9udDo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENhY2hl
Rm9udCYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImlkZW50aWZpZXIiLCBpdGVtLmlk
ZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHRzOworfQorCitEcmF3R2x5cGhzOjpEcmF3R2x5cGhz
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllciwgVmVjdG9yPEdseXBo
QnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEy
OD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorICAgIDogbV9m
b250SWRlbnRpZmllcihmb250SWRlbnRpZmllcikKICAgICAsIG1fZ2x5cGhzKFdURk1vdmUoZ2x5
cGhzKSkKICAgICAsIG1fYWR2YW5jZXMoV1RGTW92ZShhZHZhbmNlcykpCisgICAgLCBtX2JvdW5k
cyhib3VuZHMpCiAgICAgLCBtX2xvY2FsQW5jaG9yKGxvY2FsQW5jaG9yKQogICAgICwgbV9zbW9v
dGhpbmdNb2RlKHNtb290aGluZ01vZGUpCiB7Ci0gICAgY29tcHV0ZUJvdW5kcygpOwogfQogCi1E
cmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQotICAgIDogbV9mb250KG1ha2VSZWZQdHIoY29uc3RfY2FzdDxGb250
Jj4oZm9udCkpKQorRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQorICAgIDogbV9mb250SWRlbnRpZmllcihmb250SWRlbnRpZmllcikK
ICAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgLCBtX3Ntb290aGluZ01vZGUo
c21vb3RoaW5nTW9kZSkKIHsKQEAgLTM3OCwyOCArMzkyLDM0IEBAIERyYXdHbHlwaHM6OkRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBj
b25zdCBHCiAgICAgICAgIG1fZ2x5cGhzLnVuY2hlY2tlZEFwcGVuZChnbHlwaHNbaV0pOwogICAg
ICAgICBtX2FkdmFuY2VzLnVuY2hlY2tlZEFwcGVuZChhZHZhbmNlc1tpXSk7CiAgICAgfQotICAg
IGNvbXB1dGVCb3VuZHMoKTsKKyAgICBjb21wdXRlQm91bmRzKGZvbnQpOwogfQogCi1pbmxpbmUg
R2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcigpIGNvbnN0Citpbmxp
bmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250
JiBmb250KSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1bHQuYWRkKG1f
Z2x5cGhzW2ldLCAqbV9mb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9PZmZzZXQp
OworICAgICAgICByZXN1bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBH
bHlwaEJ1ZmZlcjo6bm9PZmZzZXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgRHJh
d0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorTk9fUkVUVVJO
Cit2b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7Ci0gICAg
Y29udGV4dC5kcmF3R2x5cGhzKCptX2ZvbnQsIGdlbmVyYXRlR2x5cGhCdWZmZXIoKSwgMCwgbV9n
bHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6Y29tcHV0ZUJv
dW5kcygpCit2b2lkIERyYXdHbHlwaHM6OmFwcGx5V2l0aEZvbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAoreworICAgIGNvbnRleHQuZHJhd0dseXBo
cyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBtX2dseXBocy5zaXplKCksIGFu
Y2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7Cit9CisKK3ZvaWQgRHJhd0dseXBoczo6Y29t
cHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUg
ZG9lc24ndCBhY3R1YWxseSB0YWtlIHRoZSBleHRlbnRzIG9mIHRoZSBnbHlwaHMgaW50byBjb25z
aWRlcmF0aW9uLiBJdCBhc3N1bWVzIHRoYXQKICAgICAvLyB0aGUgZ2x5cGggbGllcyBlbnRpcmVs
eSB3aXRoaW4gaXRzIFsoYXNjZW50ICsgZGVzY2VudCksIGFkdmFuY2VdIHJlY3QuCi0gICAgZmxv
YXQgYXNjZW50ID0gbV9mb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7Ci0gICAgZmxv
YXQgZGVzY2VudCA9IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsKKyAgICBm
bG9hdCBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKKyAgICBmbG9h
dCBkZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOwogICAgIEZsb2F0
UG9pbnQgY3VycmVudCA9IGxvY2FsQW5jaG9yKCk7CiAgICAgc2l6ZV90IG51bUdseXBocyA9IG1f
Z2x5cGhzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUdseXBoczsgKytp
KSB7CkBAIC0xMDQ0LDYgKzEwNjQsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDYWNoZUZvbnQ6IHRzIDw8ICJjYWNoZS1mb250Ijsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMgPDwgImRyYXctZ2x5cGhz
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJh
dy1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOwpAQCAtMTE1OCw2ICsxMTc5LDkg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVt
KQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpDYWNoZUZvbnQ6CisgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENhY2hl
Rm9udD4oKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoK
ICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA3MDBjNjg3NDkxNTQuLjkyZTY1MGRj
Y2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC05MzEsMzQgKzkzMSwx
MDUgQEAgT3B0aW9uYWw8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24s
ICpjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdpbmdDb21tYW5kcykgfX07CiB9CiAKK2NsYXNzIENh
Y2hlRm9udCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZSA9IEl0ZW1UeXBlOjpDYWNoZUZvbnQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5s
aW5lSXRlbSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVt
ID0gZmFsc2U7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PENhY2hlRm9udD4gZGVjb2RlKERlY29kZXImKTsKKworICAgIENhY2hlRm9udChSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRm9udCYgZm9udCwgYm9vbCBpc0NhY2hlV29y
a2luZywgT3B0aW9uYWw8dWludDMyX3Q+IGl0ZW1JRCA9IFdURjo6bnVsbG9wdCkKKyAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ZvbnQoZm9udCkKKyAgICAg
ICAgLCBtX2lzQ2FjaGVXb3JraW5nKGlzQ2FjaGVXb3JraW5nKQorICAgICAgICAsIG1faXRlbUlE
KGl0ZW1JRCA/ICppdGVtSUQgOiArK3NfY3VycmVudEl0ZW1JRCkKKyAgICB7CisgICAgfQorCisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBSZWY8Rm9udD4gdGFrZUZvbnQoKSB7IHJldHVybiBXVEZN
b3ZlKG1fZm9udCk7IH0KKworICAgIGJvb2wgaXNDYWNoZVdvcmtpbmcoKSBjb25zdCB7IHJldHVy
biBtX2lzQ2FjaGVXb3JraW5nOyB9CisgICAgdWludDMyX3QgaXRlbUlEKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVtSUQ7IH0KKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKKyAgICBSZWY8Rm9udD4gbV9mb250OworCisgICAgYm9vbCBtX2lzQ2FjaGVXb3JraW5nOwor
ICAgIHVpbnQzMl90IG1faXRlbUlEOworCisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHVpbnQz
Ml90IHNfY3VycmVudEl0ZW1JRDsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IENhY2hlRm9udDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBtX2lkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBtX2ZvbnQ7CisgICAgZW5jb2RlciA8
PCBtX2lzQ2FjaGVXb3JraW5nOworICAgIGVuY29kZXIgPDwgbV9pdGVtSUQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxDYWNoZUZvbnQ+IENhY2hlRm9udDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBpZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKKyAgICBpZiAo
IWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxSZWY8Rm9udD4+IGZvbnQ7CisgICAgZGVjb2RlciA+PiBmb250OworICAgIGlmICghZm9udCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzQ2Fj
aGVXb3JraW5nOworICAgIGRlY29kZXIgPj4gaXNDYWNoZVdvcmtpbmc7CisgICAgaWYgKCFpc0Nh
Y2hlV29ya2luZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PHVpbnQzMl90PiBpdGVtSUQ7CisgICAgZGVjb2RlciA+PiBpdGVtSUQ7CisgICAgaWYgKCFpdGVt
SUQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKmlkZW50
aWZpZXIsIFdURk1vdmUoKmZvbnQpLCAqaXNDYWNoZVdvcmtpbmcsIGl0ZW1JRCB9fTsKK30KKwog
Y2xhc3MgRHJhd0dseXBocyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlw
ZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNE
cmF3aW5nSXRlbSA9IHRydWU7CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9u
dElkZW50aWZpZXIoKSB7IHJldHVybiBtX2ZvbnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxv
YXRQb2ludCYgbG9jYWxBbmNob3IoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9Ci0K
ICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hv
cjsgfQotCiAgICAgY29uc3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mIGdseXBocygp
IGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPERyYXdHbHlwaHM+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBE
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2Fs
QW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBo
cyhjb25zdCBGb250JiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEds
eXBoQnVmZmVyQWR2YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwg
Rm9udFNtb290aGluZ01vZGUpOworICAgIERyYXdHbHlwaHMoY29uc3QgRm9udCYsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBo
QnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFu
Y2hvciwgRm9udFNtb290aGluZ01vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlwaHMo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4
PiYmLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHZvaWQgYXBwbHlXaXRo
Rm9udChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CiAKICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsg
fQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGNv
bXB1dGVCb3VuZHMoKTsKLSAgICBHbHlwaEJ1ZmZlciBnZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29u
c3Q7CisgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIFJlZlB0cjxG
b250PiBtX2ZvbnQ7CisgICAgR2x5cGhCdWZmZXIgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBG
b250JikgY29uc3Q7CisKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9mb250SWRl
bnRpZmllcjsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiBtX2dseXBoczsKICAg
ICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+IG1fYWR2YW5jZXM7CiAgICAgRmxvYXRS
ZWN0IG1fYm91bmRzOwpAQCAtOTY5LDkgKzEwNDAsMTAgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+CiB2b2lkIERyYXdHbHlwaHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgbWFrZVJlZigqbV9mb250KTsKKyAgICBlbmNvZGVyIDw8
IG1fZm9udElkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBtX2dseXBoczsKICAgICBlbmNvZGVy
IDw8IG1fYWR2YW5jZXM7CisgICAgZW5jb2RlciA8PCBtX2JvdW5kczsKICAgICBlbmNvZGVyIDw8
IG1fbG9jYWxBbmNob3I7CiAgICAgZW5jb2RlciA8PCBtX3Ntb290aGluZ01vZGU7CiB9CkBAIC05
NzksOSArMTA1MSw5IEBAIHZvaWQgRHJhd0dseXBoczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8RHJhd0dseXBocz4gRHJh
d0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8UmVmPEZv
bnQ+PiBmb250OwotICAgIGRlY29kZXIgPj4gZm9udDsKLSAgICBpZiAoIWZvbnQpCisgICAgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBmb250SWRlbnRpZmllcjsKKyAgICBk
ZWNvZGVyID4+IGZvbnRJZGVudGlmaWVyOworICAgIGlmICghZm9udElkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8R2x5cGhCdWZm
ZXJHbHlwaCwgMTI4Pj4gZ2x5cGhzOwpAQCAtOTk3LDYgKzEwNjksMTEgQEAgT3B0aW9uYWw8RHJh
d0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGds
eXBocy0+c2l6ZSgpICE9IGFkdmFuY2VzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kczsKKyAgICBkZWNvZGVyID4+
IGJvdW5kczsKKyAgICBpZiAoIWJvdW5kcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KwogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxvY2FsQW5jaG9yOwogICAgIGRlY29kZXIgPj4g
bG9jYWxBbmNob3I7CiAgICAgaWYgKCFsb2NhbEFuY2hvcikKQEAgLTEwMDcsNyArMTA4NCw3IEBA
IE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGlmICghc21vb3RoaW5nTW9kZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAotICAgIHJldHVybiB7eyBmb250LT5nZXQoKSwgV1RGTW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgq
YWR2YW5jZXMpLCAqbG9jYWxBbmNob3IsICpzbW9vdGhpbmdNb2RlIH19OworICAgIHJldHVybiB7
eyAqZm9udElkZW50aWZpZXIsIFdURk1vdmUoKmdseXBocyksIFdURk1vdmUoKmFkdmFuY2VzKSwg
KmJvdW5kcywgKmxvY2FsQW5jaG9yLCAqc21vb3RoaW5nTW9kZSB9fTsKIH0KIAogY2xhc3MgRHJh
d0ltYWdlQnVmZmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApp
bmRleCBmNTAwMDVhNDU0YjMuLjRjOTdhZmQ1MDhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTY3LDYgKzE2NywyMSBAQCB2b2lkIFJlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgdW5zaQogICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhC
dWZmZXIsIGZyb20sIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9CiAK
K3ZvaWQgUmVjb3JkZXI6OmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYg
bG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCit7CisgICAgYXV0
byYgbXV0YWJsZUZvbnQgPSBjb25zdF9jYXN0PEZvbnQmPihmb250KTsKKyAgICBib29sIGlzTmV3
ID0gZmFsc2U7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIGlzTmV3ID0gbV9kZWxlZ2F0
ZS0+Y2FjaGVGb250KG11dGFibGVGb250KTsKKyAgICBlbHNlCisgICAgICAgIGlzTmV3ID0gbV9k
aXNwbGF5TGlzdC5jYWNoZUZvbnQobXV0YWJsZUZvbnQpOworCisgICAgaWYgKGlzTmV3KQorICAg
ICAgICBhcHBlbmQ8Q2FjaGVGb250Pihmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBtdXRhYmxlRm9udCwgISFtX2RlbGVnYXRlKTsKKworICAgIGFwcGVuZDxEcmF3R2x5cGhzPihm
b250LCBmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBnbHlwaHMsIGFkdmFuY2Vz
LCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01vZGUpOworfQorCiB2b2lkIFJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEZJWE1FOiBDYWxsIGltYWdl
QnVmZmVyLmZsdXNoRHJhd2luZ0NvbnRleHQoKSB3aGVuIDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MTg3NzM+IGlzIGZpeGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5k
ZXggNzdjYmEzMzZkYzViLi4wMzA2MTdmNjQ5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIGNhY2hlRm9udChGb250JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKIHByaXZhdGU6
CkBAIC0xMDIsNiArMTAzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkg
b3ZlcnJpZGU7CiAKKyAgICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKKwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRl
cm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGRmNDRjOWMzMGFjNi4uODFjOGU1MWY2MmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwxMSAr
MzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAK
LVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZl
cnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBEZWxlZ2F0ZSogZGVs
ZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1h
Z2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgRm9udFJl
bmRlcmluZ1Jlc291cmNlTWFwKiBmb250cywgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQogICAgICwg
bV9pbWFnZUJ1ZmZlcnMoaW1hZ2VCdWZmZXJzID8gKmltYWdlQnVmZmVycyA6IG1fZGlzcGxheUxp
c3QuaW1hZ2VCdWZmZXJzKCkpCiAgICAgLCBtX25hdGl2ZUltYWdlcyhuYXRpdmVJbWFnZXMgPyAq
bmF0aXZlSW1hZ2VzIDogbV9kaXNwbGF5TGlzdC5uYXRpdmVJbWFnZXMoKSkKKyAgICAsIG1fZm9u
dHMoZm9udHMgPyAqZm9udHMgOiBjb25zdF9jYXN0PERpc3BsYXlMaXN0Jj4obV9kaXNwbGF5TGlz
dCkuZm9udHMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC03OCw2ICs3
OSwyMSBAQCBPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0
ZW1IYW5kbGUgaXRlbSkKICAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkKICAg
ICAgICAgcmV0dXJuIGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2Nv
bnRleHQsIG1faW1hZ2VCdWZmZXJzLCBpdGVtKTsKIAorICAgIGlmIChpdGVtLmlzPENhY2hlRm9u
dD4oKSkgeworICAgICAgICBhdXRvIGNhY2hlRm9udEl0ZW0gPSBpdGVtLmdldDxDYWNoZUZvbnQ+
KCk7CisgICAgICAgIG1fZm9udHMuc2V0KGNhY2hlRm9udEl0ZW0uaWRlbnRpZmllcigpLCBjYWNo
ZUZvbnRJdGVtLnRha2VGb250KCkpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IH0KKworICAgIGlmIChpdGVtLmlzPERyYXdHbHlwaHM+KCkpIHsKKyAgICAgICAgYXV0byBkcmF3
R3JhcGhzSXRlbSA9IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CisgICAgICAgIGF1dG8gZm9udCA9
IG1fZm9udHMuZ2V0KGRyYXdHcmFwaHNJdGVtLmZvbnRJZGVudGlmaWVyKCkpOworICAgICAgICBp
ZiAoIWZvbnQpCisgICAgICAgICAgICByZXR1cm4gU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZEZvbnQ7CisgICAgICAgIGRyYXdHcmFwaHNJdGVtLmFwcGx5V2l0aEZvbnQobV9jb250ZXh0
LCAqZm9udCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCiAgICAgaWYg
KGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKQogICAgICAgICByZXR1cm4gYXBwbHlOYXRpdmVJ
bWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVt
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggYzQ0MjcxZjEw
ZWVkLi4xNmNjOThlMTVhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogZW51bSBjbGFzcyBT
dG9wUmVwbGF5UmVhc29uIDogdWludDhfdCB7CiAgICAgUmVwbGF5ZWRBbGxJdGVtcywKICAgICBN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsCisgICAgTWlzc2luZ0NhY2hlZEZvbnQsCiAgICAgQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwKICAgICBFbmRPZkRpc3BsYXlMaXN0LAogICAgIERlY29k
aW5nRmFpbHVyZSAvLyBGSVhNRTogUHJvcGFnYXRlIGRlY29kaW5nIGVycm9ycyB0byBkaXNwbGF5
IGxpc3QgcmVwbGF5IGNsaWVudHMgdGhyb3VnaCB0aGlzIGVudW0gYXMgd2VsbC4KQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcGxh
eWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdl
QnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVs
bHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhh
c2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIEZv
bnRSZW5kZXJpbmdSZXNvdXJjZU1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+UmVwbGF5ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJl
cGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9v
bCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CkBAIC03NSw2ICs3Niw3IEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAgICAgY29uc3QgSW1hZ2VCdWZm
ZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVyczsKICAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAm
IG1fbmF0aXZlSW1hZ2VzOworICAgIEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgbV9mb250czsK
ICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNGQ1ZDAyNTNi
YWEzLi4xMDc2ZGQ0YzI5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC03Miw3ICs3Miw4IEBAIHB1YmxpYzoK
IAogICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwogICAgICAgICBjb25z
dCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVz
b3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgp
LCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9OworICAg
ICAgICBhdXRvJiBmb250cyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJj
ZUNhY2hlKCkuZm9udHMoKTsKKyAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
IHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxp
c3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsICZmb250cywgdGhpcyB9OwogICAgICAg
ICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKaW5kZXggNmRkZWIwMjc5MjllLi4xMmIzYWE4MjlhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKQEAgLTI2Myw2ICsyNjMsOCBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2FjaGVGb250OgorICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDYWNoZUZvbnQ+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpEcmF3R2x5cGhzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4
IDFmMjEwNThlMzNhMS4uMjE4MmFkOGY0ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgPFdlYkNvcmUvRm9u
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaD4KQEAgLTQ0LDEzICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW1hZ2VC
dWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKLSAgICAKKwogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVm
ZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7
IH0KICAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CisgICAgV2ViQ29yZTo6Rm9udFJlbmRl
cmluZ1Jlc291cmNlTWFwJiBmb250cygpIHsgcmV0dXJuIG1fZm9udHM7IH0KIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIFdlYkNvcmU6OkZv
bnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDUxYmQ1NzEyOTU4YS4uMmVlOTcw
ODZiZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjMxLDYgKzIzMSwxMyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAg
fQogCisgICAgYm9vbCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYgZm9udCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVGb250KGZvbnQpOworICAg
IH0KKwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0
ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQpAQCAtMjUzLDYgKzI2MCw4IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6CiAgICAgICAgICAg
ICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdGb2N1c1JpbmdSZWN0cz4oKSk7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDYWNoZUZvbnQ6CisgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNhY2hlRm9udD4oaXRl
bS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNhY2hlRm9udD4oKSk7CiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICAgICAg
cmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3R2x5cGhzPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBo
cz4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
TGluZXNGb3JUZXh0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IGZl
NjRmMjM4ZTRlOS4uMTNkNmExN2U4MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3BwCkBAIC04Myw2ICs4MywxNCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
cmVsZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCitib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6Y2FjaGVGb250KEZvbnQmIGZvbnQpCit7CisgICAgcmV0dXJuIG1fZm9udHMuZW5zdXJlKGZv
bnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXXsKKyAgICAgICAgcmV0dXJuIG1h
a2VSZWYoZm9udCk7CisgICAgfSkuaXNOZXdFbnRyeTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCmluZGV4IDY4OGYzMzUxODFjNC4uZWJkOTA2OWU2YWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGb250OwogY2xhc3MgSW1h
Z2VCdWZmZXI7CiB9CiAKQEAgLTUzLDYgKzU0LDggQEAgcHVibGljOgogICAgIHVzaW5nIEltYWdl
QnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZm
ZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsg
fQogCisgICAgYm9vbCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYpOworCiBwcml2YXRlOgogICAg
IHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47CiAgICAgCkBA
IC02MCw2ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFn
ZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6
Rm9udD4+IG1fZm9udHM7CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415847</attachid>
            <date>2020-12-10 02:12:45 -0800</date>
            <delta_ts>2020-12-10 23:31:26 -0800</delta_ts>
            <desc>Updated for ToT and enabled web fonts</desc>
            <filename>wip219672c.patch</filename>
            <type>text/plain</type>
            <size>43391</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNTRiOWI3NWVm
NzFjLi5hMzQ5NmE2MmNlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCkBAIC02Niw4ICs2Niw5IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsCiAgICAgcmV0
dXJuIEZvbnQ6OmNyZWF0ZShDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSgq
Y3VzdG9tRm9udERhdGEsIGRlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFs
aWMsIHsgfSwgeyB9KSwgb3JpZ2luKTsKIH0KIAotRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0
aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRh
dGlvbkZhbGxiYWNrKQorRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxp
dHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKICAgICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkKKyAgICAsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAg
ICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fdmlzaWJpbGl0eSh2aXNpYmlsaXR5KQogICAg
ICwgbV90cmVhdEFzRml4ZWRQaXRjaChmYWxzZSkKQEAgLTE1OCw2ICsxNTksMTMgQEAgRm9udDo6
fkZvbnQoKQogICAgIHJlbW92ZUZyb21TeXN0ZW1GYWxsYmFja0NhY2hlKCk7CiB9CiAKK1JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBGb250OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
ICAgIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHJldHVybiAqbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI7Cit9CisKIHN0YXRpYyBib29sIGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdlVG9G
aWxsLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZv
bnQpCiB7CiAgICAgYm9vbCBoYXNHbHlwaHMgPSBwYWdlVG9GaWxsLmZpbGwoYnVmZmVyLCBidWZm
ZXJMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGVh
Zjc3NjAyNzc0Yy4uYzdiMDcyZTY2YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FM
KQogI2luY2x1ZGUgIk9wZW5UeXBlVmVydGljYWxEYXRhLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAt
OTAsOSArOTEsMTAgQEAgcHVibGljOgogICAgICAgICBZZXMsCiAgICAgICAgIE5vCiAgICAgfTsK
LSAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgaW50
ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNr
ID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8pCisgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luID0gT3Jp
Z2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8s
CisgICAgICAgIFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9y
aWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGlkZW50aWZpZXIg
PSBXVEY6Om51bGxvcHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250
KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0
aW9uRmFsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9y
bURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxi
YWNrLCBpZGVudGlmaWVyKSk7CiAgICAgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljKTsKIApAQCAtMTA2LDYgKzEwOCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBPcGVuVHlwZVZl
cnRpY2FsRGF0YSogdmVydGljYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbERhdGEu
Z2V0KCk7IH0KICNlbmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0OworCiAgICAgY29u
c3QgRm9udCogc21hbGxDYXBzRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsKICAg
ICBjb25zdCBGb250JiBub1N5bnRoZXNpemFibGVGZWF0dXJlc0ZvbnQoKSBjb25zdDsKICAgICBj
b25zdCBGb250KiBlbXBoYXNpc01hcmtGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0
OwpAQCAtMjI0LDcgKzIyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdF
QkNPUkVfRVhQT1JUIEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJz
dGl0aWFsLCBWaXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwg
VmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjaywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPik7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogICAgIHZvaWQgcGxh
dGZvcm1HbHlwaEluaXQoKTsKQEAgLTI2Nyw2ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAjZW5kaWYKIAorICAgIG11
dGFibGUgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKKwogICAgIHN0cnVjdCBEZXJpdmVkRm9udHMgewogICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAtMzc3LDYgKzM4
Myw4IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQgRm9udDo6d2lkdGhGb3JHbHlwaChHbHlwaCBnbHlw
aCkgY29uc3QKICAgICByZXR1cm4gd2lkdGg7CiB9CiAKK3VzaW5nIEZvbnRSZW5kZXJpbmdSZXNv
dXJjZU1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4+
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAppbmRleCAxNmIxOTdmOWVlMmQuLjEyNjg0ZThjNzA3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1UeXBlLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCisjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
QEAgLTc0LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFw
JiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNv
bnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50Kik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50
Kik7CkBAIC0xNzcsMTEgKzE3OSwxOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIG1h
a2VSZWYoaW1hZ2UpOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNhY2hl
Rm9udChGb250JiBmb250KQorICAgIHsKKyAgICAgICAgbV9mb250cy5lbnN1cmUoZm9udC5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgeworICAgICAgICAgICAgcmV0dXJuIG1h
a2VSZWYoZm9udCk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3Vs
ZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7CiAKICAgICBJbWFnZUJ1ZmZl
ckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZl
SW1hZ2VzOworICAgIEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCBtX2ZvbnRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxPcHRpb25hbDxGbG9h
dFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0
ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDhiYzAwMTQyODIw
ZS4uNDUxMjQ0YTdiYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMzQsNyArMzM0LDcg
QEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdT
dGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB1cGRhdGVTdHJva2VDb2xvcihDR0dTdGF0
ZUdldFN0cm9rZUNvbG9yKGdzdGF0ZSkpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0
eWxlKGdzdGF0ZSkpOwogCi0gICAgbV9vd25lci5hcHBlbmQ8RHJhd0dseXBocz4oKm1fb3JpZ2lu
YWxGb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBj
b3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4
Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5h
cHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhz
LCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRU
ZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3Np
dGlvbnNbMF0pLCBtX3Ntb290aGluZ01vZGUpOwogCiAgICAgbV9vd25lci5jb25jYXRDVE0oaW52
ZXJzZUNUTUZpeHVwKTsKIH0KQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNv
cmRlcjo6cmVjb3JkRHJhd0ltYWdlKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdz
dGF0ZQogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9u
ID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7Ci0gICAgICAg
IG1fb3duZXIuYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9t
KSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CisgICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2Fj
aGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6
ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggYjFkZDNlMDkwMmMy
Li4zN2Q1MzFkMDg4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
RHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoUmVjb3JkZXImIG93bmVyLCBE
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgbV9vd25lci5h
cHBlbmQ8RHJhd0dseXBocz4oZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1
ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2Rl
KTsKKyAgICBtX293bmVyLmFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwg
Z2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVt
R2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
RGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmluZGV4IGIxZGQzZTA5MDJjMi4uYTEwN2ZmODJjYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlcldpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5
cGhzUmVjb3JkZXIoUmVjb3JkZXImIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24KIAog
dm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNt
b290aGluZ01vZGUpCiB7Ci0gICAgbV9vd25lci5hcHBlbmQ8RHJhd0dseXBocz4oZm9udCwgZ2x5
cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5
cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVyLmFwcGVuZERyYXdH
cmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoZm9udCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBn
bHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290
aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjMDQwZTk4ZDk4YzEuLjhiZTZi
OWNlZThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAK
QEAgLTEzNiwxMCArMTM2LDkgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkuYXBwbHko
Y29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczogewotICAgICAgICBnZXQ8RHJhd0dseXBocz4oKS5hcHBseShjb250ZXh0KTsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6IHsKICAgICAgICAgZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4
IGJkYmQyMzlmNzMzNy4uZmE4Y2I4YTBkNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC0zNTcsMTggKzM1NywxOCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQog
ICAgIHJldHVybiB0czsKIH0KIAotRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmIGdseXBocywgVmVjdG9yPEdseXBo
QnVmZmVyQWR2YW5jZSwgMTI4PiYmIGFkdmFuY2VzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFu
Y2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKLSAgICA6IG1fZm9udChtYWtl
UmVmUHRyKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKSkKK0RyYXdHbHlwaHM6OkRyYXdHbHlwaHMo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyLCBWZWN0b3I8R2x5cGhC
dWZmZXJHbHlwaCwgMTI4PiYmIGdseXBocywgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4
PiYmIGFkdmFuY2VzLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRQb2ludCYg
bG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCisgICAgOiBtX2Zv
bnRJZGVudGlmaWVyKGZvbnRJZGVudGlmaWVyKQogICAgICwgbV9nbHlwaHMoV1RGTW92ZShnbHlw
aHMpKQogICAgICwgbV9hZHZhbmNlcyhXVEZNb3ZlKGFkdmFuY2VzKSkKKyAgICAsIG1fYm91bmRz
KGJvdW5kcykKICAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgLCBtX3Ntb290
aGluZ01vZGUoc21vb3RoaW5nTW9kZSkKIHsKLSAgICBjb21wdXRlQm91bmRzKCk7CiB9CiAKLURy
YXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25l
ZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2Rl
IHNtb290aGluZ01vZGUpCi0gICAgOiBtX2ZvbnQobWFrZVJlZlB0cihjb25zdF9jYXN0PEZvbnQm
Pihmb250KSkpCitEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllciwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25l
ZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2Rl
IHNtb290aGluZ01vZGUpCisgICAgOiBtX2ZvbnRJZGVudGlmaWVyKGZvbnRJZGVudGlmaWVyKQog
ICAgICwgbV9sb2NhbEFuY2hvcihsb2NhbEFuY2hvcikKICAgICAsIG1fc21vb3RoaW5nTW9kZShz
bW9vdGhpbmdNb2RlKQogewpAQCAtMzc4LDI4ICszNzgsMjggQEAgRHJhd0dseXBoczo6RHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEcKICAgICAgICAgbV9nbHlwaHMudW5jaGVja2VkQXBwZW5kKGdseXBoc1tpXSk7CiAgICAg
ICAgIG1fYWR2YW5jZXMudW5jaGVja2VkQXBwZW5kKGFkdmFuY2VzW2ldKTsKICAgICB9Ci0gICAg
Y29tcHV0ZUJvdW5kcygpOworICAgIGNvbXB1dGVCb3VuZHMoZm9udCk7CiB9CiAKLWlubGluZSBH
bHlwaEJ1ZmZlciBEcmF3R2x5cGhzOjpnZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29uc3QKK2lubGlu
ZSBHbHlwaEJ1ZmZlciBEcmF3R2x5cGhzOjpnZW5lcmF0ZUdseXBoQnVmZmVyKGNvbnN0IEZvbnQm
IGZvbnQpIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgcmVzdWx0OwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9nbHlwaHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlc3VsdC5hZGQobV9n
bHlwaHNbaV0sICptX2ZvbnQsIG1fYWR2YW5jZXNbaV0sIEdseXBoQnVmZmVyOjpub09mZnNldCk7
CisgICAgICAgIHJlc3VsdC5hZGQobV9nbHlwaHNbaV0sIGZvbnQsIG1fYWR2YW5jZXNbaV0sIEds
eXBoQnVmZmVyOjpub09mZnNldCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBEcmF3
R2x5cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit2b2lkIERyYXdH
bHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCkg
Y29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdHbHlwaHMoKm1fZm9udCwgZ2VuZXJhdGVHbHlwaEJ1
ZmZlcigpLCAwLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9k
ZSk7CisgICAgY29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdlbmVyYXRlR2x5cGhCdWZmZXIoZm9u
dCksIDAsIG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhpbmdNb2RlKTsK
IH0KIAotdm9pZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKCkKK3ZvaWQgRHJhd0dseXBoczo6
Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNv
ZGUgZG9lc24ndCBhY3R1YWxseSB0YWtlIHRoZSBleHRlbnRzIG9mIHRoZSBnbHlwaHMgaW50byBj
b25zaWRlcmF0aW9uLiBJdCBhc3N1bWVzIHRoYXQKICAgICAvLyB0aGUgZ2x5cGggbGllcyBlbnRp
cmVseSB3aXRoaW4gaXRzIFsoYXNjZW50ICsgZGVzY2VudCksIGFkdmFuY2VdIHJlY3QuCi0gICAg
ZmxvYXQgYXNjZW50ID0gbV9mb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7Ci0gICAg
ZmxvYXQgZGVzY2VudCA9IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsKKyAg
ICBmbG9hdCBhc2NlbnQgPSBmb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKKyAgICBm
bG9hdCBkZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOwogICAgIEZs
b2F0UG9pbnQgY3VycmVudCA9IGxvY2FsQW5jaG9yKCk7CiAgICAgc2l6ZV90IG51bUdseXBocyA9
IG1fZ2x5cGhzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUdseXBoczsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBjN2E5YTIwZDliYTAu
Ljg1Mjc2NDhhZjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC05Mzcs
MjggKzkzNywyOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5l
SXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0g
dHJ1ZTsKIAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigp
IHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KLQogICAgIEZsb2F0UG9p
bnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9Ci0KICAgICBj
b25zdCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1
cm4gbV9nbHlwaHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8RHJhd0dseXBocz4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIERyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRT
bW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKGNvbnN0IEZvbnQm
LCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZh
bmNlLCAxMjg+JiYsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5n
TW9kZSk7CisgICAgRHJhd0dseXBocyhjb25zdCBGb250JiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21v
b3RoaW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxH
bHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQ
b2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGb250JikgY29uc3Q7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4g
bV9ib3VuZHM7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbXB1dGVCb3VuZHMoKTsKLSAgICBH
bHlwaEJ1ZmZlciBnZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCBjb21wdXRl
Qm91bmRzKGNvbnN0IEZvbnQmKTsKIAotICAgIFJlZlB0cjxGb250PiBtX2ZvbnQ7CisgICAgR2x5
cGhCdWZmZXIgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250JikgY29uc3Q7CisKKyAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9mb250SWRlbnRpZmllcjsKICAgICBWZWN0b3I8
R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiBtX2dseXBoczsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJB
ZHZhbmNlLCAxMjg+IG1fYWR2YW5jZXM7CiAgICAgRmxvYXRSZWN0IG1fYm91bmRzOwpAQCAtOTY5
LDkgKzk2OSwxMCBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJh
d0dseXBoczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBtYWtlUmVmKCptX2ZvbnQpOworICAgIGVuY29kZXIgPDwgbV9mb250SWRlbnRpZmllcjsKICAg
ICBlbmNvZGVyIDw8IG1fZ2x5cGhzOwogICAgIGVuY29kZXIgPDwgbV9hZHZhbmNlczsKKyAgICBl
bmNvZGVyIDw8IG1fYm91bmRzOwogICAgIGVuY29kZXIgPDwgbV9sb2NhbEFuY2hvcjsKICAgICBl
bmNvZGVyIDw8IG1fc21vb3RoaW5nTW9kZTsKIH0KQEAgLTk3OSw5ICs5ODAsOSBAQCB2b2lkIERy
YXdHbHlwaHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJlZjxGb250Pj4gZm9udDsKLSAgICBkZWNvZGVy
ID4+IGZvbnQ7Ci0gICAgaWYgKCFmb250KQorICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gZm9udElkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmll
cjsKKyAgICBpZiAoIWZvbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsK
QEAgLTk5Nyw2ICs5OTgsMTEgQEAgT3B0aW9uYWw8RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKGdseXBocy0+c2l6ZSgpICE9IGFkdmFuY2Vz
LT5zaXplKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGJvdW5kczsKKyAgICBkZWNvZGVyID4+IGJvdW5kczsKKyAgICBpZiAoIWJvdW5k
cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPEZsb2F0UG9p
bnQ+IGxvY2FsQW5jaG9yOwogICAgIGRlY29kZXIgPj4gbG9jYWxBbmNob3I7CiAgICAgaWYgKCFs
b2NhbEFuY2hvcikKQEAgLTEwMDcsNyArMTAxMyw3IEBAIE9wdGlvbmFsPERyYXdHbHlwaHM+IERy
YXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc21vb3RoaW5nTW9k
ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBmb250LT5n
ZXQoKSwgV1RGTW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqbG9jYWxBbmNob3Is
ICpzbW9vdGhpbmdNb2RlIH19OworICAgIHJldHVybiB7eyAqZm9udElkZW50aWZpZXIsIFdURk1v
dmUoKmdseXBocyksIFdURk1vdmUoKmFkdmFuY2VzKSwgKmJvdW5kcywgKmxvY2FsQW5jaG9yLCAq
c21vb3RoaW5nTW9kZSB9fTsKIH0KIAogY2xhc3MgRHJhd0ltYWdlQnVmZmVyIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA2NGQ0YTVhY2ZhMmMuLjhjOTRm
MDE1OWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MTcyLDYgKzE3MiwxNCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaQogICAgIG1fZHJhd0dseXBo
c1JlY29yZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmFwcGVuZERy
YXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlIHNtb290aGluZ01vZGUpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1f
ZGVsZWdhdGUtPmNhY2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgbV9kaXNw
bGF5TGlzdC5jYWNoZUZvbnQoY29uc3RfY2FzdDxGb250Jj4oZm9udCkpOworICAgIGFwcGVuZDxE
cmF3R2x5cGhzPihmb250LCBmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBnbHlw
aHMsIGFkdmFuY2VzLCBjb3VudCwgbG9jYWxBbmNob3IsIHNtb290aGluZ01vZGUpOworfQorCiB2
b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdl
QnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEZJWE1F
OiBDYWxsIGltYWdlQnVmZmVyLmZsdXNoRHJhd2luZ0NvbnRleHQoKSB3aGVuIDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMTg3NzM+IGlzIGZpeGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggM2VjNjdkMzRjMWJjLi5iNDAzYWVhNGZiYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVGb250KEZv
bnQmKSB7IH0KICAgICB9OwogCiAgICAgdm9pZCBmbHVzaENvbnRleHQoRmx1c2hJZGVudGlmaWVy
IGlkZW50aWZpZXIpIHsgYXBwZW5kPEZsdXNoQ29udGV4dD4oaWRlbnRpZmllcik7IH0KQEAgLTEw
Niw2ICsxMDcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
LCBjb25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlk
ZTsKIAorICAgIHZvaWQgYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBG
b250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSos
IHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290
aGluZ01vZGUpOworCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihOYXRp
dmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKaW5kZXggNmNmZjdhMTEzMTMyLi40MmUxNDEyZTU0ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTM0LDExICszNCwxMiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5
ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIERlbGVnYXRlKiBkZWxlZ2F0ZSkK
K1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZl
cnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBjb25zdCBGb250UmVu
ZGVyaW5nUmVzb3VyY2VNYXAqIGZvbnRzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAgICAgLCBt
X2ltYWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1hZ2VCdWZmZXJzIDogbV9kaXNwbGF5TGlz
dC5pbWFnZUJ1ZmZlcnMoKSkKICAgICAsIG1fbmF0aXZlSW1hZ2VzKG5hdGl2ZUltYWdlcyA/ICpu
YXRpdmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2ZUltYWdlcygpKQorICAgICwgbV9mb250
cyhmb250cyA/ICpmb250cyA6IG1fZGlzcGxheUxpc3QuZm9udHMoKSkKICAgICAsIG1fZGVsZWdh
dGUoZGVsZWdhdGUpCiB7CiB9CkBAIC02OSw2ICs3MCwxOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3Jh
cGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKK3RlbXBsYXRlPGNsYXNz
IFQ+CitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJp
bmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBhdXRvJiBmb250
SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CisgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250
SXRlbS5mb250SWRlbnRpZmllcigpOworICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJl
c291cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZv
bnQpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gcmVz
b3VyY2VJZGVudGlmaWVyOworfQorCiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNv
bj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBs
eUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdh
dGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCkBAIC05Miw2ICsxMDUsMTIgQEAgc3RkOjpwYWly
PE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+PiBSZXAKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQgfTsKICAgICB9CiAKKyAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7CisgICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVt
PERyYXdHbHlwaHM+KG1fY29udGV4dCwgbV9mb250cywgaXRlbSkpCisgICAgICAgICAgICByZXR1
cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKICAgICBpZiAoaXRlbS5pczxEcmF3UGF0
dGVybj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9uYXRp
dmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCBjNDZj
MWUzOTVlMDEuLmQ0MTRhNmZhMDUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxp
c3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1h
Z2VIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVf
RVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29u
c3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1h
cCogPSBudWxscHRyLCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAqID0gbnVsbHB0ciwg
RGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlSZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNzUs
NiArNzUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0
OwogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25hdGl2ZUltYWdlczsKKyAgICBjb25zdCBGb250UmVu
ZGVyaW5nUmVzb3VyY2VNYXAmIG1fZm9udHM7CiAgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYTNkMjVlZGVlZmIyLi5lYWY3ZTFiMDY1
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE0OCw2ICsxNDgsNyBAQCBEaXNwbGF5
TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcAogICAgICAgICBkaXNwbGF5TGlzdCwKICAgICAgICAgJnJlbW90ZVJl
c291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKSwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2Fj
aGUoKS5uYXRpdmVJbWFnZXMoKSwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250
cygpLAogICAgICAgICByZXBsYXllckRlbGVnYXRlCiAgICAgfS5yZXBsYXkoKTsKIH0KQEAgLTI5
Myw2ICsyOTQsMTQgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUlt
YWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW4KICAgICAgICAgd2FrZVVwQW5k
QXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6
bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCit7CisgICAgYXV0byBpZGVudGlmaWVyID0gZm9u
dC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlLmNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKTsKKyAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5m
byAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKGlkZW50aWZpZXIp
KQorICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5k
aW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKK30KKwogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90
ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA3MzcxNzljZThjMGMuLjljMWU0Nzg0
MDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMTAsNiArMTEwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHMmKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwogICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZv
bnQ+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggYWNlMzg2YzIzODcwLi5mOGQ4ZGUyZTVhMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw3IEBA
IG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAg
V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVw
TWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHMpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhf
dCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6
SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1h
Z2VEYXRhKSBTeW5jaHJvbm91cwogICAgIENhY2hlTmF0aXZlSW1hZ2UoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgQ2FjaGVGb250KElQQzo6Rm9u
dFJlZmVyZW5jZSBmb250KQogICAgIERpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKICAgICBSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAppbmRleCBjMzMyZDJm
NzA0ZTEuLmYxMDk1MWYxNmVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNDgsMTIgKzQ4LDIw
IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZl
SW1hZ2U+JiYgaW1hZ2UpCiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVm
PEZvbnQ+JiYgZm9udCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udHMuYWRkKGZvbnQt
PnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGZvbnQpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChtX2lt
YWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuOwogICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2ZvbnRzLnJlbW92ZShyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8gQ2FjaGlu
ZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNp
bmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCAx
ZjIxMDU4ZTMzYTEuLjE2ZTdlNjdhOWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
YXRpdmVJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmg+CkBAIC00MywxNCArNDQsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVm
ZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
JiYpOworICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmKTsKICAgICB2b2lk
IHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwotICAgIAorCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFn
ZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3Vy
Y2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsgfQogCiBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBXZWJDb3Jl
OjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgV2ViQ29yZTo6Rm9udFJl
bmRlcmluZ1Jlc291cmNlTWFwIG1fZm9udHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0ZvbnRSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0ZvbnRSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlMWU5ZDdjZTBlMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0ZvbnRSZWZlcmVuY2UuaApAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9udDsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCituYW1lc3BhY2UgSVBDIHsKKwordXNpbmcgRm9udFJlZmVyZW5jZSA9IFJlZjxX
ZWJDb3JlOjpGb250PjsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4OWZiOGFiYWY5YWUuLjc5MWI5M2FlNzQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDQsNiArMjA0LDcg
QEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9uYW1lc3BhY2UobmFtZXNwYWNlLCBraW5k
X2FuZF90eXBlcyk6CiBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgIHJldHVybiBmcm96ZW5zZXQoWwogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywK
KyAgICAgICAgJ0lQQzo6Rm9udFJlZmVyZW5jZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywK
ICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMDMyNTIxMWE5YWQwLi5k
NzY2NTRiNjRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMTEwNSw2ICsxMTA1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxG
b250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4K
ICAgICBlbmNvZGVyIDw8IChmb250LT5pc0ludGVyc3RpdGlhbCgpID8gRm9udDo6SW50ZXJzdGl0
aWFsOjpZZXMgOiBGb250OjpJbnRlcnN0aXRpYWw6Ok5vKTsKICAgICBlbmNvZGVyIDw8IGZvbnQt
PnZpc2liaWxpdHkoKTsKICAgICBlbmNvZGVyIDw8IChmb250LT5pc1RleHRPcmllbnRhdGlvbkZh
bGxiYWNrKCkgPyBGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrOjpZZXMgOiBGb250OjpPcmllbnRh
dGlvbkZhbGxiYWNrOjpObyk7CisgICAgZW5jb2RlciA8PCBmb250LT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKTsKICAgICAvLyBJbnRlbnRpb25hbGx5IGRvbid0IGVuY29kZSBtX2lzQnJv
a2VuSWRlb2dyYXBoRmFsbGJhY2sgYmVjYXVzZSBpdCBkb2Vzbid0IGFmZmVjdCBkcmF3R2x5cGhz
KCkuCiAKICAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgZm9udCk7CkBAIC0xMTMyLDEx
ICsxMTMzLDE2IEBAIE9wdGlvbmFsPFJlZjxGb250Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWlzVGV4dE9yaWVudGF0aW9uRmFs
bGJhY2suaGFzVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVyc291Y2VJZGVu
dGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOworICAg
IGlmICghcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyLmhhc1ZhbHVlKCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBhdXRvIHBsYXRmb3JtRGF0YSA9IGRlY29kZVBsYXRm
b3JtRGF0YShkZWNvZGVyKTsKICAgICBpZiAoIXBsYXRmb3JtRGF0YS5oYXNWYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0
Zm9ybURhdGEudmFsdWUoKSwgb3JpZ2luLnZhbHVlKCksIGlzSW50ZXJzdGl0aWFsLnZhbHVlKCks
IHZpc2liaWxpdHkudmFsdWUoKSwgaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjay52YWx1ZSgpKTsK
KyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0YS52YWx1ZSgpLCBvcmlnaW4udmFs
dWUoKSwgaXNJbnRlcnN0aXRpYWwudmFsdWUoKSwgdmlzaWJpbGl0eS52YWx1ZSgpLCBpc1RleHRP
cmllbnRhdGlvbkZhbGxiYWNrLnZhbHVlKCksIHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJzb3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNzQ2MDU0ZWQxMDkuLjUwZjA1MTJkY2Y3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NTI0LDYgKzE1MjQsNyBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1h
bmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1
bGF0aW9uRXhjbHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0
ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVC
RUMyNDI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVC
RUMyQTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEw
MTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07CisJCTlC
RDhBQjRBMjU4MjBFNTMwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ4QUI0OTI1ODIwRTUyMDA1Mzg2Rjgg
LyogRm9udFJlZmVyZW5jZS5oICovOyB9OwogCQk5QkY1RUM2NDI1NDExNDU2MDA5ODRFNzcgLyog
SlNJUENCaW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCRjVFQzYzMjU0MTBFOTkwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwICovOyB9
OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0
NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVG
Mzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1
QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00Nzg1LDYgKzQ3ODYsNyBAQAogCQk5QjVCRUMyRTI0MDEw
MThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNrSUQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0aW9u
YWxDYWxsYmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbmFs
Q2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkQ4QUI0OTI1ODIw
RTUyMDA1Mzg2RjggLyogRm9udFJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
RjVFQzYzMjU0MTBFOTkwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJUENCaW5kaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVD
NTMyQTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFyeVByb2Nlc3NNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNz
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjczNyw2ICs2NzM5LDcgQEAK
IAkJMUFFMDBENjgxODMyN0MxMjAwMDg3REQ3IC8qIElQQyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUJEOEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8qIEZv
bnRSZWZlcmVuY2UuaCAqLywKIAkJCQlCQ0M1NkY3NTExNTk5NTVFMDAxQ0NBRjkgLyogY29jb2Eg
Ki8sCiAJCQkJMUFFRkQyNzgxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50Q29kZXIuaCAqLywK
IAkJCQkxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2RlcnMuY3BwICovLApA
QCAtMTE2NjksNiArMTE2NzIsNyBAQAogCQkJCTBGNTk0N0E4MTg3QjUxNzYwMDQzNzg1NyAvKiBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTQxODdCM0I3RDAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTlC
RDhBQjRBMjU4MjBFNTMwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU5NDc5RDE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUREMkE2ODYyNTYzM0M3MjAwRkY3QjZGIC8qIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFERDJBNjg3MjU2MzND
ODcwMEZGN0I2RiAvKiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDExYjE0YjljMWE0
Ny4uZWFjYTAyNWIzM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjI5LDYg
KzIyOSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7
CiAgICAgfQogCisgICAgdm9pZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYgZm9udCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkoKS5jYWNoZUZvbnQoZm9udCk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRl
eCA5MzkxNmQ4NTkzYTUuLmVkNWNjOTJkY2IyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcApAQCAtMTU0LDYgKzE1NCwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0
aXZlSW1hZ2UoaGFuZGxlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJiBmb250KQoreworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBpZiAocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID09IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggZTA4MTVk
Zjc1OGVhLi4zOWViOTQxYThkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElk
ZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNo
ZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdh
aXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNwcAppbmRleCA2YzdhNTEzNzg1NTIuLmJjNWU4NTYyNjA0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMTAxLDYgKzEwMSwxNSBAQCB2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1h
Z2UpCiAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZSho
YW5kbGUsIGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKIH0KIAordm9pZCBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlRm9udChGb250JiBmb250KQoreworICAgIGF1
dG8gcmVzdWx0ID0gbV9mb250cy5lbnN1cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VSZWYoZm9udCk7CisgICAgfSk7CisgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jYWNoZUZvbnQobWFrZVJlZihmb250KSk7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1fbmF0aXZlSW1hZ2Vz
LnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmgKaW5kZXggNjg4ZjMzNTE4MWM0Li4wYmEyMTc3ZmY5ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZvbnQ7CiBjbGFzcyBJbWFn
ZUJ1ZmZlcjsKIH0KIApAQCAtNTMsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSW1hZ2VC
dWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKICAgICBjb25zdCBJbWFnZUJ1ZmZl
ckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9
CiAKKyAgICB2b2lkIGNhY2hlRm9udChXZWJDb3JlOjpGb250Jik7CisKIHByaXZhdGU6CiAgICAg
dXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PjsKICAgICAKQEAg
LTYwLDYgKzYzLDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdl
QnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpG
b250Pj4gbV9mb250czsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwNjE4Nzk5MzBjZjcuLmE2YTM5NGUxYjFjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MDMs
OSArMzgwMyw2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNl
R1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRP
TVJlbmRlcmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyAmJiBEcmF3aW5nQXJlYTo6
c3VwcG9ydHNHUFVQcm9jZXNzUmVuZGVyaW5nKG1fZHJhd2luZ0FyZWFUeXBlKSk7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzKTsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgd2Vi
IGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4KLSAgICBpZiAobV9zaG91bGRSZW5kZXJET01JbkdQ
VVByb2Nlc3MpCi0gICAgICAgIHNldHRpbmdzLnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5h
YmxlZChmYWxzZSk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9j
ZXNzKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415973</attachid>
            <date>2020-12-10 23:31:27 -0800</date>
            <delta_ts>2020-12-11 17:10:55 -0800</delta_ts>
            <desc>Adds Font cache</desc>
            <filename>bug-219672-20201210233126.patch</filename>
            <type>text/plain</type>
            <size>59339</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM4NmQ1MDg4NzQ0ZjhmMTRiMzJlZDU1
OWZlNTc0OWY5NzZiZGRlY2MuLjlmYTlmZjM1NWVlODIwMjZhMmM0NTg2MjdlZGE3YThkYWRkZjE1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDYWNoZSBGb250IG9iamVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWNpZnkg
dGhlIHdpZHRoIG9mIGVudW0gY2xhc3NlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIGZvcndhcmQgZGVj
bGFyZWQuCisKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6CisKIDIwMjAt
MTItMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIG9u
IEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpIG9uIFdhdGNoT1MgYW5kIFR2T1MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA0ZWZjNzY4ODhkNTg0NWNlODcxNDI5YjRmNWU5OTFkMTJjMzQ3NWJmLi43NzNkMTk2YTM4
ZDFhYjBiNzZkYmU5YWQwOGMyNmM1MWY5MjZlNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMjAtMTItMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBDYWNoZSBGb250IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnRpYWxseSBiYXNlZCBvbiB0aGUgcGF0Y2gg
bWFkZSBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBtZWNoYW5pc20gdG8gY2FjaGUgRm9udCBvYmplY3RzIGluIHRoZSBHUFUgcHJvY2VzcyBt
dWNoIHRoZSBzYW1lIHdheQorICAgICAgICBOYXRpdmVJbWFnZSBvYmplY3RzIGFyZSBjYWNoZWQg
aW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpGb250KTogUmVzdG9yZSB0aGUgc2FtZSByZW5k
ZXJpbmcgcmVzb3VyY2UgaWRlbnRpZmllciB3aGVuIEZvbnQgb2JqZWN0CisgICAgICAgIGlzIGRl
Y29kZWQgaW4gdGhlIEdQVSBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KTogQWRkZWQuIExhemlseSBjcmVhdGVzIGFuIGlk
ZW50aWZpZXIuCisgICAgICAgIFRoaXMgbmV2ZXIgaGFwcGVucyBpbiB0aGUgR1BVIHByb2Nlc3Mg
YXMgd2Ugc2V0IGl0IGluIHRoZSBjb25zdHJ1Y3RvciBhYm92ZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOiBEaXR0
byBhcyBGb250OjpGb250LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Ojpmb250cyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpjYWNoZUZvbnQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpy
ZWNvcmREcmF3R2x5cGhzKTogQ2FsbCB0aGUgbmV3bHkgaW50cm9kdWNlZAorICAgICAgICBhcHBl
bmREcmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250IGluc3RlYWQgb2YgYXBwZW5kaW5nIERyYXdH
bHlwaHMgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6IFJl
cGxhY2VkIGNhbGwgdG8gRHJhd0dseXBoczo6YXBwbHkgd2l0aAorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQgc2luY2UgUmVwbGF5ZXI6OmFwcGx5SXRlbSBzaG91bGQgaGFuZGxlIGl0IG5vdy4g
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpEcmF3
R2x5cGhzKTogVGhlIG9uZSB1c2VkIGluIGRlY29kZSBmdW5jdGlvbiBpbiBHUFUKKyAgICAgICAg
cHJvY2VzcyBub3cgdGFrZXMgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGluc3RlYWQgb2Yg
Rm9udCBhbmQgdGhlIGdseXBoIGJvdW5kcyBpbnN0ZWFkCisgICAgICAgIG9mIGNvbXB1dGluZyBp
dCBhZ2FpbiBoZXJlLiBUaGUgb25lIHVzZWQgaW4gV2ViQ29udGVudCB3aWxsIGNvbnRpbnVlIHRv
IHRha2UgRm9udAorICAgICAgICB0byBjb3BtdXRlIHRoZSBib3VuZHMgYnV0IGVuY29kZXMgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlciBjb25zdCk6IFRha2VzIEZv
bnQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6YXBwbHkgY29u
c3QpOiBUYWtlcyBGb250LgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlw
aHM6OmNvbXB1dGVCb3VuZHMpOiBUYWtlcyBGb250LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Zm9udElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzKTogTm8gbG9uZ2VyIHJldGFpbnMgRm9u
dCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6ZW5j
b2RlIGNvbnN0KTogRW5jb2RlcyB0aGUgYm91bmRpbmcgcmVjdC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpkZWNvZGUpOiBEaXR0byBmb3IgZGVjb2RpbmcuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRE
cmF3R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNhY2hlRm9udCk6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVw
bGF5ZXIpOiBOb3cgdGFrZXMgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKTogQXBwbGllcyBEcmF3R2x5cGhz
IHdpdGggRm9udCBpbiBtX2ZvbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisKIDIwMjAtMTItMDkgIFBlbmcgTGl1ICA8
cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdW01T
RV0gSW1wbGVtZW50IGJhc2ljIHZpZGVvIHBsYXliYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY5NDJlNjhkNzAy
NGQyOGE0NjM1ZDljNTMxMGEzYTFlNzAwYzllMDEuLmU3NzUwMmVkNzEzODZiMjg0NzE1ZGNjNThj
NTg2OTY1YmFmMTczODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMTAgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBD
YWNoZSBGb250IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTY3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhcnRpYWxseSBiYXNlZCBvbiB0aGUgcGF0Y2ggbWFkZSBieSBTYWlkIEFib3Ut
SGFsbGF3YS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8g
Y2FjaGUgRm9udCBvYmplY3RzIGluIHRoZSBHUFUgcHJvY2VzcyBtdWNoIHRoZSBzYW1lIHdheQor
ICAgICAgICBOYXRpdmVJbWFnZSBvYmplY3RzIGFyZSBjYWNoZWQgaW4gdGhlIEdQVSBwcm9jZXNz
LCBhbmQgcmUtZW5hYmxlcyBXZWIgRm9udHMuCisKKyAgICAgICAgRm9udHMgYXJlIHJlbW92ZWQg
ZnJvbSB0aGUgR1BVIHByb2Nlc3Mgd2hlbiBlaXRoZXIgdGhleSBoYWRuJ3QgYmVlbiB1c2VkIGZv
ciA0IHJlbmRlcmluZyB1cGRhdGVzCisgICAgICAgIG9yIGEgbWVtb3J5IHdhcm5pbmcgaGFzIGJl
ZW4gaXNzdWVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
c3VibWl0KTogQWRkZWQgdGhlIGZvbnQgY2FjaGUuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cyk6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjogQWRk
ZWQgQ2FjaGVGb250IGFuZCBEZWxldGVBbGxGb250cworICAgICAgICBhcyBuZXcgSVBDIG1lc3Nh
Z2VzLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udCk6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxGb250
cyk6IEFkZGVkLiBVc2VkIHdoZW4gYSBtZW1vcnkgd2FybmluZyBpcyBpc3N1ZWQuCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZvbnRzIGNvbnN0KTogQWRkZWQuCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0ZvbnRSZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChJUEM6OkZv
bnRSZWZlcmVuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOiBBZGRl
ZCBGb250UmVmZXJlbmNlLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZSk6IEVu
Y29kZSB0aGUgcmVuZGVyaW5nIHJlc291cmNlIGlkZW50aWZpZXIgb2YgRm9udC4KKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUpOiBEaXR0byBmb3IgZGVjb2Rp
bmcuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjYWNoZUZvbnQpOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNhY2hlRm9udCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRzKTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUZvbnQpOiBBZGRlZC4g
SXQgdXBkYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGZvbnRzCisgICAgICAgIGJlaW5nIHVzZWQg
c2luY2UgdGhlIGxhc3QgcmVuZGVyaW5nIHVwZGF0ZSBhbmQgcmVjb3JkcyB0aGUgc2VsZiBhc3Np
Z25lZCBpZGVudGlmaWVyIGZvcgorICAgICAgICB0aGUgbmV4dCByZW5kZXJpbmcgdXBkYXRlLiAK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkaWRGaW5hbGl6ZVJl
bmRlcmluZ1VwZGF0ZSk6IEFkZGVkLiBDYWxsZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICBlYWNo
IHJlbmRlcmluZyB1cGRhdGUuIEl0IHJlbW92ZXMgYWxsIGZvbnRzIHVudXNlZCBpbiB0aGUgbHNh
dCA0IHJlbmRlcmluZyB1cGRhdGVzIGlmIGF0IGxlYXN0CisgICAgICAgIDEvNCBvZiB0aGUgZm9u
dHMgaW4gdGhlIEdQVSBwcm9jZXNzIHdlcmUgbm90IHVzZWQgaW4gdGhpcyByZW5kZXJpbmcgdXBk
YXRlLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VN
ZW1vcnkpOiBBZGRlZC4gUmVtb3ZlcyBhbGwgdGhlIGZvbnRzIHRvIGZyZWUgdXAKKyAgICAgICAg
bWVtb3J5IHdoZW4gYSBtZW1vcnkgd2FybmluZyBpcyBpc3N1ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSk6IEFkZGVkIG1fZm9udExhc3RSZW5kZXJp
bmdVcGRhdGVNYXAgd2hpY2gga2VlcHMgdHJhY2sgb2YKKyAgICAgICAgdGhlIHJlbmRlcmluZyBy
ZXNvdXJjZSBpZGVudGlmaWVycyBvZiB0aGUgZm9udHMgY2FjaGVkIGluIHRoZSBHUFUgcHJvY2Vz
cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogUmUtZW5hYmxlcyB0aGUgV2ViIEZv
bnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSk6
IEFkZGVkIHRoZSBjYWxsIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSdzCisgICAgICAg
IGRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZWxlYXNlTWVtb3J5KTogQWRkZWQuIENhbGxzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSdz
IGZ1bmN0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBBZGRlZCB0aGUgY2FsbCB0byBXZWJQYWdlOjpy
ZWxlYXNlTWVtb3J5IGluCisgICAgICAgIHRoZSBtZW1vcnkgcHJlc3N1cmUgaGFuZGxlci4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6IERpdHRvIGZvciB0
aGUgcHJvY2VzcyBzdXNwZW5zaW9uLgorCiAyMDIwLTEyLTA5ICBQZW5nIExpdSAgPHBlbmcubGl1
NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXVtNU0VdIEltcGxl
bWVudCBiYXNpYyB2aWRlbyBwbGF5YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaAppbmRleCBjZTViMjgzMzYzYTMxY2U3ZTRiMDI4M2E4OGE5OWQzYWExY2FkOTg5Li44MDIx
YzZmYTc0ZjY4Yzc1MzRiOGQyMGUxMDQzZGJjODRiMzEyMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtNTEsOCArNTEsOCBAQCBlbnVtIGNsYXNzIFdlYnNhbVBy
b2Nlc3NTdGF0ZSA6IHVpbnQ4X3QgewogICAgIEluYWN0aXZlLAogfTsKIAotZW51bSBjbGFzcyBD
cml0aWNhbCB7IE5vLCBZZXMgfTsKLWVudW0gY2xhc3MgU3luY2hyb25vdXMgeyBObywgWWVzIH07
CitlbnVtIGNsYXNzIENyaXRpY2FsIDogdWludDhfdCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3Mg
U3luY2hyb25vdXMgOiB1aW50OF90IHsgTm8sIFllcyB9OwogCiB0eXBlZGVmIFdURjo6RnVuY3Rp
b248dm9pZChDcml0aWNhbCwgU3luY2hyb25vdXMpPiBMb3dNZW1vcnlIYW5kbGVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDU0YjliNzVlZjcxY2M2
MmI5OGFmZGY1OGIxMDM4NDBkYWZmNDdjZmUuLmEzNDk2YTYyY2U5MzQ4YWZjMzNjZjlhMTI5MjUw
OWE0NTlmMjM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CkBAIC02Niw4ICs2Niw5IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsCiAgICAgcmV0dXJuIEZv
bnQ6OmNyZWF0ZShDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSgqY3VzdG9t
Rm9udERhdGEsIGRlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIHsg
fSwgeyB9KSwgb3JpZ2luKTsKIH0KIAotRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWws
IFZpc2liaWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZh
bGxiYWNrKQorRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEs
IE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlz
aWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKICAgICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkKKyAgICAsIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAsIG1f
b3JpZ2luKG9yaWdpbikKICAgICAsIG1fdmlzaWJpbGl0eSh2aXNpYmlsaXR5KQogICAgICwgbV90
cmVhdEFzRml4ZWRQaXRjaChmYWxzZSkKQEAgLTE1OCw2ICsxNTksMTMgQEAgRm9udDo6fkZvbnQo
KQogICAgIHJlbW92ZUZyb21TeXN0ZW1GYWxsYmFja0NhY2hlKCk7CiB9CiAKK1JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBGb250OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dAoreworICAgIGlmICghbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworICAgIHJldHVybiAqbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
Cit9CisKIHN0YXRpYyBib29sIGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdlVG9GaWxsLCBV
Q2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZvbnQpCiB7
CiAgICAgYm9vbCBoYXNHbHlwaHMgPSBwYWdlVG9GaWxsLmZpbGwoYnVmZmVyLCBidWZmZXJMZW5n
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGVhZjc3NjAy
Nzc0YzEzNGMxZWM2ODg3MmI2MWJjNGU2ZjUyMGIxMDIuLmM3YjA3MmU2NmM2MzE1ZDI2YThjOTI4
OTljZTUwMmIwN2FlMDEwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAjaW5j
bHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNlbmRpZgorI2luY2x1ZGUgIlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC05MCw5ICs5
MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHN0
YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSwgT3JpZ2luIG9yaWdpbiA9IE9yaWdpbjo6TG9jYWwsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRp
YWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5
OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmll
bnRhdGlvbkZhbGxiYWNrOjpObykKKyAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4gPSBPcmlnaW46Okxv
Y2FsLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKKyAgICAg
ICAgVmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRp
b25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8s
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllciA9IFdURjo6
bnVsbG9wdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZv
cm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxs
YmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwg
b3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwog
CkBAIC0xMDYsNiArMTA4LDggQEAgcHVibGljOgogICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxE
YXRhKiB2ZXJ0aWNhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsRGF0YS5nZXQoKTsg
fQogI2VuZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Q7CisKICAgICBjb25zdCBGb250
KiBzbWFsbENhcHNGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwogICAgIGNvbnN0
IEZvbnQmIG5vU3ludGhlc2l6YWJsZUZlYXR1cmVzRm9udCgpIGNvbnN0OwogICAgIGNvbnN0IEZv
bnQqIGVtcGhhc2lzTWFya0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CkBAIC0y
MjQsNyArMjI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWws
IFZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2spOworICAgIFdFQkNPUkVfRVhQT1JUIEZv
bnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0aWFsLCBWaXNpYmls
aXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+KTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUds
eXBoSW5pdCgpOwpAQCAtMjY3LDYgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE9wZW5U
eXBlVmVydGljYWxEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKICNlbmRpZgogCisgICAgbXV0YWJsZSBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOworCiAgICAgc3RydWN0IERlcml2ZWRGb250cyB7CiAgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC0zNzcsNiArMzgzLDggQEAg
QUxXQVlTX0lOTElORSBmbG9hdCBGb250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25z
dAogICAgIHJldHVybiB3aWR0aDsKIH0KIAordXNpbmcgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFw
ID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxGb250Pj47CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCmluZGV4IDE2YjE5N2Y5ZWUyZDI4ZGJlOTIxZDkzMDk0M2Q0MzA0NjFkZmNkODYuLjEyNjg0
ZThjNzA3ODVhNGE3MTQ4OTUwYjliYTVkZTc2Nzc5NzFjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgi
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC03NCw2
ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VC
dWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1h
Z2VzOyB9CisgICAgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cygpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1
ZmZlckNsaWVudChJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCopOwpAQCAt
MTc3LDExICsxNzksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKGlt
YWdlKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjYWNoZUZvbnQoRm9u
dCYgZm9udCkKKyAgICB7CisgICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKGZv
bnQpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9y
RmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFw
IG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsK
KyAgICBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4g
bV9kcmF3aW5nSXRlbUV4dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50
cyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCA4YmMwMDE0MjgyMGU5NzM5NjVl
YmE1YTkzZDA2YTAzMDliODY5NWQzLi40NTEyNDRhN2JiOTc3ZTE0NDc4ZjE5YTc4NDRlNzY4YjMw
YmM3ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBE
cmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwg
Q0dHU3RhdGVSZWYgZ3N0YXQKICAgICB1cGRhdGVTdHJva2VDb2xvcihDR0dTdGF0ZUdldFN0cm9r
ZUNvbG9yKGdzdGF0ZSkpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0
ZSkpOwogCi0gICAgbV9vd25lci5hcHBlbmQ8RHJhd0dseXBocz4oKm1fb3JpZ2luYWxGb250LCBn
bHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3Vy
cmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50
KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3
R3JhcGhzSXRlbVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21wdXRl
QWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4
KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0p
LCBtX3Ntb290aGluZ01vZGUpOwogCiAgICAgbV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNUTUZp
eHVwKTsKIH0KQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVj
b3JkRHJhd0ltYWdlKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZQogdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290
aGluZ01vZGUpCiB7CiAgICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdH
bHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7Ci0gICAgICAgIG1fb3duZXIu
YXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9k
ZSk7CisgICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChm
b250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20p
LCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggYjFkZDNlMDkwMmMyYWM5NDVhODA2
Y2I3NzAzM2Q3OTRmZWExZjA4ZC4uMzdkNTMxZDA4ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0
YjE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERy
YXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtNDMsNyArNDMsNyBAQCBEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbgogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9u
dFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZDxEcmF3
R2x5cGhzPihmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1f
b3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZl
ci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0
YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlcldpbi5jcHAKaW5kZXggYjFkZDNlMDkwMmMyYWM5NDVhODA2Y2I3NzAzM2Q3OTRmZWExZjA4
ZC4uYTEwN2ZmODJjYWJjYTA4MmI2OGJlNGU2ZGQ4Yzg4Zjc4NjZkOTY5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVy
KFJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiAKIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQogewotICAgIG1fb3duZXIuYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBoQnVmZmVyLmds
eXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQ
b2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdp
dGhDYWNoZWRGb250KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhpbmdNb2RlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzA0MGU5OGQ5OGMxMTZlYWYyODZhNTFkZjNhNzdk
NWUwZjgxODJiMi4uOGJlNmI5Y2VlOGQ1Mjk2YTg1YzNjMDc2NGExOGNjMTVmYjMyZWE0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTEzNiwxMCAr
MTM2LDkgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiAgICAgICAgIGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkuYXBwbHkoY29udGV4dCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogewot
ICAgICAgICBnZXQ8RHJhd0dseXBocz4oKS5hcHBseShjb250ZXh0KTsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuOwotICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHsKICAg
ICAgICAgZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGJkYmQyMzlmNzMz
Nzg0MDE1Mjc3MWEyZjQ1N2JjNDY5NTEwZDBlMjYuLjIzMjU5NjNjOTliYjhiY2NkOGYyNzcyZjZj
N2YyOGRjODVhYzk1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAg
LTM1NywxOCArMzU3LDE4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCiAgICAgcmV0dXJuIHRz
OwogfQogCi1EcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFZlY3RvcjxH
bHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYgZ2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNl
LCAxMjg+JiYgYWR2YW5jZXMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21v
b3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQotICAgIDogbV9mb250KG1ha2VSZWZQdHIoY29uc3Rf
Y2FzdDxGb250Jj4oZm9udCkpKQorRHJhd0dseXBoczo6RHJhd0dseXBocyhSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAx
Mjg+JiYgZ2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYgYWR2YW5jZXMs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwg
Rm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKKyAgICA6IG1fZm9udElkZW50aWZpZXIo
Zm9udElkZW50aWZpZXIpCiAgICAgLCBtX2dseXBocyhXVEZNb3ZlKGdseXBocykpCiAgICAgLCBt
X2FkdmFuY2VzKFdURk1vdmUoYWR2YW5jZXMpKQorICAgICwgbV9ib3VuZHMoYm91bmRzKQogICAg
ICwgbV9sb2NhbEFuY2hvcihsb2NhbEFuY2hvcikKICAgICAsIG1fc21vb3RoaW5nTW9kZShzbW9v
dGhpbmdNb2RlKQogewotICAgIGNvbXB1dGVCb3VuZHMoKTsKIH0KIAogRHJhd0dseXBoczo6RHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25z
dCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKLSAgICA6IG1fZm9udChtYWtlUmVmUHRyKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKSkKKyAg
ICA6IG1fZm9udElkZW50aWZpZXIoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkK
ICAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgLCBtX3Ntb290aGluZ01vZGUo
c21vb3RoaW5nTW9kZSkKIHsKQEAgLTM3OCwyOCArMzc4LDI4IEBAIERyYXdHbHlwaHM6OkRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBj
b25zdCBHCiAgICAgICAgIG1fZ2x5cGhzLnVuY2hlY2tlZEFwcGVuZChnbHlwaHNbaV0pOwogICAg
ICAgICBtX2FkdmFuY2VzLnVuY2hlY2tlZEFwcGVuZChhZHZhbmNlc1tpXSk7CiAgICAgfQotICAg
IGNvbXB1dGVCb3VuZHMoKTsKKyAgICBjb21wdXRlQm91bmRzKGZvbnQpOwogfQogCi1pbmxpbmUg
R2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcigpIGNvbnN0Citpbmxp
bmUgR2x5cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250
JiBmb250KSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1bHQuYWRkKG1f
Z2x5cGhzW2ldLCAqbV9mb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9PZmZzZXQp
OworICAgICAgICByZXN1bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBH
bHlwaEJ1ZmZlcjo6bm9PZmZzZXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgRHJh
d0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3
R2x5cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQp
IGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3R2x5cGhzKCptX2ZvbnQsIGdlbmVyYXRlR2x5cGhC
dWZmZXIoKSwgMCwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01v
ZGUpOworICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZv
bnQpLCAwLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7
CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcygpCit2b2lkIERyYXdHbHlwaHM6
OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIGRvZXNuJ3QgYWN0dWFsbHkgdGFrZSB0aGUgZXh0ZW50cyBvZiB0aGUgZ2x5cGhzIGludG8g
Y29uc2lkZXJhdGlvbi4gSXQgYXNzdW1lcyB0aGF0CiAgICAgLy8gdGhlIGdseXBoIGxpZXMgZW50
aXJlbHkgd2l0aGluIGl0cyBbKGFzY2VudCArIGRlc2NlbnQpLCBhZHZhbmNlXSByZWN0LgotICAg
IGZsb2F0IGFzY2VudCA9IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpOwotICAg
IGZsb2F0IGRlc2NlbnQgPSBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXREZXNjZW50KCk7Cisg
ICAgZmxvYXQgYXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7CisgICAg
ZmxvYXQgZGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsKICAgICBG
bG9hdFBvaW50IGN1cnJlbnQgPSBsb2NhbEFuY2hvcigpOwogICAgIHNpemVfdCBudW1HbHlwaHMg
PSBtX2dseXBocy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYzdhOWEyMGQ5YmEw
OWU3NzgxNDZkNDhkMTM5N2QzMTZhNTFmZjRkMS4uZWE4YWNhZGU2NTc1MTQwMTMwODBmMjcxYmQ3
MmJlZmQzMTE1MTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC05Mzcs
MjggKzkzNywyOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5l
SXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0g
dHJ1ZTsKIAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigp
IHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KLQogICAgIEZsb2F0UG9p
bnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9Ci0KICAgICBj
b25zdCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1
cm4gbV9nbHlwaHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8RHJhd0dseXBocz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIERyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRT
bW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKGNvbnN0IEZvbnQm
LCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZh
bmNlLCAxMjg+JiYsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5n
TW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxHbHlwaEJ1
ZmZlckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYg
bG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGb250JikgY29uc3Q7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3Vu
ZHM7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbXB1dGVCb3VuZHMoKTsKLSAgICBHbHlwaEJ1
ZmZlciBnZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlQm91bmRz
KGNvbnN0IEZvbnQmKTsKIAotICAgIFJlZlB0cjxGb250PiBtX2ZvbnQ7CisgICAgR2x5cGhCdWZm
ZXIgZ2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250JikgY29uc3Q7CisKKyAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgbV9mb250SWRlbnRpZmllcjsKICAgICBWZWN0b3I8R2x5cGhC
dWZmZXJHbHlwaCwgMTI4PiBtX2dseXBoczsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNl
LCAxMjg+IG1fYWR2YW5jZXM7CiAgICAgRmxvYXRSZWN0IG1fYm91bmRzOwpAQCAtOTY5LDkgKzk2
OSwxMCBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd0dseXBo
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBtYWtl
UmVmKCptX2ZvbnQpOworICAgIGVuY29kZXIgPDwgbV9mb250SWRlbnRpZmllcjsKICAgICBlbmNv
ZGVyIDw8IG1fZ2x5cGhzOwogICAgIGVuY29kZXIgPDwgbV9hZHZhbmNlczsKKyAgICBlbmNvZGVy
IDw8IG1fYm91bmRzOwogICAgIGVuY29kZXIgPDwgbV9sb2NhbEFuY2hvcjsKICAgICBlbmNvZGVy
IDw8IG1fc21vb3RoaW5nTW9kZTsKIH0KQEAgLTk3OSw5ICs5ODAsOSBAQCB2b2lkIERyYXdHbHlw
aHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPFJlZjxGb250Pj4gZm9udDsKLSAgICBkZWNvZGVyID4+IGZv
bnQ7Ci0gICAgaWYgKCFmb250KQorICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gZm9udElkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsKKyAg
ICBpZiAoIWZvbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKQEAgLTk5
Nyw2ICs5OTgsMTEgQEAgT3B0aW9uYWw8RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgaWYgKGdseXBocy0+c2l6ZSgpICE9IGFkdmFuY2VzLT5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGJvdW5kczsKKyAgICBkZWNvZGVyID4+IGJvdW5kczsKKyAgICBpZiAoIWJvdW5kcykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxv
Y2FsQW5jaG9yOwogICAgIGRlY29kZXIgPj4gbG9jYWxBbmNob3I7CiAgICAgaWYgKCFsb2NhbEFu
Y2hvcikKQEAgLTEwMDcsNyArMTAxMyw3IEBAIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlw
aHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc21vb3RoaW5nTW9kZSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBmb250LT5nZXQoKSwg
V1RGTW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqbG9jYWxBbmNob3IsICpzbW9v
dGhpbmdNb2RlIH19OworICAgIHJldHVybiB7eyAqZm9udElkZW50aWZpZXIsIFdURk1vdmUoKmds
eXBocyksIFdURk1vdmUoKmFkdmFuY2VzKSwgKmJvdW5kcywgKmxvY2FsQW5jaG9yLCAqc21vb3Ro
aW5nTW9kZSB9fTsKIH0KIAogY2xhc3MgRHJhd0ltYWdlQnVmZmVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA2NGQ0YTVhY2ZhMmMwMDU1NjdhYmU1OWFh
YzFmMGJlNzM2OWJhZTQ4Li4wNjkzNzQ2ZjA4MDczYTBiZmNiNGI4YTcxNDZlMzFlODdiOTNhMWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xNzIsNiAr
MTcyLDE0IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgbV9kcmF3R2x5cGhzUmVjb3Jk
ZXIuZHJhd0dseXBocyhmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBv
aW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJhd0dyYXBo
c0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0
ZS0+Y2FjaGVGb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKKyAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgYXBwZW5kPERyYXdHbHlw
aHM+KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5n
TW9kZSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgLy8gRklYTUU6IENhbGwgaW1hZ2VCdWZmZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpIHdo
ZW4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxODc3Mz4gaXMgZml4ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAzZWM2N2QzNGMxYmNmZmNjOWI0ODkxY2I5M2Q4
MGJmNGYwNDE5NzZkLi5iNDAzYWVhNGZiYmEzYzI1MjIyMGRlOGMwYWUyZjRjYWFjYzVlMzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlw
ZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JikgeyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVyKGNvbnN0IElt
YWdlQnVmZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lk
IGNhY2hlRm9udChGb250JikgeyB9CiAgICAgfTsKIAogICAgIHZvaWQgZmx1c2hDb250ZXh0KEZs
dXNoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50aWZp
ZXIpOyB9CkBAIC0xMDYsNiArMTA3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5n
TW9kZSkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hl
ZEZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNo
b3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKKwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDZjZmY3YTExMzEzMjA1YTY0ZjM2
N2ZmODFlOWNlNWI1OWUyZmM5MWEuLjQyZTE0MTJlNTQ4NDZiMGEyYmQ4NDU2M2ViYWY2Mjk2OGE1
NTNiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTM0
LDExICszNCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdl
QnVmZmVycywgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIERlbGVnYXRl
KiBkZWxlZ2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFw
KiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBj
b25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAqIGZvbnRzLCBEZWxlZ2F0ZSogZGVsZWdhdGUp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxp
c3QpCiAgICAgLCBtX2ltYWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1hZ2VCdWZmZXJzIDog
bV9kaXNwbGF5TGlzdC5pbWFnZUJ1ZmZlcnMoKSkKICAgICAsIG1fbmF0aXZlSW1hZ2VzKG5hdGl2
ZUltYWdlcyA/ICpuYXRpdmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2ZUltYWdlcygpKQor
ICAgICwgbV9mb250cyhmb250cyA/ICpmb250cyA6IG1fZGlzcGxheUxpc3QuZm9udHMoKSkKICAg
ICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC02OSw2ICs3MCwxOCBAQCBpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJ
bWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKK3Rl
bXBsYXRlPGNsYXNzIFQ+CitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAg
ICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CisgICAgYXV0byByZXNvdXJjZUlkZW50
aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOworICAgIGlmIChhdXRvKiBmb250ID0g
Zm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgZm9udEl0ZW0uYXBwbHko
Y29udGV4dCwgKmZvbnQpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAg
ICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOworfQorCiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3Rv
cFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJl
cGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRl
ICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCkBAIC05Miw2ICsxMDUsMTIg
QEAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXAKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKKyAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigp
KSB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBh
cHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KG1fY29udGV4dCwgbV9mb250cywgaXRlbSkpCisgICAg
ICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2Us
IFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgcmV0
dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKICAgICBpZiAoaXRl
bS5pczxEcmF3UGF0dGVybj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29u
dGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aAppbmRleCBjNDZjMWUzOTVlMDFmMDIyODI4OTgwNjMyOTZiYmY2Nzk4NzA1ZTE3Li5kNDE0YTZm
YTA1MDJlMTZmNzc5ZmJhNjJkMjI0MTk2MzQyM2ViMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxl
Z2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxh
eUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZl
SW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCog
PSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UmVw
bGF5ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxz
ZSk7CkBAIC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1f
ZGlzcGxheUxpc3Q7CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVy
czsKICAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOworICAgIGNv
bnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgbV9mb250czsKICAgICBEZWxlZ2F0ZSogbV9k
ZWxlZ2F0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBhM2QyNWVkZWVmYjI5
NGQ3NGNhMzY1ZDY0ZjkxYjY2MjYyMjVlNGU3Li4yNDU4M2FlMDcwMWNlYjNiMWFmYmJkZjk0ZjBl
YTYwMTdiNTk0MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xNDgsNiArMTQ4LDcg
QEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJt
aXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICAgICAgZGlzcGxheUxpc3QsCiAgICAgICAg
ICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCksCiAgICAgICAgICZyZW1vdGVS
ZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCksCisgICAgICAgICZyZW1vdGVSZXNvdXJjZUNh
Y2hlKCkuZm9udHMoKSwKICAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZQogICAgIH0ucmVwbGF5KCk7
CiB9CkBAIC0yOTMsNiArMjk0LDE5IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuCiAgICAgICAg
IHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJ
bmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQoreworICAgIGF1dG8gaWRlbnRp
ZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7CisgICAgaWYgKG1fcGVuZGlu
Z1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChp
ZGVudGlmaWVyKSkKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hh
bmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7Cit9CisK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVsZXRlQWxsRm9udHMoKQoreworICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5kZWxldGVBbGxGb250cygpOworfQorCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDczNzE3OWNlOGMwY2NmOGI3OWQ4NTBhMDE3
MWIwNzFiOWVmY2RiYmUuLjdhNWEwYjZhOThlYmZmMWJiY2MxOTcxYjcwZGUxMTAwYTliOTlkYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTEwLDYgKzExMCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXNz
YWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYm
KTsKKyAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCBhY2UzODZj
MjM4NzBkYTU5MDY5NTFiMmNlNDIwMzRiYTk0MmY5ZDEzLi4yMGY0ZTQ3OGUyNzI5YzYxM2E5NGQ2
MjFmZGVlMjQwMzUwZjNlNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgpAQCAtMjcsNiArMjcsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IE5vdFJlZkNvdW50ZWQgewogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0IFdl
YktpdDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAgIEdl
dEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2
ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkKKyAgICBEZWxldGVBbGxGb250
cygpCiAgICAgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGMzMzJkMmY3MDRlMTU4NGQ2YzBl
NWNmYmRiN2VkNTZkYzRiMmMzNjkuLjgxZGRlMGJmZmNmMGJkNmNjMWMyOGU1ZGQyNDYzNzRiMzQ2
NDYyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQ4LDEyICs0OCwyNSBAQCB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdl
KQogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQp
Cit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRzLmFkZChmb250LT5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgV1RGTW92ZShmb250KSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpkZWxldGVBbGxGb250cygpCit7CisgICAgbV9mb250cy5jbGVhcigpOworfQorCiB2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmICht
X2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2ZvbnRzLnJlbW92ZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8gQ2Fj
aGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxl
YXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRl
eCAxZjIxMDU4ZTMzYTE4NzViYmQ3ZjcyYzAxMjNjNjUwM2VjNzk5YjBiLi4yY2VkOTA5ZjQ4MTEw
YzY2NjU2ZGUxYmZlMzgxMWRiYWJhYWE5ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgPFdlYkNvcmUvRm9u
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaD4KQEAgLTQzLDE0ICs0NCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZUltYWdl
QnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAgV2ViQ29yZTo6SW1hZ2VC
dWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4mJik7CisgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOworICAgIHZv
aWQgZGVsZXRlQWxsRm9udHMoKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIAorCiAgICAgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYg
bmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25z
dCBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9mb250czsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1h
cCBtX2ltYWdlQnVmZmVyczsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRp
dmVJbWFnZXM7CisgICAgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwIG1fZm9udHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0ZvbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0ZvbnRSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTFlOWQ3Y2UwZTMwOGYzOGRkMmZlZjBiNzlj
MWIzMTQ2ZGE0ZjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRm9udFJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBGb250OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBJUEMgewor
Cit1c2luZyBGb250UmVmZXJlbmNlID0gUmVmPFdlYkNvcmU6OkZvbnQ+OworCit9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDg5
ZmI4YWJhZjlhZWNlMDdjNjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIuLjc5MWI5M2FlNzQ2MGZjNGY4
N2FmZGM5ZGM2ZDQyYzU2MDFiNjRhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMjA0LDYgKzIwNCw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19m
b3JfbmFtZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKICAg
ICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCisgICAgICAgICdJUEM6OkZvbnRSZWZlcmVuY2Un
LAogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAg
ICAnU3RyaW5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IDAzMjUyMTFhOWFkMDE3YmRkMmFkYzVlNjE3YjgzZDdmOTdmOTVlMzcuLmQ3
NjY1NGI2NGY2MmEwOTFjZDkzNmRmYzAzZjAwNGFkZmMxOTljYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwNSw2ICsxMTA1LDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4KICAgICBlbmNvZGVyIDw8IChmb250LT5pc0ludGVy
c3RpdGlhbCgpID8gRm9udDo6SW50ZXJzdGl0aWFsOjpZZXMgOiBGb250OjpJbnRlcnN0aXRpYWw6
Ok5vKTsKICAgICBlbmNvZGVyIDw8IGZvbnQtPnZpc2liaWxpdHkoKTsKICAgICBlbmNvZGVyIDw8
IChmb250LT5pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkgPyBGb250OjpPcmllbnRhdGlvbkZh
bGxiYWNrOjpZZXMgOiBGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrOjpObyk7CisgICAgZW5jb2Rl
ciA8PCBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKICAgICAvLyBJbnRlbnRp
b25hbGx5IGRvbid0IGVuY29kZSBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2sgYmVjYXVzZSBp
dCBkb2Vzbid0IGFmZmVjdCBkcmF3R2x5cGhzKCkuCiAKICAgICBlbmNvZGVQbGF0Zm9ybURhdGEo
ZW5jb2RlciwgZm9udCk7CkBAIC0xMTMyLDExICsxMTMzLDE2IEBAIE9wdGlvbmFsPFJlZjxGb250
Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIWlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2suaGFzVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVy
aW5nUmVyc291Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVyc291Y2VJZGVudGlm
aWVyLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBhdXRv
IHBsYXRmb3JtRGF0YSA9IGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyKTsKICAgICBpZiAoIXBs
YXRmb3JtRGF0YS5oYXNWYWx1ZSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGEudmFsdWUoKSwgb3JpZ2luLnZhbHVl
KCksIGlzSW50ZXJzdGl0aWFsLnZhbHVlKCksIHZpc2liaWxpdHkudmFsdWUoKSwgaXNUZXh0T3Jp
ZW50YXRpb25GYWxsYmFjay52YWx1ZSgpKTsKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRm
b3JtRGF0YS52YWx1ZSgpLCBvcmlnaW4udmFsdWUoKSwgaXNJbnRlcnN0aXRpYWwudmFsdWUoKSwg
dmlzaWJpbGl0eS52YWx1ZSgpLCBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLnZhbHVlKCksIHJl
bmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJz
b3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNzQ2
MDU0ZWQxMDliNGIyOWE2ZGY1OTkyZGEwOWNjNzA0Y2Y5MjAzLi40Y2IyZDI5N2Q3Y2VhYTNlZWFh
Zjk3M2E2YWRjMjU2NmQ2N2YyNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MjQsNiArMTUyNCw3IEBACiAJCTlCNTQ5OUIyMjM2
MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NDk5QjAyMzYyQTdF
QzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUI1QkVDMjYyNDAwRjRB
OTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI0MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRp
YVN0cmF0ZWd5LmggKi87IH07CiAJCTlCNUJFQzJBMjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuaCAqLzsgfTsKKwkJOUJEOEFCNEEyNTgyMEU1MzAwNTM4NkY4IC8qIEZvbnRS
ZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCRDhBQjQ5MjU4MjBFNTIwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggKi87IH07CiAJCTlC
RjVFQzY0MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJGNUVDNjMyNTQxMEU5OTAwOTg0RTc3
IC8qIEpTSVBDQmluZGluZy5jcHAgKi87IH07CiAJCTlFQzUzMkEzMjQ0N0ZCQUQwMDIxNTIxNiAv
KiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklk
ZW50aWZpZXIuaCAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4
dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ3ODUsNiAr
NDc4Niw3IEBACiAJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2QzFFRkND
Q0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZE
MUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTlCRDhBQjQ5MjU4MjBFNTIwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSZWZlcmVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJGNUVDNjMyNTQxMEU5OTAwOTg0RTc3IC8qIEpTSVBD
QmluZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lQQ0JpbmRpbmcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9j
YXRpb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEg
LyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02NzUxLDYgKzY3NTMsNyBAQAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1QSAv
KiBEZWNvZGVyLmggKi8sCiAJCQkJQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIu
Y3BwICovLAogCQkJCUJDMDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggKi8sCisJ
CQkJOUJEOEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8qIEZvbnRSZWZlcmVuY2UuaCAqLywKIAkJCQk0
MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlD
MENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5oICovLAogCQkJCTFDOUFG
MzYxMjQxMzREMjMwMEQzRUMwMiAvKiBJbWFnZURhdGFSZWZlcmVuY2UuaCAqLywKQEAgLTExMzkw
LDYgKzExMzkzLDcgQEAKIAkJCQkxQTkwQzFGNDEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0QTU5MThCODExNzQwMDdCRENCNiAvKiBG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U4MUQ4RDEz
MTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTlCRDhBQjRB
MjU4MjBFNTMwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTE0RjhFMjFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFFMDBENjExODMxNzkyMTAwMDg3REQ3IC8qIEZyYW1lTG9hZFN0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzEyMUU4NDI0MTAyMDhEMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURh
dGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAxMWIx
NGI5YzFhNDdlMjM0ZjViOTBiZTliNDczMmM2NGZhYzUzZjc5Li5lYWNhMDI1YjMzYmU5NmE1MjVm
ODM1Njc4MWNlZGNhNmI5YzIzODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAt
MjI5LDYgKzIyOSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0KCk7CiAgICAgfQogCisgICAgdm9pZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYgZm9udCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkoKS5jYWNoZUZvbnQoZm9udCk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2Fw
YWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCA5MzkxNmQ4NTkzYTU1Y2RlNjM1MjFjMDE0YjViYmE3NWUyYTU4ZWMzLi40ZjA5Yjc3
YzUwMjY2OGUxYjk1OWMxODc2NjRiNDU0MTkyMTUwZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0xNTQsNiArMTU0LDE2IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2Fj
aGVOYXRpdmVJbWFnZShoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Y2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmIGZvbnQpCit7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVGb250KFdURk1vdmUoZm9u
dCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRzKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpEZWxldGVBbGxGb250cygpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgPT0gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBlMDgxNWRmNzU4ZWE1MjI2Yzhh
ZmE2NWNkMjZlNjlhZGFmOTQwMDdmLi5kM2U0NzQ5ZjVjYWU0OWZmNTg4NjllYTNjYmE0OTkxZjFm
N2EzMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTgzLDYg
KzgzLDggQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJD
b3JlOjpGb250PiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIGJvb2wgd2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDZjN2E1MTM3ODU1MjFlMzkyYThhYTM3
NDA3MjlhNWRjMDc0Njg5NWUuLjE1YzE1ZjZmY2I2YmRkYzllMDdhOTM1OWQyZGIzNDRjMGZjMDAz
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTEwMSw2ICsxMDEs
MjAgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0
aXZlSW1hZ2UmIGltYWdlKQogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hl
TmF0aXZlSW1hZ2UoaGFuZGxlLCBpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUZvbnQoRm9udCYgZm9u
dCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fZm9udExhc3RSZW5kZXJpbmdVcGRhdGVNYXAuZW5z
dXJlKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSB7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0pOworICAgIGF1dG8mIGxhc3RWZXJzaW9uID0gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBpZiAobGFzdFZlcnNpb24gIT0gbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRl
VmVyc2lvbikgeworICAgICAgICBsYXN0VmVyc2lvbiA9IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0
ZVZlcnNpb247CisgICAgICAgICsrbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmlu
Z1VwZGF0ZTsKKyAgICB9CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZUZvbnQobWFrZVJlZihmb250KSk7Cit9CisK
IHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBpZiAoIW1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
KQpAQCAtMTEwLDYgKzEyNCwzNCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVs
ZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
ZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWluaW11bVJlbmRlcmluZ1VwZGF0ZUNvdW50VG9LZWVwRm9udEFsaXZlID0gNDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1pbmltdW1GcmFjdGlvbk9mVW51c2VkRm9udENv
dW50VG9UcmlnZ2VyUmVtb3ZhbCA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXhpbXVtVW51c2VkRm9udENvdW50VG9Ta2lwUmVtb3ZhbCA9IDA7CisKKyAgICB1bnNpZ25lZCB0
b3RhbEZvbnRDb3VudCA9IG1fZm9udExhc3RSZW5kZXJpbmdVcGRhdGVNYXAuc2l6ZSgpOworICAg
IFJFTEVBU0VfQVNTRVJUKG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRh
dGUgPD0gdG90YWxGb250Q291bnQpOworICAgIHVuc2lnbmVkIHVudXNlZEZvbnRDb3VudCA9IHRv
dGFsRm9udENvdW50IC0gbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0
ZTsKKyAgICBpZiAodW51c2VkRm9udENvdW50IDwgdG90YWxGb250Q291bnQgLyBtaW5pbXVtRnJh
Y3Rpb25PZlVudXNlZEZvbnRDb3VudFRvVHJpZ2dlclJlbW92YWwgJiYgdW51c2VkRm9udENvdW50
IDw9IG1heGltdW1VbnVzZWRGb250Q291bnRUb1NraXBSZW1vdmFsKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2ZvbnRMYXN0UmVuZGVyaW5nVXBkYXRlTWFwKSB7
CisgICAgICAgIGlmIChtX2N1cnJlbnRSZW5kZXJpbmdVcGRhdGVWZXJzaW9uIC0gaXRlbS52YWx1
ZSA+PSBtaW5pbXVtUmVuZGVyaW5nVXBkYXRlQ291bnRUb0tlZXBGb250QWxpdmUpCisgICAgICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
aXRlbS5rZXkpOworICAgIH0KKworICAgICsrbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lv
bjsKKyAgICBtX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlID0gMDsK
K30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VNZW1vcnkoKQorewor
ICAgIG1fZm9udExhc3RSZW5kZXJpbmdVcGRhdGVNYXAuY2xlYXIoKTsKKyAgICBtX251bWJlck9m
Rm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlID0gMDsKKyAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5kZWxldGVBbGxGb250cygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCmluZGV4IDY4OGYzMzUxODFjNGU1NDAyMGFjYzk4ZDViN2NmNDJkYTUyODY4
MmQuLjY3YjlhMWY4YWEwYjJhOGZkYWIwMDgxODdhMDhiMzM1ZjJmNjBkOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZvbnQ7CiBjbGFzcyBJbWFn
ZUJ1ZmZlcjsKIH0KIApAQCAtNTMsNiArNTQsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIEltYWdl
QnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZm
ZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsg
fQogCisgICAgdm9pZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYpOworICAgIHZvaWQgZGlkRmlu
YWxpemVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHJlbGVhc2VNZW1vcnkoKTsKKwogcHJp
dmF0ZToKICAgICB1c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2Vha1B0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4+
OwogICAgIApAQCAtNjAsNiArNjUsMTEgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlQnVmZmVySGFz
aE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFn
ZXM7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
dWludDY0X3Q+IG1fZm9udExhc3RSZW5kZXJpbmdVcGRhdGVNYXA7CisgICAgdW5zaWduZWQgbV9u
dW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSB7IDAgfTsKKyAgICB1aW50
NjRfdCBtX2N1cnJlbnRSZW5kZXJpbmdVcGRhdGVWZXJzaW9uIHsgMSB9OworCiAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MDYxODc5OTMwY2Y3YTg5NjhjODc4OTQyYzZjNTU5MDJkMGU4OTc0Yy4uODU0OWQ5ZTQ5YTZlZWZj
ODc2ODkwNTg4YTZjZmQ5MDU4YmI3MTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MDMsOSArMzgwMyw2IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmlu
ZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyhtX3Nob3VsZFJlbmRlckRP
TUluR1BVUHJvY2VzcyAmJiBEcmF3aW5nQXJlYTo6c3VwcG9ydHNHUFVQcm9jZXNzUmVuZGVyaW5n
KG1fZHJhd2luZ0FyZWFUeXBlKSk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNl
R1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKTsKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgd2ViIGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4K
LSAgICBpZiAobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MpCi0gICAgICAgIHNldHRpbmdz
LnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZChmYWxzZSk7CiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJH
TChtX3Nob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKICNlbmRpZgpAQCAtMzkyOCw2ICsz
OTI1LDE4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKIHZvaWQgV2ViUGFnZTo6
ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
RmxhZ3M+IGZsYWdzKQogewogICAgIG1fcGFnZS0+ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoZmxh
Z3MpOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoKS5kaWRGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2ViUGFnZTo6cmVsZWFzZU1lbW9yeShDcml0aWNhbCkKK3sKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KCkucmVsZWFzZU1lbW9yeSgpOworI2VuZGlmCiB9CiAKIFdlYkluc3BlY3Rvciog
V2ViUGFnZTo6aW5zcGVjdG9yKExhenlDcmVhdGlvblBvbGljeSBiZWhhdmlvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmYTEzMzU0ZGRmZjIzMjg0
NTBiOWM3MmNkYWM0ZGNmN2FlNDU0YjM0Li5lYjI4MDQ0ZDk5MWI4ZmM4YjhkZTUzMWY1YzE5YTdi
NDNiNmQ3YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xNTYsNiArMTU2LDEwIEBAIE9CSkNfQ0xBU1MgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdDsKIAogI2RlZmluZSBFTkFCTEVfVklFV1BPUlRfUkVTSVpJTkcgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAorbmFtZXNwYWNlIFdURiB7CitlbnVtIGNsYXNzIENyaXRpY2FsIDogdWludDhfdDsK
K30KKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKIH0KQEAgLTM3MCw2ICszNzQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJpbmcoKTsKICAgICB2b2lkIGZpbmFsaXpl
UmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxXZWJDb3JlOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0
ZUZsYWdzPik7CiAKKyAgICB2b2lkIHJlbGVhc2VNZW1vcnkoV1RGOjpDcml0aWNhbCk7CisKICAg
ICBlbnVtIGNsYXNzIExhenlDcmVhdGlvblBvbGljeSB7IFVzZUV4aXN0aW5nT25seSwgQ3JlYXRl
SWZOZWVkZWQgfTsKIAogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yKExhenlDcmVhdGlvblBv
bGljeSA9IExhenlDcmVhdGlvblBvbGljeTo6Q3JlYXRlSWZOZWVkZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRjYTA5N2EwYmI4NTEzNDI4MGVmNDJkZGFm
NmU4OTlmMDEwYWFmOTIuLjAzNzVmZDVjY2JmMTgwZjBiODE5MDk3NzE1ZDNiN2RkZGJlMzdlNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3Nyw2ICszNzcs
OCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICAgICAgYXV0byBtYWludGFpbkJh
Y2tGb3J3YXJkQ2FjaGUgPSBtX2lzU3VzcGVuZGluZyA/IFdlYkNvcmU6Ok1haW50YWluQmFja0Zv
cndhcmRDYWNoZTo6WWVzIDogV2ViQ29yZTo6TWFpbnRhaW5CYWNrRm9yd2FyZENhY2hlOjpObzsK
ICAgICAgICAgICAgIGF1dG8gbWFpbnRhaW5NZW1vcnlDYWNoZSA9IG1faXNTdXNwZW5kaW5nICYm
IG1faGFzU3VzcGVuZGVkUGFnZVByb3h5ID8gV2ViQ29yZTo6TWFpbnRhaW5NZW1vcnlDYWNoZTo6
WWVzIDogV2ViQ29yZTo6TWFpbnRhaW5NZW1vcnlDYWNoZTo6Tm87CiAgICAgICAgICAgICBXZWJD
b3JlOjpyZWxlYXNlTWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cywgbWFpbnRhaW5CYWNrRm9y
d2FyZENhY2hlLCBtYWludGFpbk1lbW9yeUNhY2hlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYg
cGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5yZWxlYXNl
TWVtb3J5KGNyaXRpY2FsKTsKICAgICAgICAgfSk7CiAjaWYgRU5BQkxFKFBFUklPRElDX01FTU9S
WV9NT05JVE9SKQogICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0U2hvdWxkVXNlUGVy
aW9kaWNNZW1vcnlNb25pdG9yKHRydWUpOwpAQCAtMTM4NCw4ICsxMzg2LDExIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2CiAgICAgICAgIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci0+cHJv
Y2Vzc1dpbGxTdXNwZW5kKCk7CiAjZW5kaWYKIAotICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVBy
ZXNzdXJlSGFuZGxlcikKKyAgICBpZiAoIW1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIp
IHsKICAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5yZWxlYXNlTWVt
b3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOworICAgICAgICBmb3IgKGF1dG8m
IHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCisgICAgICAgICAgICBwYWdlLT5yZWxlYXNlTWVt
b3J5KENyaXRpY2FsOjpZZXMpOworICAgIH0KIAogICAgIGZyZWV6ZUFsbExheWVyVHJlZXMoKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416074</attachid>
            <date>2020-12-11 17:10:57 -0800</date>
            <delta_ts>2020-12-11 18:13:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219672-20201211171057.patch</filename>
            <type>text/plain</type>
            <size>59429</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM4NmQ1MDg4NzQ0ZjhmMTRiMzJlZDU1
OWZlNTc0OWY5NzZiZGRlY2MuLjQ5NmI0ZjdlNTczYzYwYWM3YzY2YTFiNTZkMjhhMTUzOTY1YWY4
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDYWNoZSBGb250IG9iamVjdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBTcGVjaWZ5IHRo
ZSB3aWR0aCBvZiBlbnVtIGNsYXNzZXMgc28gdGhhdCB0aGV5IGNhbiBiZSBmb3J3YXJkIGRlY2xh
cmVkLgorCisgICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorCiAyMDIwLTEy
LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVHVybiBvbiBI
QVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKSBvbiBXYXRjaE9TIGFuZCBUdk9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNGVmYzc2ODg4ZDU4NDVjZTg3MTQyOWI0ZjVlOTkxZDEyYzM0NzViZi4uN2NjMjM0MDg5NWJl
MThjMjgzZTY3ZTRlODczOGQ1Yjg3M2E1OTI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBA
CisyMDIwLTEyLTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gQ2FjaGUgRm9udCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NzIKKworICAgICAgICBSZXZpZXdlZCBieSBX
ZW5zb24gSHNpZWguCisKKyAgICAgICAgUGFydGlhbGx5IGJhc2VkIG9uIHRoZSBwYXRjaCBtYWRl
IGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh
IG1lY2hhbmlzbSB0byBjYWNoZSBGb250IG9iamVjdHMgaW4gdGhlIEdQVSBwcm9jZXNzIG11Y2gg
dGhlIHNhbWUgd2F5CisgICAgICAgIE5hdGl2ZUltYWdlIG9iamVjdHMgYXJlIGNhY2hlZCBpbiB0
aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OkZvbnQpOiBSZXN0b3JlIHRoZSBzYW1lIHJlbmRlcmlu
ZyByZXNvdXJjZSBpZGVudGlmaWVyIHdoZW4gRm9udCBvYmplY3QKKyAgICAgICAgaXMgZGVjb2Rl
ZCBpbiB0aGUgR1BVIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpGb250OjpyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOiBBZGRlZC4gTGF6aWx5IGNyZWF0ZXMgYW4gaWRlbnRp
Zmllci4KKyAgICAgICAgVGhpcyBuZXZlciBoYXBwZW5zIGluIHRoZSBHUFUgcHJvY2VzcyBhcyB3
ZSBzZXQgaXQgaW4gdGhlIGNvbnN0cnVjdG9yIGFib3ZlLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6IERpdHRvIGFz
IEZvbnQ6OkZvbnQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmZvbnRzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmNhY2hlRm9udCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29y
ZERyYXdHbHlwaHMpOiBDYWxsIHRoZSBuZXdseSBpbnRyb2R1Y2VkCisgICAgICAgIGFwcGVuZERy
YXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQgaW5zdGVhZCBvZiBhcHBlbmRpbmcgRHJhd0dseXBo
cyBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVj
b3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KTogUmVwbGFj
ZWQgY2FsbCB0byBEcmF3R2x5cGhzOjphcHBseSB3aXRoCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCBzaW5jZSBSZXBsYXllcjo6YXBwbHlJdGVtIHNob3VsZCBoYW5kbGUgaXQgbm93LiAgCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OkRyYXdHbHlw
aHMpOiBUaGUgb25lIHVzZWQgaW4gZGVjb2RlIGZ1bmN0aW9uIGluIEdQVQorICAgICAgICBwcm9j
ZXNzIG5vdyB0YWtlcyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW5zdGVhZCBvZiBGb250
IGFuZCB0aGUgZ2x5cGggYm91bmRzIGluc3RlYWQKKyAgICAgICAgb2YgY29tcHV0aW5nIGl0IGFn
YWluIGhlcmUuIFRoZSBvbmUgdXNlZCBpbiBXZWJDb250ZW50IHdpbGwgY29udGludWUgdG8gdGFr
ZSBGb250CisgICAgICAgIHRvIGNvcG11dGUgdGhlIGJvdW5kcyBidXQgZW5jb2RlcyBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3R2x5cGhzOjpnZW5lcmF0ZUdseXBoQnVmZmVyIGNvbnN0KTogVGFrZXMgRm9udC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBjb25zdCk6
IFRha2VzIEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6
Y29tcHV0ZUJvdW5kcyk6IFRha2VzIEZvbnQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHMpOiBObyBsb25nZXIgcmV0YWlucyBGb250IG9i
amVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjplbmNvZGUg
Y29uc3QpOiBFbmNvZGVzIHRoZSBib3VuZGluZyByZWN0LgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdHbHlwaHM6OmRlY29kZSk6IERpdHRvIGZvciBkZWNvZGluZy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFwcGVuZERyYXdH
cmFwaHNJdGVtV2l0aENhY2hlZEZvbnQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y2FjaGVGb250KTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpSZXBsYXll
cik6IE5vdyB0YWtlcyBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6YXBwbHlGb250SXRlbSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOiBBcHBsaWVzIERyYXdHbHlwaHMgd2l0
aCBGb250IGluIG1fZm9udHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKwogMjAyMC0xMi0wOSAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vzc11bTVNFXSBJ
bXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjk0MmU2OGQ3MDI0ZDI4
YTQ2MzVkOWM1MzEwYTNhMWU3MDBjOWUwMS4uYjE3OTQwZTdiNzA2ZGZhY2M3YjczNGU0MmM2MDE2
YmJlN2FiNDJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAyMC0xMi0xMCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hl
IEZvbnQgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAg
ICAgIFBhcnRpYWxseSBiYXNlZCBvbiB0aGUgcGF0Y2ggbWFkZSBieSBTYWlkIEFib3UtSGFsbGF3
YS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBtZWNoYW5pc20gdG8gY2FjaGUg
Rm9udCBvYmplY3RzIGluIHRoZSBHUFUgcHJvY2VzcyBtdWNoIHRoZSBzYW1lIHdheQorICAgICAg
ICBOYXRpdmVJbWFnZSBvYmplY3RzIGFyZSBjYWNoZWQgaW4gdGhlIEdQVSBwcm9jZXNzLCBhbmQg
cmUtZW5hYmxlcyBXZWIgRm9udHMuCisKKyAgICAgICAgRm9udHMgYXJlIHJlbW92ZWQgZnJvbSB0
aGUgR1BVIHByb2Nlc3Mgd2hlbiBlaXRoZXIgdGhleSBoYWRuJ3QgYmVlbiB1c2VkIGZvciA0IHJl
bmRlcmluZyB1cGRhdGVzCisgICAgICAgIG9yIGEgbWVtb3J5IHdhcm5pbmcgaGFzIGJlZW4gaXNz
dWVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0
KTogQWRkZWQgdGhlIGZvbnQgY2FjaGUuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNhY2hlRm9udCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cyk6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjogQWRkZWQgQ2Fj
aGVGb250IGFuZCBEZWxldGVBbGxGb250cworICAgICAgICBhcyBuZXcgSVBDIG1lc3NhZ2VzLgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udCk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxGb250cyk6IEFk
ZGVkLiBVc2VkIHdoZW4gYSBtZW1vcnkgd2FybmluZyBpcyBpc3N1ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZvbnRzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogUGxh
dGZvcm0vSVBDL0ZvbnRSZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgIChJUEM6OkZvbnRSZWZl
cmVuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOiBBZGRlZCBGb250
UmVmZXJlbmNlLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZSk6IEVuY29kZSB0
aGUgcmVuZGVyaW5nIHJlc291cmNlIGlkZW50aWZpZXIgb2YgRm9udC4KKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUpOiBEaXR0byBmb3IgZGVjb2RpbmcuCisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjYWNoZUZvbnQpOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hl
Rm9udCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmRlbGV0ZUFsbEZvbnRzKTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUZvbnQpOiBBZGRlZC4gSXQgdXBk
YXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGZvbnRzCisgICAgICAgIGJlaW5nIHVzZWQgc2luY2Ug
dGhlIGxhc3QgcmVuZGVyaW5nIHVwZGF0ZSBhbmQgcmVjb3JkcyB0aGUgc2VsZiBhc3NpZ25lZCBp
ZGVudGlmaWVyIGZvcgorICAgICAgICB0aGUgbmV4dCByZW5kZXJpbmcgdXBkYXRlLiAKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkaWRGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZSk6IEFkZGVkLiBDYWxsZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICBlYWNoIHJlbmRl
cmluZyB1cGRhdGUuIEl0IHJlbW92ZXMgYWxsIGZvbnRzIHVudXNlZCBpbiB0aGUgbHNhdCA0IHJl
bmRlcmluZyB1cGRhdGVzIGlmIGF0IGxlYXN0CisgICAgICAgIDEvNCBvZiB0aGUgZm9udHMgaW4g
dGhlIEdQVSBwcm9jZXNzIHdlcmUgbm90IHVzZWQgaW4gdGhpcyByZW5kZXJpbmcgdXBkYXRlLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VNZW1vcnkp
OiBBZGRlZC4gUmVtb3ZlcyBhbGwgdGhlIGZvbnRzIHRvIGZyZWUgdXAKKyAgICAgICAgbWVtb3J5
IHdoZW4gYSBtZW1vcnkgd2FybmluZyBpcyBpc3N1ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSk6IEFkZGVkIG1fZm9udExhc3RSZW5kZXJpbmdVcGRh
dGVNYXAgd2hpY2gga2VlcHMgdHJhY2sgb2YKKyAgICAgICAgdGhlIHJlbmRlcmluZyByZXNvdXJj
ZSBpZGVudGlmaWVycyBvZiB0aGUgZm9udHMgY2FjaGVkIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogUmUtZW5hYmxlcyB0aGUgV2ViIEZvbnRzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSk6IEFkZGVk
IHRoZSBjYWxsIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSdzCisgICAgICAgIGRpZEZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWxlYXNl
TWVtb3J5KTogQWRkZWQuIENhbGxzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSdzIGZ1bmN0
aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBBZGRlZCB0aGUgY2FsbCB0byBXZWJQYWdlOjpyZWxlYXNl
TWVtb3J5IGluCisgICAgICAgIHRoZSBtZW1vcnkgcHJlc3N1cmUgaGFuZGxlci4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6IERpdHRvIGZvciB0aGUgcHJv
Y2VzcyBzdXNwZW5zaW9uLgorCiAyMDIwLTEyLTA5ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXVtNU0VdIEltcGxlbWVudCBi
YXNpYyB2aWRlbyBwbGF5YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApp
bmRleCBjZTViMjgzMzYzYTMxY2U3ZTRiMDI4M2E4OGE5OWQzYWExY2FkOTg5Li44MDIxYzZmYTc0
ZjY4Yzc1MzRiOGQyMGUxMDQzZGJjODRiMzEyMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaApAQCAtNTEsOCArNTEsOCBAQCBlbnVtIGNsYXNzIFdlYnNhbVByb2Nlc3NT
dGF0ZSA6IHVpbnQ4X3QgewogICAgIEluYWN0aXZlLAogfTsKIAotZW51bSBjbGFzcyBDcml0aWNh
bCB7IE5vLCBZZXMgfTsKLWVudW0gY2xhc3MgU3luY2hyb25vdXMgeyBObywgWWVzIH07CitlbnVt
IGNsYXNzIENyaXRpY2FsIDogdWludDhfdCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgU3luY2hy
b25vdXMgOiB1aW50OF90IHsgTm8sIFllcyB9OwogCiB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9p
ZChDcml0aWNhbCwgU3luY2hyb25vdXMpPiBMb3dNZW1vcnlIYW5kbGVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDU0YjliNzVlZjcxY2M2MmI5OGFm
ZGY1OGIxMDM4NDBkYWZmNDdjZmUuLmEzNDk2YTYyY2U5MzQ4YWZjMzNjZjlhMTI5MjUwOWE0NTlm
MjM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02
Niw4ICs2Niw5IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsCiAgICAgcmV0dXJuIEZvbnQ6OmNy
ZWF0ZShDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YSgqY3VzdG9tRm9udERh
dGEsIGRlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIHsgfSwgeyB9
KSwgb3JpZ2luKTsKIH0KIAotRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2li
aWxpdHkgdmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNr
KQorRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdp
biBvcmlnaW4sIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwsIFZpc2liaWxpdHkgdmlzaWJpbGl0
eSwgT3JpZW50YXRpb25GYWxsYmFjayBvcmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAg
ICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkKKyAgICAsIG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAsIG1fb3JpZ2lu
KG9yaWdpbikKICAgICAsIG1fdmlzaWJpbGl0eSh2aXNpYmlsaXR5KQogICAgICwgbV90cmVhdEFz
Rml4ZWRQaXRjaChmYWxzZSkKQEAgLTE1OCw2ICsxNTksMTMgQEAgRm9udDo6fkZvbnQoKQogICAg
IHJlbW92ZUZyb21TeXN0ZW1GYWxsYmFja0NhY2hlKCk7CiB9CiAKK1JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBGb250OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGlmICghbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOworICAgIHJldHVybiAqbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisK
IHN0YXRpYyBib29sIGZpbGxHbHlwaFBhZ2UoR2x5cGhQYWdlJiBwYWdlVG9GaWxsLCBVQ2hhciog
YnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZvbnQpCiB7CiAgICAg
Ym9vbCBoYXNHbHlwaHMgPSBwYWdlVG9GaWxsLmZpbGwoYnVmZmVyLCBidWZmZXJMZW5ndGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGVhZjc3NjAyNzc0YzEz
NGMxZWM2ODg3MmI2MWJjNGU2ZjUyMGIxMDIuLmM3YjA3MmU2NmM2MzE1ZDI2YThjOTI4OTljZTUw
MmIwN2FlMDEwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAjaW5jbHVkZSAi
T3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKICNlbmRpZgorI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC05MCw5ICs5MSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3Jp
Z2luIG9yaWdpbiA9IE9yaWdpbjo6TG9jYWwsIEludGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwgPSBJ
bnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNp
YmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlv
bkZhbGxiYWNrOjpObykKKyAgICBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJ
bnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKKyAgICAgICAgVmlz
aWJpbGl0eSB2aXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxs
YmFjayBvcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllciA9IFdURjo6bnVsbG9w
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRh
LCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaykp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2lu
LCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZp
ZXIpKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9u
dFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCkBAIC0x
MDYsNiArMTA4LDggQEAgcHVibGljOgogICAgIGNvbnN0IE9wZW5UeXBlVmVydGljYWxEYXRhKiB2
ZXJ0aWNhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsRGF0YS5nZXQoKTsgfQogI2Vu
ZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Q7CisKICAgICBjb25zdCBGb250KiBzbWFs
bENhcHNGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwogICAgIGNvbnN0IEZvbnQm
IG5vU3ludGhlc2l6YWJsZUZlYXR1cmVzRm9udCgpIGNvbnN0OwogICAgIGNvbnN0IEZvbnQqIGVt
cGhhc2lzTWFya0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CkBAIC0yMjQsNyAr
MjI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBJbnRlcnN0aXRpYWwsIFZpc2li
aWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2spOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnQoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5LCBP
cmllbnRhdGlvbkZhbGxiYWNrLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
KTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUdseXBoSW5p
dCgpOwpAQCAtMjY3LDYgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE9wZW5UeXBlVmVy
dGljYWxEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKICNlbmRpZgogCisgICAgbXV0YWJsZSBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOworCiAgICAgc3RydWN0IERlcml2ZWRGb250cyB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC0zNzcsNiArMzgzLDggQEAgQUxXQVlT
X0lOTElORSBmbG9hdCBGb250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAg
IHJldHVybiB3aWR0aDsKIH0KIAordXNpbmcgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwID0gSGFz
aE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxGb250Pj47CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmlu
ZGV4IDE2YjE5N2Y5ZWUyZDI4ZGJlOTIxZDkzMDk0M2Q0MzA0NjFkZmNkODYuLjEyNjg0ZThjNzA3
ODVhNGE3MTQ4OTUwYjliYTVkZTc2Nzc5NzFjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgiCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVtVHlwZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2lu
Y2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC03NCw2ICs3NSw3
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBOYXRpdmVJbWFn
ZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9
CisgICAgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cygpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1ZmZlckNs
aWVudChJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCopOwpAQCAtMTc3LDEx
ICsxNzksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKGltYWdlKTsK
ICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjYWNoZUZvbnQoRm9udCYgZm9u
dCkKKyAgICB7CisgICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKGZvbnQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3Mo
QXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1h
Z2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBG
b250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRl
bUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3
aW5nSXRlbUV4dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRy
dWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCA4YmMwMDE0MjgyMGU5NzM5NjVlYmE1YTkz
ZDA2YTAzMDliODY5NWQzLi40NTEyNDRhN2JiOTc3ZTE0NDc4ZjE5YTc4NDRlNzY4YjMwYmM3ZWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3Rh
dGVSZWYgZ3N0YXQKICAgICB1cGRhdGVTdHJva2VDb2xvcihDR0dTdGF0ZUdldFN0cm9rZUNvbG9y
KGdzdGF0ZSkpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwog
Ci0gICAgbV9vd25lci5hcHBlbmQ8RHJhd0dseXBocz4oKm1fb3JpZ2luYWxGb250LCBnbHlwaHMs
IGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRl
eHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0
aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhz
SXRlbVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5j
ZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4KS5kYXRh
KCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0pLCBtX3Nt
b290aGluZ01vZGUpOwogCiAgICAgbV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNUTUZpeHVwKTsK
IH0KQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJh
d0ltYWdlKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZQogdm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01v
ZGUpCiB7CiAgICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7Ci0gICAgICAgIG1fb3duZXIuYXBwZW5k
PERyYXdHbHlwaHM+KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7Cisg
ICAgICAgIG1fb3duZXIuYXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBn
bHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5
cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5kZXggYjFkZDNlMDkwMmMyYWM5NDVhODA2Y2I3NzAz
M2Q3OTRmZWExZjA4ZC4uMzdkNTMxZDA4ODVhN2Y3MmNkNTE3NTU0NGI3MjgwNGQ1YTE0YjE0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlw
aHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtNDMsNyArNDMsNyBAQCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0
cnVjdGlvbgogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290
aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBtX293bmVyLmFwcGVuZDxEcmF3R2x5cGhz
Pihmb250LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZy
b20pLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAgIG1fb3duZXIu
YXBwZW5kRHJhd0dyYXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaEJ1ZmZlci5nbHlw
aHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMsIHN0YXJ0UG9p
bnQsIHNtb290aGluZ01vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldp
bi5jcHAKaW5kZXggYjFkZDNlMDkwMmMyYWM5NDVhODA2Y2I3NzAzM2Q3OTRmZWExZjA4ZC4uYTEw
N2ZmODJjYWJjYTA4MmI2OGJlNGU2ZGQ4Yzg4Zjc4NjZkOTY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0ds
eXBoc1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC00
Myw3ICs0Myw3IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKFJlY29y
ZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uCiAKIHZvaWQgRHJhd0dseXBoc1Jl
Y29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBn
bHlwaEJ1ZmZlciwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewot
ICAgIG1fb3duZXIuYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhm
cm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwg
c21vb3RoaW5nTW9kZSk7CisgICAgbV9vd25lci5hcHBlbmREcmF3R3JhcGhzSXRlbVdpdGhDYWNo
ZWRGb250KGZvbnQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoZnJvbSksIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhpbmdNb2RlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzA0MGU5OGQ5OGMxMTZlYWYyODZhNTFkZjNhNzdkNWUwZjgx
ODJiMi4uOGJlNmI5Y2VlOGQ1Mjk2YTg1YzNjMDc2NGExOGNjMTVmYjMyZWE0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTEzNiwxMCArMTM2LDkg
QEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogewotICAgICAg
ICBnZXQ8RHJhd0dseXBocz4oKS5hcHBseShjb250ZXh0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3R2x5cGhzOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwotICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHsKICAgICAgICAg
Z2V0PERyYXdJbWFnZUJ1ZmZlcj4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGJkYmQyMzlmNzMzNzg0MDE1
Mjc3MWEyZjQ1N2JjNDY5NTEwZDBlMjYuLjIzMjU5NjNjOTliYjhiY2NkOGYyNzcyZjZjN2YyOGRj
ODVhYzk1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTM1Nywx
OCArMzU3LDE4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1EcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFZlY3RvcjxHbHlwaEJ1
ZmZlckdseXBoLCAxMjg+JiYgZ2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+
JiYgYWR2YW5jZXMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQotICAgIDogbV9mb250KG1ha2VSZWZQdHIoY29uc3RfY2FzdDxG
b250Jj4oZm9udCkpKQorRHJhd0dseXBoczo6RHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZm9udElkZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYg
Z2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYgYWR2YW5jZXMsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKKyAgICA6IG1fZm9udElkZW50aWZpZXIoZm9udElk
ZW50aWZpZXIpCiAgICAgLCBtX2dseXBocyhXVEZNb3ZlKGdseXBocykpCiAgICAgLCBtX2FkdmFu
Y2VzKFdURk1vdmUoYWR2YW5jZXMpKQorICAgICwgbV9ib3VuZHMoYm91bmRzKQogICAgICwgbV9s
b2NhbEFuY2hvcihsb2NhbEFuY2hvcikKICAgICAsIG1fc21vb3RoaW5nTW9kZShzbW9vdGhpbmdN
b2RlKQogewotICAgIGNvbXB1dGVCb3VuZHMoKTsKIH0KIAogRHJhd0dseXBoczo6RHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKLSAg
ICA6IG1fZm9udChtYWtlUmVmUHRyKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKSkKKyAgICA6IG1f
Zm9udElkZW50aWZpZXIoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkKICAgICAs
IG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgLCBtX3Ntb290aGluZ01vZGUoc21vb3Ro
aW5nTW9kZSkKIHsKQEAgLTM3OCwyOCArMzc4LDI4IEBAIERyYXdHbHlwaHM6OkRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
CiAgICAgICAgIG1fZ2x5cGhzLnVuY2hlY2tlZEFwcGVuZChnbHlwaHNbaV0pOwogICAgICAgICBt
X2FkdmFuY2VzLnVuY2hlY2tlZEFwcGVuZChhZHZhbmNlc1tpXSk7CiAgICAgfQotICAgIGNvbXB1
dGVCb3VuZHMoKTsKKyAgICBjb21wdXRlQm91bmRzKGZvbnQpOwogfQogCi1pbmxpbmUgR2x5cGhC
dWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcigpIGNvbnN0CitpbmxpbmUgR2x5
cGhCdWZmZXIgRHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250JiBmb250
KSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIHJlc3VsdDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZ2x5cGhzLnNpemUoKTsgKytpKQotICAgICAgICByZXN1bHQuYWRkKG1fZ2x5cGhz
W2ldLCAqbV9mb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1ZmZlcjo6bm9PZmZzZXQpOworICAg
ICAgICByZXN1bHQuYWRkKG1fZ2x5cGhzW2ldLCBmb250LCBtX2FkdmFuY2VzW2ldLCBHbHlwaEJ1
ZmZlcjo6bm9PZmZzZXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgRHJhd0dseXBo
czo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3R2x5cGhz
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQpIGNvbnN0
CiB7Ci0gICAgY29udGV4dC5kcmF3R2x5cGhzKCptX2ZvbnQsIGdlbmVyYXRlR2x5cGhCdWZmZXIo
KSwgMCwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOwor
ICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAw
LCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAK
LXZvaWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcygpCit2b2lkIERyYXdHbHlwaHM6OmNvbXB1
dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGRv
ZXNuJ3QgYWN0dWFsbHkgdGFrZSB0aGUgZXh0ZW50cyBvZiB0aGUgZ2x5cGhzIGludG8gY29uc2lk
ZXJhdGlvbi4gSXQgYXNzdW1lcyB0aGF0CiAgICAgLy8gdGhlIGdseXBoIGxpZXMgZW50aXJlbHkg
d2l0aGluIGl0cyBbKGFzY2VudCArIGRlc2NlbnQpLCBhZHZhbmNlXSByZWN0LgotICAgIGZsb2F0
IGFzY2VudCA9IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpOwotICAgIGZsb2F0
IGRlc2NlbnQgPSBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXREZXNjZW50KCk7CisgICAgZmxv
YXQgYXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7CisgICAgZmxvYXQg
ZGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsKICAgICBGbG9hdFBv
aW50IGN1cnJlbnQgPSBsb2NhbEFuY2hvcigpOwogICAgIHNpemVfdCBudW1HbHlwaHMgPSBtX2ds
eXBocy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYzdhOWEyMGQ5YmEwOWU3Nzgx
NDZkNDhkMTM5N2QzMTZhNTFmZjRkMS4uZWE4YWNhZGU2NTc1MTQwMTMwODBmMjcxYmQ3MmJlZmQz
MTE1MTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC05MzcsMjggKzkz
NywyOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9
IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsK
IAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigpIHsgcmV0
dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hv
cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KLQogICAgIEZsb2F0UG9pbnQgYW5j
aG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9Ci0KICAgICBjb25zdCBW
ZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9n
bHlwaHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
RHJhd0dseXBocz4gZGVjb2RlKERlY29kZXImKTsKIAogICAgIERyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBWZWN0
b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAx
Mjg+JiYsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxHbHlwaEJ1ZmZlckFk
dmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxB
bmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250
JikgY29uc3Q7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0K
IAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbXB1dGVCb3VuZHMoKTsKLSAgICBHbHlwaEJ1ZmZlciBn
ZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlQm91bmRzKGNvbnN0
IEZvbnQmKTsKIAotICAgIFJlZlB0cjxGb250PiBtX2ZvbnQ7CisgICAgR2x5cGhCdWZmZXIgZ2Vu
ZXJhdGVHbHlwaEJ1ZmZlcihjb25zdCBGb250JikgY29uc3Q7CisKKyAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgbV9mb250SWRlbnRpZmllcjsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJH
bHlwaCwgMTI4PiBtX2dseXBoczsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+
IG1fYWR2YW5jZXM7CiAgICAgRmxvYXRSZWN0IG1fYm91bmRzOwpAQCAtOTY5LDkgKzk2OSwxMCBA
QCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRHJhd0dseXBoczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBtYWtlUmVmKCpt
X2ZvbnQpOworICAgIGVuY29kZXIgPDwgbV9mb250SWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8
IG1fZ2x5cGhzOwogICAgIGVuY29kZXIgPDwgbV9hZHZhbmNlczsKKyAgICBlbmNvZGVyIDw8IG1f
Ym91bmRzOwogICAgIGVuY29kZXIgPDwgbV9sb2NhbEFuY2hvcjsKICAgICBlbmNvZGVyIDw8IG1f
c21vb3RoaW5nTW9kZTsKIH0KQEAgLTk3OSw5ICs5ODAsOSBAQCB2b2lkIERyYXdHbHlwaHM6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9w
dGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIE9wdGlvbmFsPFJlZjxGb250Pj4gZm9udDsKLSAgICBkZWNvZGVyID4+IGZvbnQ7Ci0g
ICAgaWYgKCFmb250KQorICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
Zm9udElkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsKKyAgICBpZiAo
IWZvbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKQEAgLTk5Nyw2ICs5
OTgsMTEgQEAgT3B0aW9uYWw8RHJhd0dseXBocz4gRHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKGdseXBocy0+c2l6ZSgpICE9IGFkdmFuY2VzLT5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJv
dW5kczsKKyAgICBkZWNvZGVyID4+IGJvdW5kczsKKyAgICBpZiAoIWJvdW5kcykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxvY2FsQW5j
aG9yOwogICAgIGRlY29kZXIgPj4gbG9jYWxBbmNob3I7CiAgICAgaWYgKCFsb2NhbEFuY2hvcikK
QEAgLTEwMDcsNyArMTAxMyw3IEBAIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc21vb3RoaW5nTW9kZSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBmb250LT5nZXQoKSwgV1RGTW92
ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqbG9jYWxBbmNob3IsICpzbW9vdGhpbmdN
b2RlIH19OworICAgIHJldHVybiB7eyAqZm9udElkZW50aWZpZXIsIFdURk1vdmUoKmdseXBocyks
IFdURk1vdmUoKmFkdmFuY2VzKSwgKmJvdW5kcywgKmxvY2FsQW5jaG9yLCAqc21vb3RoaW5nTW9k
ZSB9fTsKIH0KIAogY2xhc3MgRHJhd0ltYWdlQnVmZmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA2NGQ0YTVhY2ZhMmMwMDU1NjdhYmU1OWFhYzFmMGJl
NzM2OWJhZTQ4Li4wNjkzNzQ2ZjA4MDczYTBiZmNiNGI4YTcxNDZlMzFlODdiOTNhMWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xNzIsNiArMTcyLDE0
IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJh
d0dseXBocyhmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJhd0dyYXBoc0l0ZW1X
aXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBn
bHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50
LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3Ro
aW5nTW9kZSkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+Y2Fj
aGVGb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
Rm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZv
bnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSk7
Cit9CisKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
Ly8gRklYTUU6IENhbGwgaW1hZ2VCdWZmZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpIHdoZW4gPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIxODc3Mz4gaXMgZml4ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAppbmRleCAzZWM2N2QzNGMxYmNmZmNjOWI0ODkxY2I5M2Q4MGJmNGYw
NDE5NzZkLi5iNDAzYWVhNGZiYmEzYzI1MjIyMGRlOGMwYWUyZjRjYWFjYzVlMzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVm
ZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGNhY2hl
Rm9udChGb250JikgeyB9CiAgICAgfTsKIAogICAgIHZvaWQgZmx1c2hDb250ZXh0KEZsdXNoSWRl
bnRpZmllciBpZGVudGlmaWVyKSB7IGFwcGVuZDxGbHVzaENvbnRleHQ+KGlkZW50aWZpZXIpOyB9
CkBAIC0xMDYsNiArMTA3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkg
b3ZlcnJpZGU7CiAKKyAgICB2b2lkIGFwcGVuZERyYXdHcmFwaHNJdGVtV2l0aENhY2hlZEZvbnQo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKKwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRl
cm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDZjZmY3YTExMzEzMjA1YTY0ZjM2N2ZmODFl
OWNlNWI1OWUyZmM5MWEuLjQyZTE0MTJlNTQ4NDZiMGEyYmQ4NDU2M2ViYWY2Mjk2OGE1NTNiN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTM0LDExICsz
NCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAot
UmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVy
cywgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIERlbGVnYXRlKiBkZWxl
Z2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFn
ZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBjb25zdCBG
b250UmVuZGVyaW5nUmVzb3VyY2VNYXAqIGZvbnRzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAg
ICAgLCBtX2ltYWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1hZ2VCdWZmZXJzIDogbV9kaXNw
bGF5TGlzdC5pbWFnZUJ1ZmZlcnMoKSkKICAgICAsIG1fbmF0aXZlSW1hZ2VzKG5hdGl2ZUltYWdl
cyA/ICpuYXRpdmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2ZUltYWdlcygpKQorICAgICwg
bV9mb250cyhmb250cyA/ICpmb250cyA6IG1fZGlzcGxheUxpc3QuZm9udHMoKSkKICAgICAsIG1f
ZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC02OSw2ICs3MCwxOCBAQCBpbmxpbmUgc3RhdGlj
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0
ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKK3RlbXBsYXRl
PGNsYXNzIFQ+CitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRS
ZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBhdXRv
JiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CisgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIg
PSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOworICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMu
Z2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4
dCwgKmZvbnQpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1
cm4gcmVzb3VyY2VJZGVudGlmaWVyOworfQorCiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxh
eVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVy
OjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1f
ZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIG1fY29udGV4dCkpCkBAIC05Miw2ICsxMDUsMTIgQEAgc3Rk
OjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+PiBSZXAKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQgfTsKICAgICB9CiAKKyAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Cisg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZv
bnRJdGVtPERyYXdHbHlwaHM+KG1fY29udGV4dCwgbV9mb250cywgaXRlbSkpCisgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1v
dmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKICAgICBpZiAoaXRlbS5pczxE
cmF3UGF0dGVybj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwg
bV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRl
eCBjNDZjMWUzOTVlMDFmMDIyODI4OTgwNjMyOTZiYmY2Nzk4NzA1ZTE3Li5kNDE0YTZmYTA1MDJl
MTZmNzc5ZmJhNjJkMjI0MTk2MzQyM2ViMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNw
bGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3Qm
LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VI
YXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCogPSBudWxs
cHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UmVwbGF5ZXIo
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CkBA
IC03NSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxh
eUxpc3Q7CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVyczsKICAg
ICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOworICAgIGNvbnN0IEZv
bnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgbV9mb250czsKICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBhM2QyNWVkZWVmYjI5NGQ3NGNh
MzY1ZDY0ZjkxYjY2MjYyMjVlNGU3Li4yNDU4M2FlMDcwMWNlYjNiMWFmYmJkZjk0ZjBlYTYwMTdi
NTk0MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgRGlz
cGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29u
c3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICAgICAgZGlzcGxheUxpc3QsCiAgICAgICAgICZyZW1v
dGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCksCiAgICAgICAgICZyZW1vdGVSZXNvdXJj
ZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCksCisgICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCku
Zm9udHMoKSwKICAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZQogICAgIH0ucmVwbGF5KCk7CiB9CkBA
IC0yOTMsNiArMjk0LDE5IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRp
dmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuCiAgICAgICAgIHdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBX
VEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQoreworICAgIGF1dG8gaWRlbnRpZmllciA9
IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7CisgICAgaWYgKG1fcGVuZGluZ1dha2V1
cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChpZGVudGlm
aWVyKSkKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1f
cGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7Cit9CisKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVsZXRlQWxsRm9udHMoKQoreworICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5kZWxldGVBbGxGb250cygpOworfQorCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3VyY2VD
YWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDczNzE3OWNlOGMwY2NmOGI3OWQ4NTBhMDE3MWIwNzFi
OWVmY2RiYmUuLjdhNWEwYjZhOThlYmZmMWJiY2MxOTcxYjcwZGUxMTAwYTliOTlkYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaApAQCAtMTEwLDYgKzExMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJn
dW1lbnRzJik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmKTsKKyAg
ICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0
ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCBhY2UzODZjMjM4NzBk
YTU5MDY5NTFiMmNlNDIwMzRiYTk0MmY5ZDEzLi4yMGY0ZTQ3OGUyNzI5YzYxM2E5NGQ2MjFmZGVl
MjQwMzUwZjNlNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpA
QCAtMjcsNiArMjcsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJl
ZkNvdW50ZWQgewogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0IFdlYktpdDo6
R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAgIEdldEltYWdl
RGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdl
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIENh
Y2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkKKyAgICBEZWxldGVBbGxGb250cygpCiAg
ICAgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVz
dGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRi
N2VkNTZkYzRiMmMzNjkuLjgxZGRlMGJmZmNmMGJkNmNjMWMyOGU1ZGQyNDYzNzRiMzQ2NDYyNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQ4LDEyICs0OCwyNSBAQCB2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKK3Zv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCit7Cisg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRzLmFkZChmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKSwgV1RGTW92ZShmb250KSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpk
ZWxldGVBbGxGb250cygpCit7CisgICAgbV9mb250cy5jbGVhcigpOworfQorCiB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChtX2ltYWdl
QnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2ZvbnRzLnJlbW92ZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8gQ2FjaGluZyB0
aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcg
aXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCAxZjIx
MDU4ZTMzYTE4NzViYmQ3ZjcyYzAxMjNjNjUwM2VjNzk5YjBiLi4yY2VkOTA5ZjQ4MTEwYzY2NjU2
ZGUxYmZlMzgxMWRiYWJhYWE5ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2
ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aD4KQEAgLTQzLDE0ICs0NCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVy
KFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIq
IGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7
CisgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOworICAgIHZvaWQgZGVs
ZXRlQWxsRm9udHMoKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwotICAgIAorCiAgICAgY29uc3QgV2ViQ29yZTo6
SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
QnVmZmVyczsgfQogICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZl
SW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9m
b250czsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2lt
YWdlQnVmZmVyczsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFn
ZXM7CisgICAgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwIG1fZm9udHM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0ZvbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0ZvbnRS
ZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTFlOWQ3Y2UwZTMwOGYzOGRkMmZlZjBiNzljMWIzMTQ2
ZGE0ZjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9u
dFJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBG
b250OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBJUEMgeworCit1c2lu
ZyBGb250UmVmZXJlbmNlID0gUmVmPFdlYkNvcmU6OkZvbnQ+OworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDg5ZmI4YWJh
ZjlhZWNlMDdjNjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIuLjc5MWI5M2FlNzQ2MGZjNGY4N2FmZGM5
ZGM2ZDQyYzU2MDFiNjRhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQpAQCAtMjA0LDYgKzIwNCw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfbmFt
ZXNwYWNlKG5hbWVzcGFjZSwga2luZF9hbmRfdHlwZXMpOgogZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKICAgICAgICAg
J0lQQzo6RGF0YVJlZmVyZW5jZScsCisgICAgICAgICdJUEM6OkZvbnRSZWZlcmVuY2UnLAogICAg
ICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3Ry
aW5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDAzMjUyMTFhOWFkMDE3YmRkMmFkYzVlNjE3YjgzZDdmOTdmOTVlMzcuLmQ3NjY1NGI2
NGY2MmEwOTFjZDkzNmRmYzAzZjAwNGFkZmMxOTljYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTEwNSw2ICsxMTA1LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWY8V2ViQ29yZTo6Rm9udD4KICAgICBlbmNvZGVyIDw8IChmb250LT5pc0ludGVyc3RpdGlh
bCgpID8gRm9udDo6SW50ZXJzdGl0aWFsOjpZZXMgOiBGb250OjpJbnRlcnN0aXRpYWw6Ok5vKTsK
ICAgICBlbmNvZGVyIDw8IGZvbnQtPnZpc2liaWxpdHkoKTsKICAgICBlbmNvZGVyIDw8IChmb250
LT5pc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkgPyBGb250OjpPcmllbnRhdGlvbkZhbGxiYWNr
OjpZZXMgOiBGb250OjpPcmllbnRhdGlvbkZhbGxiYWNrOjpObyk7CisgICAgZW5jb2RlciA8PCBm
b250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKICAgICAvLyBJbnRlbnRpb25hbGx5
IGRvbid0IGVuY29kZSBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2sgYmVjYXVzZSBpdCBkb2Vz
bid0IGFmZmVjdCBkcmF3R2x5cGhzKCkuCiAKICAgICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2Rl
ciwgZm9udCk7CkBAIC0xMTMyLDExICsxMTMzLDE2IEBAIE9wdGlvbmFsPFJlZjxGb250Pj4gQXJn
dW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IWlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2suaGFzVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
cmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVy
c291Y2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyLmhh
c1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBhdXRvIHBsYXRm
b3JtRGF0YSA9IGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyKTsKICAgICBpZiAoIXBsYXRmb3Jt
RGF0YS5oYXNWYWx1ZSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGEudmFsdWUoKSwgb3JpZ2luLnZhbHVlKCksIGlz
SW50ZXJzdGl0aWFsLnZhbHVlKCksIHZpc2liaWxpdHkudmFsdWUoKSwgaXNUZXh0T3JpZW50YXRp
b25GYWxsYmFjay52YWx1ZSgpKTsKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0
YS52YWx1ZSgpLCBvcmlnaW4udmFsdWUoKSwgaXNJbnRlcnN0aXRpYWwudmFsdWUoKSwgdmlzaWJp
bGl0eS52YWx1ZSgpLCBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLnZhbHVlKCksIHJlbmRlcmlu
Z1JlcnNvdWNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJzb3I+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNzQ2MDU0ZWQx
MDliNGIyOWE2ZGY1OTkyZGEwOWNjNzA0Y2Y5MjAzLi40Y2IyZDI5N2Q3Y2VhYTNlZWFhZjk3M2E2
YWRjMjU2NmQ2N2YyNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE1MjQsNiArMTUyNCw3IEBACiAJCTlCNTQ5OUIyMjM2MkE3RUMw
MERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NDk5QjAyMzYyQTdFQzAwREY4
QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUI1QkVDMjYyNDAwRjRBOTAwNzBD
NkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI0MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0
ZWd5LmggKi87IH07CiAJCTlCNUJFQzJBMjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaCAqLzsgfTsKKwkJOUJEOEFCNEEyNTgyMEU1MzAwNTM4NkY4IC8qIEZvbnRSZWZlcmVu
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDhB
QjQ5MjU4MjBFNTIwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggKi87IH07CiAJCTlCRjVFQzY0
MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJGNUVDNjMyNTQxMEU5OTAwOTg0RTc3IC8qIEpT
SVBDQmluZGluZy5jcHAgKi87IH07CiAJCTlFQzUzMkEzMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9s
b2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklkZW50aWZp
ZXIuaCAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZh
dGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlG
QjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ3ODUsNiArNDc4Niw3
IEBACiAJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlCRDhBQjQ5MjU4MjBFNTIwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUJGNUVDNjMyNTQxMEU5OTAwOTg0RTc3IC8qIEpTSVBDQmluZGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0lQQ0JpbmRpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25J
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEF1eGlsaWFyeVByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NzUxLDYgKzY3NTMsNyBAQAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNv
ZGVyLmggKi8sCiAJCQkJQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICov
LAogCQkJCUJDMDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggKi8sCisJCQkJOUJE
OEFCNDkyNTgyMEU1MjAwNTM4NkY4IC8qIEZvbnRSZWZlcmVuY2UuaCAqLywKIAkJCQk0MTUxRTVD
MzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlDMENFNzJB
QzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5oICovLAogCQkJCTFDOUFGMzYxMjQx
MzREMjMwMEQzRUMwMiAvKiBJbWFnZURhdGFSZWZlcmVuY2UuaCAqLywKQEAgLTExMzkwLDYgKzEx
MzkzLDcgQEAKIAkJCQkxQTkwQzFGNDEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0QTU5MThCODExNzQwMDdCRENCNiAvKiBGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U4MUQ4RDEzMTlGN0VG
MDAyNDE5MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTlCRDhBQjRBMjU4MjBF
NTMwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTE0RjhF
MjFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFMDBENjExODMxNzkyMTAwMDg3REQ3IC8qIEZyYW1lTG9hZFN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzEyMUU4NDI0MTAyMDhEMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAxMWIxNGI5YzFh
NDdlMjM0ZjViOTBiZTliNDczMmM2NGZhYzUzZjc5Li5lYWNhMDI1YjMzYmU5NmE1MjVmODM1Njc4
MWNlZGNhNmI5YzIzODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjI5LDYg
KzIyOSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7
CiAgICAgfQogCisgICAgdm9pZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYgZm9udCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkoKS5jYWNoZUZvbnQoZm9udCk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRl
eCA5MzkxNmQ4NTkzYTU1Y2RlNjM1MjFjMDE0YjViYmE3NWUyYTU4ZWMzLi40ZjA5Yjc3YzUwMjY2
OGUxYjk1OWMxODc2NjRiNDU0MTkyMTUwZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCkBAIC0xNTQsNiArMTU0LDE2IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRp
dmVJbWFnZShoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmIGZvbnQpCit7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVGb250KFdURk1vdmUoZm9udCkpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRzKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpEZWxldGVBbGxGb250cygpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
PT0gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBlMDgxNWRmNzU4ZWE1MjI2YzhhZmE2NWNk
MjZlNjlhZGFmOTQwMDdmLi5kM2U0NzQ5ZjVjYWU0OWZmNTg4NjllYTNjYmE0OTkxZjFmN2EzMzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTgzLDYgKzgzLDgg
QEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShX
ZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpG
b250PiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CiAgICAgdm9pZCByZWxlYXNlUmVt
b3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAg
IGJvb2wgd2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDZjN2E1MTM3ODU1MjFlMzkyYThhYTM3NDA3Mjlh
NWRjMDc0Njg5NWUuLjBjZTk0NWU3MDVkOTgyNzBmZmIwYzkxMGY4YTVhYWMxZTAxN2FmNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTEwMSw2ICsxMDEsMjAgQEAg
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmIGltYWdlKQogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZl
SW1hZ2UoaGFuZGxlLCBpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CiB9CiAK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUZvbnQoRm9udCYgZm9udCkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fZm9udElkZW50aWZpZXJUb0xhc3RSZW5kZXJpbmdVcGRhdGVW
ZXJzaW9uTWFwLmVuc3VyZShmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0g
eworICAgICAgICByZXR1cm4gMDsKKyAgICB9KTsKKyAgICBhdXRvJiBsYXN0VmVyc2lvbiA9IHJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKGxhc3RWZXJzaW9uICE9IG1fY3VycmVudFJl
bmRlcmluZ1VwZGF0ZVZlcnNpb24pIHsKKyAgICAgICAgbGFzdFZlcnNpb24gPSBtX2N1cnJlbnRS
ZW5kZXJpbmdVcGRhdGVWZXJzaW9uOworICAgICAgICArK21fbnVtYmVyT2ZGb250c1VzZWRJbkN1
cnJlbnRSZW5kZXJpbmdVcGRhdGU7CisgICAgfQorICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVGb250KG1ha2VSZWYo
Zm9udCkpOworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgaWYgKCFtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKQEAgLTExMCw2ICsxMjQsMzQgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmUKICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKCkKK3sKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1pbmltdW1SZW5kZXJpbmdVcGRhdGVDb3VudFRvS2VlcEZvbnRB
bGl2ZSA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWluaW11bUZyYWN0aW9uT2ZV
bnVzZWRGb250Q291bnRUb1RyaWdnZXJSZW1vdmFsID0gMC4yNTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG1heGltdW1VbnVzZWRGb250Q291bnRUb1NraXBSZW1vdmFsID0gMDsKKwor
ICAgIHVuc2lnbmVkIHRvdGFsRm9udENvdW50ID0gbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRl
cmluZ1VwZGF0ZVZlcnNpb25NYXAuc2l6ZSgpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fbnVtYmVy
T2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUgPD0gdG90YWxGb250Q291bnQpOwor
ICAgIHVuc2lnbmVkIHVudXNlZEZvbnRDb3VudCA9IHRvdGFsRm9udENvdW50IC0gbV9udW1iZXJP
ZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZTsKKyAgICBpZiAodW51c2VkRm9udENv
dW50IDwgbWluaW11bUZyYWN0aW9uT2ZVbnVzZWRGb250Q291bnRUb1RyaWdnZXJSZW1vdmFsICog
dG90YWxGb250Q291bnQgJiYgdW51c2VkRm9udENvdW50IDw9IG1heGltdW1VbnVzZWRGb250Q291
bnRUb1NraXBSZW1vdmFsKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGl0ZW0g
OiBtX2ZvbnRJZGVudGlmaWVyVG9MYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvbk1hcCkgeworICAg
ICAgICBpZiAobV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUgPj0g
bWluaW11bVJlbmRlcmluZ1VwZGF0ZUNvdW50VG9LZWVwRm9udEFsaXZlKQorICAgICAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKGl0ZW0u
a2V5KTsKKyAgICB9CisKKyAgICArK21fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNpb247Cisg
ICAgbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSA9IDA7Cit9CisK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTWVtb3J5KCkKK3sKKyAgICBt
X2ZvbnRJZGVudGlmaWVyVG9MYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvbk1hcC5jbGVhcigpOwor
ICAgIG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUgPSAwOworICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmRlbGV0ZUFsbEZvbnRzKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXggNjg4ZjMzNTE4MWM0ZTU0MDIwYWNjOThk
NWI3Y2Y0MmRhNTI4NjgyZC4uNjEwNThjMzU3NTE3MjA5ZjQwM2UzN2Y0MTJkODE2MDFkZTg4YzQz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRm9u
dDsKIGNsYXNzIEltYWdlQnVmZmVyOwogfQogCkBAIC01Myw2ICs1NCwxMCBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKICAgICBj
b25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2VCdWZmZXJzOyB9CiAKKyAgICB2b2lkIGNhY2hlRm9udChXZWJDb3JlOjpGb250Jik7Cisg
ICAgdm9pZCBkaWRGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgcmVsZWFzZU1l
bW9yeSgpOworCiBwcml2YXRlOgogICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hN
YXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPj47CiAgICAgCkBAIC02MCw2ICs2NSwxMSBAQCBwcml2YXRlOgogCiAgICAg
SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1h
cCBtX25hdGl2ZUltYWdlczsKKworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCB1aW50NjRfdD4gbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1Vw
ZGF0ZVZlcnNpb25NYXA7CisgICAgdW5zaWduZWQgbV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVu
dFJlbmRlcmluZ1VwZGF0ZSB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRSZW5kZXJpbmdV
cGRhdGVWZXJzaW9uIHsgMSB9OworCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDYxODc5OTMwY2Y3YTg5NjhjODc4OTQy
YzZjNTU5MDJkMGU4OTc0Yy4uODU0OWQ5ZTQ5YTZlZWZjODc2ODkwNTg4YTZjZmQ5MDU4YmI3MTY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTM4MDMsOSArMzgwMyw2IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2V0VXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0lu
R1BVUHJvY2Vzcyk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vz
c0ZvckRPTVJlbmRlcmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyAmJiBEcmF3aW5n
QXJlYTo6c3VwcG9ydHNHUFVQcm9jZXNzUmVuZGVyaW5nKG1fZHJhd2luZ0FyZWFUeXBlKSk7CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hv
dWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzKTsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBv
cnQgd2ViIGZvbnRzIGluIHRoZSBHUFUgcHJvY2Vzcy4KLSAgICBpZiAobV9zaG91bGRSZW5kZXJE
T01JbkdQVVByb2Nlc3MpCi0gICAgICAgIHNldHRpbmdzLnNldERvd25sb2FkYWJsZUJpbmFyeUZv
bnRzRW5hYmxlZChmYWxzZSk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJlbmRlcldlYkdMSW5H
UFVQcm9jZXNzKTsKICNlbmRpZgpAQCAtMzkyOCw2ICszOTI1LDE4IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlUmVuZGVyaW5nKCkKIHZvaWQgV2ViUGFnZTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUo
T3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzKQogewogICAgIG1f
cGFnZS0+ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoZmxhZ3MpOworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKyAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5k
aWRGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZTo6
cmVsZWFzZU1lbW9yeShDcml0aWNhbCkKK3sKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAg
aWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZU1lbW9y
eSgpOworI2VuZGlmCiB9CiAKIFdlYkluc3BlY3RvciogV2ViUGFnZTo6aW5zcGVjdG9yKExhenlD
cmVhdGlvblBvbGljeSBiZWhhdmlvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCBmYTEzMzU0ZGRmZjIzMjg0NTBiOWM3MmNkYWM0ZGNmN2FlNDU0YjM0
Li5lYjI4MDQ0ZDk5MWI4ZmM4YjhkZTUzMWY1YzE5YTdiNDNiNmQ3YTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTYsNiArMTU2LDEwIEBAIE9C
SkNfQ0xBU1MgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdDsKIAogI2RlZmluZSBFTkFCTEVf
VklFV1BPUlRfUkVTSVpJTkcgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorbmFtZXNwYWNlIFdURiB7
CitlbnVtIGNsYXNzIENyaXRpY2FsIDogdWludDhfdDsKK30KKwogbmFtZXNwYWNlIEFQSSB7CiBj
bGFzcyBBcnJheTsKIH0KQEAgLTM3MCw2ICszNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVSZW5kZXJpbmcoKTsKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNl
dDxXZWJDb3JlOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAKKyAgICB2b2lkIHJl
bGVhc2VNZW1vcnkoV1RGOjpDcml0aWNhbCk7CisKICAgICBlbnVtIGNsYXNzIExhenlDcmVhdGlv
blBvbGljeSB7IFVzZUV4aXN0aW5nT25seSwgQ3JlYXRlSWZOZWVkZWQgfTsKIAogICAgIFdlYklu
c3BlY3RvciogaW5zcGVjdG9yKExhenlDcmVhdGlvblBvbGljeSA9IExhenlDcmVhdGlvblBvbGlj
eTo6Q3JlYXRlSWZOZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDRjYTA5N2EwYmI4NTEzNDI4MGVmNDJkZGFmNmU4OTlmMDEwYWFmOTIuLjAzNzVmZDVj
Y2JmMTgwZjBiODE5MDk3NzE1ZDNiN2RkZGJlMzdlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3Nyw2ICszNzcsOCBAQCB2b2lkIFdlYlByb2Nlc3M6Omlu
aXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogICAgICAgICAgICAgYXV0byBtYWludGFpbkJhY2tGb3J3YXJkQ2FjaGUgPSBtX2lzU3Vz
cGVuZGluZyA/IFdlYkNvcmU6Ok1haW50YWluQmFja0ZvcndhcmRDYWNoZTo6WWVzIDogV2ViQ29y
ZTo6TWFpbnRhaW5CYWNrRm9yd2FyZENhY2hlOjpObzsKICAgICAgICAgICAgIGF1dG8gbWFpbnRh
aW5NZW1vcnlDYWNoZSA9IG1faXNTdXNwZW5kaW5nICYmIG1faGFzU3VzcGVuZGVkUGFnZVByb3h5
ID8gV2ViQ29yZTo6TWFpbnRhaW5NZW1vcnlDYWNoZTo6WWVzIDogV2ViQ29yZTo6TWFpbnRhaW5N
ZW1vcnlDYWNoZTo6Tm87CiAgICAgICAgICAgICBXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KGNyaXRp
Y2FsLCBzeW5jaHJvbm91cywgbWFpbnRhaW5CYWNrRm9yd2FyZENhY2hlLCBtYWludGFpbk1lbW9y
eUNhY2hlKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMo
KSkKKyAgICAgICAgICAgICAgICBwYWdlLT5yZWxlYXNlTWVtb3J5KGNyaXRpY2FsKTsKICAgICAg
ICAgfSk7CiAjaWYgRU5BQkxFKFBFUklPRElDX01FTU9SWV9NT05JVE9SKQogICAgICAgICBtZW1v
cnlQcmVzc3VyZUhhbmRsZXIuc2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKHRydWUp
OwpAQCAtMTM4NCw4ICsxMzg2LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2CiAgICAgICAg
IHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci0+cHJvY2Vzc1dpbGxTdXNwZW5kKCk7CiAjZW5k
aWYKIAotICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlcikKKyAgICBpZiAo
IW1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIpIHsKICAgICAgICAgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5yZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNo
cm9ub3VzOjpZZXMpOworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVz
KCkpCisgICAgICAgICAgICBwYWdlLT5yZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMpOworICAg
IH0KIAogICAgIGZyZWV6ZUFsbExheWVyVHJlZXMoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>