<?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>240422</bug_id>
          
          <creation_ts>2022-05-14 13:40:19 -0700</creation_ts>
          <short_desc>Avoid the overhead of DrawGlyphsRecorder when drawing cached glyph buffers</short_desc>
          <delta_ts>2022-06-09 13:58:33 -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>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240527</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1869032</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 13:40:19 -0700</bug_when>
    <thetext>Avoid the overhead of DrawGlyphsRecorder when drawing cached glyph buffers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869033</commentid>
    <comment_count>1</comment_count>
      <attachid>459362</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 14:00:07 -0700</bug_when>
    <thetext>Created attachment 459362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869035</commentid>
    <comment_count>2</comment_count>
      <attachid>459363</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 15:05:06 -0700</bug_when>
    <thetext>Created attachment 459363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869038</commentid>
    <comment_count>3</comment_count>
      <attachid>459364</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 15:59:06 -0700</bug_when>
    <thetext>Created attachment 459364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869051</commentid>
    <comment_count>4</comment_count>
      <attachid>459371</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 19:42:10 -0700</bug_when>
    <thetext>Created attachment 459371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869052</commentid>
    <comment_count>5</comment_count>
      <attachid>459372</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 19:55:35 -0700</bug_when>
    <thetext>Created attachment 459372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869053</commentid>
    <comment_count>6</comment_count>
      <attachid>459373</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 20:23:26 -0700</bug_when>
    <thetext>Created attachment 459373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869054</commentid>
    <comment_count>7</comment_count>
      <attachid>459374</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 20:49:33 -0700</bug_when>
    <thetext>Created attachment 459374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869055</commentid>
    <comment_count>8</comment_count>
      <attachid>459375</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-14 21:56:06 -0700</bug_when>
    <thetext>Created attachment 459375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869103</commentid>
    <comment_count>9</comment_count>
      <attachid>459375</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-05-15 15:56:17 -0700</bug_when>
    <thetext>Comment on attachment 459375
Patch

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

&gt; Source/WebCore/ChangeLog:25
&gt; +          image drawing, or any double glyph drawing (which can happen with some kind of fonts),

In what situations do we get this &quot;double glyph drawing&quot;, and why does it mean we can&apos;t avoid using DrawGlyphsRecorder? Is this for glyphs with multiple, colored outlines, or something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869580</commentid>
    <comment_count>10</comment_count>
      <attachid>459375</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-05-16 22:44:28 -0700</bug_when>
    <thetext>Comment on attachment 459375
Patch

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

I guess if you want to do it this way it&apos;s fine, but I guess I just wanted to make sure that you thought about doing this in a way that abided by layering a bit more strictly.

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +          image drawing, or any double glyph drawing (which can happen with some kind of fonts),
&gt; 
&gt; In what situations do we get this &quot;double glyph drawing&quot;, and why does it mean we can&apos;t avoid using DrawGlyphsRecorder? Is this for glyphs with multiple, colored outlines, or something else?

I believe Simon is talking about COLRv0 glyphs here.

&gt; Source/WebCore/ChangeLog:26
&gt; +          and GraphicsContext::drawGlyphs() returns a DidDecomposeGlyphs result indicating this.

GraphicsContext seems like the wrong level of abstraction here. Is there really no displaylist-specific way to do this?

&gt; Source/WebCore/ChangeLog:27
&gt; +        * DisplayList gains an optional&lt;bool&gt; indicating whether any glyph decomposition happened

DisplayList gets the optional&lt;bool&gt;, rather than the DisplayListReplayer? Shouldn&apos;t DisplayLists be immutable once they are recorded?

&gt; Source/WebCore/ChangeLog:30
&gt; +          on the cached display list when glyph decomposition was requested by the destination

Did you consider adding a new entry point to the Recorder? Would such a thing even work?

&gt; Source/WebCore/ChangeLog:42
&gt; +        Display list logging currently dumps resource identifiers, which is a problem for 
&gt; +        layout test because they are&apos;t necessarily stable. So we plumb through a IncludesResourceIdentifiers
&gt; +        flag, which needs to propagate into all the display item logging functions, requiring them to
&gt; +        converted from operator&lt;&lt;(TextStream&amp;, ...) to dumpItem() functions that take a flags argument.

Surely this could have been done as a separate patch 🤔

&gt; Source/WebKit/ChangeLog:7
&gt; +

Didn&apos;t you tell me years ago not to duplicate ChangeLog prose?

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:295
&gt; +    WEBCORE_EXPORT virtual DidDecomposeGlyphs drawGlyphs(const Font&amp;, const GlyphBufferGlyph*, const GlyphBufferAdvance*, unsigned numGlyphs, const FloatPoint&amp;, FontSmoothingMode, std::optional&lt;bool&gt; needsGlyphDecomposition = { });

I guess I said this in an earlier comment but this feels like a layering violation.

&gt; Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:408
&gt; +    if (m_didDrawImage || m_outputGlyphCount != numGlyphs)

I think you should be trying to determine if the decomposition process is the identity function. E.g. consider a COLRv0 glyph that has a single layer; the number of glyphs will be equal and the drawImage flag will be false, but the decomposition process would still have to happen (in the web process).

&gt; Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:409
&gt; +        return GraphicsContext::DidDecomposeGlyphs::Yes;

This name is a little misleading. You&apos;re not returning information about whether or not glyphs were decomposed - because all glyphs will get decomposed; instead, you&apos;re returning information about whether the decomposition was the identity function.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:691
&gt; -TextStream&amp; operator&lt;&lt;(TextStream&amp; ts, const Translate&amp; item)
&gt; +void dumpItem(TextStream&amp; ts, const Translate&amp; item, OptionSet&lt;AsTextFlag&gt;)

Definitely feels like you put 2 patches inside a single patch

&gt; LayoutTests/TestExpectations:5112
&gt; +[ Release ] fast/text/glyph-display-list-emoji.html [ Skip ]
&gt; +[ Release ] fast/text/glyph-display-list-svg-font.html [ Skip ]

Did you forget to add the test files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869696</commentid>
    <comment_count>11</comment_count>
      <attachid>459501</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-17 08:55:24 -0700</bug_when>
    <thetext>Created attachment 459501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870962</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-21 13:41:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/93710477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1875102</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-06-09 13:58:33 -0700</bug_when>
    <thetext>Subsumed by bug 240497.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459362</attachid>
            <date>2022-05-14 14:00:07 -0700</date>
            <delta_ts>2022-05-14 15:05:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514140006.patch</filename>
            <type>text/plain</type>
            <size>4815</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNWM1MjUzNjk5MGM0ZGY5NmYxNDNmMTMzMzAwMzZlODA4MzAxNGVlLi5i
NTM2ZjhkMTg0MjZjMjU5YjljNzBjYmMwMDgxNTgwMDdhOWQzNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC00
LDcgKzQsNyBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQwNDIyCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0gICAgICAg
IAorCiAgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVudGx5LCBUZXh0UGFpbnRl
ciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdHbHlwaAogICAgICAgICBp
dGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0ZW1zIGZyb20gdGhlIGNh
Y2hlIGluCiAgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoKS4K
QEAgLTMwLDcgKzMwLDE2IEBACiAgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qg
d2hlbiBnbHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9u
CiAgICAgICAgICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eSkuCiAgICAgICAgIAotICAgICAgICAKKyAgICAgICAgSW4gb3JkZXIg
dG8gdGVzdCBnbHlwaCBkZWNvbXBvc2l0aW9uLCB3ZSBlbmhhbmNlIHRoZSBleGlzdGluZyBJbnRl
cm5hbHMgQVBJIHdpdGggYQorICAgICAgICBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dM
WVBIUyBmbGFnLCB3aGljaCB0dXJucyBpbnRvIGEgRGlzcGxheUxpc3Q6OkFzVGV4dCBvcHRpb24u
CisgICAgICAgIFRleHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2Rl
QXNUZXh0KCkgcmVzcG9uZHMgdG8gdGhpcyBieSByZXBsYXlpbmcgdGhlCisgICAgICAgIGRpc3Bs
YXkgbGlzdCB0aHJvdWdoIGEgRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMgcmVjb3JkZXIsIGdl
bmVyYXRpbmcgYSBuZXcgZGlzcGxheSBsaXN0CisgICAgICAgIHdpdGggZGVjb21wb3NlZCBnbHlw
aHMuCisKKyAgICAgICAgRGlzcGxheSBsaXN0IGxvZ2dpbmcgY3VycmVudGx5IGR1bXBzIHJlc291
cmNlIGlkZW50aWZpZXJzLCB3aGljaCBpcyBhIHByb2JsZW0gZm9yIAorICAgICAgICBsYXlvdXQg
dGVzdCBiZWNhdXNlIHRoZXkgYXJlJ3QgbmVjZXNzYXJpbHkgc3RhYmxlLiBTbyB3ZSBwbHVtYiB0
aHJvdWdoIGEgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzCisgICAgICAgIGZsYWcsIHdoaWNo
IG5lZWRzIHRvIHByb3BhZ2F0ZSBpbnRvIGFsbCB0aGUgZGlzcGxheSBpdGVtIGxvZ2dpbmcgZnVu
Y3Rpb25zLCByZXF1aXJpbmcgdGhlbSB0bworICAgICAgICBjb252ZXJ0ZWQgZnJvbSBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCAuLi4pIHRvIGR1bXBJdGVtKCkgZnVuY3Rpb25zIHRoYXQgdGFrZSBh
IGZsYWdzIGFyZ3VtZW50LgogCiAgICAgICAgIFRlc3RzOiBmYXN0L3RleHQvZ2x5cGgtZGlzcGxh
eS1saXN0LWVtb2ppLmh0bWwKICAgICAgICAgICAgICAgIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5
LWxpc3Qtc3ZnLWZvbnQuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MWE4N2Y0NWVmNjEzZmRiNWQ0NDlkYzY2
MTlmYzM5YTI1Zjg2NjcxLi5kMDY4NGJkNjc2NGQxZDU3OWE4MzVjZjQ0NTNlNGM2ZGYzNDMxODA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtNSw2ICs1LDQyIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCiAKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50bHksIFRl
eHRQYWludGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0dseXBoCisg
ICAgICAgIGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRlbXMgZnJv
bSB0aGUgY2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNN
YXJrcygpLgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBnZW5lcmFs
IGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFu
aXNtLiBJbiBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BV
IFByb2Nlc3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQorICAgICAg
ICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNSZWNvcmRl
ciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRv
IGxvd2VyIGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2luZyBhIGN1
c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1lYXN1cmFi
bGUKKyAgICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3ZSBjYW4u
CisgICAgICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIg
b3ZlcmhlYWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAgICAgICAg
Z2x5cGggYnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxp
c3QgdG8gc2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2Vy
ZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgorICAg
ICAgICAKKyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8gZGV0ZWN0
IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAgICBpbWFn
ZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBwZW4g
d2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdHbHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0
aW5nIHRoaXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4g
aW5kaWNhdGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCisgICAg
ICAgICAgb24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0
aW9uKCkKKyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGdseXBoIGRl
Y29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgICBj
b250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5KS4KKyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3Np
dGlvbiwgd2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKKyAgICAg
ICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMg
aW50byBhIERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFpbnRlcjo6
Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRo
aXMgYnkgcmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBhIERlY29u
c3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRpc3BsYXkg
bGlzdAorICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERpc3BsYXkg
bGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywgd2hpY2gg
aXMgYSBwcm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5IGFyZSd0
IG5lY2Vzc2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVzUmVzb3Vy
Y2VJZGVudGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdhdGUgaW50
byBhbGwgdGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5nIHRoZW0g
dG8KKyAgICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgLi4uKSB0
byBkdW1wSXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4KKwogICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6
CiAgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdHbHlwaHNX
aXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459363</attachid>
            <date>2022-05-14 15:05:06 -0700</date>
            <delta_ts>2022-05-14 16:05:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514150505.patch</filename>
            <type>text/plain</type>
            <size>92588</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">RnJvbSAyOWZiZmQ3YzEzZDQ0NThkMzdkNjE5OGYxNjgyNTU2YmU0NTY1MDM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBGcmFzZXIgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CkRhdGU6IFNhdCwgMTQgTWF5IDIwMjIgMTU6MDI6MDIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBB
dm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2luZyBjYWNo
ZWQKIGdseXBoIGJ1ZmZlcnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MDQyMgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViQ29yZToKCldo
ZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVudGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxh
eSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdHbHlwaAppdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0
Q2FjaGUsIGFuZCB1c2VzIGl0ZW1zIGZyb20gdGhlIGNhY2hlIGluClRleHRQYWludGVyOjpwYWlu
dFRleHRPckVtcGhhc2lzTWFya3MoKS4KCkluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNt
LiBJbiBvcmRlciB0bwphdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nlc3MsIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQpEZWNvbnN0cnVjdERyYXdHbHlw
aHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBo
cygpIHVzZSBhCkRyYXdHbHlwaHNSZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQg
ZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCmFuZCBpbWFnZSBk
cmF3aW5nLCB1c2luZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBp
bnRyb2R1Y2VzIG1lYXN1cmFibGUKb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hl
biB3ZSBjYW4uCgpUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3ZlcmhlYWQg
ZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKZ2x5cGggYnVmZmVyLCB3ZSBj
YW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIg
YW55CmRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhp
cyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgoKKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZp
ZWQgdG8gZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKICBp
bWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBw
ZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAogIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdH
bHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRo
aXMuCiogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNhdGluZyB3aGV0
aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCiAgb24gcGxheWJhY2suCiogVGV4
dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRl
bXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkKICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlz
dCB3aGVuIGdseXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRp
b24KICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KCkluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwgd2UgZW5o
YW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKRElTUExBWV9MSVNUX0RFQ09N
UE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpB
c1RleHQgb3B0aW9uLgpUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0
Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQpkaXNwbGF5IGxp
c3QgdGhyb3VnaCBhIERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0
aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAp3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgoKRGlzcGxheSBs
aXN0IGxvZ2dpbmcgY3VycmVudGx5IGR1bXBzIHJlc291cmNlIGlkZW50aWZpZXJzLCB3aGljaCBp
cyBhIHByb2JsZW0gZm9yCmxheW91dCB0ZXN0IGJlY2F1c2UgdGhleSBhcmUndCBuZWNlc3Nhcmls
eSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmll
cnMKZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFnYXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0
ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmluZyB0aGVtIHRvCmNvbnZlcnRlZCBmcm9tIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0
YWtlIGEgZmxhZ3MgYXJndW1lbnQuCgpUZXN0czogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS5odG1sCiAgICAgICBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250
Lmh0bWwKCiogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6
CihXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CiogcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CiogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CiogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CihXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdHbHlwaHMpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQu
aDoKKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHA6CihXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgoo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UpOgooV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4pOgooV2ViQ29yZTo6RHJhd0dseXBoc1Jl
Y29yZGVyOjpkcmF3R2x5cGhzKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojphc1RleHQg
Y29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToK
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29t
cG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzZXRD
b250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbik6CiogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoKKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CihXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJ
dGVtKToKKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpkdW1wSXRlbUhhbmRsZSk6CiogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpvcGVyYXRvcjw8KToKKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHA6CihXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRy
YXdHbHlwaHMpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CiogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5RHJhd0dseXBocyk6CihXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CihXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyk6CihXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCk6Ciog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpkaXNwbGF5TGlzdEZv
ckVsZW1lbnQpOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1l
bnQpOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHRO
b2RlKToKKiB0ZXN0aW5nL0ludGVybmFscy5oOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKClNv
dXJjZS9XZWJLaXQ6CgpXaGVuIHRleHQgaXMgcGFpbnRpbmcgZnJlcXVlbnRseSwgVGV4dFBhaW50
ZXIgY2FjaGVzIGRpc3BsYXkgbGlzdHMgY29uc2lzdGluZyBvZiBEcmF3R2x5cGgKaXRlbXMgaW4g
R2x5cGhEaXNwbGF5TGlzdENhY2hlLCBhbmQgdXNlcyBpdGVtcyBmcm9tIHRoZSBjYWNoZSBpbgpU
ZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKCkuCgpJbmRlcGVuZGVudGx5LCB0
ZXh0IGRyYXdpbmcgaW4gZ2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxh
eSBsaXN0IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4gdGhl
IEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUKRGVj
b25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQpEcmF3R2x5cGhzUmVjb3JkZXIgdG8gZGV0ZWN0IHdo
ZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdpbmcgaW50byBsb3dlciBsZXZlbCBn
bHlwaAphbmQgaW1hZ2UgZHJhd2luZywgdXNpbmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3
R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBtZWFzdXJhYmxlCm92ZXJoZWFkLCBzbyB3ZSB3YW50
IHRvIGF2b2lkIGl0IHdoZW4gd2UgY2FuLgoKVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCmds
eXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlzcGxheSBsaXN0
IHRvIHNheSB3aGV0aGVyIGFueQpkcmF3R2x5cGhzKCkgY2FsbHMgdHJpZ2dlcmVkIGdseXBoIGRl
Y29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93czoKCiogRHJhd0dseXBoc1Jl
Y29yZGVyIGlzIG1vZGlmaWVkIHRvIGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0
cmlnZ2VyZWQgYW55CiAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5n
ICh3aGljaCBjYW4gaGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKICBhbmQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1
bHQgaW5kaWNhdGluZyB0aGlzLgoqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFsPGJvb2w+
IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5lZAogIG9u
IHBsYXliYWNrLgoqIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoKSBjYWxs
cyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpCiAgb24gdGhlIGNh
Y2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBnbHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQg
YnkgdGhlIGRlc3RpbmF0aW9uCiAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSkuCgpJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRlY29t
cG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBhCkRJ
U1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNoIHR1cm5zIGludG8g
YSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlz
cGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25kcyB0byB0aGlzIGJ5IHJlcGxheWlu
ZyB0aGUKZGlzcGxheSBsaXN0IHRocm91Z2ggYSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyBy
ZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBkaXNwbGF5IGxpc3QKd2l0aCBkZWNvbXBvc2VkIGds
eXBocy4KCkRpc3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVu
dGlmaWVycywgd2hpY2ggaXMgYSBwcm9ibGVtIGZvcgpsYXlvdXQgdGVzdCBiZWNhdXNlIHRoZXkg
YXJlJ3QgbmVjZXNzYXJpbHkgc3RhYmxlLiBTbyB3ZSBwbHVtYiB0aHJvdWdoIGEgSW5jbHVkZXNS
ZXNvdXJjZUlkZW50aWZpZXJzCmZsYWcsIHdoaWNoIG5lZWRzIHRvIHByb3BhZ2F0ZSBpbnRvIGFs
bCB0aGUgZGlzcGxheSBpdGVtIGxvZ2dpbmcgZnVuY3Rpb25zLCByZXF1aXJpbmcgdGhlbSB0bwpj
b252ZXJ0ZWQgZnJvbSBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCAuLi4pIHRvIGR1bXBJdGVtKCkg
ZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGZsYWdzIGFyZ3VtZW50LgoKKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgooV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpkcmF3R2x5cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgoKTGF5b3V0
VGVzdHM6CgoqIFRlc3RFeHBlY3RhdGlvbnM6CiogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxp
c3QtZW1vamkuaHRtbDogQWRkZWQuCiogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmct
Zm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qt
c3ZnLWZvbnQuaHRtbDogQWRkZWQuCiogcGxhdGZvcm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgt
ZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0tLQogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgIHwgIDkxICsrKysrCiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKysrCiAuLi4vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgICAgfCAgIDcgKy0KIC4uLi9ncmFwaGlj
cy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggICAgICB8ICAgMiArLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oICAgIHwgICA0ICstCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgICAgfCAgIDMgKy0KIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICB8ICAgNCArLQogLi4uL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCAgIHwgICAyICstCiAuLi4vY29yZXRleHQvRHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICAgfCAgMTMgKy0KIC4uLi9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwICAgICB8ICAgNCArLQogLi4uL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oICAgICAgIHwgIDEwICstCiAuLi4vZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaCAgICAgICAgfCAgIDYgKwogLi4uL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCAgICAgICAgIHwgMzE0ICsrKysrKysrLS0tLS0tLS0tLQogLi4uL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggIHwgMTMwICsrKystLS0tCiAu
Li4vZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICAgICAgfCAgMTEgKy0KIC4u
Li9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oICAgICAgICB8ICAgMiArLQogLi4u
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCAgICAgIHwgIDU2ICsrLS0KIC4u
Li9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oICAgICAgICB8ICAxMCArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcCAgICAgIHwgIDIwICstCiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgIDkgKwogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICB8ICAgMSArCiAuLi4vZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgICAgfCAgIDIgKy0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArCiBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL2dseXBoLWRpc3Bs
YXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQgICAgIHwgIDE5ICsrCiAuLi4vZmFzdC90ZXh0L2ds
eXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sICAgfCAgMjkgKysKIC4uLi9nbHlwaC1kaXNwbGF5
LWxpc3Qtc3ZnLWZvbnQtZXhwZWN0ZWQudHh0ICB8ICAxOSArKwogLi4uL3RleHQvZ2x5cGgtZGlz
cGxheS1saXN0LXN2Zy1mb250Lmh0bWwgICAgIHwgIDM1ICsrCiAuLi4vZ2x5cGgtZGlzcGxheS1s
aXN0LWVtb2ppLWV4cGVjdGVkLnR4dCAgICAgfCAgMTkgKysKIDMwIGZpbGVzIGNoYW5nZWQsIDU5
MSBpbnNlcnRpb25zKCspLCAyOTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1s
aXN0LWVtb2ppLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
Z2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvZmFzdC90
ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTJjYjNhNDMzY2U4Li5iNTM2ZjhkMTg0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAor
MjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAg
ICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2lu
ZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50bHksIFRleHRQYWlu
dGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0dseXBoCisgICAgICAg
IGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRlbXMgZnJvbSB0aGUg
Y2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygp
LgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBnZW5lcmFsIGdvZXMg
dG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNtLiBJ
biBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nl
c3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQorICAgICAgICBEZWNv
bnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNSZWNvcmRlciB0byBk
ZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2Vy
IGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2luZyBhIGN1c3RvbSBD
R0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1lYXN1cmFibGUKKyAg
ICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3ZSBjYW4uCisgICAg
ICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3Zlcmhl
YWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAgICAgICAgZ2x5cGgg
YnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8g
c2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5
cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgorICAgICAgICAK
KyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8gZGV0ZWN0IHdoZXRo
ZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAgICBpbWFnZSBkcmF3
aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBwZW4gd2l0aCBz
b21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdH
bHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRo
aXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNh
dGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCisgICAgICAgICAg
b24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNN
YXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkK
KyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGdseXBoIGRlY29tcG9z
aXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgICBjb250ZXh0
IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5KS4K
KyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwg
d2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKKyAgICAgICAgRElT
UExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBh
IERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFpbnRlcjo6Y2FjaGVk
R2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkg
cmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBhIERlY29uc3RydWN0
RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAor
ICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERpc3BsYXkgbGlzdCBs
b2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywgd2hpY2ggaXMgYSBw
cm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5IGFyZSd0IG5lY2Vz
c2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVzUmVzb3VyY2VJZGVu
dGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdhdGUgaW50byBhbGwg
dGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5nIHRoZW0gdG8KKyAg
ICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgLi4uKSB0byBkdW1w
SXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4KKworICAgICAgICBU
ZXN0czogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250Lmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhp
Y3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1Jl
Y29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNS
ZWNvcmRlcjo6cmVjb3JkRHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNS
ZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q6OmNvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2V0Q29udGFp
bnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmFwcGx5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpkdW1wSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6ZHVtcEl0ZW1IYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseURyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWlu
dFRleHRPckVtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmNh
Y2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZGlzcGxheUxp
c3RGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVwbGF5RGlzcGxh
eUxpc3RGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2FjaGVkR2x5
cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjItMDUtMTQgIEFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGRkNdW0ludGVncmF0aW9uXSBB
ZGQgImZpeGVkIHNpemVkL2FsbCBkZWZhdWx0IHZhbHVlIiBmbGV4IGxheW91dApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBkNzY0YmNhZmRhYjQuLmQwNjg0YmQ2NzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAg
ICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2lu
ZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50bHksIFRleHRQYWlu
dGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0dseXBoCisgICAgICAg
IGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRlbXMgZnJvbSB0aGUg
Y2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygp
LgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBnZW5lcmFsIGdvZXMg
dG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNtLiBJ
biBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nl
c3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQorICAgICAgICBEZWNv
bnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNv
cmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNSZWNvcmRlciB0byBk
ZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2Vy
IGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2luZyBhIGN1c3RvbSBD
R0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1lYXN1cmFibGUKKyAg
ICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3ZSBjYW4uCisgICAg
ICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3Zlcmhl
YWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAgICAgICAgZ2x5cGgg
YnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8g
c2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5
cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgorICAgICAgICAK
KyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8gZGV0ZWN0IHdoZXRo
ZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAgICBpbWFnZSBkcmF3
aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBwZW4gd2l0aCBz
b21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdH
bHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRo
aXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNh
dGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCisgICAgICAgICAg
b24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNN
YXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkK
KyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGdseXBoIGRlY29tcG9z
aXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgICBjb250ZXh0
IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5KS4K
KyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwg
d2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKKyAgICAgICAgRElT
UExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBh
IERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFpbnRlcjo6Y2FjaGVk
R2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkg
cmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBhIERlY29uc3RydWN0
RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAor
ICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERpc3BsYXkgbGlzdCBs
b2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywgd2hpY2ggaXMgYSBw
cm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5IGFyZSd0IG5lY2Vz
c2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVzUmVzb3VyY2VJZGVu
dGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdhdGUgaW50byBhbGwg
dGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5nIHRoZW0gdG8KKyAg
ICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgLi4uKSB0byBkdW1w
SXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdHbHlwaHNXaXRoUXVh
bGlmaWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2UgcmVmZXJzIHRvIHVu
dXNlZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWNkMDg2
ZjIyYTJjLi40OWUxNjhmYzQ0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0z
ODEsMTAgKzM4MSwxMSBAQCBGbG9hdFNpemUgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RleHQoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUsIGNvbnN0CiAgICAgcmV0dXJuIHNpemU7
CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQorR3JhcGhpY3ND
b250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdN
b2RlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKQogewotICAg
IG1fcHJpbWFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0
LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9u
dFNtb290aGluZ01vZGUpOworICAgIGF1dG8gZGlkRGVjb21wb3NlID0gbV9wcmltYXJ5Q29udGV4
dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZv
bnRTbW9vdGhpbmdNb2RlLCBuZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CisgICAgbV9zZWNvbmRh
cnlDb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBw
b2ludCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAgICBy
ZXR1cm4gZGlkRGVjb21wb3NlOwogfQogCiB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6
OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaAppbmRleCBhM2YwZDE5ODZmZjEuLmZjNDI3YTQwOGVjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
RmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBG
b250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSos
IHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2Rl
KSBmaW5hbDsKKyAgICBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0
IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0
IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2Fz
Y2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJ
ZkZvbnROb3RSZWFkeSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggNjg2ZWZjZTNiYTgxLi4xNmI4
MWQ5YjE3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ry
YXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZXhw
bGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFj
dG9yID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpO
byk7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgR3Jh
cGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCiAgICAgdm9p
ZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENUTGluZVJlZiwg
Q0dSZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWluUHRyPENHQ29s
b3JSZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWduZWQgbV9vdXRw
dXRHbHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAzZjAxODFkLi4z
NmM3ZWUwZjVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTI5LDkgKzEyOSwxMCBAQCBGbG9hdFNpemUgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgIHJldHVybiBmb250LmRyYXdUZXh0KCp0aGlzLCBydW4sIHBvaW50LCBm
cm9tLCB0byk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZm
ZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCitHcmFwaGljc0Nv
bnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSwgc3RkOjpv
cHRpb25hbDxib29sPikKIHsKICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUp
OworICAgIHJldHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBmNGM3YTg3ZWMxZGIuLjU1YjBmMzk4M2E5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI4Myw3ICsyODMsNiBAQCBw
dWJsaWM6CiAgICAgLy8gVGV4dAogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFNp
emUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxv
YXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdFbXBoYXNp
c01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJp
bmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KTsKIApAQCAtMjkyLDYg
KzI5MSw5IEBAIHB1YmxpYzoKICAgICAgICAgZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFu
Y2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgfQogCisgICAg
ZW51bSBjbGFzcyBEaWREZWNvbXBvc2VHbHlwaHMgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9k
ZSwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiA9IHsgfSk7CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRl
eHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgYm9v
bCBkb3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhp
Y2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3Vi
bGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggY2JmZTc1ZDYzMmRiLi4zNWE2ZDkxYzUxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9
IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IHJldHVy
biB7IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBjb25zdCBG
bG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERlY29tcG9z
ZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9pbnQmLCBG
b250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1cm4gRGlk
RGVjb21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
RmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6
Om51bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHAKaW5kZXggMjZhNzUxNWY5Y2VhLi45MTY4MzMxMTc3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTMwNCw2ICszMDQsNyBAQCB2b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVm
LCBDR0dTdGF0ZVJlZiBnc3RhdAogICAgIH0KIAogICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENh
Y2hlRm9udChmb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRp
b25zLCBjb3VudCwgdGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgaW5pdGlhbFBlblBvc2l0aW9u
LCBtX3Ntb290aGluZ01vZGUpOworICAgIG1fb3V0cHV0R2x5cGhDb3VudCArPSBjb3VudDsKIAog
ICAgIG1fb3duZXIuY29uY2F0Q1RNKGludmVyc2VDVE1GaXh1cCk7CiB9CkBAIC0zMjMsNiArMzI0
LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmlu
Z1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUKIAogICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKGNnSW1hZ2UpOwogICAgIG1fb3duZXIuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgaW1hZ2UtPnNpemUoKSwgRmxvYXRSZWN0KHJlY3QpLCBGbG9hdFJlY3Qge3sgfSwgaW1hZ2Ut
PnNpemUoKX0sIEltYWdlUGFpbnRpbmdPcHRpb25zIHsgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2lu
VG9wTGVmdCB9KTsKKyAgICBtX2RpZERyYXdJbWFnZSA9IHRydWU7CiAKICAgICAvLyBVbmRvIHRo
ZSBhYm92ZSB5LWZsaXAgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KICAgICBtX293bmVyLnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwpAQCAtMzQzLDYgKzM0NSw3IEBAIHZvaWQgRHJhd0dseXBoc1Jl
Y29yZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCoKICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KHBlblBv
c2l0aW9uKTsKICAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgZGVzdGluYXRpb25SZWN0KTsKKyAgICAgICAgICAgIG1fZGlkRHJhd0ltYWdlID0gdHJ1ZTsK
ICAgICAgICAgfQogCiAgICAgICAgIHBlblBvc2l0aW9uLm1vdmUoc2l6ZShhZHZhbmNlc1tpXSkp
OwpAQCAtMzk1LDkgKzM5OCwxNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0J5U3Bs
aXR0aW5nSW50b09UU1ZHQW5kTm9uT1RTVkdSdW5zKGNvbnN0IEZvbnQmIGZvbgogICAgIGRyYXco
KTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0
YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCitHcmFwaGljc0NvbnRl
eHQ6OkRpZERlY29tcG9zZUdseXBocyBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7Cisg
ICAgbV9vdXRwdXRHbHlwaENvdW50ID0gMDsKKyAgICBtX2RpZERyYXdJbWFnZSA9IGZhbHNlOwor
CiAgICAgZHJhd0J5U3BsaXR0aW5nSW50b09UU1ZHQW5kTm9uT1RTVkdSdW5zKGZvbnQsIGdseXBo
cywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAg
CisgICAgaWYgKG1fZGlkRHJhd0ltYWdlIHx8IG1fb3V0cHV0R2x5cGhDb3VudCAhPSBudW1HbHlw
aHMpCisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6
WWVzOworCisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpO
bzsKIH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdOYXRpdmVUZXh0KENURm9udFJl
ZiBmb250LCBDR0Zsb2F0IGZvbnRTaXplLCBDVExpbmVSZWYgbGluZSwgQ0dSZWN0IGxpbmVSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMzJjOWM1MTJjN2I3Li43ZTVjOGQwNWEx
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFN0cmlu
ZyBEaXNwbGF5TGlzdDo6YXNUZXh0KE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykgY29uc3QK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUg
Z3JvdXAoc3RyZWFtKTsKLSAgICAgICAgc3RyZWFtIDw8IGl0ZW07CisgICAgICAgIGR1bXBJdGVt
SGFuZGxlKHN0cmVhbSwgaXRlbSwgZmxhZ3MpOwogICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJ
dGVtKCkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAg
fQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CiAgICAg
ICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0
ZW0udmFsdWUoKTsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7Ci0g
ICAgICAgIHRzIDw8IGl0ZW07CisgICAgICAgIGR1bXBJdGVtSGFuZGxlKHRzLCBpdGVtLCB7IEFz
VGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRl
c1Jlc291cmNlSWRlbnRpZmllcnMgfSk7CiAgICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0o
KSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKaW5kZXggNzBiZmM0NDk4ZjY1Li45MzcyMjAxZWJhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCkBAIC00NiwxMiArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0gY2xhc3MgQXNUZXh0RmxhZyA6IHVpbnQ4
X3QgewotICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAgPSAxIDw8IDAsCi0gICAg
SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9IDEgPDwgMSwKLSAgICBEZWNvbXBvc2Vz
RHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAotfTsKLQogY2xhc3MgRGlzcGxheUxpc3Qg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVySW1wbDsKQEAgLTkzLDYgKzg3LDkg
QEAgcHVibGljOgogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoKSBjb25zdCB7
IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOworICAgIAorICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uOyB9
CisgICAgdm9pZCBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbihib29s
IHZhbHVlKSB7IG1fY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24gPSB2YWx1
ZTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAKQEAgLTEyOSw2ICsxMjYsNyBAQCBwcml2YXRl
OgogICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9j
b250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbjsKICAgICBib29sIG1fdHJhY2tz
RHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI0NjQxYTEzNDQ3Li44Y2EyM2ZhNmEwNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtMjgsNiArMjgsMTIgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKK2VudW0gY2xhc3MgQXNU
ZXh0RmxhZyA6IHVpbnQ4X3QgeworICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAg
PSAxIDw8IDAsCisgICAgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9IDEgPDwgMSwK
KyAgICBEZWNvbXBvc2VzRHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAorfTsKKwogZW51
bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIFNhdmUsCiAgICAgUmVzdG9yZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAzNWE3YjRlYTFjMjQuLjE2ZTE3
YTAxNjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjAwLDkg
KzIwMCw5IEBAIERyYXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHCiAgICAgY29tcHV0ZUJvdW5kcyhmb250
KTsKIH0KIAotdm9pZCBEcmF3R2x5cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQpIGNvbnN0CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUds
eXBocyBEcmF3R2x5cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZv
bnQmIGZvbnQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pIGNv
bnN0CiB7Ci0gICAgY29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRhdGEoKSwgbV9h
ZHZhbmNlcy5kYXRhKCksIG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwgbV9zbW9vdGhp
bmdNb2RlKTsKKyAgICByZXR1cm4gY29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIG1fZ2x5cGhzLmRh
dGEoKSwgbV9hZHZhbmNlcy5kYXRhKCksIG1fZ2x5cGhzLnNpemUoKSwgYW5jaG9yUG9pbnQoKSwg
bV9zbW9vdGhpbmdNb2RlLCBuZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CiB9CiAKIHZvaWQgRHJh
d0dseXBoczo6Y29tcHV0ZUJvdW5kcyhjb25zdCBGb250JiBmb250KQpAQCAtNjg4LDE4NCArNjg4
LDE2MyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRl
bVR5cGUgdHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRyYW5zbGF0ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFRyYW5zbGF0ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgieCIsIGl0ZW0ueCgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoInkiLCBpdGVtLnkoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSb3RhdGUmIGl0ZW0pCit2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSb3RhdGUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImFuZ2xlIiwgaXRlbS5hbmdsZSgpKTsKLSAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNjYWxlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2NhbGUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInNpemUiLCBpdGVtLmFtb3VudCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldENUTSYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldENUTSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgic2V0LWN0bSIsIGl0ZW0udHJhbnNm
b3JtKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQ29uY2F0ZW5hdGVDVE0mIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDb25jYXRlbmF0ZUNUTSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3RtIiwgaXRlbS50cmFuc2Zvcm0oKSk7
Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIHN0YXRlKQordm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBpdGVtLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIHN0YXRlLmNvbG9yKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xv
cigpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0SW5saW5lU3Ryb2tlQ29sb3ImIHN0YXRlKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2V0SW5saW5lU3Ryb2tlQ29sb3ImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFn
PikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgc3RhdGUuY29sb3IoKSk7Ci0gICAg
cmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJv
a2VUaGlja25lc3MmIHN0YXRlKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0U3Ryb2tlVGhpY2tuZXNzJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJ0aGlja25lc3MiLCBzdGF0ZS50aGlja25lc3MoKSk7Ci0gICAgcmV0
dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgaXRlbS50aGlja25lc3Mo
KSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNl
dFN0YXRlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Rh
dGUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cyA8PCBpdGVtLnN0YXRl
KCk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRMaW5lQ2FwJiBsaW5lQ2FwKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgibGluZS1jYXAiLCBsaW5lQ2FwLmxpbmVDYXAoKSk7Ci0g
ICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibGluZS1jYXAiLCBpdGVtLmxpbmVD
YXAoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNldExpbmVEYXNoJiBsaW5lRGFzaCkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldExpbmVEYXNoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJkYXNoLWFycmF5IiwgbGluZURhc2guZGFzaEFycmF5KCkpOwotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGFzaC1vZmZzZXQiLCBsaW5lRGFzaC5kYXNoT2Zmc2V0KCkpOwotICAg
IHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtYXJyYXkiLCBpdGVtLmRhc2hB
cnJheSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgaXRlbS5kYXNoT2Zm
c2V0KCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRMaW5lSm9pbiYgbGluZUpvaW4pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRMaW5lSm9pbiYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgibGluZS1qb2luIiwgbGluZUpvaW4ubGluZUpvaW4oKSk7Ci0gICAgcmV0
dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibGluZS1qb2luIiwgaXRlbS5saW5lSm9pbigp
KTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0
TWl0ZXJMaW1pdCYgbWl0ZXJMaW1pdCkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldE1pdGVyTGltaXQmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKLSAgICB0
cy5kdW1wUHJvcGVydHkoIm1pdHJlLWxpbWl0IiwgbWl0ZXJMaW1pdC5taXRlckxpbWl0KCkpOwot
ICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoIm1pdHJlLWxpbWl0IiwgaXRlbS5t
aXRlckxpbWl0KCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBDbGlwJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
Q2xpcCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXQmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVtLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwot
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+IGZsYWdzKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZp
ZXIiLCBpdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRh
aW5zKEFzVGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlQnVmZmVy
SWRlbnRpZmllcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVz
dGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dFRvUGF0aCYgaXRlbSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0
eSgid2luZC1ydWxlIiwgaXRlbS53aW5kUnVsZSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d0ZpbHRlcmVkSW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykK
IHsKLSAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1pbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5z
b3VyY2VJbWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1RleHRG
bGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJvcGVy
dHkoInNvdXJjZS1pbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5zb3VyY2VJbWFnZUlkZW50aWZpZXIo
KSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtcmVjdCIsIGl0ZW0uc291cmNl
SW1hZ2VSZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0dseXBocyYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPikKIHsKICAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgibG9jYWwtYW5jaG9yIiwgaXRlbS5sb2NhbEFuY2hvcigpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImFuY2hvci1wb2ludCIsIGl0ZW0uYW5jaG9yUG9pbnQoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJsZW5ndGgiLCBpdGVtLmdseXBocygpLnNpemUoKSk7CiAKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJ
bWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERy
YXdJbWFnZUJ1ZmZlciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewotICAg
IHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlQnVm
ZmVySWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFzVGV4dEZsYWc6Oklu
Y2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1h
Z2UtYnVmZmVyLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICBy
ZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdz
KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJ
ZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFpbnMoQXNUZXh0RmxhZzo6SW5jbHVk
ZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1p
ZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVz
dC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3U3lzdGVtSW1h
Z2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3U3lzdGVt
SW1hZ2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICAvLyBGSVhNRTogZHVt
cCBtb3JlIHN0dWZmLgogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRl
c3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZp
ZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFz
VGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgicGF0dGVybi10cmFuc2Zvcm0iLCBpdGVtLnBhdHRlcm5UcmFuc2Zv
cm0oKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ0aWxlLXJlY3QiLCBpdGVtLnRpbGVSZWN0KCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0UmVjdCgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInBoYXNlIiwgaXRlbS5waGFzZSgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoInNwYWNpbmciLCBpdGVtLnNwYWNpbmcoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdSZWN0JiBpdGVtLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRl
bS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYm9yZGVyLXRoaWNrbmVzcyIsIGl0ZW0u
Ym9yZGVyVGhpY2tuZXNzKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmUmIGl0ZW0pCit2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQtMSIsIGl0ZW0ucG9pbnQxKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnQtMiIsIGl0ZW0ucG9pbnQyKCkpOwotICAgIHJl
dHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd0xpbmVzRm9yVGV4dCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
ICAgICB0cy5kdW1wUHJvcGVydHkoImJsb2NrLWxvY2F0aW9uIiwgaXRlbS5ibG9ja0xvY2F0aW9u
KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgibG9jYWwtYW5jaG9yIiwgaXRlbS5sb2NhbEFuY2hv
cigpKTsKQEAgLTg3NSwzODAgKzg1NCwzNTAgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmVzRm9yVGV4dCYgaXRlbSkKICAgICB0cy5kdW1wUHJv
cGVydHkoIndpZHRocyIsIGl0ZW0ud2lkdGhzKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiaXMt
cHJpbnRpbmciLCBpdGVtLmlzUHJpbnRpbmcoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkb3Vi
bGUiLCBpdGVtLmRvdWJsZUxpbmVzKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdEb3Rz
Rm9yRG9jdW1lbnRNYXJrZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RWxsaXBz
ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdFbGxpcHNl
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJy
ZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0pCit2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFn
PikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJ3aWR0aCIsIGl0ZW0ud2lkdGgoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJvZmZzZXQiLCBpdGVtLm9mZnNldCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwg
aXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYgaXRlbSwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdHMiLCBp
dGVtLnJlY3RzKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgib2Zmc2V0IiwgaXRlbS5vZmZzZXQoKSk7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdCYg
aXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0JiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0Iiwg
aXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3ImIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKLSAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKICAgICAvLyBGSVhNRTogbG9nIGdyYWRpZW50LgogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYg
aXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxDb21wb3NpdGVk
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRl
bS5jb2xvcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNvbXBvc2l0ZS1vcGVyYXRpb24iLCBp
dGVtLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9k
ZSIsIGl0ZW0uYmxlbmRNb2RlKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJvdW5kZWRSZWN0JiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJvdW5kZWRSZWN0JiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0Iiwg
aXRlbS5yb3VuZGVkUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5j
b2xvcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBpdGVtLmJsZW5kTW9k
ZSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBp
dGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3VuZGVkLWhvbGUtcmVjdCIsIGl0
ZW0ucm91bmRlZEhvbGVSZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVt
LmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKIH0KIAogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
TGluZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxMaW5l
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJw
YXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEFyYyYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxBcmMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGaWxsUXVhZEN1cnZlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAg
IHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxCZXpp
ZXJDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxC
ZXppZXJDdXJ2ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUFyYyYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0u
cGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2ZSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAg
cmV0dXJuIHRzOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxQYXRoJiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFBhdGgmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVt
LnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxFbGxpcHNlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJl
dHVybiB0czsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlv
biIsIGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFZJREVPKQogCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTdHJva2VSZWN0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
bGluZS13aWR0aCIsIGl0ZW0ubGluZVdpZHRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUGF0aCYgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBhdGgmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBp
dGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VFbGxpcHNlJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFN0cm9rZUxpbmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTdHJva2VMaW5lJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJzdGFydCIsIGl0ZW0uc3RhcnQoKSk7CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJlbmQiLCBpdGVtLmVuZCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsZWFyUmVjdCYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsZWFyUmVjdCYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVyJiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJvcGFjaXR5IiwgaXRl
bS5vcGFjaXR5KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Im
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInNj
YWxlLWZhY3RvciIsIGl0ZW0uc2NhbGVGYWN0b3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCit2
b2lkIGR1bXBJdGVtSGFuZGxlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtSGFuZGxlJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7CiAgICAgdHMgPDwgaXRlbS50eXBlKCk7
CiAKICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7CiAgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNs
YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxUcmFuc2xhdGU+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxUcmFuc2xhdGU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxSb3RhdGU+
KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxSb3RhdGU+KCksIGZsYWdzKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNjYWxlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2NhbGU+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxTZXRDVE0+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxTZXRDVE0+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENvbmNhdGVuYXRlQ1RN
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCksIGZs
YWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENv
bG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCksIGZsYWdzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCksIGZsYWdzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCksIGZsYWdzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldFN0YXRlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0U3Rh
dGU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUNhcDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUNhcD4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVDYXA+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFNldExpbmVEYXNoPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0TGluZURh
c2g+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUpvaW46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVKb2luPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCksIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0TWl0ZXJMaW1pdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNl
dE1pdGVyTGltaXQ+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PENsaXA+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcE91dD4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBPdXQ+KCksIGZsYWdzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpOworICAgICAgICBkdW1wSXRlbSh0
cywgaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8Q2xpcE91dFRvUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBP
dXRUb1BhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBQYXRoPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8Q2xpcFBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KCksIGZsYWdzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERy
YXdHbHlwaHM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+
KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCksIGZs
YWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCksIGZsYWdzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1N5c3RlbUltYWdlOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3U3lzdGVtSW1hZ2U+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxEcmF3U3lzdGVtSW1hZ2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdQYXR0
ZXJuPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCksIGZs
YWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdSZWN0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8RHJhd1JlY3Q+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd0xpbmU+KCksIGZsYWdzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0
ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCksIGZsYWdzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
RHJhd0VsbGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdQYXRoPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd1BhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxE
cmF3Rm9jdXNSaW5nUmVjdHM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0PigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFJlY3Q+KCksIGZsYWdzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOworICAgICAgICBkdW1wSXRlbSh0
cywgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpOworICAgICAgICBkdW1wSXRlbSh0cywg
aXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsUm91bmRlZFJlY3Q+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsUm91
bmRlZFJlY3Q+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbExpbmU6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PEZpbGxMaW5lPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8RmlsbExpbmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbEFyYzoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEFyYz4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxBcmM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFF1YWRDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RmlsbFF1YWRDdXJ2ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxR
dWFkQ3VydmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbEJlemllckN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQmV6aWVyQ3VydmU+
KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsQmV6aWVyQ3VydmU+KCksIGZs
YWdzKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgIGR1bXBJdGVt
KHRzLCBpdGVtLmdldDxGaWxsUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEVs
bGlwc2U+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsRWxsaXBzZT4oKSwg
ZmxhZ3MpOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgY2FzZSBJdGVt
VHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZy
YW1lRm9yTWVkaWE+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxQYWludEZyYW1l
Rm9yTWVkaWE+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VSZWN0Pigp
OworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTdHJva2VMaW5lPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8U3Ryb2tlTGluZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VBcmM6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PFN0cm9rZUFyYz4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFN0cm9rZUFyYz4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VRdWFkQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZVF1YWRDdXJ2
ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVF1YWRDdXJ2ZT4oKSwg
ZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VCZXppZXJD
dXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlQmV6aWVyQ3VydmU+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VCZXppZXJDdXJ2ZT4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZVBhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxTdHJva2VQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9r
ZUVsbGlwc2U+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VFbGxpcHNl
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVj
dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xlYXJSZWN0PigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8Q2xlYXJSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7CisgICAgICAgIGR1bXBJdGVt
KHRzLCBpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwotCiAgICAgLy8gSXRlbXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgpAQCAtMTI2MCw3
ICsxMjA5LDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhh
bmRsZSBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgcmV0dXJuIHRzOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCmluZGV4IGQxNDQwNzczYWVkMy4uMDA1NDg0NjEzNDgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IEltYWdlUGFp
bnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCitlbnVtIGNsYXNzIEFz
VGV4dEZsYWcgOiB1aW50OF90Owogc3RydWN0IEl0ZW1IYW5kbGU7CiAKIC8qIGlzSW5saW5lSXRl
bSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IG5lZWRzIHRvIGJlIHBhc3NlZCB0aHJvdWdo
IElQQzo6RW5jb2RlciBpbiBvcmRlciB0byBzZXJpYWxpemUsCkBAIC01OTIsNyArNTkzLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBj
b3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEdseXBoQnVmZmVyQWR2
YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFu
Y2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRm9udCYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9z
aXRpb24pIGNvbnN0OwogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBtX2JvdW5kczsgfQpAQCAtMjA1MSw2NyArMjA1Miw4MCBAQCBzaXplX3QgcGFkZGVkU2l6ZU9m
VHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogSXRlbVR5cGUgZGlz
cGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogI2lmICFMT0dfRElT
QUJMRUQKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IFRyYW5zbGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY2FsZSYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0Q1RNJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDb25j
YXRlbmF0ZUNUTSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVTdHJva2VDb2xv
ciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGluZUNhcCYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
U2V0TGluZURhc2gmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0Jik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwJik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBDbGlwT3V0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dFRvUGF0aCYpOwotV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xp
cFBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3R2x5cGhzJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
SW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1N5c3RlbUltYWdlJik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBE
cmF3UGF0dGVybiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgRHJhd1JlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RWxsaXBzZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1Bh
dGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmKTsKLVdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxS
ZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmKTsKLVdF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZp
bGxDb21wb3NpdGVkUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgVHJhbnNsYXRlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0ZSYsIE9wdGlvblNldDxBc1RleHRG
bGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBT
Y2FsZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRDVE0mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ29uY2F0ZW5h
dGVDVE0mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFNldElubGluZVN0cm9rZUNvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0cm9rZVRoaWNr
bmVzcyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5l
Q2FwJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVEYXNoJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldExp
bmVKb2luJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldE1pdGVyTGltaXQmLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
Q2xpcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBUb0lt
YWdlQnVmZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRUb1BhdGgmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgQ2xpcFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXImLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3SW1hZ2VCdWZm
ZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdlJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERy
YXdTeXN0ZW1JbWFnZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0dGVybiYsIE9wdGlvblNldDxB
c1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3UmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBEcmF3TGluZXNGb3JUZXh0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2UmLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJh
d1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0JiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0
aEdyYWRpZW50JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBGaWxsUm91bmRlZFJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2lmIEVOQUJMRShJTkxJTkVfUEFU
SF9EQVRBKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgRmlsbExpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxBcmMmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUmKTsKLVdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxC
ZXppZXJDdXJ2ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgU3Ryb2tlQXJjJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmKTsKLVdFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUJl
emllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBGaWxsTGluZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQXJjJiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IEZpbGxRdWFkQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEJlemllckN1cnZlJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IFN0cm9rZUFyYyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiwgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OwogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFBhdGgmKTsKLVdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxF
bGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBGaWxsUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsRWxsaXBzZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CiAjaWYgRU5BQkxFKFZJREVPKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBQYWludEZyYW1lRm9y
TWVkaWEmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJMRShWSURFTykK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZVJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUVsbGlwc2UmKTsKLVdFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxp
bmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IENsZWFyUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYpOwotV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZp
Y2VTY2FsZUZhY3RvciYpOwotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBJ
dGVtSGFuZGxlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFN0cm9rZVJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUGF0aCYsIE9wdGlvblNldDxB
c1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBTdHJva2VFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUmLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgQ2xlYXJSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYsIE9wdGlvblNldDxB
c1RleHRGbGFnPik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVCYgaXRlbSkKK3sKKyAgICBkdW1wSXRlbSh0cywg
aXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucywgQXNUZXh0Rmxh
Zzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOworICAgIHJldHVybiB0czsKK30KKwor
dm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiwgY29uc3QgSXRlbUhhbmRsZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CisKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlKQoreworICAgIGR1bXBJdGVt
SGFuZGxlKHRzLCBpdGVtSGFuZGxlLCB7IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVy
YXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgfSk7CisgICAg
cmV0dXJuIHRzOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMDc0YmY2MDkzZWQzLi43
NjU4ZjgzNDJkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
QEAgLTE2MSwxNyArMTYxLDIwIEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0CiAgICAgcmVjb3Jk
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwgZmls
dGVyKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2lu
dCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlk
RGVjb21wb3NlR2x5cGhzIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBh
ZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50
LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5l
ZWRzR2x5cGhEZWNvbXBvc2l0aW9uKQogewotICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBo
cyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcykgeworICAgIGlmIChtX2RlY29uc3RydWN0
RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcykKKyAgICAgICAgQUxXQVlT
X0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIlJlY29yZGVyOjpkcmF3R2x5cGhzIC0gbmVlZHNH
bHlwaERlY29tcG9zaXRpb24gIiA8PCBuZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CisKKyAgICBp
ZiAobV9kZWNvbnN0cnVjdERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMg
JiYgKCFuZWVkc0dseXBoRGVjb21wb3NpdGlvbiB8fCAqbmVlZHNHbHlwaERlY29tcG9zaXRpb24p
KSB7CiAgICAgICAgIGlmICghbV9kcmF3R2x5cGhzUmVjb3JkZXIpCiAgICAgICAgICAgICBtX2Ry
YXdHbHlwaHNSZWNvcmRlciA9IG1ha2VVbmlxdWU8RHJhd0dseXBoc1JlY29yZGVyPigqdGhpcywg
bV9pbml0aWFsU2NhbGUpOwogCi0gICAgICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLT5kcmF3R2x5
cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3Ro
aW5nTW9kZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG1fZHJhd0dseXBoc1Jl
Y29yZGVyLT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3Rh
cnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgfQogCiAgICAgZHJhd0dseXBoc0FuZENhY2hl
Rm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290
aGluZ01vZGUpOworICAgIHJldHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2b2lk
IFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZh
bmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwg
Rm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCmluZGV4IDYwMDQ4MzM2YTdmOC4uNjIzNDQ4ZGExNDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRl
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBG
aWx0ZXImLCBGaWx0ZXJSZXN1bHRzJikgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSwgc3Rk
OjpvcHRpb25hbDxib29sPikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3R2x5
cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQm
IGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CmluZGV4IDk3ZTExY2I4NjBkOS4uNzlkYWVhNzU3NjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xMDcsNTUgKzEwNyw1NyBAQCBpbmxpbmUgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRl
SXRlbShHcmFwaAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5RHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VI
ZWFwLCBEcmF3R2x5cGhzJiBkcmF3R2x5cGhzSXRlbSkKK2lubGluZSBzdGF0aWMgc3RkOjpwYWly
PHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGFwcGx5RHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBEcmF3R2x5cGhzJiBk
cmF3R2x5cGhzSXRlbSwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlv
bikKIHsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGRyYXdHbHlwaHNJdGVtLmZvbnRJ
ZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSByZXNvdXJjZUhlYXAuZ2V0Rm9udChy
ZXNvdXJjZUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGRyYXdHbHlwaHNJdGVtLmFwcGx5KGNvbnRl
eHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBk
aWREZWNvbXBvc2UgPSBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250ZXh0LCAqZm9udCwgbmVlZHNH
bHlwaERlY29tcG9zaXRpb24pOworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIGRpZERl
Y29tcG9zZSB9OwogICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOworICAgIHJl
dHVybiB7IHJlc291cmNlSWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VH
bHlwaHM6Ok5vIH07CiB9CiAKLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFz
b24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVy
OjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorYXV0byBSZXBsYXllcjo6YXBwbHlJdGVtKEl0
ZW1IYW5kbGUgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgc3dpdGNoIChpdGVtLnR5
cGUoKSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgogICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZl
ckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0p
KQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAg
ICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyID0gYXBwbHlEcmF3R2x5cGhzKG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAs
IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciks
IHsgfSB9OworICAgICAgICByZXR1cm4geyB9OworCisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ds
eXBoczogeworICAgICAgICBhdXRvIGRyYXdHbHlwaHNSZXN1bHQgPSBhcHBseURyYXdHbHlwaHMo
bV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKSwgbV9kaXNw
bGF5TGlzdC5jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpKTsKKyAgICAg
ICAgaWYgKGRyYXdHbHlwaHNSZXN1bHQuZmlyc3QpCisgICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUoZHJhd0dseXBoc1Jl
c3VsdC5maXJzdCksIHsgfSB9OworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSwgZHJhd0dseXBo
c1Jlc3VsdC5zZWNvbmQgfTsKKyAgICB9CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNv
dXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVz
b3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9Owor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQsIG1fcmVzb3VyY2VI
ZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAg
ICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNl
LCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTb3VyY2VJ
bWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQot
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1
cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAgICAgIGlmIChhdXRvIG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShtX2NvbnRleHQs
IG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7
IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGl0ZW0u
YXBwbHkobV9jb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IH07CiB9CiAKIFJlcGxheVJl
c3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wg
dHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3LDEyICsxODksMTYgQEAgUmVwbGF5UmVzdWx0IFJlcGxh
eWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxh
eUxpc3QKIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwg
ImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAoYXV0byBb
cmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJdID0gYXBw
bHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewotICAgICAgICAgICAgcmVzdWx0LnJl
YXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwotICAgICAgICAgICAgcmVzdWx0
Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGFwcGx5UmVzdWx0ID0gYXBwbHlJdGVt
KGl0ZW0pOworICAgICAgICBpZiAoYXBwbHlSZXN1bHQuc3RvcFJlYXNvbikgeworICAgICAgICAg
ICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKmFwcGx5UmVzdWx0LnN0b3BSZWFzb247Cisg
ICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IFdURk1v
dmUoYXBwbHlSZXN1bHQucmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LmRpZERlY29tcG9zZUdseXBocyAm
JiAqYXBwbHlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4dDo6RGlk
RGVjb21wb3NlR2x5cGhzOjpZZXMpCisgICAgICAgICAgICByZXN1bHQuZGlkRGVjb21wb3NlR2x5
cGhzID0gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6OlllczsKKwogICAgICAg
ICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAogICAgICAg
ICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKaW5kZXggMjU4NGE1MzlmYzA1Li41ZGYwNzdjZjljY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMjYsMTMgKzI2LDEzIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
bG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlcGxheVJlc3VsdCB7CiAgICAgc2l6ZV90
IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIFN0
b3BSZXBsYXlSZWFzb24gcmVhc29uRm9yU3RvcHBpbmcgeyBTdG9wUmVwbGF5UmVhc29uOjpSZXBs
YXllZEFsbEl0ZW1zIH07CisgICAgc3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHQ6OkRpZERl
Y29tcG9zZUdseXBocz4gZGlkRGVjb21wb3NlR2x5cGhzOwogfTsKIAogY2xhc3MgUmVwbGF5ZXIg
ewpAQCAtNjEsNyArNjIsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJl
c3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFj
a1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpwYWlyPHN0ZDo6b3B0
aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOworICAgIHN0cnVjdCBBcHBseUl0ZW1S
ZXN1bHQgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IHN0b3BSZWFz
b247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBy
ZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0
OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRpZERlY29tcG9zZUdseXBoczsKKyAgICB9OworICAgIEFw
cGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRl
eHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IDRmMzM0MmZhMzkxMC4u
ODI3NGM5Mzg5MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAK
QEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFp
bnRlci5oIgogCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRl
ICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMTIzLDcgKzEyNCwxMSBAQCB2b2lkIFRl
eHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGNvbnN0IFRleHRSdQogICAgICAgICAvLyBSZXBsYXlpbmcgYmFjayBhIHdob2xlIGNhY2hl
ZCBnbHlwaCBydW4gdG8gdGhlIEdyYXBoaWNzQ29udGV4dC4KICAgICAgICAgbV9jb250ZXh0LnRy
YW5zbGF0ZSh0ZXh0T3JpZ2luKTsKICAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxh
eWVyKG1fY29udGV4dCwgKm1fZ2x5cGhEaXNwbGF5TGlzdCk7Ci0gICAgICAgIHJlcGxheWVyLnJl
cGxheSgpOworICAgICAgICBhdXRvIHJlcGxheVJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKHJlcGxheVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMpCisg
ICAgICAgICAgICBtX2dseXBoRGlzcGxheUxpc3QtPnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5
cGhEZWNvbXBvc2l0aW9uKCpyZXBsYXlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBo
aWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXMpOworCiAgICAgICAgIG1fY29udGV4
dC50cmFuc2xhdGUoLXRleHRPcmlnaW4pOwogICAgIH0KICAgICBtX2dseXBoRGlzcGxheUxpc3Qg
PSBudWxscHRyOwpAQCAtMjU1LDkgKzI2MCwxOCBAQCBTdHJpbmcgVGV4dFBhaW50ZXI6OmNhY2hl
ZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoVGV4dCYgdGV4dE5vZGUsIE9wdAog
ICAgICAgICAgICAgZGlzcGxheUxpc3QgPSBUZXh0UGFpbnRlcjo6Z2x5cGhEaXNwbGF5TGlzdElm
RXhpc3RzKCp0ZXh0Qm94LmlubGluZUJveCgpKTsKICNlbmRpZgogICAgICAgICBpZiAoZGlzcGxh
eUxpc3QpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpc3BsYXlMaXN0LT5hc1RleHQo
ZmxhZ3MpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAg
aWYgKGZsYWdzICYgRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhz
KSB7CisgICAgICAgICAgICAgICAgLy8gUmVwbGF5IGRpc3BsYXlMaXN0IHRocm91Z2ggYSBjb250
ZXh0IHdpdGggRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMgc28gdGhhdCB0aGUgb3V0cHV0IGRp
c3BsYXkgbGlzdCBzaG93cyB0aGUgZHJhd2luZyBjb21tYW5kcyBmb3IgZGVjb21wb3NwZWQgZ2x5
cGhzLgorICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1v
cnlEaXNwbGF5TGlzdD4gb3V0cHV0RGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0
OjpJbk1lbW9yeURpc3BsYXlMaXN0PigpOworICAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpS
ZWNvcmRlckltcGwgcmVjb3JkaW5nQ29udGV4dCgqb3V0cHV0RGlzcGxheUxpc3QsIHsgfSwgeyB9
LCB7IH0sIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMp
OworICAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcihyZWNvcmRp
bmdDb250ZXh0LCAqZGlzcGxheUxpc3QpOworICAgICAgICAgICAgICAgIGF1dG8gcmVwbGF5UmVz
dWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
b3V0cHV0RGlzcGxheUxpc3QtPmFzVGV4dChmbGFncykpOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlzcGxheUxpc3QtPmFzVGV4dChmbGFncykp
OwogICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBkODFhNWMyYTNmN2YuLmVlNWNmYzg2YTE0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMzE3NSw2ICszMTc1LDkgQEAgRXhjZXB0aW9uT3I8U3RyaW5n
PiBJbnRlcm5hbHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCB1bnNp
Z25lZAogICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElTVF9JTkNMVURFU19QTEFURk9STV9PUEVS
QVRJT05TKQogICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0
RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpOwogCisgICAgaWYgKGZsYWdzICYgRElT
UExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMpCisgICAgICAgIGRpc3BsYXlMaXN0Rmxh
Z3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpEZWNvbXBvc2VzRHJhd0dseXBocyk7CisK
ICAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXIoKS0+aGFzTGF5ZXIoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCkBAIC0zMjAwLDYgKzMyMDMsOSBA
QCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6cmVwbGF5RGlzcGxheUxpc3RGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVucwogICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElTVF9J
TkNMVURFU19QTEFURk9STV9PUEVSQVRJT05TKQogICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFk
ZChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpOwog
CisgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMpCisg
ICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpEZWNv
bXBvc2VzRHJhd0dseXBocyk7CisKICAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXIoKS0+aGFzTGF5
ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9Owog
CkBAIC0zMjMzLDYgKzMyMzksOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6Y2Fj
aGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZShOb2RlJiBub2RlLCB1bgogICAgIGlmIChm
bGFncyAmIERJU1BMQVlfTElTVF9JTkNMVURFU19QTEFURk9STV9PUEVSQVRJT05TKQogICAgICAg
ICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6SW5jbHVkZXNQ
bGF0Zm9ybU9wZXJhdGlvbnMpOwogCisgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0RFQ09N
UE9TRVNfRFJBV19HTFlQSFMpCisgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlM
aXN0OjpBc1RleHRGbGFnOjpEZWNvbXBvc2VzRHJhd0dseXBocyk7CisKICAgICByZXR1cm4gVGV4
dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoZG93bmNh
c3Q8VGV4dD4obm9kZSksIGRpc3BsYXlMaXN0RmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBiNGNhZGRkMjI0NDIuLjhmMzZlYzdlNGUyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC00NzQsNiArNDc0LDcgQEAgcHVibGljOgogICAgIGVudW0g
ewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRlcm5h
bHMuaWRsLgogICAgICAgICBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9O
UyA9IDEsCisgICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTID0gMgog
ICAgIH07CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxl
bWVudCYsIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHJl
cGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50JiwgdW5zaWduZWQgc2hvcnQgZmxhZ3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDU2ZmY1MDNhYmUyZC4uMWEz
ZWRjYzRjZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02MDAsNiAr
NjAwLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2Jq
ZWN0OwogCiAgICAgLy8gRmxhZ3MgZm9yIGRpc3BsYXlMaXN0Rm9yRWxlbWVudC4KICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9O
UyA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNf
RFJBV19HTFlQSFMgPSAyOwogICAgIC8vIFJldHVybnMgdGhlIHJlY29yZGVkIGRpc3BsYXkgbGlz
dC4KICAgICBET01TdHJpbmcgZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwg
b3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKICAgICAvLyBSZXR1cm5zIHRoZSBk
aXNwbGF5IGxpc3QgdGhhdCB3YXMgYWN0dWFsbHkgcGFpbnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCA3YTA3MzJlMjkyZWUuLjdhYmIwNzJmYzM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6ZHJhd0dseXBoc1dpdGhRdWFsaWZpZWRJZGVudGlmaWVyKERpc3BsYXlM
aXN0OjpECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVJdGVtKFdURk1vdmUo
aXRlbSksICpmb250KTsKKyAgICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksICpmb250LCBzdGQ6
Om9wdGlvbmFsPGJvb2w+IHsgfSk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
cjo6ZHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZjNDcyNmM3NjU2Yy4uYjgxMjYzY2JkZjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRlciB3aGVuIGRyYXdpbmcg
Y2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5
cGgtZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5
LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMi0wNS0xNCAgQWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1JlcGFpbnRdIEJvcmRlciBpZ25vcmVz
IGN1cnJlbnRDb2xvciBjaGFuZ2Ugd2hlbiBob3ZlcmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NjkxNzZhNWZhYTljLi5lZDc3M2FhM2Y2MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTEwOCw2
ICs1MTA4LDggQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsgRHUKIAogIyBEaXNwbGF5IGxpc3QgbG9n
Z2luZyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBkZWJ1ZwogWyBSZWxlYXNlIF0gZmFzdC90ZXh0L2ds
eXBoLWRpc3BsYXktbGlzdC1jb2xvci5odG1sIFsgU2tpcCBdCitbIFJlbGVhc2UgXSBmYXN0L3Rl
eHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLmh0bWwgWyBTa2lwIF0KK1sgUmVsZWFzZSBdIGZh
c3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbCBbIFNraXAgXQogCiAjIFBs
dWdpbnMKICMgRklYTUU6IFJlbW92ZSB0aGVzZSB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zZGYzZDQ2ZDQ3OTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0
LWVtb2ppLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisKKyhzZXQtY3RtCisgIChzZXQt
Y3RtIHttPSgoMS4wMCwwLjAwKSgwLjAwLC0xLjAwKSkgdD0oMC4wMCwwLjAwKX0pKQorKHRyYW5z
bGF0ZQorICAoeCAwLjAwKQorICAoeSA3NC4wMCkpCisoc2NhbGUKKyAgKHNpemUgd2lkdGg9MSBo
ZWlnaHQ9LTEpKQorKGRyYXctbmF0aXZlLWltYWdlCisgIChzb3VyY2UtcmVjdCBhdCAoMCwwKSBz
aXplIDE2MHgxNjApCisgIChkZXN0LXJlY3QgYXQgKDAsLTEzKSBzaXplIDEwMHgxMDApIGV4dGVu
dCBhdCAoMCwwKSBzaXplIDB4MCkKKyhzY2FsZQorICAoc2l6ZSB3aWR0aD0xIGhlaWdodD0tMSkp
CisodHJhbnNsYXRlCisgICh4IDAuMDApCisgICh5IC03NC4wMCkpCisoc2V0LWN0bQorICAoc2V0
LWN0bSBpZGVudGl0eSkpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlw
aC1kaXNwbGF5LWxpc3QtZW1vamkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1k
aXNwbGF5LWxpc3QtZW1vamkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjllYTk4MTI0OGUyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30K
K2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXRGb3JjZVVzZUdseXBoRGlz
cGxheUxpc3RGb3JUZXN0aW5nKHRydWUpOworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InJ1bigp
Ij4KKworPGRpdiBpZD10ZXh0IHN0eWxlPSJmb250OiAxMDBweCAnQXBwbGUgQ29sb3IgRW1vamkn
Ijs+JiN4MWY5ODg7PC9kaXY+CisKKzxwcmUgaWQ9b3V0cHV0PjwvcHJlPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHJ1bigpIHsKKyAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldEZvcmNl
VXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcoZmFsc2UpOworICAgICAgICAgICAgICAgIG91
dHB1dC50ZXh0Q29udGVudCA9IGludGVybmFscy5jYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRl
eHROb2RlKHRleHQuZmlyc3RDaGlsZCwgaW50ZXJuYWxzLkRJU1BMQVlfTElTVF9ERUNPTVBPU0VT
X0RSQVdfR0xZUEhTKTsKKyAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1zdmctZm9udC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlz
cGxheS1saXN0LXN2Zy1mb250LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjNhMTA2NmMyNDU5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTkgQEAKKworKGRyYXctZ2x5cGhzCisgIChsb2NhbC1hbmNob3IgKDAsMCkpCisg
IChhbmNob3ItcG9pbnQgKDAsMCkpCisgIChsZW5ndGggMSkgZXh0ZW50IGF0ICgwLDApIHNpemUg
MHgwKQorKGRyYXctaW1hZ2UtYnVmZmVyCisgIChzb3VyY2UtcmVjdCBhdCAoMCwwKSBzaXplIDkw
eDgwKQorICAoZGVzdC1yZWN0IGF0ICgxMDAsLTcwKSBzaXplIDkweDgwKSBleHRlbnQgYXQgKDAs
MCkgc2l6ZSAweDApCisoZHJhdy1pbWFnZS1idWZmZXIKKyAgKHNvdXJjZS1yZWN0IGF0ICgwLDAp
IHNpemUgOTZ4OTYpCisgIChkZXN0LXJlY3QgYXQgKDIwMCwtNzgpIHNpemUgOTZ4OTYpIGV4dGVu
dCBhdCAoMCwwKSBzaXplIDB4MCkKKyhkcmF3LWltYWdlLWJ1ZmZlcgorICAoc291cmNlLXJlY3Qg
YXQgKDAsMCkgc2l6ZSA5Nng4OCkKKyAgKGRlc3QtcmVjdCBhdCAoMzAwLC03NCkgc2l6ZSA5Nng4
OCkgZXh0ZW50IGF0ICgwLDApIHNpemUgMHgwKQorKGRyYXctZ2x5cGhzCisgIChsb2NhbC1hbmNo
b3IgKDQwMCwwKSkKKyAgKGFuY2hvci1wb2ludCAoNDAwLDApKQorICAobGVuZ3RoIDEpIGV4dGVu
dCBhdCAoMCwwKSBzaXplIDB4MCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMjNhNjZhZjUwZGM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5odG1sCkBAIC0wLDAg
KzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworfQoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldEZv
cmNlVXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHls
ZT4KK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiAiU1ZHRm9udCI7CisgICAgc3JjOiB1
cmwoInJlc291cmNlcy9BaGVtLVNWRy50dGYiKSBmb3JtYXQoInRydWV0eXBlIik7Cit9Cis8L3N0
eWxlPgorPGJvZHkgb25sb2FkPSJydW4oKSI+CisKKzxkaXYgaWQ9dGV4dCBzdHlsZT0iZm9udDog
MTAwcHggJ1NWR0ZvbnQnIjs+YUFCQ2E8L2Rpdj4KKworPHByZSBpZD1vdXRwdXQ+PC9wcmU+Cis8
c2NyaXB0PgorZnVuY3Rpb24gcnVuKCkgeworICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5j
dGlvbigpIHsKKyAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0Rm9yY2VVc2VHbHlwaERpc3BsYXlMaXN0Rm9yVGVzdGluZyhmYWxzZSk7CisgICAgICAg
ICAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gaW50ZXJuYWxzLmNhY2hlZEdseXBoRGlzcGxh
eUxpc3RzRm9yVGV4dE5vZGUodGV4dC5maXJzdENoaWxkLCBpbnRlcm5hbHMuRElTUExBWV9MSVNU
X0RFQ09NUE9TRVNfRFJBV19HTFlQSFMpOworICAgICAgICAgICAgICAgIHRleHQucmVtb3ZlKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0p
OworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2pp
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMx
ZTBjODU3ZWIwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxOSBAQAorCisoc2V0LWN0bQorICAoc2V0LWN0bSB7bT0oKDEuMDAsMC4wMCkoMC4wMCwt
MS4wMCkpIHQ9KDAuMDAsMC4wMCl9KSkKKyh0cmFuc2xhdGUKKyAgKHggMC4wMCkKKyAgKHkgNzAu
MDApKQorKHNjYWxlCisgIChzaXplIHdpZHRoPTEgaGVpZ2h0PS0xKSkKKyhkcmF3LW5hdGl2ZS1p
bWFnZQorICAoc291cmNlLXJlY3QgYXQgKDAsMCkgc2l6ZSAxNjB4MTYwKQorICAoZGVzdC1yZWN0
IGF0ICgxLC0xNSkgc2l6ZSAxMDB4MTAwKSBleHRlbnQgYXQgKDAsMCkgc2l6ZSAweDApCisoc2Nh
bGUKKyAgKHNpemUgd2lkdGg9MSBoZWlnaHQ9LTEpKQorKHRyYW5zbGF0ZQorICAoeCAwLjAwKQor
ICAoeSAtNzAuMDApKQorKHNldC1jdG0KKyAgKHNldC1jdG0gaWRlbnRpdHkpKQorCi0tIAoyLjMy
LjAgKEFwcGxlIEdpdC0xMzIpCgo=
</data>
<flag name="commit-queue"
          id="488447"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459364</attachid>
            <date>2022-05-14 15:59:06 -0700</date>
            <delta_ts>2022-05-14 19:42:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514155905.patch</filename>
            <type>text/plain</type>
            <size>87918</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">RnJvbSA5Y2U4Y2JhODRjOTA1MzBlNjFmYmY1OTliMTBiYmVhNDNiMTdiMWRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBGcmFzZXIgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CkRhdGU6IFNhdCwgMTQgTWF5IDIwMjIgMTU6NTg6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBB
dm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2luZyBjYWNo
ZWQKIGdseXBoIGJ1ZmZlcnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MDQyMgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViQ29yZToKCldo
ZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVudGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxh
eSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdHbHlwaAppdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0
Q2FjaGUsIGFuZCB1c2VzIGl0ZW1zIGZyb20gdGhlIGNhY2hlIGluClRleHRQYWludGVyOjpwYWlu
dFRleHRPckVtcGhhc2lzTWFya3MoKS4KCkluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNt
LiBJbiBvcmRlciB0bwphdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nlc3MsIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQpEZWNvbnN0cnVjdERyYXdHbHlw
aHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBo
cygpIHVzZSBhCkRyYXdHbHlwaHNSZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQg
ZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCmFuZCBpbWFnZSBk
cmF3aW5nLCB1c2luZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBp
bnRyb2R1Y2VzIG1lYXN1cmFibGUKb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hl
biB3ZSBjYW4uCgpUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3ZlcmhlYWQg
ZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKZ2x5cGggYnVmZmVyLCB3ZSBj
YW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIg
YW55CmRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhp
cyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgoKKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZp
ZWQgdG8gZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKICBp
bWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBw
ZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAogIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdH
bHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRo
aXMuCiogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNhdGluZyB3aGV0
aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCiAgb24gcGxheWJhY2suCiogVGV4
dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRl
bXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkKICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlz
dCB3aGVuIGdseXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRp
b24KICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KCkluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwgd2UgZW5o
YW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKRElTUExBWV9MSVNUX0RFQ09N
UE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpB
c1RleHQgb3B0aW9uLgpUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0
Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQpkaXNwbGF5IGxp
c3QgdGhyb3VnaCBhIERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0
aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAp3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgoKRGlzcGxheSBs
aXN0IGxvZ2dpbmcgY3VycmVudGx5IGR1bXBzIHJlc291cmNlIGlkZW50aWZpZXJzLCB3aGljaCBp
cyBhIHByb2JsZW0gZm9yCmxheW91dCB0ZXN0IGJlY2F1c2UgdGhleSBhcmUndCBuZWNlc3Nhcmls
eSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmll
cnMKZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFnYXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0
ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmluZyB0aGVtIHRvCmNvbnZlcnRlZCBmcm9tIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0
YWtlIGEgZmxhZ3MgYXJndW1lbnQuCgpUZXN0czogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS5odG1sCiAgICAgICBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250
Lmh0bWwKCiogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6
CihXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CiogcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CiogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CiogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CihXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdHbHlwaHMpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQu
aDoKKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHA6CihXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgoo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UpOgooV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4pOgooV2ViQ29yZTo6RHJhd0dseXBoc1Jl
Y29yZGVyOjpkcmF3R2x5cGhzKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojphc1RleHQg
Y29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToK
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29t
cG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzZXRD
b250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbik6CiogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoKKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CihXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJ
dGVtKToKKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpkdW1wSXRlbUhhbmRsZSk6CiogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpvcGVyYXRvcjw8KToKKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHA6CihXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRy
YXdHbHlwaHMpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CiogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5RHJhd0dseXBocyk6CihXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CihXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyk6CihXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCk6Ciog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpkaXNwbGF5TGlzdEZv
ckVsZW1lbnQpOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1l
bnQpOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHRO
b2RlKToKKiB0ZXN0aW5nL0ludGVybmFscy5oOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKClNv
dXJjZS9XZWJLaXQ6CgpXaGVuIHRleHQgaXMgcGFpbnRpbmcgZnJlcXVlbnRseSwgVGV4dFBhaW50
ZXIgY2FjaGVzIGRpc3BsYXkgbGlzdHMgY29uc2lzdGluZyBvZiBEcmF3R2x5cGgKaXRlbXMgaW4g
R2x5cGhEaXNwbGF5TGlzdENhY2hlLCBhbmQgdXNlcyBpdGVtcyBmcm9tIHRoZSBjYWNoZSBpbgpU
ZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKCkuCgpJbmRlcGVuZGVudGx5LCB0
ZXh0IGRyYXdpbmcgaW4gZ2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxh
eSBsaXN0IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4gdGhl
IEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUKRGVj
b25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQpEcmF3R2x5cGhzUmVjb3JkZXIgdG8gZGV0ZWN0IHdo
ZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdpbmcgaW50byBsb3dlciBsZXZlbCBn
bHlwaAphbmQgaW1hZ2UgZHJhd2luZywgdXNpbmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3
R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBtZWFzdXJhYmxlCm92ZXJoZWFkLCBzbyB3ZSB3YW50
IHRvIGF2b2lkIGl0IHdoZW4gd2UgY2FuLgoKVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCmds
eXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlzcGxheSBsaXN0
IHRvIHNheSB3aGV0aGVyIGFueQpkcmF3R2x5cGhzKCkgY2FsbHMgdHJpZ2dlcmVkIGdseXBoIGRl
Y29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93czoKCiogRHJhd0dseXBoc1Jl
Y29yZGVyIGlzIG1vZGlmaWVkIHRvIGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0
cmlnZ2VyZWQgYW55CiAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5n
ICh3aGljaCBjYW4gaGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKICBhbmQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1
bHQgaW5kaWNhdGluZyB0aGlzLgoqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFsPGJvb2w+
IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5lZAogIG9u
IHBsYXliYWNrLgoqIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoKSBjYWxs
cyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpCiAgb24gdGhlIGNh
Y2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBnbHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQg
YnkgdGhlIGRlc3RpbmF0aW9uCiAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSkuCgpJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRlY29t
cG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBhCkRJ
U1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNoIHR1cm5zIGludG8g
YSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlz
cGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25kcyB0byB0aGlzIGJ5IHJlcGxheWlu
ZyB0aGUKZGlzcGxheSBsaXN0IHRocm91Z2ggYSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyBy
ZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBkaXNwbGF5IGxpc3QKd2l0aCBkZWNvbXBvc2VkIGds
eXBocy4KCkRpc3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVu
dGlmaWVycywgd2hpY2ggaXMgYSBwcm9ibGVtIGZvcgpsYXlvdXQgdGVzdCBiZWNhdXNlIHRoZXkg
YXJlJ3QgbmVjZXNzYXJpbHkgc3RhYmxlLiBTbyB3ZSBwbHVtYiB0aHJvdWdoIGEgSW5jbHVkZXNS
ZXNvdXJjZUlkZW50aWZpZXJzCmZsYWcsIHdoaWNoIG5lZWRzIHRvIHByb3BhZ2F0ZSBpbnRvIGFs
bCB0aGUgZGlzcGxheSBpdGVtIGxvZ2dpbmcgZnVuY3Rpb25zLCByZXF1aXJpbmcgdGhlbSB0bwpj
b252ZXJ0ZWQgZnJvbSBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCAuLi4pIHRvIGR1bXBJdGVtKCkg
ZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGZsYWdzIGFyZ3VtZW50LgoKKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgooV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpkcmF3R2x5cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgoKTGF5b3V0
VGVzdHM6CgoqIFRlc3RFeHBlY3RhdGlvbnM6CiogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxp
c3QtZW1vamkuaHRtbDogQWRkZWQuCiogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmct
Zm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qt
c3ZnLWZvbnQuaHRtbDogQWRkZWQuCiogcGxhdGZvcm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgt
ZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0tLQogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgIHwgIDkxICsrKysrCiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKysrCiAuLi4vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgICAgfCAgIDcgKy0KIC4uLi9ncmFwaGlj
cy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggICAgICB8ICAgMiArLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oICAgIHwgICA0ICstCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgICAgfCAgIDMgKy0KIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICB8ICAgNCArLQogLi4uL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCAgIHwgICAyICstCiAuLi4vY29yZXRleHQvRHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICAgfCAgMTMgKy0KIC4uLi9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwICAgICB8ICAxMSArLQogLi4uL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oICAgICAgIHwgIDEwICstCiAuLi4vZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaCAgICAgICAgfCAgIDYgKwogLi4uL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCAgICAgICAgIHwgMzE0ICsrKysrKysrLS0tLS0tLS0tLQogLi4uL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggIHwgMTMwICsrKystLS0tCiAu
Li4vZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICAgICAgfCAgMTEgKy0KIC4u
Li9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oICAgICAgICB8ICAgMiArLQogLi4u
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCAgICAgIHwgIDU2ICsrLS0KIC4u
Li9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oICAgICAgICB8ICAxMCArLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcCAgICAgIHwgIDIwICstCiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgIDkgKwogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICB8ICAgMSArCiAuLi4vZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgICAgfCAgIDIgKy0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArCiBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zICAgICAgICAgICAgICAgICAgfCAgIDIgKwogMjUgZmlsZXMgY2hhbmdl
ZCwgNDc3IGluc2VydGlvbnMoKyksIDI5NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJj
YjNhNDMzY2U4Li5iNTM2ZjhkMTg0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAy
Mi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAg
ICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2luZyBj
YWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50bHksIFRleHRQYWludGVy
IGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0dseXBoCisgICAgICAgIGl0
ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRlbXMgZnJvbSB0aGUgY2Fj
aGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygpLgor
CisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBnZW5lcmFsIGdvZXMgdG8g
dGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNtLiBJbiBv
cmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nlc3Ms
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQorICAgICAgICBEZWNvbnN0
cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNSZWNvcmRlciB0byBkZXRl
Y3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2VyIGxl
dmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2luZyBhIGN1c3RvbSBDR0Nv
bnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1lYXN1cmFibGUKKyAgICAg
ICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3ZSBjYW4uCisgICAgICAg
IAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3ZlcmhlYWQg
ZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAgICAgICAgZ2x5cGggYnVm
ZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8gc2F5
IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5cGgg
ZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgorICAgICAgICAKKyAg
ICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8gZGV0ZWN0IHdoZXRoZXIg
ZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAgICBpbWFnZSBkcmF3aW5n
LCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBwZW4gd2l0aCBzb21l
IGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlw
aHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRoaXMu
CisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNhdGlu
ZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCisgICAgICAgICAgb24g
cGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJr
cygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkKKyAg
ICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGdseXBoIGRlY29tcG9zaXRp
b24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgICBjb250ZXh0IChl
LmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5KS4KKyAg
ICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwgd2Ug
ZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKKyAgICAgICAgRElTUExB
WV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBhIERp
c3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5
cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkgcmVw
bGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBhIERlY29uc3RydWN0RHJh
d0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAorICAg
ICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERpc3BsYXkgbGlzdCBsb2dn
aW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywgd2hpY2ggaXMgYSBwcm9i
bGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5IGFyZSd0IG5lY2Vzc2Fy
aWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVzUmVzb3VyY2VJZGVudGlm
aWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdhdGUgaW50byBhbGwgdGhl
IGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5nIHRoZW0gdG8KKyAgICAg
ICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgLi4uKSB0byBkdW1wSXRl
bSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4KKworICAgICAgICBUZXN0
czogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250Lmh0bWwKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3ND
b250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBo
c1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29y
ZGVyOjpyZWNvcmREcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6cmVjb3JkRHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmNvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2V0Q29udGFpbnNJ
dGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmFwcGx5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpkdW1wSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6ZHVtcEl0ZW1IYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseURyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmNhY2hl
ZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZGlzcGxheUxpc3RG
b3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVwbGF5RGlzcGxheUxp
c3RGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2FjaGVkR2x5cGhE
aXNwbGF5TGlzdHNGb3JUZXh0Tm9kZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjItMDUtMTQgIEFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGRkNdW0ludGVncmF0aW9uXSBBZGQg
ImZpeGVkIHNpemVkL2FsbCBkZWZhdWx0IHZhbHVlIiBmbGV4IGxheW91dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
NzY0YmNhZmRhYjQuLmQwNjg0YmQ2NzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAy
Mi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAg
ICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2luZyBj
YWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50bHksIFRleHRQYWludGVy
IGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0dseXBoCisgICAgICAgIGl0
ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRlbXMgZnJvbSB0aGUgY2Fj
aGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygpLgor
CisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBnZW5lcmFsIGdvZXMgdG8g
dGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNtLiBJbiBv
cmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nlc3Ms
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQorICAgICAgICBEZWNvbnN0
cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNSZWNvcmRlciB0byBkZXRl
Y3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2VyIGxl
dmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2luZyBhIGN1c3RvbSBDR0Nv
bnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1lYXN1cmFibGUKKyAgICAg
ICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3ZSBjYW4uCisgICAgICAg
IAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3ZlcmhlYWQg
ZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAgICAgICAgZ2x5cGggYnVm
ZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8gc2F5
IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5cGgg
ZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgorICAgICAgICAKKyAg
ICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8gZGV0ZWN0IHdoZXRoZXIg
ZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAgICBpbWFnZSBkcmF3aW5n
LCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBwZW4gd2l0aCBzb21l
IGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlw
aHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRoaXMu
CisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNhdGlu
ZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCisgICAgICAgICAgb24g
cGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJr
cygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkKKyAg
ICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGdseXBoIGRlY29tcG9zaXRp
b24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgICBjb250ZXh0IChl
LmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5KS4KKyAg
ICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwgd2Ug
ZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKKyAgICAgICAgRElTUExB
WV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBhIERp
c3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5
cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkgcmVw
bGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBhIERlY29uc3RydWN0RHJh
d0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAorICAg
ICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERpc3BsYXkgbGlzdCBsb2dn
aW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywgd2hpY2ggaXMgYSBwcm9i
bGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5IGFyZSd0IG5lY2Vzc2Fy
aWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVzUmVzb3VyY2VJZGVudGlm
aWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdhdGUgaW50byBhbGwgdGhl
IGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5nIHRoZW0gdG8KKyAgICAg
ICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgLi4uKSB0byBkdW1wSXRl
bSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdHbHlwaHNXaXRoUXVhbGlm
aWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2UgcmVmZXJzIHRvIHVudXNl
ZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWNkMDg2ZjIy
YTJjLi40OWUxNjhmYzQ0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zODEs
MTAgKzM4MSwxMSBAQCBGbG9hdFNpemUgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rl
eHQoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUsIGNvbnN0CiAgICAgcmV0dXJuIHNpemU7CiB9
CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250
JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKQogewotICAgIG1f
cHJpbWFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlw
aHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LmRy
YXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNt
b290aGluZ01vZGUpOworICAgIGF1dG8gZGlkRGVjb21wb3NlID0gbV9wcmltYXJ5Q29udGV4dC5k
cmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRT
bW9vdGhpbmdNb2RlLCBuZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CisgICAgbV9zZWNvbmRhcnlD
b250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2lu
dCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAgICByZXR1
cm4gZGlkRGVjb21wb3NlOwogfQogCiB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1
bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQuaAppbmRleCBhM2YwZDE5ODZmZjEuLmZjNDI3YTQwOGVjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRmxv
YXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250
JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBm
aW5hbDsKKyAgICBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2Fk
ZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZv
bnROb3RSZWFkeSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggNjg2ZWZjZTNiYTgxLi4xNmI4MWQ5
YjE3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdH
bHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ry
YXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZXhwbGlj
aXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9y
ID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpObyk7
CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgR3JhcGhp
Y3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCiAgICAgdm9pZCBk
cmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENUTGluZVJlZiwgQ0dS
ZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWluUHRyPENHQ29sb3JS
ZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWduZWQgbV9vdXRwdXRH
bHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBmYWxzZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAzZjAxODFkLi4zNmM3
ZWUwZjVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTI5LDkgKzEyOSwxMCBAQCBGbG9hdFNpemUgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1
biYgcnVuLAogICAgIHJldHVybiBmb250LmRyYXdUZXh0KCp0aGlzLCBydW4sIHBvaW50LCBmcm9t
LCB0byk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCitHcmFwaGljc0NvbnRl
eHQ6OkRpZERlY29tcG9zZUdseXBocyBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRp
b25hbDxib29sPikKIHsKICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwor
ICAgIHJldHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBm
NGM3YTg3ZWMxZGIuLjU1YjBmMzk4M2E5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI4Myw3ICsyODMsNiBAQCBwdWJs
aWM6CiAgICAgLy8gVGV4dAogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFNpemUg
ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQ
b2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0
ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3Ro
aW5nTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdFbXBoYXNpc01h
cmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24g
PSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KTsKIApAQCAtMjkyLDYgKzI5
MSw5IEBAIHB1YmxpYzoKICAgICAgICAgZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2Vz
LCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgfQogCisgICAgZW51
bSBjbGFzcyBEaWREZWNvbXBvc2VHbHlwaHMgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSwg
c3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiA9IHsgfSk7CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQo
Y29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgYm9vbCBk
b3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhpY2tu
ZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVM
aW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggY2JmZTc1ZDYzMmRiLi4zNWE2ZDkxYzUxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTExMCw3
ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IHJldHVybiB7
IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBjb25zdCBGbG9h
dFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERlY29tcG9zZUds
eXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250
U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1cm4gRGlkRGVj
b21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRmxv
YXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51
bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9t
Rm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFk
eSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKaW5kZXggMjZhNzUxNWY5Y2VhLi45MTY4MzMxMTc3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTMwNCw2ICszMDQsNyBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBD
R0dTdGF0ZVJlZiBnc3RhdAogICAgIH0KIAogICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hl
Rm9udChmb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25z
LCBjb3VudCwgdGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgaW5pdGlhbFBlblBvc2l0aW9uLCBt
X3Ntb290aGluZ01vZGUpOworICAgIG1fb3V0cHV0R2x5cGhDb3VudCArPSBjb3VudDsKIAogICAg
IG1fb3duZXIuY29uY2F0Q1RNKGludmVyc2VDVE1GaXh1cCk7CiB9CkBAIC0zMjMsNiArMzI0LDcg
QEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0
YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUKIAogICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGNnSW1hZ2UpOwogICAgIG1fb3duZXIuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwg
aW1hZ2UtPnNpemUoKSwgRmxvYXRSZWN0KHJlY3QpLCBGbG9hdFJlY3Qge3sgfSwgaW1hZ2UtPnNp
emUoKX0sIEltYWdlUGFpbnRpbmdPcHRpb25zIHsgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9w
TGVmdCB9KTsKKyAgICBtX2RpZERyYXdJbWFnZSA9IHRydWU7CiAKICAgICAvLyBVbmRvIHRoZSBh
Ym92ZSB5LWZsaXAgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KICAgICBtX293bmVyLnNjYWxlKEZs
b2F0U2l6ZSgxLCAtMSkpOwpAQCAtMzQzLDYgKzM0NSw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCoKICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRS
ZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KHBlblBvc2l0
aW9uKTsKICAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwg
ZGVzdGluYXRpb25SZWN0KTsKKyAgICAgICAgICAgIG1fZGlkRHJhd0ltYWdlID0gdHJ1ZTsKICAg
ICAgICAgfQogCiAgICAgICAgIHBlblBvc2l0aW9uLm1vdmUoc2l6ZShhZHZhbmNlc1tpXSkpOwpA
QCAtMzk1LDkgKzM5OCwxNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0J5U3BsaXR0
aW5nSW50b09UU1ZHQW5kTm9uT1RTVkdSdW5zKGNvbnN0IEZvbnQmIGZvbgogICAgIGRyYXcoKTsK
IH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCitHcmFwaGljc0NvbnRleHQ6
OkRpZERlY29tcG9zZUdseXBocyBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CisgICAg
bV9vdXRwdXRHbHlwaENvdW50ID0gMDsKKyAgICBtX2RpZERyYXdJbWFnZSA9IGZhbHNlOworCiAg
ICAgZHJhd0J5U3BsaXR0aW5nSW50b09UU1ZHQW5kTm9uT1RTVkdSdW5zKGZvbnQsIGdseXBocywg
YWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgCisg
ICAgaWYgKG1fZGlkRHJhd0ltYWdlIHx8IG1fb3V0cHV0R2x5cGhDb3VudCAhPSBudW1HbHlwaHMp
CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6WWVz
OworCisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpObzsK
IH0KIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdOYXRpdmVUZXh0KENURm9udFJlZiBm
b250LCBDR0Zsb2F0IGZvbnRTaXplLCBDVExpbmVSZWYgbGluZSwgQ0dSZWN0IGxpbmVSZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMzJjOWM1MTJjN2I3Li5hNTQzNmM2MjU2ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMTEwLDE2ICsxMTAsMjAgQEAgYm9vbCBE
aXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFn
cywgSXRlbUhhbmRsZSBpdGUKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0KE9wdGlvblNldDxB
c1RleHRGbGFnPiBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3Ry
ZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdT
dHlsZVJlY3QpOworI2lmICFMT0dfRElTQUJMRUQKICAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJ
dGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVm
ZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBpZiAoIXNob3VsZER1bXBG
b3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBU
ZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7Ci0gICAgICAgIHN0cmVhbSA8PCBp
dGVtOworICAgICAgICBkdW1wSXRlbUhhbmRsZShzdHJlYW0sIGl0ZW0sIGZsYWdzKTsKICAgICAg
ICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgZXh0
ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsK
KyNlbmRpZgogICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwogfQogCkBAIC0xMjgsMTMgKzEz
MiwxNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAg
IFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgIHRzIDw8ICJkaXNwbGF5IGxp
c3QiOwogCisjaWYgIUxPR19ESVNBQkxFRAogICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0g
OiAqdGhpcykgewogICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJd
ID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2Nv
cGUgZ3JvdXAodHMpOwotICAgICAgICB0cyA8PCBpdGVtOworICAgICAgICBkdW1wSXRlbUhhbmRs
ZSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucywgQXNU
ZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOwogICAgICAgICBpZiAoaXRl
bS5pc0RyYXdpbmdJdGVtKCkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVudCAiIDw8IGV4dGVu
dDsKICAgICB9CisjZW5kaWYKKwogICAgIHRzLnN0YXJ0R3JvdXAoKTsKICAgICB0cyA8PCAic2l6
ZSBpbiBieXRlczogIiA8PCBzaXplSW5CeXRlcygpOwogICAgIHRzLmVuZEdyb3VwKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5oCmluZGV4IDcwYmZjNDQ5OGY2NS4uOTM3MjIwMWViYTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaApAQCAtNDYsMTIgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1lbnVtIGNsYXNzIEFzVGV4dEZsYWcgOiB1aW50
OF90IHsKLSAgICBJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyAgICAgID0gMSA8PCAwLAotICAg
IEluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyAgICAgPSAxIDw8IDEsCi0gICAgRGVjb21wb3Nl
c0RyYXdHbHlwaHMgICAgICAgICAgICA9IDEgPDwgMiwKLX07Ci0KIGNsYXNzIERpc3BsYXlMaXN0
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZWNvcmRlckltcGw7CkBAIC05Myw2ICs4Nyw5
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29sKTsKKyAgICAKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGNvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbjsg
fQorICAgIHZvaWQgc2V0Q29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24oYm9v
bCB2YWx1ZSkgeyBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uID0gdmFs
dWU7IH0KIAogICAgIGNsYXNzIEl0ZXJhdG9yOwogCkBAIC0xMjksNiArMTI2LDcgQEAgcHJpdmF0
ZToKICAgICBMb2NhbFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8c3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
Y29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb247CiAgICAgYm9vbCBtX3RyYWNr
c0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtVHlwZS5oCmluZGV4IGZiNDY0MWExMzQ0Ny4uOGNhMjNmYTZhMDYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTI4LDYgKzI4LDEyIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCitlbnVtIGNsYXNzIEFz
VGV4dEZsYWcgOiB1aW50OF90IHsKKyAgICBJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyAgICAg
ID0gMSA8PCAwLAorICAgIEluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyAgICAgPSAxIDw8IDEs
CisgICAgRGVjb21wb3Nlc0RyYXdHbHlwaHMgICAgICAgICAgICA9IDEgPDwgMiwKK307CisKIGVu
dW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBTYXZlLAogICAgIFJlc3RvcmUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMzVhN2I0ZWExYzI0Li4xNmUx
N2EwMTY3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTIwMCw5
ICsyMDAsOSBAQCBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgRwogICAgIGNvbXB1dGVCb3VuZHMoZm9u
dCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250JiBmb250KSBjb25zdAorR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VH
bHlwaHMgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKSBj
b25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5kYXRhKCksIG1f
YWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3Ro
aW5nTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5k
YXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCks
IG1fc21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRpb24pOwogfQogCiB2b2lkIERy
YXdHbHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKQEAgLTY4OCwxODQgKzY4
OCwxNjMgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0
ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFn
PikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIngiLCBpdGVtLngoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJ5IiwgaXRlbS55KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmdsZSIsIGl0ZW0uYW5nbGUoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTY2FsZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNjYWxlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBpdGVtLnRyYW5z
Zm9ybSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQordm9pZCBkdW1wSXRlbShU
ZXh0U3RyZWFtJiB0cywgY29uc3QgQ29uY2F0ZW5hdGVDVE0mIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImN0bSIsIGl0ZW0udHJhbnNmb3JtKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xvcigp
KTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNldElubGluZVN0cm9rZUNvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIHN0YXRlLmNvbG9yKCkpOwotICAg
IHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsK
IH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ry
b2tlVGhpY2tuZXNzJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAg
IHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgc3RhdGUudGhpY2tuZXNzKCkpOwotICAgIHJl
dHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0udGhpY2tuZXNz
KCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
ZXRTdGF0ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0
YXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMgPDwgaXRlbS5zdGF0
ZSgpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgbGluZUNhcCkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikK
IHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwgbGluZUNhcC5saW5lQ2FwKCkpOwot
ICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwgaXRlbS5saW5l
Q2FwKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRMaW5lRGFzaCYgbGluZURhc2gpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRMaW5lRGFzaCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVEYXNoLmRhc2hBcnJheSgpKTsKLSAgICB0
cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGluZURhc2guZGFzaE9mZnNldCgpKTsKLSAg
ICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLWFycmF5IiwgaXRlbS5kYXNo
QXJyYXkoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGl0ZW0uZGFzaE9m
ZnNldCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywg
Y29uc3QgU2V0TGluZUpvaW4mIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKLSAgICB0
cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGxpbmVKb2luLmxpbmVKb2luKCkpOwotICAgIHJl
dHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGl0ZW0ubGluZUpvaW4o
KSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNl
dE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRNaXRlckxpbWl0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7Ci0gICAg
dHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQubWl0ZXJMaW1pdCgpKTsK
LSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIGl0ZW0u
bWl0ZXJMaW1pdCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgQ2xpcCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IENsaXAmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dCYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlm
aWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250
YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZl
cklkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRl
c3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAg
IHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKICAgICB0cy5kdW1wUHJvcGVy
dHkoIndpbmQtcnVsZSIsIGl0ZW0ud2luZFJ1bGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3Mp
CiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0u
c291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFpbnMoQXNUZXh0
RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVy
KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBpdGVtLnNvdXJj
ZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pCit2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0cy5kdW1wUHJv
cGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJhbmNob3ItcG9pbnQiLCBpdGVtLmFuY2hvclBvaW50KCkpOwogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgibGVuZ3RoIiwgaXRlbS5nbHlwaHMoKS5zaXplKCkpOwogCi0gICAgcmV0dXJuIHRz
OwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
SW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3SW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykKIHsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1
ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJ
bmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImlt
YWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CiAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFn
cykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdl
SWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFzVGV4dEZsYWc6OkluY2x1
ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2Ut
aWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0
eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRl
c3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1N5c3RlbUlt
YWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1N5c3Rl
bUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGR1
bXAgbW9yZSBzdHVmZi4KICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5k
ZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlm
aWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhB
c1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1w
UHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwgaXRlbS5wYXR0ZXJuVHJhbnNm
b3JtKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0IiwgaXRlbS50aWxlUmVjdCgp
KTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdFJlY3QoKSk7CiAg
ICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhhc2UoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwotICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1JlY3QmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0
ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJvcmRlci10aGlja25lc3MiLCBpdGVt
LmJvcmRlclRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmUmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTEiLCBpdGVtLnBvaW50MSgp
KTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBpdGVtLnBvaW50MigpKTsKLSAgICBy
ZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7
CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxvY2tMb2NhdGlv
bigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNo
b3IoKSk7CkBAIC04NzUsMzgwICs4NTQsMzUwIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJ3aWR0aHMiLCBpdGVtLndpZHRocygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImlz
LXByaW50aW5nIiwgaXRlbS5pc1ByaW50aW5nKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZG91
YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0K
IAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0VsbGlw
c2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RWxsaXBz
ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0
eSgib2Zmc2V0IiwgaXRlbS5vZmZzZXQoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3RzIiwg
aXRlbS5yZWN0cygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgp
KTsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKIH0K
IAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3Qm
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdCYgaXRl
bSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIs
IGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3ImIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVt
LnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4KICAgICB0cy5kdW1wUHJv
cGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQ29tcG9zaXRlZFJlY3Qm
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQ29tcG9zaXRl
ZFJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0
ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb21wb3NpdGUtb3BlcmF0aW9uIiwg
aXRlbS5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJsZW5kLW1v
ZGUiLCBpdGVtLmJsZW5kTW9kZSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVkUmVjdCYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVkUmVjdCYgaXRl
bSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIs
IGl0ZW0ucm91bmRlZFJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0u
Y29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRlbS5ibGVuZE1v
ZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlbSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0Iiwg
aXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicm91bmRlZC1ob2xlLXJlY3QiLCBp
dGVtLnJvdW5kZWRIb2xlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRl
bS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhf
REFUQSkKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bExpbmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsTGlu
ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxBcmMmIGl0ZW0pCit2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAg
IHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQmV6
aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
QmV6aWVyQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1w
UHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VBcmMmIGl0ZW0p
Cit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VBcmMmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVt
LnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7
Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAg
IHJldHVybiB0czsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxQYXRoJiBpdGVtLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRl
bS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICBy
ZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYgaXRlbSwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdGluYXRp
b24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0czsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShWSURFTykKIAogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywg
Y29uc3QgU3Ryb2tlUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRz
LmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
ImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVBhdGgmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQYXRoJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7
Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0
cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAg
IHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0KCkpOwogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3Qo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVyJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgib3BhY2l0eSIsIGl0
ZW0ub3BhY2l0eSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImIGl0ZW0pCit2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNjYWxlRmFjdG9y
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJz
Y2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOwotICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQor
dm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbUhhbmRsZSYgaXRl
bSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewogICAgIHRzIDw8IGl0ZW0udHlwZSgp
OwogCiAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5z
bGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOworICAgICAgICBkdW1w
SXRlbSh0cywgaXRlbS5nZXQ8VHJhbnNsYXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRl
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Um90YXRlPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTY2FsZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNjYWxlPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0Q1RNPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8U2V0Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25jYXRlbmF0ZUNU
TT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENvbmNhdGVuYXRlQ1RNPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxD
b2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9y
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRTdGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldFN0
YXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxTZXRMaW5lRGFzaD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVE
YXNoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVKb2luOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVKb2luPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxT
ZXRNaXRlckxpbWl0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXA+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxDbGlwPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXQ+KCk7
CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwT3V0PigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PENsaXBPdXRUb1BhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlw
T3V0VG9QYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxE
cmF3R2x5cGhzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVy
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0
dGVybj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXR0ZXJuPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0
ZW0uZ2V0PERyYXdSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZT4oKTsKKyAg
ICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdMaW5lPigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7CisgICAgICAgIGR1bXBJdGVt
KHRzLCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PERyYXdFbGxpcHNlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0
ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
RHJhd0ZvY3VzUmluZ1JlY3RzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdD4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0PigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RmlsbFJvdW5kZWRSZWN0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFJv
dW5kZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxMaW5lOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxGaWxsTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PEZpbGxMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxBcmM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxBcmM+KCk7CisgICAgICAg
IGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsQXJjPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxRdWFkQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxs
UXVhZEN1cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxCZXppZXJDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEJlemllckN1cnZl
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEJlemllckN1cnZlPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBh
dGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RmlsbFBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxF
bGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGNhc2UgSXRl
bVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8UGFpbnRG
cmFtZUZvck1lZGlhPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8UGFpbnRGcmFt
ZUZvck1lZGlhPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCksIGZsYWdzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PFN0cm9rZUxpbmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlQXJjOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTdHJva2VBcmM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdl
dDxTdHJva2VBcmM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VRdWFkQ3Vy
dmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VRdWFkQ3VydmU+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlQmV6aWVy
Q3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUJlemllckN1cnZlPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlQmV6aWVyQ3VydmU+KCksIGZsYWdzKTsK
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOworICAgICAgICBkdW1wSXRlbSh0
cywgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJv
a2VFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlRWxsaXBz
ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOworICAgICAgICBkdW1wSXRlbSh0cywg
aXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSwgZmxhZ3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKSwgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKLQogICAgIC8vIEl0ZW1zIHdpdGggbm8gYWRkaXRpb25hbCBkYXRhLgogICAgIGNh
c2UgSXRlbVR5cGU6OlNhdmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKQEAgLTEyNjAs
NyArMTIwOSw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1I
YW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiB0czsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAppbmRleCBkMTQ0MDc3M2FlZDMuLjAwNTQ4NDYxMzQ4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC01NSw2ICs1NSw3IEBAIHN0cnVjdCBJbWFnZVBh
aW50aW5nT3B0aW9uczsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51bSBjbGFzcyBB
c1RleHRGbGFnIDogdWludDhfdDsKIHN0cnVjdCBJdGVtSGFuZGxlOwogCiAvKiBpc0lubGluZUl0
ZW0gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBuZWVkcyB0byBiZSBwYXNzZWQgdGhyb3Vn
aCBJUEM6OkVuY29kZXIgaW4gb3JkZXIgdG8gc2VyaWFsaXplLApAQCAtNTkyLDcgKzU5Myw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
Y291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxHbHlwaEJ1ZmZlckFk
dmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxB
bmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZvbnQmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBv
c2l0aW9uKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9ib3VuZHM7IH0KQEAgLTIwNTEsNjcgKzIwNTIsODAgQEAgc2l6ZV90IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIEl0ZW1UeXBlIGRp
c3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICNpZiAhTE9HX0RJ
U0FCTEVECi1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBUcmFuc2xhdGUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2NhbGUmKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldENUTSYpOwotV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ29u
Y2F0ZW5hdGVDVE0mKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lU3Ryb2tlQ29s
b3ImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0U3RhdGUmKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVDYXAmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFNldExpbmVEYXNoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lSm9pbiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TWl0ZXJMaW1pdCYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcCYp
OwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgQ2xpcE91dCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRUb1BhdGgmKTsKLVdF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENs
aXBQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYpOwotV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJh
d0ltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RHJhd1BhdHRlcm4mKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IERyYXdSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZSYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0xpbmVzRm9yVGV4
dCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2UmKTsKLVdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdQ
YXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxs
UmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3ImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50Jik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBG
aWxsQ29tcG9zaXRlZFJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSb3VuZGVkUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFRyYW5zbGF0ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBSb3RhdGUmLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
U2NhbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0Q1RNJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENvbmNhdGVu
YXRlQ1RNJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYsIE9wdGlvblNldDxB
c1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBTZXRJbmxpbmVTdHJva2VDb2xvciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdHJva2VUaGlj
a25lc3MmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0U3RhdGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGlu
ZUNhcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lRGFzaCYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRM
aW5lSm9pbiYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0JiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IENsaXAmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwVG9J
bWFnZUJ1ZmZlciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0VG9QYXRoJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IENsaXBQYXRoJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJiwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYsIGNvbnN0IERyYXdHbHlwaHMmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ltYWdlQnVm
ZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYsIE9wdGlvblNldDxBc1RleHRG
bGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBE
cmF3U3lzdGVtSW1hZ2UmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1BhdHRlcm4mLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd1JlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0xpbmUmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd0xpbmVzRm9yVGV4dCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERy
YXdQYXRoJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IERyYXdGb2N1c1JpbmdSZWN0cyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdCYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdp
dGhHcmFkaWVudCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQ29tcG9zaXRlZFJlY3QmLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKICNpZiBFTkFCTEUoSU5MSU5FX1BB
VEhfREFUQSkKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxMaW5lJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQXJjJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUXVhZEN1cnZlJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxs
QmV6aWVyQ3VydmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUFyYyYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VC
ZXppZXJDdXJ2ZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRmlsbExpbmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEFyYyYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBGaWxsUXVhZEN1cnZlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxCZXppZXJDdXJ2ZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBTdHJva2VBcmMmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9F
WFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxQYXRoJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxs
RWxsaXBzZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgRmlsbFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEVsbGlwc2UmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOwogI2lmIEVOQUJMRShWSURFTykKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYpOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRGcmFtZUZv
ck1lZGlhJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBTdHJva2VSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBTdHJva2VQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VFbGxpcHNlJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VM
aW5lJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBDbGVhclJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImKTsKLVdFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3ImKTsKLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
SXRlbUhhbmRsZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBTdHJva2VSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgU3Ryb2tlRWxsaXBzZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VMaW5lJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IENsZWFyUmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxh
eWVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFQmIGl0ZW0pCit7CisgICAgZHVtcEl0ZW0odHMs
IGl0ZW0sIHsgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMsIEFzVGV4dEZs
YWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyB9KTsKKyAgICByZXR1cm4gdHM7Cit9CisK
K3ZvaWQgZHVtcEl0ZW1IYW5kbGUoVGV4dFN0cmVhbSYsIGNvbnN0IEl0ZW1IYW5kbGUmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSkKK3sKKyAgICBkdW1wSXRl
bUhhbmRsZSh0cywgaXRlbUhhbmRsZSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOworICAg
IHJldHVybiB0czsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDA3NGJmNjA5M2VkMy4u
NzY1OGY4MzQyZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0xNjEsMTcgKzE2MSwyMCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdAogICAgIHJlY29y
ZERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QsIGZp
bHRlcik7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
IGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCitHcmFwaGljc0NvbnRleHQ6OkRp
ZERlY29tcG9zZUdseXBocyBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2lu
dCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPiBu
ZWVkc0dseXBoRGVjb21wb3NpdGlvbikKIHsKLSAgICBpZiAobV9kZWNvbnN0cnVjdERyYXdHbHlw
aHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpIHsKKyAgICBpZiAobV9kZWNvbnN0cnVj
dERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpCisgICAgICAgIEFMV0FZ
U19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJSZWNvcmRlcjo6ZHJhd0dseXBocyAtIG5lZWRz
R2x5cGhEZWNvbXBvc2l0aW9uICIgPDwgbmVlZHNHbHlwaERlY29tcG9zaXRpb24pOworCisgICAg
aWYgKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVz
ICYmICghbmVlZHNHbHlwaERlY29tcG9zaXRpb24gfHwgKm5lZWRzR2x5cGhEZWNvbXBvc2l0aW9u
KSkgewogICAgICAgICBpZiAoIW1fZHJhd0dseXBoc1JlY29yZGVyKQogICAgICAgICAgICAgbV9k
cmF3R2x5cGhzUmVjb3JkZXIgPSBtYWtlVW5pcXVlPERyYXdHbHlwaHNSZWNvcmRlcj4oKnRoaXMs
IG1faW5pdGlhbFNjYWxlKTsKIAotICAgICAgICBtX2RyYXdHbHlwaHNSZWNvcmRlci0+ZHJhd0ds
eXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290
aGluZ01vZGUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBtX2RyYXdHbHlwaHNS
ZWNvcmRlci0+ZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0
YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgIH0KIAogICAgIGRyYXdHbHlwaHNBbmRDYWNo
ZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9v
dGhpbmdNb2RlKTsKKyAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsKIH0KIAogdm9p
ZCBSZWNvcmRlcjo6ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAppbmRleCA2MDA0ODMzNmE3ZjguLjYyMzQ0OGRhMTQ2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMTIsNyArMjEyLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwg
RmlsdGVyJiwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQ
T1JUIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5
cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ds
eXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50
JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cAppbmRleCA5N2UxMWNiODYwZDkuLjc5ZGFlYTc1NzYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMTA3LDU1ICsxMDcsNTcgQEAgaW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGgKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1pbmxpbmUgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseURyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNl
SGVhcCwgRHJhd0dseXBocyYgZHJhd0dseXBoc0l0ZW0pCitpbmxpbmUgc3RhdGljIHN0ZDo6cGFp
cjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4sIEdyYXBoaWNzQ29u
dGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzPiBhcHBseURyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgRHJhd0dseXBocyYg
ZHJhd0dseXBoc0l0ZW0sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBkcmF3R2x5cGhzSXRlbS5mb250
SWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBmb250ID0gcmVzb3VyY2VIZWFwLmdldEZvbnQo
cmVzb3VyY2VJZGVudGlmaWVyKSkgewotICAgICAgICBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250
ZXh0LCAqZm9udCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGF1dG8g
ZGlkRGVjb21wb3NlID0gZHJhd0dseXBoc0l0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQsIG5lZWRz
R2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBkaWRE
ZWNvbXBvc2UgfTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKKyAgICBy
ZXR1cm4geyByZXNvdXJjZUlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3Nl
R2x5cGhzOjpObyB9OwogfQogCi1zdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVh
c29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXll
cjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKK2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShJ
dGVtSGFuZGxlIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdAogewogICAgIHN3aXRjaCAoaXRlbS50
eXBlKCkpIHsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKICAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZm
ZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVt
KSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRS
ZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAg
ICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwotCi0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5RHJhd0dseXBocyhtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFw
LCBpdGVtLmdldDxEcmF3R2x5cGhzPigpKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBs
YXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIp
LCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdH
bHlwaHM6IHsKKyAgICAgICAgYXV0byBkcmF3R2x5cGhzUmVzdWx0ID0gYXBwbHlEcmF3R2x5cGhz
KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCksIG1fZGlz
cGxheUxpc3QuY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24oKSk7CisgICAg
ICAgIGlmIChkcmF3R2x5cGhzUmVzdWx0LmZpcnN0KQorICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKGRyYXdHbHlwaHNS
ZXN1bHQuZmlyc3QpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0sIGRyYXdHbHlw
aHNSZXN1bHQuc2Vjb25kIH07CisgICAgfQogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVz
b3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZToKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250ZXh0LCBtX3Jlc291cmNl
SGVhcCwgaXRlbSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
cikgfTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSwgeyB9IH07CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U291cmNl
SW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkK
LSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAg
ICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgogICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0obV9jb250ZXh0
LCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdD
YWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSwg
eyB9IH07CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBkZWZhdWx0OgogICAgICAgICBpdGVt
LmFwcGx5KG1fY29udGV4dCk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyB9OwogfQogCiBSZXBsYXlS
ZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29s
IHRyYWNrUmVwbGF5TGlzdCkKQEAgLTE4NywxMiArMTg5LDE2IEBAIFJlcGxheVJlc3VsdCBSZXBs
YXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBs
YXlMaXN0CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8
ICJhcHBseWluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAgICAgICAgaWYgKGF1dG8g
W3JlYXNvbkZvclN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyXSA9IGFw
cGx5SXRlbShpdGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKLSAgICAgICAgICAgIHJlc3VsdC5y
ZWFzb25Gb3JTdG9wcGluZyA9ICpyZWFzb25Gb3JTdG9wcGluZzsKLSAgICAgICAgICAgIHJlc3Vs
dC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBhcHBseVJlc3VsdCA9IGFwcGx5SXRl
bShpdGVtKTsKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LnN0b3BSZWFzb24pIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9ICphcHBseVJlc3VsdC5zdG9wUmVhc29uOwor
ICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZN
b3ZlKGFwcGx5UmVzdWx0LnJlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChhcHBseVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMg
JiYgKmFwcGx5UmVzdWx0LmRpZERlY29tcG9zZUdseXBocyA9PSBHcmFwaGljc0NvbnRleHQ6OkRp
ZERlY29tcG9zZUdseXBoczo6WWVzKQorICAgICAgICAgICAgcmVzdWx0LmRpZERlY29tcG9zZUds
eXBocyA9IEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXM7CisKICAgICAg
ICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAgICAg
ICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCmluZGV4IDI1ODRhNTM5ZmMwNS4uNGUzNTA0ZmI1MGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbk1l
bW9yeURpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMiw3ICszMyw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogbmFt
ZXNwYWNlIERpc3BsYXlMaXN0IHsKIApAQCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3QgUmVwbGF5UmVz
dWx0IHsKICAgICBzaXplX3QgbnVtYmVyT2ZCeXRlc1JlYWQgeyAwIH07CiAgICAgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXI7CiAgICAgU3RvcFJlcGxheVJlYXNvbiByZWFzb25Gb3JTdG9wcGluZyB7IFN0b3BS
ZXBsYXlSZWFzb246OlJlcGxheWVkQWxsSXRlbXMgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdyYXBo
aWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzPiBkaWREZWNvbXBvc2VHbHlwaHM7CiB9Owog
CiBjbGFzcyBSZXBsYXllciB7CkBAIC02MSw3ICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
ID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKLSAgICBz
dGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CisgICAg
c3RydWN0IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxh
eVJlYXNvbj4gc3RvcFJlYXNvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IHJlc291cmNlSWRlbnRpZmllcjsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gZGlkRGVjb21wb3NlR2x5cGhz
OworICAgIH07CisgICAgQXBwbHlJdGVtUmVzdWx0IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBt
X2Rpc3BsYXlMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5k
ZXggNGYzMzQyZmEzOTEwLi44Mjc0YzkzODkwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlRleHRQYWludGVyLmgiCiAKKyNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGaWx0
ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0xMjMsNyAr
MTI0LDExIEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyhjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1CiAgICAgICAgIC8vIFJlcGxheWluZyBi
YWNrIGEgd2hvbGUgY2FjaGVkIGdseXBoIHJ1biB0byB0aGUgR3JhcGhpY3NDb250ZXh0LgogICAg
ICAgICBtX2NvbnRleHQudHJhbnNsYXRlKHRleHRPcmlnaW4pOwogICAgICAgICBEaXNwbGF5TGlz
dDo6UmVwbGF5ZXIgcmVwbGF5ZXIobV9jb250ZXh0LCAqbV9nbHlwaERpc3BsYXlMaXN0KTsKLSAg
ICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgICAgIGF1dG8gcmVwbGF5UmVzdWx0ID0gcmVw
bGF5ZXIucmVwbGF5KCk7CisgICAgICAgIAorICAgICAgICBpZiAocmVwbGF5UmVzdWx0LmRpZERl
Y29tcG9zZUdseXBocykKKyAgICAgICAgICAgIG1fZ2x5cGhEaXNwbGF5TGlzdC0+c2V0Q29udGFp
bnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24oKnJlcGxheVJlc3VsdC5kaWREZWNvbXBv
c2VHbHlwaHMgPT0gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6Olllcyk7CisK
ICAgICAgICAgbV9jb250ZXh0LnRyYW5zbGF0ZSgtdGV4dE9yaWdpbik7CiAgICAgfQogICAgIG1f
Z2x5cGhEaXNwbGF5TGlzdCA9IG51bGxwdHI7CkBAIC0yNTUsOSArMjYwLDE4IEBAIFN0cmluZyBU
ZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dChUZXh0
JiB0ZXh0Tm9kZSwgT3B0CiAgICAgICAgICAgICBkaXNwbGF5TGlzdCA9IFRleHRQYWludGVyOjpn
bHlwaERpc3BsYXlMaXN0SWZFeGlzdHMoKnRleHRCb3guaW5saW5lQm94KCkpOwogI2VuZGlmCiAg
ICAgICAgIGlmIChkaXNwbGF5TGlzdCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlz
cGxheUxpc3QtPmFzVGV4dChmbGFncykpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xu
Jyk7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6RGVj
b21wb3Nlc0RyYXdHbHlwaHMpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXBsYXkgZGlzcGxheUxp
c3QgdGhyb3VnaCBhIGNvbnRleHQgd2l0aCBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyBzbyB0
aGF0IHRoZSBvdXRwdXQgZGlzcGxheSBsaXN0IHNob3dzIHRoZSBkcmF3aW5nIGNvbW1hbmRzIGZv
ciBkZWNvbXBvc3BlZCBnbHlwaHMuCisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBvdXRwdXREaXNwbGF5TGlzdCA9IG1ha2VV
bmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+KCk7CisgICAgICAgICAgICAg
ICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCByZWNvcmRpbmdDb250ZXh0KCpvdXRwdXREaXNw
bGF5TGlzdCwgeyB9LCB7IH0sIHsgfSwgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWNvbnN0cnVj
dERyYXdHbHlwaHM6Olllcyk7CisgICAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVy
IHJlcGxheWVyKHJlY29yZGluZ0NvbnRleHQsICpkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICAg
ICAgYXV0byByZXBsYXlSZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChvdXRwdXREaXNwbGF5TGlzdC0+YXNUZXh0KGZsYWdzKSk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaXNwbGF5TGlz
dC0+YXNUZXh0KGZsYWdzKSk7CiAgICAgICAgIH0KKworICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKICAgICB9CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ4MWE1YzJhM2Y3Zi4uZWU1Y2ZjODZhMTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMTc1LDYgKzMxNzUsOSBAQCBF
eGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6ZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQsIHVuc2lnbmVkCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xV
REVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERp
c3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAg
ICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykKKyAgICAg
ICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9z
ZXNEcmF3R2x5cGhzKTsKKwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpLT5oYXNMYXllcigp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKQEAg
LTMyMDAsNiArMzIwMyw5IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpyZXBsYXlE
aXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgdW5zCiAgICAgaWYgKGZsYWdz
ICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRp
c3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRm
b3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NF
U19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6
OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIGlmICghZWxlbWVudC5y
ZW5kZXJlcigpLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZEFjY2Vzc0Vycm9yIH07CiAKQEAgLTMyMzMsNiArMzIzOSw5IEBAIEV4Y2VwdGlvbk9yPFN0cmlu
Zz4gSW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlKE5vZGUmIG5v
ZGUsIHVuCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09Q
RVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1Rl
eHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBE
SVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RG
bGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsK
KwogICAgIHJldHVybiBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0
Tm9kZUFzVGV4dChkb3duY2FzdDxUZXh0Pihub2RlKSwgZGlzcGxheUxpc3RGbGFncyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI0Y2FkZGQyMjQ0Mi4uOGYzNmVjN2U0
ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ3NCw2ICs0NzQsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4g
c3luYyB3aXRoIEludGVybmFscy5pZGwuCiAgICAgICAgIERJU1BMQVlfTElTVF9JTkNMVURFU19Q
TEFURk9STV9PUEVSQVRJT05TID0gMSwKKyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNf
RFJBV19HTFlQSFMgPSAyCiAgICAgfTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRpc3BsYXlM
aXN0Rm9yRWxlbWVudChFbGVtZW50JiwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpOwogICAgIEV4Y2Vw
dGlvbk9yPFN0cmluZz4gcmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmLCB1bnNp
Z25lZCBzaG9ydCBmbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
NTZmZjUwM2FiZTJkLi4xYTNlZGNjNGNlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKQEAgLTYwMCw2ICs2MDAsNyBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hS
ZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAKICAgICAvLyBGbGFncyBmb3IgZGlzcGxheUxpc3RGb3JF
bGVtZW50LgogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERJU1BMQVlfTElTVF9JTkNMVURFU19Q
TEFURk9STV9PUEVSQVRJT05TID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZ
X0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUyA9IDI7CiAgICAgLy8gUmV0dXJucyB0aGUgcmVj
b3JkZWQgZGlzcGxheSBsaXN0LgogICAgIERPTVN0cmluZyBkaXNwbGF5TGlzdEZvckVsZW1lbnQo
RWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9IDApOwogICAg
IC8vIFJldHVybnMgdGhlIGRpc3BsYXkgbGlzdCB0aGF0IHdhcyBhY3R1YWxseSBwYWludGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDdhMDczMmUyOTJlZS4uN2FiYjA3MmZj
MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAg
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3R2x5cGhzV2l0aFF1YWxpZmllZElk
ZW50aWZpZXIoRGlzcGxheUxpc3Q6OkQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhh
bmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQpOworICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShp
dGVtKSwgKmZvbnQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB9KTsKIH0KIAogdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
blJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM0NzI2Yzc2NTZjLi5iODEyNjNjYmRmNjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29y
ZGVyIHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0
LXN2Zy1mb250Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIvZmFzdC90
ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIy
LTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVwYWlu
dF0gQm9yZGVyIGlnbm9yZXMgY3VycmVudENvbG9yIGNoYW5nZSB3aGVuIGhvdmVyaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA2OTE3NmE1ZmFhOWMuLmVkNzczYWEzZjYzNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC01MTA4LDYgKzUxMDgsOCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1vcHRpb25zLmh0bWwgWyBEdQogCiAj
IERpc3BsYXkgbGlzdCBsb2dnaW5nIGlzIG9ubHkgYXZhaWxhYmxlIGluIGRlYnVnCiBbIFJlbGVh
c2UgXSBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWNvbG9yLmh0bWwgWyBTa2lwIF0KK1sg
UmVsZWFzZSBdIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRtbCBbIFNraXAg
XQorWyBSZWxlYXNlIF0gZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5odG1s
IFsgU2tpcCBdCiAKICMgUGx1Z2lucwogIyBGSVhNRTogUmVtb3ZlIHRoZXNlIHRlc3RzLgotLSAK
Mi4zMi4wIChBcHBsZSBHaXQtMTMyKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459371</attachid>
            <date>2022-05-14 19:42:10 -0700</date>
            <delta_ts>2022-05-14 20:48:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514194209.patch</filename>
            <type>text/plain</type>
            <size>85555</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MmNiM2E0MzNjZTg3NTIzNTJiNjA1YWFiOWRkNDFkZDc0MzQ3MTBjLi5i
NTM2ZjhkMTg0MjZjMjU5YjljNzBjYmMwMDgxNTgwMDdhOWQzNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTQgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRl
ciB3aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVu
dGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdH
bHlwaAorICAgICAgICBpdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0
ZW1zIGZyb20gdGhlIGNhY2hlIGluCisgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVt
cGhhc2lzTWFya3MoKS4KKworICAgICAgICBJbmRlcGVuZGVudGx5LCB0ZXh0IGRyYXdpbmcgaW4g
Z2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKKyAgICAgICAgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxheSBsaXN0
IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4g
dGhlIEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUK
KyAgICAgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQorICAgICAgICBEcmF3R2x5cGhz
UmVjb3JkZXIgdG8gZGV0ZWN0IHdoZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdp
bmcgaW50byBsb3dlciBsZXZlbCBnbHlwaAorICAgICAgICBhbmQgaW1hZ2UgZHJhd2luZywgdXNp
bmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBt
ZWFzdXJhYmxlCisgICAgICAgIG92ZXJoZWFkLCBzbyB3ZSB3YW50IHRvIGF2b2lkIGl0IHdoZW4g
d2UgY2FuLgorICAgICAgICAKKyAgICAgICAgVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCisg
ICAgICAgIGdseXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlz
cGxheSBsaXN0IHRvIHNheSB3aGV0aGVyIGFueQorICAgICAgICBkcmF3R2x5cGhzKCkgY2FsbHMg
dHJpZ2dlcmVkIGdseXBoIGRlY29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93
czoKKyAgICAgICAgCisgICAgICAgICogRHJhd0dseXBoc1JlY29yZGVyIGlzIG1vZGlmaWVkIHRv
IGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0cmlnZ2VyZWQgYW55CisgICAgICAg
ICAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5nICh3aGljaCBjYW4g
aGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKKyAgICAgICAgICBhbmQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1bHQg
aW5kaWNhdGluZyB0aGlzLgorICAgICAgICAqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFs
PGJvb2w+IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5l
ZAorICAgICAgICAgIG9uIHBsYXliYWNrLgorICAgICAgICAqIFRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MoKSBjYWxscyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVj
b21wb3NpdGlvbigpCisgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBn
bHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eSkuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRl
Y29tcG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBh
CisgICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNo
IHR1cm5zIGludG8gYSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KKyAgICAgICAgVGV4dFBh
aW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25k
cyB0byB0aGlzIGJ5IHJlcGxheWluZyB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRocm91Z2gg
YSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyByZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBk
aXNwbGF5IGxpc3QKKyAgICAgICAgd2l0aCBkZWNvbXBvc2VkIGdseXBocy4KKworICAgICAgICBE
aXNwbGF5IGxpc3QgbG9nZ2luZyBjdXJyZW50bHkgZHVtcHMgcmVzb3VyY2UgaWRlbnRpZmllcnMs
IHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgCisgICAgICAgIGxheW91dCB0ZXN0IGJlY2F1c2UgdGhl
eSBhcmUndCBuZWNlc3NhcmlseSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRl
c1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFn
YXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmlu
ZyB0aGVtIHRvCisgICAgICAgIGNvbnZlcnRlZCBmcm9tIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZmxhZ3MgYXJndW1lbnQu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5o
dG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3Jk
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpjb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6ZHVtcEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJdGVtSGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlEcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIy
LTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRkZDXVtJ
bnRlZ3JhdGlvbl0gQWRkICJmaXhlZCBzaXplZC9hbGwgZGVmYXVsdCB2YWx1ZSIgZmxleCBsYXlv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZDc2NGJjYWZkYWI0OWRmZTY1ZDcyYmFjYjBlYTRjNGZlMTI2MTA3ZC4u
ZDA2ODRiZDY3NjRkMWQ1NzlhODM1Y2Y0NDUzZTRjNmRmMzQzMTgwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVy
IHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50
bHksIFRleHRQYWludGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0ds
eXBoCisgICAgICAgIGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRl
bXMgZnJvbSB0aGUgY2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcygpLgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3Qg
bWVjaGFuaXNtLiBJbiBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0
aGUgR1BVIFByb2Nlc3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQor
ICAgICAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNS
ZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2lu
ZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2lu
ZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1l
YXN1cmFibGUKKyAgICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3
ZSBjYW4uCisgICAgICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVj
b3JkZXIgb3ZlcmhlYWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAg
ICAgICAgZ2x5cGggYnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNw
bGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0
cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dz
OgorICAgICAgICAKKyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8g
ZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAg
ICBpbWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBo
YXBwZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBp
bmRpY2F0aW5nIHRoaXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8
Ym9vbD4gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVk
CisgICAgICAgICAgb24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4
dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uKCkKKyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGds
eXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAg
ICAgICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KKyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVj
b21wb3NpdGlvbiwgd2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEK
KyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2gg
dHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFp
bnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRz
IHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBh
IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRp
c3BsYXkgbGlzdAorICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERp
c3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywg
d2hpY2ggaXMgYSBwcm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5
IGFyZSd0IG5lY2Vzc2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVz
UmVzb3VyY2VJZGVudGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdh
dGUgaW50byBhbGwgdGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5n
IHRoZW0gdG8KKyAgICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Li4uKSB0byBkdW1wSXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdH
bHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2Ug
cmVmZXJzIHRvIHVudXNlZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYWNkMDg2ZjIyYTJjMjE3ODlmYmI1OTk4MzFhOWNhM2UwYzI3OTZjYy4uNDllMTY4ZmM0
NGExNGYxM2ZhYWNiMjE3NzZlNGFiMTMyYzViMWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM4MSwxMCArMzgxLDExIEBAIEZsb2F0U2l6ZSBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QKICAgICBy
ZXR1cm4gc2l6ZTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUp
CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9u
dFNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7Ci0gICAgbV9wcmltYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX3NlY29u
ZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgYXV0byBkaWREZWNvbXBvc2UgPSBtX3By
aW1hcnlDb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAg
ICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pOworICAgIHJldHVybiBkaWREZWNvbXBvc2U7CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGEzZjBkMTk4NmZmMWUzNThkNzYxNGM4MGM0MmUz
NjdkZDM3ZjAyMDcuLmZjNDI3YTQwOGVjZTlmYjk1MTExOTBkODgzMTQ2MDI3MzExM2UwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7CisgICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDY4NmVmY2Uz
YmE4MWIyNzdiMWRiNjQ1MzYwNDdlYmRjNGI5ZWQ0ZWIuLjE2YjgxZDliMTc3NzI1NTgyMWRkMjY0
NTBlMGJkNmNkNTU0NGQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0
IHNjYWxlRmFjdG9yID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21D
b250ZXh0OjpObyk7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4p
CiAgICAgdm9pZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENU
TGluZVJlZiwgQ0dSZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWdu
ZWQgbV9vdXRwdXRHbHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAz
ZjAxODFkOWU0ODQ2ZmFmZTcxMTIxMDY1NzE2NTZiYWM2ZS4uMzZjN2VlMGY1ZGJmNGYzODU0Zjlk
NzM1MzU4NWE2MGY2ZjViZmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMjksOSArMTI5LDEwIEBAIEZsb2F0
U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK0dy
YXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKCp0
aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3Ro
aW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGY0YzdhODdlYzFkYjM0OGNiMzU0ZDllNDM1MmJjZTYyN2M2MTZkN2UuLjU1YjBm
Mzk4M2E5YmExZmZlNTE3NjQ3MjkxZTdiMTExODQyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yODMsNyArMjgz
LDYgQEAgcHVibGljOgogICAgIC8vIFRleHQKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
RmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKQEAg
LTI5Miw2ICsyOTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIGRyYXdHbHlwaHMoZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogICAgIH0K
IAorICAgIGVudW0gY2xhc3MgRGlkRGVjb21wb3NlR2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24gPSB7
IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3Vu
ZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZs
b2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJv
b2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGNiZmU3NWQ2MzJkYjk4MDA1ZGIyMTQ4NzBhNzM0M2JhYmM4OTBiYjMu
LjM1YTZkOTFjNTE3NjNkODE0YjRmYzE0NDU0NGIxMjliMmZiYTM0ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7
IHJldHVybiB7IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBj
b25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERl
Y29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1
cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2Fk
ZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZv
bnROb3RSZWFkeSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKaW5kZXggMjZhNzUxNWY5Y2VhOThhOTk0NWU1OGU1YWQ3NDJkNDEzNGQyNTcw
My4uOTE2ODMzMTE3NzZjZmJiYmI4MWU3ODc1YTU1NDgwNGE4NGUzMWEyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29y
ZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMzA0LDYgKzMwNCw3IEBA
IHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3Rh
dGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAgICAgfQogCiAgICAgbV9vd25lci5kcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhw
b3NpdGlvbnMsIGNvdW50LCB0ZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBpbml0aWFsUGVuUG9z
aXRpb24sIG1fc21vb3RoaW5nTW9kZSk7CisgICAgbV9vdXRwdXRHbHlwaENvdW50ICs9IGNvdW50
OwogCiAgICAgbV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNUTUZpeHVwKTsKIH0KQEAgLTMyMyw2
ICszMjQsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0ltYWdlKENHUmVu
ZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZQogCiAgICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoY2dJbWFnZSk7CiAgICAgbV9vd25lci5kcmF3TmF0aXZlSW1hZ2Uo
KmltYWdlLCBpbWFnZS0+c2l6ZSgpLCBGbG9hdFJlY3QocmVjdCksIEZsb2F0UmVjdCB7eyB9LCBp
bWFnZS0+c2l6ZSgpfSwgSW1hZ2VQYWludGluZ09wdGlvbnMgeyBJbWFnZU9yaWVudGF0aW9uOjpP
cmlnaW5Ub3BMZWZ0IH0pOworICAgIG1fZGlkRHJhd0ltYWdlID0gdHJ1ZTsKIAogICAgIC8vIFVu
ZG8gdGhlIGFib3ZlIHktZmxpcCB0byByZXN0b3JlIHRoZSBjb250ZXh0LgogICAgIG1fb3duZXIu
c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CkBAIC0zNDMsNiArMzQ1LDcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bihjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKgogICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QoYm91bmRzKTsKICAgICAgICAgICAgIGRlc3RpbmF0aW9uUmVjdC5tb3ZlQnko
cGVuUG9zaXRpb24pOwogICAgICAgICAgICAgbV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOworICAgICAgICAgICAgbV9kaWREcmF3SW1hZ2UgPSB0
cnVlOwogICAgICAgICB9CiAKICAgICAgICAgcGVuUG9zaXRpb24ubW92ZShzaXplKGFkdmFuY2Vz
W2ldKSk7CkBAIC0zOTUsOSArMzk4LDE3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3
QnlTcGxpdHRpbmdJbnRvT1RTVkdBbmROb25PVFNWR1J1bnMoY29uc3QgRm9udCYgZm9uCiAgICAg
ZHJhdygpOwogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2lu
dCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK0dyYXBoaWNz
Q29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
IHsKKyAgICBtX291dHB1dEdseXBoQ291bnQgPSAwOworICAgIG1fZGlkRHJhd0ltYWdlID0gZmFs
c2U7CisKICAgICBkcmF3QnlTcGxpdHRpbmdJbnRvT1RTVkdBbmROb25PVFNWR1J1bnMoZm9udCwg
Z2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsK
KyAgICAKKyAgICBpZiAobV9kaWREcmF3SW1hZ2UgfHwgbV9vdXRwdXRHbHlwaENvdW50ICE9IG51
bUdseXBocykKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5
cGhzOjpZZXM7CisKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlw
aHM6Ok5vOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQoQ1RG
b250UmVmIGZvbnQsIENHRmxvYXQgZm9udFNpemUsIENUTGluZVJlZiBsaW5lLCBDR1JlY3QgbGlu
ZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAzMmM5YzUxMmM3YjdlOThhNzE3
NWQzNzc2MDU2MzY4YWY5YTUwOTA3Li5hNTQzNmM2MjU2ODU0ZGU0NjFhYmFiNzY4NWZlYTMzZjY4
YTY3MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTExMCwxNiArMTEwLDIwIEBA
IGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4gZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChPcHRp
b25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0o
VGV4dFN0cmVhbTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGlu
Zzo6U1ZHU3R5bGVSZWN0KTsKKyNpZiAhTE9HX0RJU0FCTEVECiAgICAgZm9yIChhdXRvIGRpc3Bs
YXlMaXN0SXRlbSA6ICp0aGlzKSB7CiAgICAgICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNp
emVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKICAgICAgICAgaWYgKCFzaG91
bGREdW1wRm9yRmxhZ3MoZmxhZ3MsIGl0ZW0pKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cChzdHJlYW0pOwotICAgICAgICBzdHJl
YW0gPDwgaXRlbTsKKyAgICAgICAgZHVtcEl0ZW1IYW5kbGUoc3RyZWFtLCBpdGVtLCBmbGFncyk7
CiAgICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKICAgICAgICAgICAgIHN0cmVhbSA8
PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShm
bGFncyk7CisjZW5kaWYKICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKIH0KIApAQCAtMTI4
LDEzICsxMzIsMTYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29u
c3QKICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICB0cyA8PCAiZGlz
cGxheSBsaXN0IjsKIAorI2lmICFMT0dfRElTQUJMRUQKICAgICBmb3IgKGF1dG8gZGlzcGxheUxp
c3RJdGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUlu
QnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBUZXh0U3RyZWFtOjpH
cm91cFNjb3BlIGdyb3VwKHRzKTsKLSAgICAgICAgdHMgPDwgaXRlbTsKKyAgICAgICAgZHVtcEl0
ZW1IYW5kbGUodHMsIGl0ZW0sIHsgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlv
bnMsIEFzVGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyB9KTsKICAgICAgICAg
aWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAgICAgICAgICAgdHMgPDwgIiBleHRlbnQgIiA8
PCBleHRlbnQ7CiAgICAgfQorI2VuZGlmCisKICAgICB0cy5zdGFydEdyb3VwKCk7CiAgICAgdHMg
PDwgInNpemUgaW4gYnl0ZXM6ICIgPDwgc2l6ZUluQnl0ZXMoKTsKICAgICB0cy5lbmRHcm91cCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA3MGJmYzQ0OThmNjUwMDM3NGNhMzNlM2E2YjUw
ODhhZjY2ZDRiYjUyLi45MzcyMjAxZWJhMTdmMDQ1NDNjZmY4MDZmMDQ5MmU4NWZkMGY1YjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNDYsMTIgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1lbnVtIGNsYXNzIEFzVGV4dEZsYWcg
OiB1aW50OF90IHsKLSAgICBJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyAgICAgID0gMSA8PCAw
LAotICAgIEluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyAgICAgPSAxIDw8IDEsCi0gICAgRGVj
b21wb3Nlc0RyYXdHbHlwaHMgICAgICAgICAgICA9IDEgPDwgMiwKLX07Ci0KIGNsYXNzIERpc3Bs
YXlMaXN0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNwbGF5TGlzdCk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZWNvcmRlckltcGw7CkBAIC05Myw2
ICs4Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29sKTsKKyAgICAKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3Np
dGlvbjsgfQorICAgIHZvaWQgc2V0Q29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRp
b24oYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9u
ID0gdmFsdWU7IH0KIAogICAgIGNsYXNzIEl0ZXJhdG9yOwogCkBAIC0xMjksNiArMTI2LDcgQEAg
cHJpdmF0ZToKICAgICBMb2NhbFJlc291cmNlSGVhcCBtX3Jlc291cmNlSGVhcDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8c3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKKyAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1fY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb247CiAgICAgYm9vbCBt
X3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IGZiNDY0MWExMzQ0N2YxYjQ0Nzg4YTBiYWVhNjZm
MmU4MzA1YTRhNTkuLjhjYTIzZmE2YTA2MDM3MjgyMjJiM2RkMjVjMGQyMjFhYThiZGIyZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtMjgsNiArMjgsMTIgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKK2VudW0gY2xh
c3MgQXNUZXh0RmxhZyA6IHVpbnQ4X3QgeworICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25z
ICAgICAgPSAxIDw8IDAsCisgICAgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9IDEg
PDwgMSwKKyAgICBEZWNvbXBvc2VzRHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAorfTsK
KwogZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIFNhdmUsCiAgICAgUmVzdG9y
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAzNWE3YjRlYTFjMjQw
NzcxMmU1MjkzNjVmYjlmZjVkNzcwNjFjMDViLi4xNmUxN2EwMTY3MzFiMWI2YTg5ZDZkYjI0Mjhk
MzBmNzY0NzEyMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0y
MDAsOSArMjAwLDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91bmRz
KGZvbnQpOwogfQogCi12b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21w
b3NlR2x5cGhzIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRm9udCYgZm9udCwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlv
bikgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgbV9nbHlwaHMuZGF0YSgp
LCBtX2FkdmFuY2VzLmRhdGEoKSwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Nt
b290aGluZ01vZGUpOworICAgIHJldHVybiBjb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgbV9nbHlw
aHMuZGF0YSgpLCBtX2FkdmFuY2VzLmRhdGEoKSwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2lu
dCgpLCBtX3Ntb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKIH0KIAogdm9p
ZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCkBAIC02ODgsMTg0
ICs2ODgsMTYzIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ4IiwgaXRlbS54KCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgieSIsIGl0ZW0ueSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJvdGF0ZSYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJvdGF0ZSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5nbGUiLCBpdGVtLmFuZ2xlKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2NhbGUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTY2FsZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2l6ZSIsIGl0ZW0uYW1vdW50KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0Q1RNJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0Q1RNJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzZXQtY3RtIiwgaXRlbS50
cmFuc2Zvcm0oKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjdG0iLCBpdGVtLnRyYW5zZm9y
bSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgc3RhdGUpCit2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgc3RhdGUuY29s
b3IoKSk7Ci0gICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVt
LmNvbG9yKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRJbmxpbmVTdHJva2VDb2xvciYgc3RhdGUpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRJbmxpbmVTdHJva2VDb2xvciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xvcigpKTsK
LSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3Io
KSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNl
dFN0cm9rZVRoaWNrbmVzcyYgc3RhdGUpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRTdHJva2VUaGlja25lc3MmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
LSAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRoaWNrbmVzcygpKTsKLSAg
ICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ0aGlja25lc3MiLCBpdGVtLnRoaWNr
bmVzcygpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3RhdGUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
ZXRTdGF0ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzIDw8IGl0ZW0u
c3RhdGUoKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGxpbmVDYXApCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTZXRMaW5lQ2FwJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWNhcCIsIGxpbmVDYXAubGluZUNhcCgp
KTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWNhcCIsIGl0ZW0u
bGluZUNhcCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgU2V0TGluZURhc2gmIGxpbmVEYXNoKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2V0TGluZURhc2gmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoImRhc2gtYXJyYXkiLCBsaW5lRGFzaC5kYXNoQXJyYXkoKSk7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGxpbmVEYXNoLmRhc2hPZmZzZXQoKSk7
Ci0gICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGl0ZW0u
ZGFzaEFycmF5KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1vZmZzZXQiLCBpdGVtLmRh
c2hPZmZzZXQoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldExpbmVKb2luJiBsaW5lSm9pbikKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldExpbmVKb2luJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWpvaW4iLCBsaW5lSm9pbi5saW5lSm9pbigpKTsKLSAg
ICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWpvaW4iLCBpdGVtLmxpbmVK
b2luKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRNaXRlckxpbWl0JiBtaXRlckxpbWl0KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2V0TWl0ZXJMaW1pdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibWl0cmUtbGltaXQiLCBtaXRlckxpbWl0Lm1pdGVyTGltaXQo
KSk7Ci0gICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibWl0cmUtbGltaXQiLCBp
dGVtLm1pdGVyTGltaXQoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBDbGlwJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dCYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXQmIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3Qo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRl
bnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3Mu
Y29udGFpbnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRl
bS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVtKQordm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dFRvUGF0aCYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0u
cGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
ICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJ3aW5kLXJ1bGUiLCBpdGVtLndpbmRSdWxlKCkpOwotICAgIHJldHVybiB0czsKIH0K
IAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZs
YWdzKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLWlkZW50aWZpZXIiLCBp
dGVtLnNvdXJjZUltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFz
VGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic291cmNlLWltYWdlLWlkZW50aWZpZXIiLCBpdGVtLnNvdXJjZUltYWdlSWRlbnRp
ZmllcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1pbWFnZS1yZWN0IiwgaXRlbS5z
b3VyY2VJbWFnZVJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0dseXBocyYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCiAgICAgdHMuZHVt
cFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2FsQW5jaG9yKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgiYW5jaG9yLXBvaW50IiwgaXRlbS5hbmNob3JQb2ludCgpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoImxlbmd0aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgpKTsKIAotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFpbnMoQXNUZXh0Rmxh
Zzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwot
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4g
ZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5p
bWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJ
bmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImlt
YWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdTeXN0
ZW1JbWFnZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdT
eXN0ZW1JbWFnZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIC8vIEZJWE1F
OiBkdW1wIG1vcmUgc3R1ZmYuCiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0
ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtaWRl
bnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFp
bnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7
CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuLXRyYW5zZm9ybSIsIGl0ZW0ucGF0dGVyblRy
YW5zZm9ybSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInRpbGUtcmVjdCIsIGl0ZW0udGlsZVJl
Y3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RSZWN0KCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGhhc2UiLCBpdGVtLnBoYXNlKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgic3BhY2luZyIsIGl0ZW0uc3BhY2luZygpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdSZWN0
JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1JlY3QmIGl0
ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3Qi
LCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJib3JkZXItdGhpY2tuZXNzIiwg
aXRlbS5ib3JkZXJUaGlja25lc3MoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZSYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwb2ludC0xIiwgaXRlbS5wb2lu
dDEoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwb2ludC0yIiwgaXRlbS5wb2ludDIoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0xpbmVzRm9yVGV4dCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxvY2stbG9jYXRpb24iLCBpdGVtLmJsb2NrTG9j
YXRpb24oKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2Fs
QW5jaG9yKCkpOwpAQCAtODc1LDM4MCArODU0LDM1MCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtKQogICAgIHRzLmR1
bXBQcm9wZXJ0eSgid2lkdGhzIiwgaXRlbS53aWR0aHMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJpcy1wcmludGluZyIsIGl0ZW0uaXNQcmludGluZygpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
ImRvdWJsZSIsIGl0ZW0uZG91YmxlTGluZXMoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdF
bGxpcHNlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0Vs
bGlwc2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0aCYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29s
b3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiBp
dGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0
cyIsIGl0ZW0ucmVjdHMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aCIsIGl0ZW0ud2lk
dGgoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJvZmZzZXQiLCBpdGVtLm9mZnNldCgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxS
ZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3Qm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0Iiwg
aXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIC8vIEZJWE1FOiBsb2cgZ3JhZGllbnQuCiAgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbENvbXBvc2l0ZWRS
ZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbENvbXBv
c2l0ZWRSZWN0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3Ii
LCBpdGVtLmNvbG9yKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlv
biIsIGl0ZW0uY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVu
ZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUm91bmRlZFJlY3Qm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJvdW5kZWRSZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBp
dGVtLmNvbG9yKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGl0ZW0uYmxl
bmRNb2RlKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVj
dCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInJvdW5kZWQtaG9sZS1yZWN0
IiwgaXRlbS5yb3VuZGVkSG9sZVJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCiAjaWYgRU5BQkxFKElOTElORV9Q
QVRIX0RBVEEpCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEZpbGxMaW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bExpbmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEFyYyYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBGaWxsUXVhZEN1cnZlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7
CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bEJlemllckN1cnZlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RmlsbEJlemllckN1cnZlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlQXJjJiBp
dGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlQXJjJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
IAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFBhdGgm
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRl
bSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIs
IGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxFbGxpcHNlJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCit2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0
ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3Rp
bmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCiAKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU3Ryb2tlUmVjdCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJsaW5lLXdpZHRoIiwgaXRlbS5saW5lV2lkdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQYXRo
JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUGF0aCYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0
aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VFbGxpcHNlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFN0cm9rZUxpbmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0YXJ0IiwgaXRlbS5zdGFydCgpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImVuZCIsIGl0ZW0uZW5kKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0JiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0JiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5y
ZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYgaXRlbSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9wYWNpdHki
LCBpdGVtLm9wYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNjYWxlRmFjdG9yJiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZh
Y3RvciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgic2NhbGUtZmFjdG9yIiwgaXRlbS5zY2FsZUZhY3RvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW1IYW5kbGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1IYW5kbGUm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykKIHsKICAgICB0cyA8PCBpdGVtLnR5
cGUoKTsKIAogICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKICAgICBjYXNlIEl0ZW1UeXBlOjpU
cmFuc2xhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFJv
dGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFJvdGF0ZT4oKSwgZmxhZ3Mp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2NhbGU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTY2Fs
ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldENUTT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PFNldENUTT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5h
dGVDVE0+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVG
aWxsQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKSwgZmxh
Z3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VD
b2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSwgZmxh
Z3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25l
c3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxT
ZXRTdGF0ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0TGluZUNhcD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0TGluZURhc2g+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRM
aW5lRGFzaD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lSm9pbjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKSwgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8U2V0TWl0ZXJMaW1pdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8Q2xpcD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Q2xpcE91dD4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxDbGlwT3V0VG9QYXRoPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
Q2xpcE91dFRvUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3R2x5cGhzPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8RHJhd0dseXBocz4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdJbWFnZUJ1
ZmZlcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PERyYXdTeXN0ZW1JbWFnZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PERyYXdTeXN0ZW1JbWFnZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJh
d1BhdHRlcm4+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3UGF0dGVybj4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxEcmF3UmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmU+KCk7
CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3TGluZT4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpOworICAgICAgICBkdW1wSXRlbSh0
cywgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpOworICAgICAgICBkdW1w
SXRlbSh0cywgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxEcmF3RWxsaXBzZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3UGF0aD4oKSwgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3Q+
KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsUmVjdD4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7CisgICAgICAgIGR1bXBJdGVt
KHRzLCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxSb3VuZGVkUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZp
bGxSb3VuZGVkUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsTGluZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbExpbmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxGaWxsTGluZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsQXJjOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQXJjPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEFyYz4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsUXVhZEN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
RmlsbFF1YWRDdXJ2ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsQmV6aWVyQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxCZXppZXJD
dXJ2ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxCZXppZXJDdXJ2ZT4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUGF0aD4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsRWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxFbGxpcHNl
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNl
IEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBh
aW50RnJhbWVGb3JNZWRpYT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFBhaW50
RnJhbWVGb3JNZWRpYT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZVJl
Y3Q+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VSZWN0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxTdHJva2VMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUFyYzoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlQXJjPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8U3Ryb2tlQXJjPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVF1YWRDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUXVh
ZEN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUXVhZEN1cnZl
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUJl
emllckN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VCZXppZXJDdXJ2ZT4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZUJlemllckN1cnZlPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
U3Ryb2tlRWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZUVs
bGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxDbGVhclJlY3Q+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCksIGZsYWdzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCksIGZsYWdzKTsKICAg
ICAgICAgYnJlYWs7Ci0KICAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9uYWwgZGF0YS4KICAg
ICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CkBAIC0x
MjYwLDcgKzEyMDksNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJ
dGVtSGFuZGxlIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gdHM7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZDE0NDA3NzNhZWQzYWY4NjZmNDllMjc2OTFkNWZjNzk5
OWZmMTY3Ny4uMDA1NDg0NjEzNDgyMTBiOGM1MTJjNjFlMWVmOGEwNmUwMDIxM2FiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC01NSw2ICs1NSw3IEBAIHN0cnVjdCBJbWFn
ZVBhaW50aW5nT3B0aW9uczsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51bSBjbGFz
cyBBc1RleHRGbGFnIDogdWludDhfdDsKIHN0cnVjdCBJdGVtSGFuZGxlOwogCiAvKiBpc0lubGlu
ZUl0ZW0gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBuZWVkcyB0byBiZSBwYXNzZWQgdGhy
b3VnaCBJUEM6OkVuY29kZXIgaW4gb3JkZXIgdG8gc2VyaWFsaXplLApAQCAtNTkyLDcgKzU5Myw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWdu
ZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9k
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxHbHlwaEJ1ZmZl
ckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZvbnQmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNv
bXBvc2l0aW9uKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZHM7IH0KQEAgLTIwNTEsNjcgKzIwNTIsODAgQEAgc2l6ZV90IHBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIEl0ZW1UeXBl
IGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICNpZiAhTE9H
X0RJU0FCTEVECi1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBUcmFuc2xhdGUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2NhbGUmKTsKLVdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldENUTSYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
Q29uY2F0ZW5hdGVDVE0mKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lU3Ryb2tl
Q29sb3ImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0U3RhdGUmKTsKLVdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVDYXAm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IFNldExpbmVEYXNoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lSm9pbiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TWl0ZXJMaW1pdCYpOwotV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xp
cCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgQ2xpcE91dCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRUb1BhdGgmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IENsaXBQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmKTsKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYp
OwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd1BhdHRlcm4mKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZSYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0xpbmVzRm9y
VGV4dCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2UmKTsKLVdF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERy
YXdQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBG
aWxsUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3ImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50Jik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBGaWxsQ29tcG9zaXRlZFJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSb3VuZGVkUmVjdCYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IFRyYW5zbGF0ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBSb3RhdGUmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgU2NhbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0Q1RNJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENvbmNh
dGVuYXRlQ1RNJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBTZXRJbmxpbmVTdHJva2VDb2xvciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdHJva2VU
aGlja25lc3MmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0U3RhdGUmLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0
TGluZUNhcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lRGFzaCYsIE9wdGlvblNldDxBc1RleHRG
bGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBT
ZXRMaW5lSm9pbiYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0JiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IENsaXAmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dCYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlw
VG9JbWFnZUJ1ZmZlciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0VG9QYXRoJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IENsaXBQYXRoJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdHbHlwaHMmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ltYWdl
QnVmZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBEcmF3U3lzdGVtSW1hZ2UmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1BhdHRlcm4mLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgRHJhd1JlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0xpbmUmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd0xpbmVzRm9yVGV4dCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IERyYXdQYXRoJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdCYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVj
dFdpdGhHcmFkaWVudCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQ29tcG9zaXRlZFJlY3QmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKICNpZiBFTkFCTEUoSU5MSU5F
X1BBVEhfREFUQSkKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIGNvbnN0IEZpbGxMaW5lJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQXJjJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUXVhZEN1cnZlJik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBG
aWxsQmV6aWVyQ3VydmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUFyYyYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJv
a2VCZXppZXJDdXJ2ZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgRmlsbExpbmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEFyYyYsIE9wdGlvblNldDxB
c1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBGaWxsUXVhZEN1cnZlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxCZXppZXJDdXJ2ZSYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBTdHJva2VBcmMmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUXVhZEN1cnZl
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxQYXRoJik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBG
aWxsRWxsaXBzZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRmlsbFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEVsbGlwc2UmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOwogI2lmIEVOQUJMRShWSURFTykKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRGcmFt
ZUZvck1lZGlhJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKICNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pCi1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBTdHJva2VSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VFbGxpcHNlJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJv
a2VMaW5lJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBDbGVhclJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImKTsKLVdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3ImKTsKLQotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgSXRlbUhhbmRsZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBTdHJva2VSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgU3Ryb2tlRWxsaXBzZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VMaW5lJiwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBCZWdpblRyYW5zcGFyZW5j
eUxheWVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3ImLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFQmIGl0ZW0pCit7CisgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0sIHsgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMsIEFzVGV4
dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyB9KTsKKyAgICByZXR1cm4gdHM7Cit9
CisKK3ZvaWQgZHVtcEl0ZW1IYW5kbGUoVGV4dFN0cmVhbSYsIGNvbnN0IEl0ZW1IYW5kbGUmLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOworCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhhbmRsZSkKK3sKKyAgICBkdW1w
SXRlbUhhbmRsZSh0cywgaXRlbUhhbmRsZSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3Jt
T3BlcmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOwor
ICAgIHJldHVybiB0czsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDA3NGJmNjA5M2Vk
Mzc4ZTE4MTFmZjhmYzZjYTVkMDU3Yjc3ZTk5OTcuLjc2NThmODM0MmRlZjZjZTJlNDEwMzM4MTMz
MzAzODY0ZDhmMjFiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTE2MSwxNyArMTYxLDIwIEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdGaWx0ZXJlZEltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0CiAgICAgcmVj
b3JkRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIHNvdXJjZUltYWdlUmVjdCwg
ZmlsdGVyKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQ
b2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6
RGlkRGVjb21wb3NlR2x5cGhzIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBv
aW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKQogewotICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0ds
eXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcykgeworICAgIGlmIChtX2RlY29uc3Ry
dWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcykKKyAgICAgICAgQUxX
QVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIlJlY29yZGVyOjpkcmF3R2x5cGhzIC0gbmVl
ZHNHbHlwaERlY29tcG9zaXRpb24gIiA8PCBuZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CisKKyAg
ICBpZiAobV9kZWNvbnN0cnVjdERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZ
ZXMgJiYgKCFuZWVkc0dseXBoRGVjb21wb3NpdGlvbiB8fCAqbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pKSB7CiAgICAgICAgIGlmICghbV9kcmF3R2x5cGhzUmVjb3JkZXIpCiAgICAgICAgICAgICBt
X2RyYXdHbHlwaHNSZWNvcmRlciA9IG1ha2VVbmlxdWU8RHJhd0dseXBoc1JlY29yZGVyPigqdGhp
cywgbV9pbml0aWFsU2NhbGUpOwogCi0gICAgICAgIG1fZHJhd0dseXBoc1JlY29yZGVyLT5kcmF3
R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG1fZHJhd0dseXBo
c1JlY29yZGVyLT5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywg
c3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgfQogCiAgICAgZHJhd0dseXBoc0FuZENh
Y2hlRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNt
b290aGluZ01vZGUpOworICAgIHJldHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2
b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBh
ZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hv
ciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCmluZGV4IDYwMDQ4MzM2YTdmODA5MzgyZWRkMGQwMjc0NTVkODJmNDhm
YmY4MzcuLjYyMzQ0OGRhMTQ2N2I4MGIxNTdhMTc2N2E2ZmY5M2MxOGNjNTczYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMjEyLDcgKzIxMiw3IEBAIHByaXZh
dGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKElt
YWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3Qs
IEZpbHRlciYsIEZpbHRlclJlc3VsdHMmKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2lu
dCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKaW5kZXggOTdlMTFjYjg2MGQ5MTkwMDM5ZWU3ZWFhZDdjMzhkZjE0MjllYmY5ZC4uNzlkYWVh
NzU3NjIzOWFiMDUyMWEwODdmNTE1ZjZjYTYzZTI4M2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMTA3LDU1ICsxMDcsNTcgQEAgaW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGgKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1pbmxpbmUgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseURyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNl
SGVhcCwgRHJhd0dseXBocyYgZHJhd0dseXBoc0l0ZW0pCitpbmxpbmUgc3RhdGljIHN0ZDo6cGFp
cjxzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4sIEdyYXBoaWNzQ29u
dGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzPiBhcHBseURyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgRHJhd0dseXBocyYg
ZHJhd0dseXBoc0l0ZW0sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBkcmF3R2x5cGhzSXRlbS5mb250
SWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBmb250ID0gcmVzb3VyY2VIZWFwLmdldEZvbnQo
cmVzb3VyY2VJZGVudGlmaWVyKSkgewotICAgICAgICBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250
ZXh0LCAqZm9udCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGF1dG8g
ZGlkRGVjb21wb3NlID0gZHJhd0dseXBoc0l0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQsIG5lZWRz
R2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBkaWRE
ZWNvbXBvc2UgfTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKKyAgICBy
ZXR1cm4geyByZXNvdXJjZUlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3Nl
R2x5cGhzOjpObyB9OwogfQogCi1zdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVh
c29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXBsYXll
cjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKK2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShJ
dGVtSGFuZGxlIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdAogewogICAgIHN3aXRjaCAoaXRlbS50
eXBlKCkpIHsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKICAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZm
ZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVt
KSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRS
ZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAg
ICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwotCi0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllciA9IGFwcGx5RHJhd0dseXBocyhtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFw
LCBpdGVtLmdldDxEcmF3R2x5cGhzPigpKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBs
YXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIp
LCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdH
bHlwaHM6IHsKKyAgICAgICAgYXV0byBkcmF3R2x5cGhzUmVzdWx0ID0gYXBwbHlEcmF3R2x5cGhz
KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCksIG1fZGlz
cGxheUxpc3QuY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24oKSk7CisgICAg
ICAgIGlmIChkcmF3R2x5cGhzUmVzdWx0LmZpcnN0KQorICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKGRyYXdHbHlwaHNS
ZXN1bHQuZmlyc3QpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyB9LCB7IH0sIGRyYXdHbHlw
aHNSZXN1bHQuc2Vjb25kIH07CisgICAgfQogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVz
b3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZToKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250ZXh0LCBtX3Jlc291cmNl
SGVhcCwgaXRlbSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
cikgfTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSwgeyB9IH07CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U291cmNl
SW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkK
LSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAg
ICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgogICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0obV9jb250ZXh0
LCBtX3Jlc291cmNlSGVhcCwgaXRlbSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdD
YWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSwg
eyB9IH07CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBkZWZhdWx0OgogICAgICAgICBpdGVt
LmFwcGx5KG1fY29udGV4dCk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyB9OwogfQogCiBSZXBsYXlS
ZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29s
IHRyYWNrUmVwbGF5TGlzdCkKQEAgLTE4NywxMiArMTg5LDE2IEBAIFJlcGxheVJlc3VsdCBSZXBs
YXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBs
YXlMaXN0CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8
ICJhcHBseWluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAgICAgICAgaWYgKGF1dG8g
W3JlYXNvbkZvclN0b3BwaW5nLCBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyXSA9IGFw
cGx5SXRlbShpdGVtKTsgcmVhc29uRm9yU3RvcHBpbmcpIHsKLSAgICAgICAgICAgIHJlc3VsdC5y
ZWFzb25Gb3JTdG9wcGluZyA9ICpyZWFzb25Gb3JTdG9wcGluZzsKLSAgICAgICAgICAgIHJlc3Vs
dC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBhcHBseVJlc3VsdCA9IGFwcGx5SXRl
bShpdGVtKTsKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LnN0b3BSZWFzb24pIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9ICphcHBseVJlc3VsdC5zdG9wUmVhc29uOwor
ICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZN
b3ZlKGFwcGx5UmVzdWx0LnJlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChhcHBseVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMg
JiYgKmFwcGx5UmVzdWx0LmRpZERlY29tcG9zZUdseXBocyA9PSBHcmFwaGljc0NvbnRleHQ6OkRp
ZERlY29tcG9zZUdseXBoczo6WWVzKQorICAgICAgICAgICAgcmVzdWx0LmRpZERlY29tcG9zZUds
eXBocyA9IEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXM7CisKICAgICAg
ICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAKICAgICAg
ICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCmluZGV4IDI1ODRhNTM5ZmMwNTMwOGM2MjQyYTExZmMxNzY1ZWRiYThi
MGQ5ZjYuLjRlMzUwNGZiNTBlMjI4N2RkNjViNDYyNTcxYTUzMzVhZDI5OTkyZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkluTWVt
b3J5RGlzcGxheUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMyLDcgKzMzLDYgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBSZXBsYXlSZXN1
bHQgewogICAgIHNpemVfdCBudW1iZXJPZkJ5dGVzUmVhZCB7IDAgfTsKICAgICBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllcjsKICAgICBTdG9wUmVwbGF5UmVhc29uIHJlYXNvbkZvclN0b3BwaW5nIHsgU3RvcFJl
cGxheVJlYXNvbjo6UmVwbGF5ZWRBbGxJdGVtcyB9OworICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhp
Y3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRpZERlY29tcG9zZUdseXBoczsKIH07CiAK
IGNsYXNzIFJlcGxheWVyIHsKQEAgLTYxLDcgKzYyLDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBSZXBsYXlSZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAg
PSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwogCiBwcml2YXRlOgotICAgIHN0
ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICBz
dHJ1Y3QgQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5
UmVhc29uPiBzdG9wUmVhc29uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gcmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzPiBkaWREZWNvbXBvc2VHbHlwaHM7
CisgICAgfTsKKyAgICBBcHBseUl0ZW1SZXN1bHQgYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1f
ZGlzcGxheUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5j
cHAKaW5kZXggYzMyOGI4ZmI2NjdlYmFhYWNlZmMyZGVkNTBmOTg4NDcyMDAwYWY4ZC4uZTRhNGEy
NTcwMTgyY2VjNTM2YmQxMjJjYjczMWYxZTAyNDg3MmEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1
enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0Ry
YXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtMzgsOSArMzgsMTAgQEAgRHJhd0dseXBo
c1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgZmxv
YXQsIERlcml2ZUZvbnQKIHsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlw
aHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25z
dCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUp
CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290
aGluZ01vZGUpCiB7CiAgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGds
eXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7Cisg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpObzsgICAgCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggZTdlNmU2YTI3MzM4ZTRmNzk5
MTdkZTY2M2U2N2NiY2U2NjI4MzBlMC4uMThlMGZmYzI1NDgwYzhkMDVlNjA4ZTI2ZGQ4NjFlOWE5
NDRmNmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8Q2xlYXJSZWN0PihyZWN0KSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZv
bnRTbW9vdGhpbmcpCitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGlu
Z01vZGUgZm9udFNtb290aGluZykKIHsKICAgICBzdHJ1Y3QgRHJhd0dseXBocyBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPENhaXJvOjpGaWxsU291cmNlLCBDYWlybzo6
U3Ryb2tlU291cmNlLCBDYWlybzo6U2hhZG93U3RhdGUsIEZsb2F0UG9pbnQsIFJlZlB0cjxjYWly
b19zY2FsZWRfZm9udF90PiwgZmxvYXQsIFZlY3RvcjxjYWlyb19nbHlwaF90PiwgZmxvYXQsIFRl
eHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgRmxvYXRTaXplLCBDb2xvciwgRm9udFNtb290aGlu
Z01vZGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd0dseXBocygpID0gZGVmYXVsdDsKQEAgLTUz
OCw2ICs1MzgsOCBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaAogICAgICAgICBSZWZQdHI8Y2Fp
cm9fc2NhbGVkX2ZvbnRfdD4oZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpLAogICAg
ICAgICBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RGTW92ZShjYWlyb0dseXBocyksIHhP
ZmZzZXQsIHN0YXRlLnRleHREcmF3aW5nTW9kZSgpLAogICAgICAgICBzdGF0ZS5zdHJva2VUaGlj
a25lc3MoKSwgc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNv
bG9yLCBmb250U21vb3RoaW5nKSk7CisKKyAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpO
bzsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRl
eCBkNjUyN2M0N2Q2MTk2Nzg1ZGNiMWIzOGQ4M2ZlYzY0MjFkMTM2NmE0Li40ODU0OWQxMTQwMjU4
YWMyYTdiMTQxYzY5YjYxYTllMzhmYjJhYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25z
dCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
V2ViQ29yZTo6Rm9udFNtb290aGluZ01vZGUpIG92ZXJyaWRlOworICAgIERpZERlY29tcG9zZUds
eXBocyBkcmF3R2x5cGhzKGNvbnN0IFdlYkNvcmU6OkZvbnQmLCBjb25zdCBXZWJDb3JlOjpHbHlw
aEJ1ZmZlckdseXBoKiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6Rm9udFNt
b290aGluZ01vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29y
ZTo6RmlsdGVyJiwgV2ViQ29yZTo6RmlsdGVyUmVzdWx0cyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRl
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBo
c1JlY29yZGVyV2luLmNwcAppbmRleCBhZDRiYTFkNjQxN2U3MTg2Y2MxZWFhNWIxMzVhZTVlMWE0
NDU3N2I2Li5hOThmYTgyZjdmY2MyNDQ0MDEyYzJmZDg1ZGQ3NTUzNmM0MDY4MjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29y
ZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJh
d0dseXBoc1JlY29yZGVyV2luLmNwcApAQCAtMzgsOSArMzgsMTAgQEAgRHJhd0dseXBoc1JlY29y
ZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgZmxvYXQsIERl
cml2ZUZvbnQKIHsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCitHcmFw
aGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01v
ZGUpCiB7CiAgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywg
YWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOyAgICAKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRl
ci5jcHAKaW5kZXggNGYzMzQyZmEzOTEwMTc0NjRmMzQ0YjU0OTNmMzI0YzRhODI5ZWM3YS4uODI3
NGM5Mzg5MDhjMjU5NzA5ODhiYzRlNjVhOWVjZGM4MDQ3ODI4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIKIAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1
ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAg
LTEyMyw3ICsxMjQsMTEgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01h
cmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnUKICAgICAgICAgLy8gUmVw
bGF5aW5nIGJhY2sgYSB3aG9sZSBjYWNoZWQgZ2x5cGggcnVuIHRvIHRoZSBHcmFwaGljc0NvbnRl
eHQuCiAgICAgICAgIG1fY29udGV4dC50cmFuc2xhdGUodGV4dE9yaWdpbik7CiAgICAgICAgIERp
c3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcihtX2NvbnRleHQsICptX2dseXBoRGlzcGxheUxp
c3QpOwotICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAgYXV0byByZXBsYXlSZXN1
bHQgPSByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXBsYXlSZXN1
bHQuZGlkRGVjb21wb3NlR2x5cGhzKQorICAgICAgICAgICAgbV9nbHlwaERpc3BsYXlMaXN0LT5z
ZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigqcmVwbGF5UmVzdWx0LmRp
ZERlY29tcG9zZUdseXBocyA9PSBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6
WWVzKTsKKwogICAgICAgICBtX2NvbnRleHQudHJhbnNsYXRlKC10ZXh0T3JpZ2luKTsKICAgICB9
CiAgICAgbV9nbHlwaERpc3BsYXlMaXN0ID0gbnVsbHB0cjsKQEAgLTI1NSw5ICsyNjAsMTggQEAg
U3RyaW5nIFRleHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNU
ZXh0KFRleHQmIHRleHROb2RlLCBPcHQKICAgICAgICAgICAgIGRpc3BsYXlMaXN0ID0gVGV4dFBh
aW50ZXI6OmdseXBoRGlzcGxheUxpc3RJZkV4aXN0cygqdGV4dEJveC5pbmxpbmVCb3goKSk7CiAj
ZW5kaWYKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0KSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChkaXNwbGF5TGlzdC0+YXNUZXh0KGZsYWdzKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnXG4nKTsKKyAgICAgICAgICAgIGlmIChmbGFncyAmIERpc3BsYXlMaXN0OjpBc1RleHRG
bGFnOjpEZWNvbXBvc2VzRHJhd0dseXBocykgeworICAgICAgICAgICAgICAgIC8vIFJlcGxheSBk
aXNwbGF5TGlzdCB0aHJvdWdoIGEgY29udGV4dCB3aXRoIERlY29uc3RydWN0RHJhd0dseXBoczo6
WWVzIHNvIHRoYXQgdGhlIG91dHB1dCBkaXNwbGF5IGxpc3Qgc2hvd3MgdGhlIGRyYXdpbmcgY29t
bWFuZHMgZm9yIGRlY29tcG9zcGVkIGdseXBocy4KKyAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IG91dHB1dERpc3BsYXlMaXN0
ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4oKTsKKyAgICAg
ICAgICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsIHJlY29yZGluZ0NvbnRleHQoKm91
dHB1dERpc3BsYXlMaXN0LCB7IH0sIHsgfSwgeyB9LCBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRl
Y29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKKyAgICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6
UmVwbGF5ZXIgcmVwbGF5ZXIocmVjb3JkaW5nQ29udGV4dCwgKmRpc3BsYXlMaXN0KTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHJlcGxheVJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG91dHB1dERpc3BsYXlMaXN0LT5hc1RleHQoZmxhZ3Mp
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRp
c3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKICAgICAgICAgfQorCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCdcbicpOwogICAgIH0KIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDgxYTVjMmEzZjdmZGM4ZWMzYjFm
MmVhM2Q5NDE4YTAwNjhjN2IyMS4uZWU1Y2ZjODZhMTQzZmUwOGQ1YzU5NTMyOTk2MTRiMzFlZTAz
OWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzE3NSw2ICszMTc1
LDkgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50LCB1bnNpZ25lZAogICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElT
VF9JTkNMVURFU19QTEFURk9STV9PUEVSQVRJT05TKQogICAgICAgICBkaXNwbGF5TGlzdEZsYWdz
LmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMp
OwogCisgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMp
CisgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpE
ZWNvbXBvc2VzRHJhd0dseXBocyk7CisKICAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXIoKS0+aGFz
TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9
OwogCkBAIC0zMjAwLDYgKzMyMDMsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6
cmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVucwogICAgIGlm
IChmbGFncyAmIERJU1BMQVlfTElTVF9JTkNMVURFU19QTEFURk9STV9PUEVSQVRJT05TKQogICAg
ICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6SW5jbHVk
ZXNQbGF0Zm9ybU9wZXJhdGlvbnMpOwogCisgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0RF
Q09NUE9TRVNfRFJBV19HTFlQSFMpCisgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3Bs
YXlMaXN0OjpBc1RleHRGbGFnOjpEZWNvbXBvc2VzRHJhd0dseXBocyk7CisKICAgICBpZiAoIWVs
ZW1lbnQucmVuZGVyZXIoKS0+aGFzTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCkBAIC0zMjMzLDYgKzMyMzksOSBAQCBFeGNlcHRpb25P
cjxTdHJpbmc+IEludGVybmFsczo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZShO
b2RlJiBub2RlLCB1bgogICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElTVF9JTkNMVURFU19QTEFU
Rk9STV9PUEVSQVRJT05TKQogICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlz
dDo6QXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpOwogCisgICAgaWYgKGZs
YWdzICYgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMpCisgICAgICAgIGRpc3Bs
YXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpEZWNvbXBvc2VzRHJhd0ds
eXBocyk7CisKICAgICByZXR1cm4gVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3Rz
Rm9yVGV4dE5vZGVBc1RleHQoZG93bmNhc3Q8VGV4dD4obm9kZSksIGRpc3BsYXlMaXN0RmxhZ3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiNGNhZGRkMjI0NDIzMzY2
ZWJmNWM5ZWMyZjYzZWM3ZjUzMGU5MDdiLi44ZjM2ZWM3ZTRlMjE1ODY3YjZhZjZjYWU4NDdhNTE4
YTQwNWQ0ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ3NCw2ICs0NzQs
NyBAQCBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtl
cHQgaW4gc3luYyB3aXRoIEludGVybmFscy5pZGwuCiAgICAgICAgIERJU1BMQVlfTElTVF9JTkNM
VURFU19QTEFURk9STV9PUEVSQVRJT05TID0gMSwKKyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09N
UE9TRVNfRFJBV19HTFlQSFMgPSAyCiAgICAgfTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRp
c3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50JiwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpOwogICAg
IEV4Y2VwdGlvbk9yPFN0cmluZz4gcmVwbGF5RGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQm
LCB1bnNpZ25lZCBzaG9ydCBmbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
aW5kZXggNTZmZjUwM2FiZTJkMWYwNmRhNTYzMDYzMzdjMGIwZGI4NjRkOGJkZC4uMWEzZWRjYzRj
ZWQxZGYzOTZiNTRhOTdiNTE3Y2NmNDUyYTFmNDE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbApAQCAtNjAwLDYgKzYwMCw3IEBAIHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBG
ZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKIAogICAgIC8vIEZsYWdzIGZvciBkaXNwbGF5TGlz
dEZvckVsZW1lbnQuCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRElTUExBWV9MSVNUX0lOQ0xV
REVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERJ
U1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTID0gMjsKICAgICAvLyBSZXR1cm5zIHRo
ZSByZWNvcmRlZCBkaXNwbGF5IGxpc3QuCiAgICAgRE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxl
bWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7
CiAgICAgLy8gUmV0dXJucyB0aGUgZGlzcGxheSBsaXN0IHRoYXQgd2FzIGFjdHVhbGx5IHBhaW50
ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggN2EwNzMyZTI5MmVlY2VmNTYz
MDgwM2Y1MGQ2ODg3OWU0MGJkNTQ3OC4uN2FiYjA3MmZjMzhhNjM3ZDY3ZTk1NjBjM2M2OTk1ZjQ5
ZjJkZWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjUzLDcgKzI1Myw3
IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0dseXBoc1dpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKERpc3BsYXlMaXN0OjpECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBoYW5kbGVJdGVtKFdURk1vdmUoaXRlbSksICpmb250KTsKKyAgICBoYW5kbGVJdGVtKFdURk1v
dmUoaXRlbSksICpmb250LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgfSk7CiB9CiAKIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb25SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZjNDcyNmM3NjU2YzBjYzNlMTM1NDExOGFlZDRkZDg2
OTVkYmM0NDkuLmI4MTI2M2NiZGY2MmY1OWVhMjA4Mzc3ZmM0MTFjYmY5MDdjYWZjN2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1Jl
Y29yZGVyIHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1s
aXN0LXN2Zy1mb250Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIvZmFz
dC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAy
MDIyLTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVw
YWludF0gQm9yZGVyIGlnbm9yZXMgY3VycmVudENvbG9yIGNoYW5nZSB3aGVuIGhvdmVyaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA2OTE3NmE1ZmFhOWM5OTY5MDYyNDJkMWNlYzc3MzFjZDI5MzJl
YmMyLi5lZDc3M2FhM2Y2MzcyNTg4NTZjZjk2Y2M3MjE3ODY3MDhiNzdiMWMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTUxMDgsNiArNTEwOCw4IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1CiAK
ICMgRGlzcGxheSBsaXN0IGxvZ2dpbmcgaXMgb25seSBhdmFpbGFibGUgaW4gZGVidWcKIFsgUmVs
ZWFzZSBdIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtY29sb3IuaHRtbCBbIFNraXAgXQor
WyBSZWxlYXNlIF0gZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sIFsgU2tp
cCBdCitbIFJlbGVhc2UgXSBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250Lmh0
bWwgWyBTa2lwIF0KIAogIyBQbHVnaW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCg==
</data>
<flag name="commit-queue"
          id="488455"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459372</attachid>
            <date>2022-05-14 19:55:35 -0700</date>
            <delta_ts>2022-05-14 20:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514195534.patch</filename>
            <type>text/plain</type>
            <size>88194</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MmNiM2E0MzNjZTg3NTIzNTJiNjA1YWFiOWRkNDFkZDc0MzQ3MTBjLi5i
NTM2ZjhkMTg0MjZjMjU5YjljNzBjYmMwMDgxNTgwMDdhOWQzNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTQgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRl
ciB3aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVu
dGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdH
bHlwaAorICAgICAgICBpdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0
ZW1zIGZyb20gdGhlIGNhY2hlIGluCisgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVt
cGhhc2lzTWFya3MoKS4KKworICAgICAgICBJbmRlcGVuZGVudGx5LCB0ZXh0IGRyYXdpbmcgaW4g
Z2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKKyAgICAgICAgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxheSBsaXN0
IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4g
dGhlIEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUK
KyAgICAgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQorICAgICAgICBEcmF3R2x5cGhz
UmVjb3JkZXIgdG8gZGV0ZWN0IHdoZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdp
bmcgaW50byBsb3dlciBsZXZlbCBnbHlwaAorICAgICAgICBhbmQgaW1hZ2UgZHJhd2luZywgdXNp
bmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBt
ZWFzdXJhYmxlCisgICAgICAgIG92ZXJoZWFkLCBzbyB3ZSB3YW50IHRvIGF2b2lkIGl0IHdoZW4g
d2UgY2FuLgorICAgICAgICAKKyAgICAgICAgVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCisg
ICAgICAgIGdseXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlz
cGxheSBsaXN0IHRvIHNheSB3aGV0aGVyIGFueQorICAgICAgICBkcmF3R2x5cGhzKCkgY2FsbHMg
dHJpZ2dlcmVkIGdseXBoIGRlY29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93
czoKKyAgICAgICAgCisgICAgICAgICogRHJhd0dseXBoc1JlY29yZGVyIGlzIG1vZGlmaWVkIHRv
IGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0cmlnZ2VyZWQgYW55CisgICAgICAg
ICAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5nICh3aGljaCBjYW4g
aGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKKyAgICAgICAgICBhbmQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1bHQg
aW5kaWNhdGluZyB0aGlzLgorICAgICAgICAqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFs
PGJvb2w+IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5l
ZAorICAgICAgICAgIG9uIHBsYXliYWNrLgorICAgICAgICAqIFRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MoKSBjYWxscyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVj
b21wb3NpdGlvbigpCisgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBn
bHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eSkuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRl
Y29tcG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBh
CisgICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNo
IHR1cm5zIGludG8gYSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KKyAgICAgICAgVGV4dFBh
aW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25k
cyB0byB0aGlzIGJ5IHJlcGxheWluZyB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRocm91Z2gg
YSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyByZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBk
aXNwbGF5IGxpc3QKKyAgICAgICAgd2l0aCBkZWNvbXBvc2VkIGdseXBocy4KKworICAgICAgICBE
aXNwbGF5IGxpc3QgbG9nZ2luZyBjdXJyZW50bHkgZHVtcHMgcmVzb3VyY2UgaWRlbnRpZmllcnMs
IHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgCisgICAgICAgIGxheW91dCB0ZXN0IGJlY2F1c2UgdGhl
eSBhcmUndCBuZWNlc3NhcmlseSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRl
c1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFn
YXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmlu
ZyB0aGVtIHRvCisgICAgICAgIGNvbnZlcnRlZCBmcm9tIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZmxhZ3MgYXJndW1lbnQu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5o
dG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3Jk
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpjb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6ZHVtcEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJdGVtSGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlEcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIy
LTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRkZDXVtJ
bnRlZ3JhdGlvbl0gQWRkICJmaXhlZCBzaXplZC9hbGwgZGVmYXVsdCB2YWx1ZSIgZmxleCBsYXlv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZDc2NGJjYWZkYWI0OWRmZTY1ZDcyYmFjYjBlYTRjNGZlMTI2MTA3ZC4u
ZDA2ODRiZDY3NjRkMWQ1NzlhODM1Y2Y0NDUzZTRjNmRmMzQzMTgwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVy
IHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50
bHksIFRleHRQYWludGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0ds
eXBoCisgICAgICAgIGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRl
bXMgZnJvbSB0aGUgY2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcygpLgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3Qg
bWVjaGFuaXNtLiBJbiBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0
aGUgR1BVIFByb2Nlc3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQor
ICAgICAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNS
ZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2lu
ZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2lu
ZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1l
YXN1cmFibGUKKyAgICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3
ZSBjYW4uCisgICAgICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVj
b3JkZXIgb3ZlcmhlYWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAg
ICAgICAgZ2x5cGggYnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNw
bGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0
cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dz
OgorICAgICAgICAKKyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8g
ZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAg
ICBpbWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBo
YXBwZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBp
bmRpY2F0aW5nIHRoaXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8
Ym9vbD4gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVk
CisgICAgICAgICAgb24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4
dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uKCkKKyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGds
eXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAg
ICAgICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KKyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVj
b21wb3NpdGlvbiwgd2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEK
KyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2gg
dHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFp
bnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRz
IHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBh
IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRp
c3BsYXkgbGlzdAorICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERp
c3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywg
d2hpY2ggaXMgYSBwcm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5
IGFyZSd0IG5lY2Vzc2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVz
UmVzb3VyY2VJZGVudGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdh
dGUgaW50byBhbGwgdGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5n
IHRoZW0gdG8KKyAgICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Li4uKSB0byBkdW1wSXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdH
bHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2Ug
cmVmZXJzIHRvIHVudXNlZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYWNkMDg2ZjIyYTJjMjE3ODlmYmI1OTk4MzFhOWNhM2UwYzI3OTZjYy4uNDllMTY4ZmM0
NGExNGYxM2ZhYWNiMjE3NzZlNGFiMTMyYzViMWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM4MSwxMCArMzgxLDExIEBAIEZsb2F0U2l6ZSBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QKICAgICBy
ZXR1cm4gc2l6ZTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUp
CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9u
dFNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7Ci0gICAgbV9wcmltYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX3NlY29u
ZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgYXV0byBkaWREZWNvbXBvc2UgPSBtX3By
aW1hcnlDb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAg
ICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pOworICAgIHJldHVybiBkaWREZWNvbXBvc2U7CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGEzZjBkMTk4NmZmMWUzNThkNzYxNGM4MGM0MmUz
NjdkZDM3ZjAyMDcuLmZjNDI3YTQwOGVjZTlmYjk1MTExOTBkODgzMTQ2MDI3MzExM2UwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7CisgICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDY4NmVmY2Uz
YmE4MWIyNzdiMWRiNjQ1MzYwNDdlYmRjNGI5ZWQ0ZWIuLjE2YjgxZDliMTc3NzI1NTgyMWRkMjY0
NTBlMGJkNmNkNTU0NGQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0
IHNjYWxlRmFjdG9yID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21D
b250ZXh0OjpObyk7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4p
CiAgICAgdm9pZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENU
TGluZVJlZiwgQ0dSZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWdu
ZWQgbV9vdXRwdXRHbHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAz
ZjAxODFkOWU0ODQ2ZmFmZTcxMTIxMDY1NzE2NTZiYWM2ZS4uMzZjN2VlMGY1ZGJmNGYzODU0Zjlk
NzM1MzU4NWE2MGY2ZjViZmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMjksOSArMTI5LDEwIEBAIEZsb2F0
U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK0dy
YXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKCp0
aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3Ro
aW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGY0YzdhODdlYzFkYjM0OGNiMzU0ZDllNDM1MmJjZTYyN2M2MTZkN2UuLjU1YjBm
Mzk4M2E5YmExZmZlNTE3NjQ3MjkxZTdiMTExODQyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yODMsNyArMjgz
LDYgQEAgcHVibGljOgogICAgIC8vIFRleHQKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
RmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKQEAg
LTI5Miw2ICsyOTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIGRyYXdHbHlwaHMoZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogICAgIH0K
IAorICAgIGVudW0gY2xhc3MgRGlkRGVjb21wb3NlR2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24gPSB7
IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3Vu
ZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZs
b2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJv
b2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGNiZmU3NWQ2MzJkYjk4MDA1ZGIyMTQ4NzBhNzM0M2JhYmM4OTBiYjMu
LjM1YTZkOTFjNTE3NjNkODE0YjRmYzE0NDU0NGIxMjliMmZiYTM0ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7
IHJldHVybiB7IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBj
b25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERl
Y29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1
cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2Fk
ZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZv
bnROb3RSZWFkeSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
MjYyZjBkNjAyYjgwZGMzNzdjNDA5ZjQ0NmRiYjQ4OGRhYzMxMjI0NC4uMzIzMDliYzM2ZmYzN2M0
NDdhNDQ1YzZkYzc5ZGYwN2NkMWIzMDE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtNDA4LDcgKzQwOCw3IEBAIFJlbmRlcmluZ01vZGUgR3JhcGhpY3NDb250ZXh0Q2Fpcm86
OnJlbmRlcmluZ01vZGUoKSBjb25zdAogICAgIHJldHVybiBDYWlybzo6U3RhdGU6OmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCpwbGF0Zm9ybUNvbnRleHQoKSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNp
Z25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSBmb250U21vb3RoaW5nKQorR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgR3Jh
cGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2Vz
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3Ro
aW5nTW9kZSBmb250U21vb3RoaW5nKQogewogICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5z
aXplKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzNSw2ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2Fs
ZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKICAgICAg
ICAgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0
ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAg
IGZvbnRTbW9vdGhpbmcpOworCisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIGNhaXJvX3QqIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uaAppbmRleCA3MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFk
NWU5Li45NzVkYzlkZDJlMTk5N2Q3MTE3MDQxOGQyNTRmNTZlNjRmM2RlYThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ry
b2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxv
YXRSZWN0JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7Cisg
ICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAKICAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCAyNmE3NTE1ZjljZWE5OGE5OTQ1ZTU4
ZTVhZDc0MmQ0MTM0ZDI1NzAzLi45MTY4MzMxMTc3NmNmYmJiYjgxZTc4NzVhNTU0ODA0YTg0ZTMx
YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBA
IC0zMDQsNiArMzA0LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlw
aHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB9CiAKICAgICBt
X293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5j
ZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRhdGEoKSwgY291
bnQsIGluaXRpYWxQZW5Qb3NpdGlvbiwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX291dHB1dEds
eXBoQ291bnQgKz0gY291bnQ7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4
dXApOwogfQpAQCAtMzIzLDYgKzMyNCw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNv
cmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAKICAg
ICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKICAgICBtX293bmVy
LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIEZsb2F0UmVjdChyZWN0KSwg
RmxvYXRSZWN0IHt7IH0sIGltYWdlLT5zaXplKCl9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQgfSk7CisgICAgbV9kaWREcmF3SW1hZ2UgPSB0
cnVlOwogCiAgICAgLy8gVW5kbyB0aGUgYWJvdmUgeS1mbGlwIHRvIHJlc3RvcmUgdGhlIGNvbnRl
eHQuCiAgICAgbV9vd25lci5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKQEAgLTM0Myw2ICszNDUs
NyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVzdGlu
YXRpb25SZWN0Lm1vdmVCeShwZW5Qb3NpdGlvbik7CiAgICAgICAgICAgICBtX293bmVyLmRyYXdJ
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBt
X2RpZERyYXdJbWFnZSA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBwZW5Qb3NpdGlvbi5t
b3ZlKHNpemUoYWR2YW5jZXNbaV0pKTsKQEAgLTM5NSw5ICszOTgsMTcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhjb25z
dCBGb250JiBmb24KICAgICBkcmF3KCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBo
cywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQorR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoc1Jl
Y29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9k
ZSBzbW9vdGhpbmdNb2RlKQogeworICAgIG1fb3V0cHV0R2x5cGhDb3VudCA9IDA7CisgICAgbV9k
aWREcmF3SW1hZ2UgPSBmYWxzZTsKKwogICAgIGRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5v
bk9UU1ZHUnVucyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQs
IHNtb290aGluZ01vZGUpOworICAgIAorICAgIGlmIChtX2RpZERyYXdJbWFnZSB8fCBtX291dHB1
dEdseXBoQ291bnQgIT0gbnVtR2x5cGhzKQorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
OjpEaWREZWNvbXBvc2VHbHlwaHM6OlllczsKKworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6
OkRpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpk
cmF3TmF0aXZlVGV4dChDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVm
IGxpbmUsIENHUmVjdCBsaW5lUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDMy
YzljNTEyYzdiN2U5OGE3MTc1ZDM3NzYwNTYzNjhhZjlhNTA5MDcuLmE1NDM2YzYyNTY4NTRkZTQ2
MWFiYWI3Njg1ZmVhMzNmNjhhNjcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAt
MTEwLDE2ICsxMTAsMjAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKE9w
dGlvblNldDxBc1RleHRGbGFnPiBmbGFncywgSXRlbUhhbmRsZSBpdGUKIFN0cmluZyBEaXNwbGF5
TGlzdDo6YXNUZXh0KE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykgY29uc3QKIHsKICAgICBU
ZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0
U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOworI2lmICFMT0dfRElTQUJMRUQKICAg
ICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRl
bSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwog
ICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVh
bSk7Ci0gICAgICAgIHN0cmVhbSA8PCBpdGVtOworICAgICAgICBkdW1wSXRlbUhhbmRsZShzdHJl
YW0sIGl0ZW0sIGZsYWdzKTsKICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAg
ICAgICAgICAgc3RyZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKyNlbmRpZgogICAgIHJldHVybiBzdHJlYW0ucmVsZWFz
ZSgpOwogfQogCkBAIC0xMjgsMTMgKzEzMiwxNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMp
OwogICAgIHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCisjaWYgIUxPR19ESVNBQkxFRAogICAgIGZv
ciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgewogICAgICAgICBhdXRvIFtpdGVtLCBl
eHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAg
ICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwotICAgICAgICB0cyA8PCBpdGVt
OworICAgICAgICBkdW1wSXRlbUhhbmRsZSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRl
c1BsYXRmb3JtT3BlcmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZp
ZXJzIH0pOwogICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCiAgICAgICAgICAgICB0
cyA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CisjZW5kaWYKKwogICAgIHRzLnN0YXJ0
R3JvdXAoKTsKICAgICB0cyA8PCAic2l6ZSBpbiBieXRlczogIiA8PCBzaXplSW5CeXRlcygpOwog
ICAgIHRzLmVuZEdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDcwYmZjNDQ5OGY2
NTAwMzc0Y2EzM2UzYTZiNTA4OGFmNjZkNGJiNTIuLjkzNzIyMDFlYmExN2YwNDU0M2NmZjgwNmYw
NDkyZTg1ZmQwZjViOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC00NiwxMiArNDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0g
Y2xhc3MgQXNUZXh0RmxhZyA6IHVpbnQ4X3QgewotICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRp
b25zICAgICAgPSAxIDw8IDAsCi0gICAgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9
IDEgPDwgMSwKLSAgICBEZWNvbXBvc2VzRHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAot
fTsKLQogY2xhc3MgRGlzcGxheUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3Bs
YXlMaXN0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29y
ZGVySW1wbDsKQEAgLTkzLDYgKzg3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmFja3NEcmF3
aW5nSXRlbUV4dGVudHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50
czsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRz
KGJvb2wpOworICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGFpbnNJdGVtc05lZWRp
bmdHbHlwaERlY29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zSXRlbXNOZWVk
aW5nR2x5cGhEZWNvbXBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRDb250YWluc0l0ZW1zTmVlZGlu
Z0dseXBoRGVjb21wb3NpdGlvbihib29sIHZhbHVlKSB7IG1fY29udGFpbnNJdGVtc05lZWRpbmdH
bHlwaERlY29tcG9zaXRpb24gPSB2YWx1ZTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAKQEAg
LTEyOSw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVzb3Vy
Y2VIZWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZl
Y3RvcjxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3Np
dGlvbjsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI0NjQxYTEzNDQ3
ZjFiNDQ3ODhhMGJhZWE2NmYyZTgzMDVhNGE1OS4uOGNhMjNmYTZhMDYwMzcyODIyMmIzZGQyNWMw
ZDIyMWFhOGJkYjJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBA
IC0yOCw2ICsyOCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIAorZW51bSBjbGFzcyBBc1RleHRGbGFnIDogdWludDhfdCB7CisgICAgSW5jbHVkZXNQ
bGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwgMCwKKyAgICBJbmNsdWRlc1Jlc291cmNlSWRl
bnRpZmllcnMgICAgID0gMSA8PCAxLAorICAgIERlY29tcG9zZXNEcmF3R2x5cGhzICAgICAgICAg
ICAgPSAxIDw8IDIsCit9OworCiBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAg
U2F2ZSwKICAgICBSZXN0b3JlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmlu
ZGV4IDM1YTdiNGVhMWMyNDA3NzEyZTUyOTM2NWZiOWZmNWQ3NzA2MWMwNWIuLjE2ZTE3YTAxNjcz
MWIxYjZhODlkNmRiMjQyOGQzMGY3NjQ3MTIwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKQEAgLTIwMCw5ICsyMDAsOSBAQCBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgRwog
ICAgIGNvbXB1dGVCb3VuZHMoZm9udCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAorR3JhcGhpY3ND
b250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRz
R2x5cGhEZWNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250
LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFu
Y2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuZHJhd0ds
eXBocyhmb250LCBtX2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5z
aXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9z
aXRpb24pOwogfQogCiB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYg
Zm9udCkKQEAgLTY4OCwxODQgKzY4OCwxNjMgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIngiLCBpdGVt
LngoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ5IiwgaXRlbS55KCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90
YXRlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBp
dGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmds
ZSIsIGl0ZW0uYW5nbGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY2FsZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjYWxlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7Ci0gICAgcmV0
dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRDVE0mIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRD
VE0mIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHko
InNldC1jdG0iLCBpdGVtLnRyYW5zZm9ybSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBp
dGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ29uY2F0ZW5hdGVDVE0m
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImN0
bSIsIGl0ZW0udHJhbnNmb3JtKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0
ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xv
ciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgi
Y29sb3IiLCBzdGF0ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBzdGF0ZSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IHN0YXRlLmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNv
bG9yIiwgaXRlbS5jb2xvcigpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgc3RhdGUu
dGhpY2tuZXNzKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNr
bmVzcyIsIGl0ZW0udGhpY2tuZXNzKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7
CiAgICAgdHMgPDwgaXRlbS5zdGF0ZSgpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgbGluZUNhcCkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwg
bGluZUNhcC5saW5lQ2FwKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHko
ImxpbmUtY2FwIiwgaXRlbS5saW5lQ2FwKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgbGluZURhc2gpCit2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVEYXNo
LmRhc2hBcnJheSgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGluZURh
c2guZGFzaE9mZnNldCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJk
YXNoLWFycmF5IiwgaXRlbS5kYXNoQXJyYXkoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNo
LW9mZnNldCIsIGl0ZW0uZGFzaE9mZnNldCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGxpbmVKb2lu
LmxpbmVKb2luKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUt
am9pbiIsIGl0ZW0ubGluZUpvaW4oKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCit2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRNaXRlckxpbWl0JiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIG1pdGVy
TGltaXQubWl0ZXJMaW1pdCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJtaXRyZS1saW1pdCIsIGl0ZW0ubWl0ZXJMaW1pdCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikK
IHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJu
IHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGlwT3V0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91
dCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0
ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHko
ImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7
CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRl
bnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlm
aWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRU
b1BhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0
VG9QYXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgp
KTsKICAgICB0cy5kdW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIGl0ZW0ud2luZFJ1bGUoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1h
Z2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICgh
ZmxhZ3MuY29udGFpbnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0u
c291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWlt
YWdlLXJlY3QiLCBpdGVtLnNvdXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMm
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBp
dGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBz
dHVmZi4KICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNo
b3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmNob3ItcG9pbnQiLCBpdGVtLmFuY2hvclBv
aW50KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgibGVuZ3RoIiwgaXRlbS5nbHlwaHMoKS5zaXpl
KCkpOwogCi0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVu
dGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5j
b250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1
ZmZlcklkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0
ZW0uc291cmNlKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0
aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlk
ZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRh
aW5zKEFzVGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwot
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd1N5c3RlbUltYWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd1N5c3RlbUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0cy5kdW1wUHJvcGVydHko
ImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0
dGVybiYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0
ZXJuJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFBy
b3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CisgICAg
aWYgKCFmbGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmll
cnMpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmlt
YWdlSWRlbnRpZmllcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3Jt
IiwgaXRlbS5wYXR0ZXJuVHJhbnNmb3JtKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1y
ZWN0IiwgaXRlbS50aWxlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIs
IGl0ZW0uZGVzdFJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhh
c2UoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwot
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd1JlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJv
cmRlci10aGlja25lc3MiLCBpdGVtLmJvcmRlclRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdM
aW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmUm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBv
aW50LTEiLCBpdGVtLnBvaW50MSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBp
dGVtLnBvaW50MigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibG9jay1sb2NhdGlv
biIsIGl0ZW0uYmxvY2tMb2NhdGlvbigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFu
Y2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CkBAIC04NzUsMzgwICs4NTQsMzUwIEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQm
IGl0ZW0pCiAgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBpdGVtLndpZHRocygpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5pc1ByaW50aW5nKCkpOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKLSAgICByZXR1
cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0VsbGlwc2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBEcmF3RWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQ
YXRoJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdGgm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBh
dGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgib2Zmc2V0IiwgaXRlbS5vZmZzZXQoKSk7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNS
aW5nUmVjdHMmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
Rm9jdXNSaW5nUmVjdHMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3RzIiwgaXRlbS5yZWN0cygpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
IndpZHRoIiwgaXRlbS53aWR0aCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0
ZW0ub2Zmc2V0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmlsbFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGaWxsUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRz
LmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0
aENvbG9yJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJl
Y3RXaXRoQ29sb3ImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1w
UHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xv
ciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGxvZyBncmFk
aWVudC4KICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0
dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsQ29tcG9zaXRlZFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGaWxsQ29tcG9zaXRlZFJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikK
IHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVt
cFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJj
b21wb3NpdGUtb3BlcmF0aW9uIiwgaXRlbS5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoImJsZW5kLW1vZGUiLCBpdGVtLmJsZW5kTW9kZSgpKTsKLSAgICByZXR1cm4g
dHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZp
bGxSb3VuZGVkUmVjdCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEZpbGxSb3VuZGVkUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRz
LmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJlY3QoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVu
ZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cm91bmRlZC1ob2xlLXJlY3QiLCBpdGVtLnJvdW5kZWRIb2xlUmVjdCgpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNp
ZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRmlsbExpbmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBGaWxsTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxB
cmMmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBp
dGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRo
IiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTdHJva2VBcmMmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTdHJva2VBcmMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1w
UHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUm
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3Vy
dmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHko
InBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiBp
dGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRo
IiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGaWxsUGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IEZpbGxQYXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVt
cFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRl
bSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIs
IGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVG
b3JNZWRpYSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50
RnJhbWVGb3JNZWRpYSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVy
biB0czsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsK
ICAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFN0cm9rZVBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTdHJva2VQYXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBz
ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlw
c2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHko
InJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0
KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJu
IHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGVhclJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVh
clJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVy
JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3Bh
cmVuY3lMYXllciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgib3BhY2l0eSIsIGl0ZW0ub3BhY2l0eSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNl
U2NhbGVGYWN0b3ImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBB
cHBseURldmljZVNjYWxlRmFjdG9yJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAg
ICAgdHMuZHVtcFByb3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOwot
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgSXRlbUhhbmRsZSBpdGVtKQordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiB0cywg
Y29uc3QgSXRlbUhhbmRsZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewog
ICAgIHRzIDw8IGl0ZW0udHlwZSgpOwogCiAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewogICAg
IGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNs
YXRlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8VHJhbnNsYXRlPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Um90YXRlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
Um90YXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNj
YWxlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PFNjYWxlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OlNldENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0Q1RNPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PENvbmNhdGVuYXRlQ1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5s
aW5lRmlsbENvbG9yPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0SW5saW5l
RmlsbENvbG9yPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVT
dHJva2VDb2xvcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZVN0
cm9rZUNvbG9yPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhp
Y2tuZXNzPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tu
ZXNzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0
YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PFNldFN0YXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExp
bmVDYXA+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PFNldExpbmVEYXNoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRM
aW5lSm9pbj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVKb2luPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGlt
aXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXA+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PENsaXBPdXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlw
T3V0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxD
bGlwUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBQYXRoPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdH
bHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3R2x5cGhzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
RHJhd0ltYWdlQnVmZmVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2
ZUltYWdlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdl
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0
ZW1JbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PERyYXdQYXR0ZXJuPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKKyAg
ICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdSZWN0PigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3TGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdMaW5l
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
c0ZvclRleHQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRN
YXJrZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+
KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFy
a2VyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdF
bGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3UGF0aD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXRoPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1Jp
bmdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKKyAg
ICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxS
ZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aENvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVk
UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsTGluZT4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxBcmM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PEZpbGxBcmM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsQXJjPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxRdWFkQ3VydmU6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxGaWxsUXVhZEN1cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxCZXppZXJDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbEJlemllckN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
RmlsbEJlemllckN1cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRo
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFBhdGg+KCksIGZsYWdzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8RmlsbEVsbGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOworICAgICAgICBkdW1wSXRlbSh0
cywgaXRlbS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0
cm9rZVJlY3Q+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCksIGZsYWdzKTsKICAgICAgICAg
YnJlYWs7CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlQXJjOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VBcmM+KCk7CisgICAgICAg
IGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VBcmM+KCksIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTdHJva2VRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdl
dDxTdHJva2VRdWFkQ3VydmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlQmV6aWVyQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9r
ZUJlemllckN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlQmV6
aWVyQ3VydmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigp
OworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywg
aXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVj
dD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSwgZmxhZ3Mp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxh
eWVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSwg
ZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNj
YWxlRmFjdG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9y
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cj4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKLQogICAgIC8vIEl0ZW1zIHdpdGggbm8gYWRk
aXRpb25hbCBkYXRhLgogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6UmVzdG9yZToKQEAgLTEyNjAsNyArMTIwOSw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clNoYWRvdzoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiB0czsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBkMTQ0MDc3M2FlZDNhZjg2
NmY0OWUyNzY5MWQ1ZmM3OTk5ZmYxNjc3Li4wMDU0ODQ2MTM0ODIxMGI4YzUxMmM2MWUxZWY4YTA2
ZTAwMjEzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTU1LDYgKzU1
LDcgQEAgc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCitlbnVtIGNsYXNzIEFzVGV4dEZsYWcgOiB1aW50OF90Owogc3RydWN0IEl0ZW1IYW5k
bGU7CiAKIC8qIGlzSW5saW5lSXRlbSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IG5lZWRz
IHRvIGJlIHBhc3NlZCB0aHJvdWdoIElQQzo6RW5jb2RlciBpbiBvcmRlciB0byBzZXJpYWxpemUs
CkBAIC01OTIsNyArNTkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwg
VmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlw
aHMgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pIGNvbnN0OwogCiAgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsgfQpAQCAtMjA1MSw2NyArMjA1Miw4MCBA
QCBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYpOwogSXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mKTsKIAogI2lmICFMT0dfRElTQUJMRUQKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFRyYW5zbGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY2Fs
ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgU2V0Q1RNJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBDb25jYXRlbmF0ZUNUTSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBTZXRJbmxpbmVTdHJva2VDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0
ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgU2V0TGluZUNhcCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGluZURhc2gmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRN
aXRlckxpbWl0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBDbGlwJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
Q2xpcE91dFRvUGF0aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgQ2xpcFBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBEcmF3R2x5cGhzJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RHJhd1N5c3RlbUltYWdlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0dGVybiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1JlY3QmKTsKLVdFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5l
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3TGluZXNGb3JUZXh0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBE
cmF3RWxsaXBzZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgRHJhd1BhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9j
dXNSaW5nUmVjdHMmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJl
Y3RXaXRoR3JhZGllbnQmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgVHJhbnNsYXRlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0
ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mLCBjb25zdCBTY2FsZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRDVE0mLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgQ29uY2F0ZW5hdGVDVE0mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmls
bENvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBTZXRMaW5lQ2FwJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVEYXNoJiwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldE1pdGVyTGlt
aXQmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0JiwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRU
b1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdl
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
UGF0dGVybiYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
TGluZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2Um
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShU
ZXh0U3RyZWFtJiwgY29uc3QgRHJhd1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmlu
Z1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxDb21w
b3NpdGVkUmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbExpbmUmKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxBcmMmKTsKLVdF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZp
bGxRdWFkQ3VydmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbGxCZXppZXJDdXJ2ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQXJjJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VR
dWFkQ3VydmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsTGluZSYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxs
QXJjJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmls
bEJlemllckN1cnZlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUFyYyYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBTdHJva2VRdWFkQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRB
KQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgRmlsbFBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IEZpbGxFbGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJ
dGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsRWxs
aXBzZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CiAjaWYgRU5BQkxFKFZJREVPKQotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRG
cmFtZUZvck1lZGlhJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmKTsKLVdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9r
ZUVsbGlwc2UmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5UcmFuc3BhcmVu
Y3lMYXllciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYpOwotCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBJdGVtSGFuZGxlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ry
b2tlUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUxpbmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xlYXJSZWN0JiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVCYgaXRlbSkK
K3sKKyAgICBkdW1wSXRlbSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3Jt
T3BlcmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOwor
ICAgIHJldHVybiB0czsKK30KKwordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiwgY29u
c3QgSXRlbUhhbmRsZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CisKK2lubGluZSBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFu
ZGxlKQoreworICAgIGR1bXBJdGVtSGFuZGxlKHRzLCBpdGVtSGFuZGxlLCB7IEFzVGV4dEZsYWc6
OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNl
SWRlbnRpZmllcnMgfSk7CisgICAgcmV0dXJuIHRzOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggMDc0YmY2MDkzZWQzNzhlMTgxMWZmOGZjNmNhNWQwNTdiNzdlOTk5Ny4uNzY1OGY4MzQy
ZGVmNmNlMmU0MTAzMzgxMzMzMDM4NjRkOGYyMWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTYxLDE3ICsxNjEsMjAgQEAgdm9pZCBSZWNvcmRlcjo6
ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBG
bG9hdFJlY3QKICAgICByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwg
c291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQor
R3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgUmVjb3JkZXI6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pCiB7Ci0gICAgaWYgKG1f
ZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKSB7Cisg
ICAgaWYgKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6
WWVzKQorICAgICAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiUmVjb3JkZXI6
OmRyYXdHbHlwaHMgLSBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiAiIDw8IG5lZWRzR2x5cGhEZWNv
bXBvc2l0aW9uKTsKKworICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNvbnN0
cnVjdERyYXdHbHlwaHM6OlllcyAmJiAoIW5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uIHx8ICpuZWVk
c0dseXBoRGVjb21wb3NpdGlvbikpIHsKICAgICAgICAgaWYgKCFtX2RyYXdHbHlwaHNSZWNvcmRl
cikKICAgICAgICAgICAgIG1fZHJhd0dseXBoc1JlY29yZGVyID0gbWFrZVVuaXF1ZTxEcmF3R2x5
cGhzUmVjb3JkZXI+KCp0aGlzLCBtX2luaXRpYWxTY2FsZSk7CiAKLSAgICAgICAgbV9kcmF3R2x5
cGhzUmVjb3JkZXItPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gbV9kcmF3R2x5cGhzUmVjb3JkZXItPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZh
bmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICB9CiAKICAg
ICBkcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUds
eXBoczo6Tm87CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjAwNDgzMzZhN2Y4MDkzODJl
ZGQwZDAyNzQ1NWQ4MmY0OGZiZjgzNy4uNjIzNDQ4ZGExNDY3YjgwYjE1N2ExNzY3YTZmZjkzYzE4
Y2M1NzNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMTIs
NyArMjEyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZUltYWdlUmVjdCwgRmlsdGVyJiwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9u
dFNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50
LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFs
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5N2UxMWNiODYwZDkxOTAwMzllZTdlYWFkN2MzOGRm
MTQyOWViZjlkLi43OWRhZWE3NTc2MjM5YWIwNTIxYTA4N2Y1MTVmNmNhNjNlMjgzYjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xMDcsNTUgKzEwNyw1
NyBAQCBpbmxpbmUgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLWlubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5RHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291
cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBEcmF3R2x5cGhzJiBkcmF3R2x5cGhzSXRlbSkKK2lubGlu
ZSBzdGF0aWMgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiwgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGFwcGx5RHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VI
ZWFwLCBEcmF3R2x5cGhzJiBkcmF3R2x5cGhzSXRlbSwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVk
c0dseXBoRGVjb21wb3NpdGlvbikKIHsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGRy
YXdHbHlwaHNJdGVtLmZvbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSByZXNv
dXJjZUhlYXAuZ2V0Rm9udChyZXNvdXJjZUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGRyYXdHbHlw
aHNJdGVtLmFwcGx5KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgYXV0byBkaWREZWNvbXBvc2UgPSBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250
ZXh0LCAqZm9udCwgbmVlZHNHbHlwaERlY29tcG9zaXRpb24pOworICAgICAgICByZXR1cm4geyBz
dGQ6Om51bGxvcHQsIGRpZERlY29tcG9zZSB9OwogICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2VJ
ZGVudGlmaWVyOworICAgIHJldHVybiB7IHJlc291cmNlSWRlbnRpZmllciwgR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6Ok5vIH07CiB9CiAKLXN0ZDo6cGFpcjxzdGQ6Om9wdGlv
bmFsPFN0b3BSZXBsYXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorYXV0byBSZXBs
YXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAg
ICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdl
QnVmZmVyOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9y
ZXNvdXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNv
bjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
IH07Ci0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBpZiAoYXV0byBt
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlEcmF3R2x5cGhzKG1fY29udGV4
dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpKQotICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3Zl
KG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVw
bGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9OworCisgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0dseXBoczogeworICAgICAgICBhdXRvIGRyYXdHbHlwaHNSZXN1bHQg
PSBhcHBseURyYXdHbHlwaHMobV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbS5nZXQ8RHJh
d0dseXBocz4oKSwgbV9kaXNwbGF5TGlzdC5jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbigpKTsKKyAgICAgICAgaWYgKGRyYXdHbHlwaHNSZXN1bHQuZmlyc3QpCisgICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdU
Rk1vdmUoZHJhd0dseXBoc1Jlc3VsdC5maXJzdCksIHsgfSB9OworICAgICAgICByZXR1cm4geyB7
IH0sIHsgfSwgZHJhd0dseXBoc1Jlc3VsdC5zZWNvbmQgfTsKKyAgICB9CiAKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+
KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2Nv
bnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlz
c2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlTb3VyY2VJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9yZXNv
dXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVz
b3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9Owor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAg
ICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0
YXRlSXRlbShtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
LSAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgIHJldHVybiB7
IH07CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3LDEyICsxODksMTYgQEAg
UmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgYm9vbCB0cmFja1JlcGxheUxpc3QKIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxh
eUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAot
ICAgICAgICBpZiAoYXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXJdID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewotICAg
ICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwot
ICAgICAgICAgICAgcmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGFwcGx5
UmVzdWx0ID0gYXBwbHlJdGVtKGl0ZW0pOworICAgICAgICBpZiAoYXBwbHlSZXN1bHQuc3RvcFJl
YXNvbikgeworICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKmFwcGx5UmVz
dWx0LnN0b3BSZWFzb247CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IFdURk1vdmUoYXBwbHlSZXN1bHQucmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LmRp
ZERlY29tcG9zZUdseXBocyAmJiAqYXBwbHlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdy
YXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXMpCisgICAgICAgICAgICByZXN1
bHQuZGlkRGVjb21wb3NlR2x5cGhzID0gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlw
aHM6OlllczsKKwogICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJ
bkJ1ZmZlcjsKIAogICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMjU4NGE1MzlmYzA1MzA4YzYy
NDJhMTFmYzE3NjVlZGJhOGIwZDlmNi4uNGUzNTA0ZmI1MGUyMjg3ZGQ2NWI0NjI1NzFhNTMzNWFk
Mjk5OTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzIsNyArMzMsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTUwLDYgKzUwLDcgQEAg
c3RydWN0IFJlcGxheVJlc3VsdCB7CiAgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9
OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uRm9y
U3RvcHBpbmcgeyBTdG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zIH07CisgICAgc3Rk
OjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gZGlkRGVjb21w
b3NlR2x5cGhzOwogfTsKIAogY2xhc3MgUmVwbGF5ZXIgewpAQCAtNjEsNyArNjIsMTIgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4s
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0
ZW1IYW5kbGUpOworICAgIHN0cnVjdCBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IHN0b3BSZWFzb247CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRp
ZERlY29tcG9zZUdseXBoczsKKyAgICB9OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0o
SXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25z
dCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNS
ZWNvcmRlckhhcmZCdXp6LmNwcAppbmRleCBjMzI4YjhmYjY2N2ViYWFhY2VmYzJkZWQ1MGY5ODg0
NzIwMDBhZjhkLi5lNGE0YTI1NzAxODJjZWM1MzZiZDEyMmNiNzMxZjFlMDI0ODcyYTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5
cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCkBAIC0zOCw5ICsz
OCwxMCBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmIG93bmVyLCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01v
ZGUgc21vb3RoaW5nTW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMs
IHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VH
bHlwaHM6Ok5vOyAgICAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCBl
N2U2ZTZhMjczMzhlNGY3OTkxN2RlNjYzZTY3Y2JjZTY2MjgzMGUwLi4xOGUwZmZjMjU0ODBjOGQw
NWU2MDhlMjZkZDg2MWU5YTk0NGY2ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGVhclJlY3Q+KHJlY3QpKTsKIH0KIAotdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBh
ZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9u
dFNtb290aGluZ01vZGUgZm9udFNtb290aGluZykKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21w
b3NlR2x5cGhzIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQogewogICAgIHN0cnVjdCBEcmF3
R2x5cGhzIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8Q2Fpcm86OkZp
bGxTb3VyY2UsIENhaXJvOjpTdHJva2VTb3VyY2UsIENhaXJvOjpTaGFkb3dTdGF0ZSwgRmxvYXRQ
b2ludCwgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+LCBmbG9hdCwgVmVjdG9yPGNhaXJvX2ds
eXBoX3Q+LCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBGbG9hdFNpemUsIENv
bG9yLCBGb250U21vb3RoaW5nTW9kZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3R2x5cGhzKCkg
PSBkZWZhdWx0OwpAQCAtNTM4LDYgKzUzOCw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoCiAg
ICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSksCiAgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3Zl
KGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksCiAgICAgICAg
IHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0
ZS5kcm9wU2hhZG93KCkuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKKworICAgIHJldHVybiBEaWRE
ZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5oCmluZGV4IGQ2NTI3YzQ3ZDYxOTY3ODVkY2IxYjM4ZDgzZmVjNjQyMWQxMzY2
YTQuLjQ4NTQ5ZDExNDAyNThhYzJhN2IxNDFjNjliNjFhOWUzOGZiMmFjMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgV2Vi
Q29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJD
b3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7Cisg
ICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNv
bnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
LCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBXZWJDb3JlOjpGaWx0ZXImLCBXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzJikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmluZGV4IGFkNGJhMWQ2NDE3ZTcxODZj
YzFlYWE1YjEzNWFlNWUxYTQ0NTc3YjYuLmE5OGZhODJmN2ZjYzI0NDQwMTJjMmZkODVkZDc1NTM2
YzQwNjgyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0zOCw5ICszOCwxMCBA
QCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQm
IG93bmVyLCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRl
cjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBn
bHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21v
b3RoaW5nTW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlw
aHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGlu
Z01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZv
bnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290
aGluZ01vZGUpOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBo
czo6Tm87ICAgIAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCA0ZjMzNDJmYTM5MTAxNzQ2NGYzNDRiNTQ5M2Yz
MjRjNGE4MjllYzdhLi44Mjc0YzkzODkwOGMyNTk3MDk4OGJjNGU2NWE5ZWNkYzgwNDc4MjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTIzLDYgKzIzLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgogCisjaW5j
bHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJl
cGxheWVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgpAQCAtMTIzLDcgKzEyNCwxMSBAQCB2b2lkIFRleHRQYWludGVyOjpwYWlu
dFRleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRS
dQogICAgICAgICAvLyBSZXBsYXlpbmcgYmFjayBhIHdob2xlIGNhY2hlZCBnbHlwaCBydW4gdG8g
dGhlIEdyYXBoaWNzQ29udGV4dC4KICAgICAgICAgbV9jb250ZXh0LnRyYW5zbGF0ZSh0ZXh0T3Jp
Z2luKTsKICAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKG1fY29udGV4dCwg
Km1fZ2x5cGhEaXNwbGF5TGlzdCk7Ci0gICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAgICAg
ICBhdXRvIHJlcGxheVJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICAKKyAgICAg
ICAgaWYgKHJlcGxheVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMpCisgICAgICAgICAgICBtX2ds
eXBoRGlzcGxheUxpc3QtPnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9u
KCpyZXBsYXlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4dDo6RGlk
RGVjb21wb3NlR2x5cGhzOjpZZXMpOworCiAgICAgICAgIG1fY29udGV4dC50cmFuc2xhdGUoLXRl
eHRPcmlnaW4pOwogICAgIH0KICAgICBtX2dseXBoRGlzcGxheUxpc3QgPSBudWxscHRyOwpAQCAt
MjU1LDkgKzI2MCwxOCBAQCBTdHJpbmcgVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxp
c3RzRm9yVGV4dE5vZGVBc1RleHQoVGV4dCYgdGV4dE5vZGUsIE9wdAogICAgICAgICAgICAgZGlz
cGxheUxpc3QgPSBUZXh0UGFpbnRlcjo6Z2x5cGhEaXNwbGF5TGlzdElmRXhpc3RzKCp0ZXh0Qm94
LmlubGluZUJveCgpKTsKICNlbmRpZgogICAgICAgICBpZiAoZGlzcGxheUxpc3QpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpc3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgaWYgKGZsYWdzICYgRGlz
cGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKSB7CisgICAgICAgICAg
ICAgICAgLy8gUmVwbGF5IGRpc3BsYXlMaXN0IHRocm91Z2ggYSBjb250ZXh0IHdpdGggRGVjb25z
dHJ1Y3REcmF3R2x5cGhzOjpZZXMgc28gdGhhdCB0aGUgb3V0cHV0IGRpc3BsYXkgbGlzdCBzaG93
cyB0aGUgZHJhd2luZyBjb21tYW5kcyBmb3IgZGVjb21wb3NwZWQgZ2x5cGhzLgorICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4g
b3V0cHV0RGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3Bs
YXlMaXN0PigpOworICAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwgcmVj
b3JkaW5nQ29udGV4dCgqb3V0cHV0RGlzcGxheUxpc3QsIHsgfSwgeyB9LCB7IH0sIERpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworICAgICAgICAgICAg
ICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcihyZWNvcmRpbmdDb250ZXh0LCAqZGlz
cGxheUxpc3QpOworICAgICAgICAgICAgICAgIGF1dG8gcmVwbGF5UmVzdWx0ID0gcmVwbGF5ZXIu
cmVwbGF5KCk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQob3V0cHV0RGlzcGxheUxp
c3QtPmFzVGV4dChmbGFncykpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoZGlzcGxheUxpc3QtPmFzVGV4dChmbGFncykpOwogICAgICAgICB9CisK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkODFh
NWMyYTNmN2ZkYzhlYzNiMWYyZWEzZDk0MThhMDA2OGM3YjIxLi5lZTVjZmM4NmExNDNmZTA4ZDVj
NTk1MzI5OTYxNGIzMWVlMDM5ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0zMTc1LDYgKzMxNzUsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6ZGlz
cGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVuc2lnbmVkCiAgICAgaWYgKGZs
YWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAg
IGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1Bs
YXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01Q
T1NFU19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxp
c3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIGlmICghZWxlbWVu
dC5yZW5kZXJlcigpLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CiAKQEAgLTMyMDAsNiArMzIwMyw5IEBAIEV4Y2VwdGlvbk9yPFN0
cmluZz4gSW50ZXJuYWxzOjpyZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgdW5zCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JN
X09QRVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpB
c1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3Mg
JiBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxp
c3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhz
KTsKKwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpLT5oYXNMYXllcigpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKQEAgLTMyMzMsNiArMzIz
OSw5IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlM
aXN0c0ZvclRleHROb2RlKE5vZGUmIG5vZGUsIHVuCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9M
SVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0Rmxh
Z3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9u
cyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBI
UykKKyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6
OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIHJldHVybiBUZXh0UGFpbnRlcjo6Y2FjaGVk
R2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dChkb3duY2FzdDxUZXh0Pihub2RlKSwg
ZGlzcGxheUxpc3RGbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGI0Y2FkZGQyMjQ0MjMzNjZlYmY1YzllYzJmNjNlYzdmNTMwZTkwN2IuLjhmMzZlYzdlNGUyMTU4
NjdiNmFmNmNhZTg0N2E1MThhNDA1ZDRkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtNDc0LDYgKzQ3NCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgLy8gVmFs
dWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAgICAgICAg
RElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxLAorICAgICAgICBE
SVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUyA9IDIKICAgICB9OwogICAgIEV4Y2Vw
dGlvbk9yPFN0cmluZz4gZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmLCB1bnNpZ25lZCBz
aG9ydCBmbGFncyk7CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiByZXBsYXlEaXNwbGF5TGlzdEZv
ckVsZW1lbnQoRWxlbWVudCYsIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCA1NmZmNTAzYWJlMmQxZjA2ZGE1NjMwNjMzN2MwYjBkYjg2
NGQ4YmRkLi4xYTNlZGNjNGNlZDFkZjM5NmI1NGE5N2I1MTdjY2Y0NTJhMWY0MTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02MDAsNiArNjAwLDcgQEAgdHlwZWRlZiAo
RmV0Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogCiAgICAgLy8gRmxh
Z3MgZm9yIGRpc3BsYXlMaXN0Rm9yRWxlbWVudC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBE
SVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUyA9IDE7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgPSAyOwog
ICAgIC8vIFJldHVybnMgdGhlIHJlY29yZGVkIGRpc3BsYXkgbGlzdC4KICAgICBET01TdHJpbmcg
ZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgZmxhZ3MgPSAwKTsKICAgICAvLyBSZXR1cm5zIHRoZSBkaXNwbGF5IGxpc3QgdGhhdCB3
YXMgYWN0dWFsbHkgcGFpbnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA3
YTA3MzJlMjkyZWVjZWY1NjMwODAzZjUwZDY4ODc5ZTQwYmQ1NDc4Li43YWJiMDcyZmMzOGE2Mzdk
NjdlOTU2MGMzYzY5OTVmNDlmMmRlY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3
R2x5cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoRGlzcGxheUxpc3Q6OkQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQpOworICAg
IGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB9
KTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM0NzI2Yzc2NTZjMGNj
M2UxMzU0MTE4YWVkNGRkODY5NWRiYzQ0OS4uYjgxMjYzY2JkZjYyZjU5ZWEyMDgzNzdmYzQxMWNi
ZjkwN2NhZmM3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA1LTE0ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHRoZSBvdmVyaGVh
ZCBvZiBEcmF3R2x5cGhzUmVjb3JkZXIgd2hlbiBkcmF3aW5nIGNhY2hlZCBnbHlwaCBidWZmZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA0MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9q
aS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5
LWxpc3QtZW1vamkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3Bs
YXktbGlzdC1zdmctZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4
dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisKIDIwMjItMDUtMTQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtSZXBhaW50XSBCb3JkZXIgaWdub3JlcyBjdXJyZW50Q29sb3IgY2hhbmdl
IHdoZW4gaG92ZXJpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY5MTc2YTVmYWE5Yzk5NjkwNjI0
MmQxY2VjNzczMWNkMjkzMmViYzIuLmVkNzczYWEzZjYzNzI1ODg1NmNmOTZjYzcyMTc4NjcwOGI3
N2IxYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTEwOCw2ICs1MTA4LDggQEAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0
aW9ucy5odG1sIFsgRHUKIAogIyBEaXNwbGF5IGxpc3QgbG9nZ2luZyBpcyBvbmx5IGF2YWlsYWJs
ZSBpbiBkZWJ1ZwogWyBSZWxlYXNlIF0gZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1jb2xv
ci5odG1sIFsgU2tpcCBdCitbIFJlbGVhc2UgXSBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0
LWVtb2ppLmh0bWwgWyBTa2lwIF0KK1sgUmVsZWFzZSBdIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5
LWxpc3Qtc3ZnLWZvbnQuaHRtbCBbIFNraXAgXQogCiAjIFBsdWdpbnMKICMgRklYTUU6IFJlbW92
ZSB0aGVzZSB0ZXN0cy4K
</data>
<flag name="commit-queue"
          id="488453"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459373</attachid>
            <date>2022-05-14 20:23:26 -0700</date>
            <delta_ts>2022-05-14 20:55:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514202325.patch</filename>
            <type>text/plain</type>
            <size>88410</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MmNiM2E0MzNjZTg3NTIzNTJiNjA1YWFiOWRkNDFkZDc0MzQ3MTBjLi5i
NTM2ZjhkMTg0MjZjMjU5YjljNzBjYmMwMDgxNTgwMDdhOWQzNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTQgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRl
ciB3aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVu
dGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdH
bHlwaAorICAgICAgICBpdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0
ZW1zIGZyb20gdGhlIGNhY2hlIGluCisgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVt
cGhhc2lzTWFya3MoKS4KKworICAgICAgICBJbmRlcGVuZGVudGx5LCB0ZXh0IGRyYXdpbmcgaW4g
Z2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKKyAgICAgICAgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxheSBsaXN0
IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4g
dGhlIEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUK
KyAgICAgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQorICAgICAgICBEcmF3R2x5cGhz
UmVjb3JkZXIgdG8gZGV0ZWN0IHdoZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdp
bmcgaW50byBsb3dlciBsZXZlbCBnbHlwaAorICAgICAgICBhbmQgaW1hZ2UgZHJhd2luZywgdXNp
bmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBt
ZWFzdXJhYmxlCisgICAgICAgIG92ZXJoZWFkLCBzbyB3ZSB3YW50IHRvIGF2b2lkIGl0IHdoZW4g
d2UgY2FuLgorICAgICAgICAKKyAgICAgICAgVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCisg
ICAgICAgIGdseXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlz
cGxheSBsaXN0IHRvIHNheSB3aGV0aGVyIGFueQorICAgICAgICBkcmF3R2x5cGhzKCkgY2FsbHMg
dHJpZ2dlcmVkIGdseXBoIGRlY29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93
czoKKyAgICAgICAgCisgICAgICAgICogRHJhd0dseXBoc1JlY29yZGVyIGlzIG1vZGlmaWVkIHRv
IGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0cmlnZ2VyZWQgYW55CisgICAgICAg
ICAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5nICh3aGljaCBjYW4g
aGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKKyAgICAgICAgICBhbmQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1bHQg
aW5kaWNhdGluZyB0aGlzLgorICAgICAgICAqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFs
PGJvb2w+IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5l
ZAorICAgICAgICAgIG9uIHBsYXliYWNrLgorICAgICAgICAqIFRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MoKSBjYWxscyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVj
b21wb3NpdGlvbigpCisgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBn
bHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eSkuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRl
Y29tcG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBh
CisgICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNo
IHR1cm5zIGludG8gYSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KKyAgICAgICAgVGV4dFBh
aW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25k
cyB0byB0aGlzIGJ5IHJlcGxheWluZyB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRocm91Z2gg
YSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyByZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBk
aXNwbGF5IGxpc3QKKyAgICAgICAgd2l0aCBkZWNvbXBvc2VkIGdseXBocy4KKworICAgICAgICBE
aXNwbGF5IGxpc3QgbG9nZ2luZyBjdXJyZW50bHkgZHVtcHMgcmVzb3VyY2UgaWRlbnRpZmllcnMs
IHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgCisgICAgICAgIGxheW91dCB0ZXN0IGJlY2F1c2UgdGhl
eSBhcmUndCBuZWNlc3NhcmlseSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRl
c1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFn
YXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmlu
ZyB0aGVtIHRvCisgICAgICAgIGNvbnZlcnRlZCBmcm9tIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZmxhZ3MgYXJndW1lbnQu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5o
dG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3Jk
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpjb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6ZHVtcEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJdGVtSGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlEcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIy
LTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRkZDXVtJ
bnRlZ3JhdGlvbl0gQWRkICJmaXhlZCBzaXplZC9hbGwgZGVmYXVsdCB2YWx1ZSIgZmxleCBsYXlv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZDc2NGJjYWZkYWI0OWRmZTY1ZDcyYmFjYjBlYTRjNGZlMTI2MTA3ZC4u
ZDA2ODRiZDY3NjRkMWQ1NzlhODM1Y2Y0NDUzZTRjNmRmMzQzMTgwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVy
IHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50
bHksIFRleHRQYWludGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0ds
eXBoCisgICAgICAgIGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRl
bXMgZnJvbSB0aGUgY2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcygpLgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3Qg
bWVjaGFuaXNtLiBJbiBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0
aGUgR1BVIFByb2Nlc3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQor
ICAgICAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNS
ZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2lu
ZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2lu
ZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1l
YXN1cmFibGUKKyAgICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3
ZSBjYW4uCisgICAgICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVj
b3JkZXIgb3ZlcmhlYWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAg
ICAgICAgZ2x5cGggYnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNw
bGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0
cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dz
OgorICAgICAgICAKKyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8g
ZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAg
ICBpbWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBo
YXBwZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBp
bmRpY2F0aW5nIHRoaXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8
Ym9vbD4gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVk
CisgICAgICAgICAgb24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4
dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uKCkKKyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGds
eXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAg
ICAgICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KKyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVj
b21wb3NpdGlvbiwgd2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEK
KyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2gg
dHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFp
bnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRz
IHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBh
IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRp
c3BsYXkgbGlzdAorICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERp
c3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywg
d2hpY2ggaXMgYSBwcm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5
IGFyZSd0IG5lY2Vzc2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVz
UmVzb3VyY2VJZGVudGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdh
dGUgaW50byBhbGwgdGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5n
IHRoZW0gdG8KKyAgICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Li4uKSB0byBkdW1wSXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdH
bHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2Ug
cmVmZXJzIHRvIHVudXNlZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYWNkMDg2ZjIyYTJjMjE3ODlmYmI1OTk4MzFhOWNhM2UwYzI3OTZjYy4uNDllMTY4ZmM0
NGExNGYxM2ZhYWNiMjE3NzZlNGFiMTMyYzViMWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM4MSwxMCArMzgxLDExIEBAIEZsb2F0U2l6ZSBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QKICAgICBy
ZXR1cm4gc2l6ZTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUp
CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9u
dFNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7Ci0gICAgbV9wcmltYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX3NlY29u
ZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgYXV0byBkaWREZWNvbXBvc2UgPSBtX3By
aW1hcnlDb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAg
ICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pOworICAgIHJldHVybiBkaWREZWNvbXBvc2U7CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGEzZjBkMTk4NmZmMWUzNThkNzYxNGM4MGM0MmUz
NjdkZDM3ZjAyMDcuLmZjNDI3YTQwOGVjZTlmYjk1MTExOTBkODgzMTQ2MDI3MzExM2UwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7CisgICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDY4NmVmY2Uz
YmE4MWIyNzdiMWRiNjQ1MzYwNDdlYmRjNGI5ZWQ0ZWIuLjE2YjgxZDliMTc3NzI1NTgyMWRkMjY0
NTBlMGJkNmNkNTU0NGQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0
IHNjYWxlRmFjdG9yID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21D
b250ZXh0OjpObyk7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4p
CiAgICAgdm9pZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENU
TGluZVJlZiwgQ0dSZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWdu
ZWQgbV9vdXRwdXRHbHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAz
ZjAxODFkOWU0ODQ2ZmFmZTcxMTIxMDY1NzE2NTZiYWM2ZS4uMzZjN2VlMGY1ZGJmNGYzODU0Zjlk
NzM1MzU4NWE2MGY2ZjViZmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMjksOSArMTI5LDEwIEBAIEZsb2F0
U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK0dy
YXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKCp0
aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3Ro
aW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGY0YzdhODdlYzFkYjM0OGNiMzU0ZDllNDM1MmJjZTYyN2M2MTZkN2UuLjU1YjBm
Mzk4M2E5YmExZmZlNTE3NjQ3MjkxZTdiMTExODQyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yODMsNyArMjgz
LDYgQEAgcHVibGljOgogICAgIC8vIFRleHQKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
RmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKQEAg
LTI5Miw2ICsyOTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIGRyYXdHbHlwaHMoZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogICAgIH0K
IAorICAgIGVudW0gY2xhc3MgRGlkRGVjb21wb3NlR2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24gPSB7
IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3Vu
ZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZs
b2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJv
b2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGNiZmU3NWQ2MzJkYjk4MDA1ZGIyMTQ4NzBhNzM0M2JhYmM4OTBiYjMu
LjM1YTZkOTFjNTE3NjNkODE0YjRmYzE0NDU0NGIxMjliMmZiYTM0ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7
IHJldHVybiB7IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBj
b25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERl
Y29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1
cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2Fk
ZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZv
bnROb3RSZWFkeSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
MjYyZjBkNjAyYjgwZGMzNzdjNDA5ZjQ0NmRiYjQ4OGRhYzMxMjI0NC4uMzhhMzAyZTgzNjU3YzBj
YjI0OGUwMmMxNTk3OGU4NWRhZjc4M2E3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtNDA4LDEwICs0MDgsMTAgQEAgUmVuZGVyaW5nTW9kZSBHcmFwaGljc0NvbnRleHRDYWly
bzo6cmVuZGVyaW5nTW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6aXNBY2Nl
bGVyYXRlZENvbnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBH
cmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERl
Y29tcG9zaXRpb24pCiB7CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsKIAog
ICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKICAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4g
Y2Fpcm9HbHlwaHMobnVtR2x5cGhzKTsKQEAgLTQzNSw2ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2Fs
ZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKICAgICAg
ICAgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0
ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAg
IGZvbnRTbW9vdGhpbmcpOworCisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIGNhaXJvX3QqIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uaAppbmRleCA3MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFk
NWU5Li40NjkwOGNlNWFhOGI5YjYwZDM3MDI1Y2I3ODgwY2IwMzY5YTYzZWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ry
b2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxv
YXRSZWN0JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7Cisg
ICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxi
b29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcAppbmRleCAyNmE3NTE1ZjljZWE5OGE5OTQ1ZTU4ZTVhZDc0MmQ0MTM0
ZDI1NzAzLi45MTY4MzMxMTc3NmNmYmJiYjgxZTc4NzVhNTU0ODA0YTg0ZTMxYTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMDQsNiArMzA0
LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJp
bmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB9CiAKICAgICBtX293bmVyLmRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRp
b25zKHBvc2l0aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGluaXRpYWxQ
ZW5Qb3NpdGlvbiwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX291dHB1dEdseXBoQ291bnQgKz0g
Y291bnQ7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAt
MzIzLDYgKzMyNCw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2Uo
Q0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAKICAgICBhdXRvIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKICAgICBtX293bmVyLmRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIEZsb2F0UmVjdChyZWN0KSwgRmxvYXRSZWN0IHt7
IH0sIGltYWdlLT5zaXplKCl9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7IEltYWdlT3JpZW50YXRp
b246Ok9yaWdpblRvcExlZnQgfSk7CisgICAgbV9kaWREcmF3SW1hZ2UgPSB0cnVlOwogCiAgICAg
Ly8gVW5kbyB0aGUgYWJvdmUgeS1mbGlwIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuCiAgICAgbV9v
d25lci5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKQEAgLTM0Myw2ICszNDUsNyBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVzdGluYXRpb25SZWN0Lm1v
dmVCeShwZW5Qb3NpdGlvbik7CiAgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX2RpZERyYXdJbWFn
ZSA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBwZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2
YW5jZXNbaV0pKTsKQEAgLTM5NSw5ICszOTgsMTcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhjb25zdCBGb250JiBmb24K
ICAgICBkcmF3KCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3Jh
cGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBj
b25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdN
b2RlKQogeworICAgIG1fb3V0cHV0R2x5cGhDb3VudCA9IDA7CisgICAgbV9kaWREcmF3SW1hZ2Ug
PSBmYWxzZTsKKwogICAgIGRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01v
ZGUpOworICAgIAorICAgIGlmIChtX2RpZERyYXdJbWFnZSB8fCBtX291dHB1dEdseXBoQ291bnQg
IT0gbnVtR2x5cGhzKQorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBv
c2VHbHlwaHM6OlllczsKKworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9z
ZUdseXBoczo6Tm87CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3TmF0aXZlVGV4
dChDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmIGxpbmUsIENHUmVj
dCBsaW5lUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDMyYzljNTEyYzdiN2U5
OGE3MTc1ZDM3NzYwNTYzNjhhZjlhNTA5MDcuLmE1NDM2YzYyNTY4NTRkZTQ2MWFiYWI3Njg1ZmVh
MzNmNjhhNjcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMTEwLDE2ICsxMTAs
MjAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKE9wdGlvblNldDxBc1Rl
eHRGbGFnPiBmbGFncywgSXRlbUhhbmRsZSBpdGUKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0
KE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0
cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3Jt
YXR0aW5nOjpTVkdTdHlsZVJlY3QpOworI2lmICFMT0dfRElTQUJMRUQKICAgICBmb3IgKGF1dG8g
ZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBp
dGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBpZiAo
IXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7Ci0gICAgICAg
IHN0cmVhbSA8PCBpdGVtOworICAgICAgICBkdW1wSXRlbUhhbmRsZShzdHJlYW0sIGl0ZW0sIGZs
YWdzKTsKICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAgICAgICAgICAgc3Ry
ZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGZsYWdzKTsKKyNlbmRpZgogICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwogfQogCkBA
IC0xMjgsMTMgKzEzMiwxNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJlYW0mIHRz
KSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgIHRzIDw8
ICJkaXNwbGF5IGxpc3QiOwogCisjaWYgIUxPR19ESVNBQkxFRAogICAgIGZvciAoYXV0byBkaXNw
bGF5TGlzdEl0ZW0gOiAqdGhpcykgewogICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1T
aXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRTdHJl
YW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwotICAgICAgICB0cyA8PCBpdGVtOworICAgICAgICBk
dW1wSXRlbUhhbmRsZSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOwogICAg
ICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVu
dCAiIDw8IGV4dGVudDsKICAgICB9CisjZW5kaWYKKwogICAgIHRzLnN0YXJ0R3JvdXAoKTsKICAg
ICB0cyA8PCAic2l6ZSBpbiBieXRlczogIiA8PCBzaXplSW5CeXRlcygpOwogICAgIHRzLmVuZEdy
b3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDcwYmZjNDQ5OGY2NTAwMzc0Y2EzM2Uz
YTZiNTA4OGFmNjZkNGJiNTIuLjkzNzIyMDFlYmExN2YwNDU0M2NmZjgwNmYwNDkyZTg1ZmQwZjVi
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC00NiwxMiArNDYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0gY2xhc3MgQXNUZXh0
RmxhZyA6IHVpbnQ4X3QgewotICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAgPSAx
IDw8IDAsCi0gICAgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9IDEgPDwgMSwKLSAg
ICBEZWNvbXBvc2VzRHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAotfTsKLQogY2xhc3Mg
RGlzcGxheUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVySW1wbDsKQEAg
LTkzLDYgKzg3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29t
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbihib29sIHZhbHVlKSB7IG1fY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9z
aXRpb24gPSB2YWx1ZTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAKQEAgLTEyOSw2ICsxMjYs
NyBAQCBwcml2YXRlOgogICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbjsKICAgICBi
b29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI0NjQxYTEzNDQ3ZjFiNDQ3ODhhMGJh
ZWE2NmYyZTgzMDVhNGE1OS4uOGNhMjNmYTZhMDYwMzcyODIyMmIzZGQyNWMwZDIyMWFhOGJkYjJk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0yOCw2ICsyOCwx
MiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51
bSBjbGFzcyBBc1RleHRGbGFnIDogdWludDhfdCB7CisgICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJh
dGlvbnMgICAgICA9IDEgPDwgMCwKKyAgICBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgICAg
ID0gMSA8PCAxLAorICAgIERlY29tcG9zZXNEcmF3R2x5cGhzICAgICAgICAgICAgPSAxIDw8IDIs
Cit9OworCiBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBS
ZXN0b3JlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDM1YTdiNGVh
MWMyNDA3NzEyZTUyOTM2NWZiOWZmNWQ3NzA2MWMwNWIuLjE2ZTE3YTAxNjczMWIxYjZhODlkNmRi
MjQyOGQzMGY3NjQ3MTIwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTIwMCw5ICsyMDAsOSBAQCBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgRwogICAgIGNvbXB1dGVC
b3VuZHMoZm9udCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAorR3JhcGhpY3NDb250ZXh0OjpEaWRE
ZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250JiBmb250LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBv
c2l0aW9uKSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5k
YXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCks
IG1fc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBt
X2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hv
clBvaW50KCksIG1fc21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRpb24pOwogfQog
CiB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKQEAgLTY4
OCwxODQgKzY4OCwxNjMgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIngiLCBpdGVtLngoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ5IiwgaXRlbS55KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmdsZSIsIGl0ZW0uYW5n
bGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY2FsZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNjYWxlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBp
dGVtLnRyYW5zZm9ybSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ29uY2F0ZW5hdGVDVE0mIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImN0bSIsIGl0ZW0udHJh
bnNmb3JtKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0
ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IGl0ZW0uY29sb3IoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIHN0YXRlLmNvbG9y
KCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5j
b2xvcigpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgc3RhdGUudGhpY2tuZXNzKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0u
dGhpY2tuZXNzKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldFN0YXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMgPDwg
aXRlbS5zdGF0ZSgpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgbGluZUNhcCkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwgbGluZUNhcC5saW5l
Q2FwKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwg
aXRlbS5saW5lQ2FwKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgbGluZURhc2gpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVEYXNoLmRhc2hBcnJheSgp
KTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGluZURhc2guZGFzaE9mZnNl
dCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLWFycmF5Iiwg
aXRlbS5kYXNoQXJyYXkoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGl0
ZW0uZGFzaE9mZnNldCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikK
IHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGxpbmVKb2luLmxpbmVKb2luKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGl0ZW0u
bGluZUpvaW4oKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRNaXRlckxpbWl0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQubWl0ZXJM
aW1pdCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1p
dCIsIGl0ZW0ubWl0ZXJMaW1pdCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQ2xpcCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXAmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dCYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZl
ci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFm
bGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5p
bWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3Qi
LCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0p
Cit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIGl0ZW0ud2luZFJ1bGUoKSk7Ci0gICAgcmV0dXJuIHRz
OwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmll
ciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFp
bnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJ
ZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBp
dGVtLnNvdXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0
cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJhbmNob3ItcG9pbnQiLCBpdGVtLmFuY2hvclBvaW50KCkpOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgibGVuZ3RoIiwgaXRlbS5nbHlwaHMoKS5zaXplKCkpOwogCi0gICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFn
cykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRl
bS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1Rl
eHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBp
dGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFzVGV4dEZs
YWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1N5c3RlbUltYWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd1N5c3RlbUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8g
RklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9u
IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFn
ZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5j
b250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmll
cigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwgaXRlbS5wYXR0
ZXJuVHJhbnNmb3JtKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0IiwgaXRlbS50
aWxlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdFJl
Y3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhhc2UoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1JlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVj
dCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJvcmRlci10aGlja25l
c3MiLCBpdGVtLmJvcmRlclRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmUmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTEiLCBpdGVt
LnBvaW50MSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBpdGVtLnBvaW50Migp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxv
Y2tMb2NhdGlvbigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0u
bG9jYWxBbmNob3IoKSk7CkBAIC04NzUsMzgwICs4NTQsMzUwIEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBpdGVtLndpZHRocygpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5pc1ByaW50aW5nKCkpOwogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0VsbGlwc2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3RWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBh
dGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgib2Zmc2V0IiwgaXRlbS5vZmZzZXQoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVj
dHMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHko
InJlY3RzIiwgaXRlbS5yZWN0cygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRl
bS53aWR0aCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RmlsbFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3Im
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4KICAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQ29tcG9z
aXRlZFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
Q29tcG9zaXRlZFJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJj
b2xvciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb21wb3NpdGUtb3Bl
cmF0aW9uIiwgaXRlbS5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
ImJsZW5kLW1vZGUiLCBpdGVtLmJsZW5kTW9kZSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVkUmVj
dCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVk
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xv
ciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRl
bS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicm91bmRlZC1ob2xl
LXJlY3QiLCBpdGVtLnJvdW5kZWRIb2xlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNv
bG9yIiwgaXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmlsbExpbmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxBcmMmIGl0ZW0pCit2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFn
PikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0
dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VB
cmMmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VBcmMm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBh
dGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVt
LnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
UGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxQYXRo
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJw
YXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRp
YSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0czsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9r
ZVBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQ
YXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVt
LnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0KCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBp
dGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVyJiBpdGVtKQordm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgib3Bh
Y2l0eSIsIGl0ZW0ub3BhY2l0eSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Im
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNj
YWxlRmFjdG9yJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRs
ZSBpdGVtKQordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbUhh
bmRsZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewogICAgIHRzIDw8IGl0
ZW0udHlwZSgpOwogCiAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5
cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8VHJhbnNsYXRlPigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8Um90YXRlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Um90YXRlPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFNjYWxlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNl
dENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0Q1RNPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8U2V0Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25j
YXRlbmF0ZUNUTT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENvbmNhdGVuYXRl
Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9y
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0
cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRo
aWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PFNldFN0YXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFNldExpbmVEYXNoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVKb2luPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxTZXRNaXRlckxpbWl0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXA+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXBPdXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwT3V0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVy
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxDbGlwT3V0VG9QYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBQYXRoPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxEcmF3R2x5cGhzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0lt
YWdlQnVmZmVyPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd0ltYWdlQnVm
ZmVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3UGF0dGVybj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXR0
ZXJuPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdS
ZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGlu
ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdMaW5lPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7CisgICAgICAg
IGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXRoPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOworICAgICAgICBkdW1wSXRlbSh0cywg
aXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxs
UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9y
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8RmlsbFJvdW5kZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxMaW5l
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PEZpbGxMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxBcmM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxBcmM+KCk7
CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsQXJjPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxRdWFkQ3VydmU6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxGaWxsUXVhZEN1cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxCZXppZXJDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEJl
emllckN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEJlemllckN1
cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEVs
bGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
UGFpbnRGcmFtZUZvck1lZGlhPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ry
b2tlUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYg
RU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlQXJjOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VBcmM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxTdHJva2VBcmM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJv
a2VRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VRdWFk
Q3VydmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlQmV6aWVyQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUJlemllckN1cnZl
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlQmV6aWVyQ3VydmU+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTdHJva2VFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ry
b2tlRWxsaXBzZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOworICAgICAgICBkdW1w
SXRlbSh0cywgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKSwgZmxhZ3Mp
OwogICAgICAgICBicmVhazsKLQogICAgIC8vIEl0ZW1zIHdpdGggbm8gYWRkaXRpb25hbCBkYXRh
LgogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToK
QEAgLTEyNjAsNyArMTIwOSw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiB0czsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBkMTQ0MDc3M2FlZDNhZjg2NmY0OWUyNzY5MWQ1
ZmM3OTk5ZmYxNjc3Li4wMDU0ODQ2MTM0ODIxMGI4YzUxMmM2MWUxZWY4YTA2ZTAwMjEzYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0
IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCitlbnVt
IGNsYXNzIEFzVGV4dEZsYWcgOiB1aW50OF90Owogc3RydWN0IEl0ZW1IYW5kbGU7CiAKIC8qIGlz
SW5saW5lSXRlbSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IG5lZWRzIHRvIGJlIHBhc3Nl
ZCB0aHJvdWdoIElQQzo6RW5jb2RlciBpbiBvcmRlciB0byBzZXJpYWxpemUsCkBAIC01OTIsNyAr
NTkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEdseXBo
QnVmZmVyQWR2YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50
JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlw
aERlY29tcG9zaXRpb24pIGNvbnN0OwogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQpAQCAtMjA1MSw2NyArMjA1Miw4MCBAQCBzaXplX3QgcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogSXRl
bVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogI2lm
ICFMT0dfRElTQUJMRUQKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFRyYW5zbGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY2FsZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0Q1RN
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBDb25jYXRlbmF0ZUNUTSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVT
dHJva2VDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGlu
ZUNhcCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgU2V0TGluZURhc2gmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0Jik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBDbGlwJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBDbGlwT3V0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dFRvUGF0
aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgQ2xpcFBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3R2x5cGhz
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1N5c3RlbUlt
YWdlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3UGF0dGVybiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1JlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGlu
ZXNGb3JUZXh0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJik7Ci1XRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RWxsaXBzZSYp
OwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd1BhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGll
bnQmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0Jik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgVHJhbnNsYXRlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0ZSYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBTY2FsZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRDVE0mLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
Q29uY2F0ZW5hdGVDVE0mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0
cm9rZVRoaWNrbmVzcyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBTZXRMaW5lQ2FwJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVEYXNoJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFNldExpbmVKb2luJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldE1pdGVyTGltaXQmLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgQ2xpcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0JiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IENsaXBUb0ltYWdlQnVmZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRUb1BhdGgmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgQ2xpcFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9F
WFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
SW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdlJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0dGVybiYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3UmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2UmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZp
bGxSZWN0V2l0aEdyYWRpZW50JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYs
IE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgRmlsbExpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxBcmMmKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxCZXppZXJDdXJ2ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQXJjJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUJlemllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBGaWxsTGluZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQXJjJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEJlemllckN1cnZl
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUFyYyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFk
Q3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFBhdGgm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxFbGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBGaWxsUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsRWxsaXBzZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CiAjaWYgRU5BQkxFKFZJREVPKQotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlh
Jik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBQYWlu
dEZyYW1lRm9yTWVkaWEmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJM
RShWSURFTykKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IFN0cm9rZVJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUVsbGlwc2UmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUxpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
QXBwbHlEZXZpY2VTY2FsZUZhY3RvciYpOwotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBJdGVtSGFuZGxlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUGF0aCYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBTdHJva2VFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUm
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShU
ZXh0U3RyZWFtJiwgY29uc3QgQ2xlYXJSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVCYgaXRlbSkKK3sKKyAgICBkdW1w
SXRlbSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucywg
QXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOworICAgIHJldHVybiB0
czsKK30KKwordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiwgY29uc3QgSXRlbUhhbmRs
ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CisKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlKQoreworICAg
IGR1bXBJdGVtSGFuZGxlKHRzLCBpdGVtSGFuZGxlLCB7IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxh
dGZvcm1PcGVyYXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMg
fSk7CisgICAgcmV0dXJuIHRzOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMDc0YmY2
MDkzZWQzNzhlMTgxMWZmOGZjNmNhNWQwNTdiNzdlOTk5Ny4uNzY1OGY4MzQyZGVmNmNlMmU0MTAz
MzgxMzMzMDM4NjRkOGYyMWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTYxLDE3ICsxNjEsMjAgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAg
ICByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VS
ZWN0LCBmaWx0ZXIpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBz
dGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0
YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pCiB7Ci0gICAgaWYgKG1fZGVjb25zdHJ1Y3RE
cmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKSB7CisgICAgaWYgKG1fZGVj
b25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKQorICAgICAg
ICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiUmVjb3JkZXI6OmRyYXdHbHlwaHMg
LSBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiAiIDw8IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsK
KworICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlw
aHM6OlllcyAmJiAoIW5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uIHx8ICpuZWVkc0dseXBoRGVjb21w
b3NpdGlvbikpIHsKICAgICAgICAgaWYgKCFtX2RyYXdHbHlwaHNSZWNvcmRlcikKICAgICAgICAg
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyID0gbWFrZVVuaXF1ZTxEcmF3R2x5cGhzUmVjb3JkZXI+
KCp0aGlzLCBtX2luaXRpYWxTY2FsZSk7CiAKLSAgICAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIt
PmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbV9kcmF3
R2x5cGhzUmVjb3JkZXItPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICB9CiAKICAgICBkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2Fs
QW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjAwNDgzMzZhN2Y4MDkzODJlZGQwZDAyNzQ1NWQ4
MmY0OGZiZjgzNy4uNjIzNDQ4ZGExNDY3YjgwYjE1N2ExNzY3YTZmZjkzYzE4Y2M1NzNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMTIsNyArMjEyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdl
UmVjdCwgRmlsdGVyJiwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCA5N2UxMWNiODYwZDkxOTAwMzllZTdlYWFkN2MzOGRmMTQyOWViZjlkLi43
OWRhZWE3NTc2MjM5YWIwNTIxYTA4N2Y1MTVmNmNhNjNlMjgzYjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xMDcsNTUgKzEwNyw1NyBAQCBpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNl
dFN0YXRlSXRlbShHcmFwaAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5RHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVz
b3VyY2VIZWFwLCBEcmF3R2x5cGhzJiBkcmF3R2x5cGhzSXRlbSkKK2lubGluZSBzdGF0aWMgc3Rk
OjpwYWlyPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgR3JhcGhp
Y3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGFwcGx5RHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBEcmF3R2x5
cGhzJiBkcmF3R2x5cGhzSXRlbSwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21w
b3NpdGlvbikKIHsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGRyYXdHbHlwaHNJdGVt
LmZvbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSByZXNvdXJjZUhlYXAuZ2V0
Rm9udChyZXNvdXJjZUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGRyYXdHbHlwaHNJdGVtLmFwcGx5
KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
YXV0byBkaWREZWNvbXBvc2UgPSBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250ZXh0LCAqZm9udCwg
bmVlZHNHbHlwaERlY29tcG9zaXRpb24pOworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IGRpZERlY29tcG9zZSB9OwogICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgIHJldHVybiB7IHJlc291cmNlSWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNv
bXBvc2VHbHlwaHM6Ok5vIH07CiB9CiAKLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJl
cGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorYXV0byBSZXBsYXllcjo6YXBwbHlJ
dGVtKEl0ZW1IYW5kbGUgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgc3dpdGNoIChp
dGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgogICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFn
ZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAs
IGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlEcmF3R2x5cGhzKG1fY29udGV4dCwgbV9yZXNvdXJj
ZUhlYXAsIGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpKQotICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9OworCisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczogeworICAgICAgICBhdXRvIGRyYXdHbHlwaHNSZXN1bHQgPSBhcHBseURyYXdH
bHlwaHMobV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKSwg
bV9kaXNwbGF5TGlzdC5jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpKTsK
KyAgICAgICAgaWYgKGRyYXdHbHlwaHNSZXN1bHQuZmlyc3QpCisgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUoZHJhd0ds
eXBoc1Jlc3VsdC5maXJzdCksIHsgfSB9OworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSwgZHJh
d0dseXBoc1Jlc3VsdC5zZWNvbmQgfTsKKyAgICB9CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2Fj
aGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsg
fSB9OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQsIG1fcmVz
b3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgog
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlT
b3VyY2VJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1v
dmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9OworICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShtX2Nv
bnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlz
c2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IH07CiB9CiAKIFJl
cGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3LDEyICsxODksMTYgQEAgUmVwbGF5UmVzdWx0
IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFj
a1JlcGxheUxpc3QKIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJl
YW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAo
YXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJd
ID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewotICAgICAgICAgICAgcmVz
dWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwotICAgICAgICAgICAg
cmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGFwcGx5UmVzdWx0ID0gYXBw
bHlJdGVtKGl0ZW0pOworICAgICAgICBpZiAoYXBwbHlSZXN1bHQuc3RvcFJlYXNvbikgeworICAg
ICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKmFwcGx5UmVzdWx0LnN0b3BSZWFz
b247CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IFdURk1vdmUoYXBwbHlSZXN1bHQucmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LmRpZERlY29tcG9zZUds
eXBocyAmJiAqYXBwbHlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4
dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXMpCisgICAgICAgICAgICByZXN1bHQuZGlkRGVjb21w
b3NlR2x5cGhzID0gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6OlllczsKKwog
ICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAog
ICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMjU4NGE1MzlmYzA1MzA4YzYyNDJhMTFmYzE3NjVl
ZGJhOGIwZDlmNi4uNGUzNTA0ZmI1MGUyMjg3ZGQ2NWI0NjI1NzFhNTMzNWFkMjk5OTJmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzIsNyArMzMsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlcGxh
eVJlc3VsdCB7CiAgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uRm9yU3RvcHBpbmcgeyBT
dG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zIH07CisgICAgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gZGlkRGVjb21wb3NlR2x5cGhzOwog
fTsKIAogY2xhc3MgUmVwbGF5ZXIgewpAQCAtNjEsNyArNjIsMTIgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwor
ICAgIHN0cnVjdCBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+IHN0b3BSZWFzb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRpZERlY29tcG9zZUds
eXBoczsKKyAgICB9OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgbV9kaXNwbGF5TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcAppbmRleCBjMzI4YjhmYjY2N2ViYWFhY2VmYzJkZWQ1MGY5ODg0NzIwMDBhZjhkLi5l
NGE0YTI1NzAxODJjZWM1MzZiZDEyMmNiNzMxZjFlMDI0ODcyYTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJI
YXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCkBAIC0zOCw5ICszOCwxMCBAQCBEcmF3
R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVy
LCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2Rl
KTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOyAg
ICAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCBlN2U2ZTZhMjczMzhl
NGY3OTkxN2RlNjYzZTY3Y2JjZTY2MjgzMGUwLi4xOGUwZmZjMjU0ODBjOGQwNWU2MDhlMjZkZDg2
MWU5YTk0NGY2ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxDbGVhclJlY3Q+KHJlY3QpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBmb250U21vb3RoaW5nKQogewogICAgIHN0cnVjdCBEcmF3R2x5cGhzIGZpbmFs
IDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8Q2Fpcm86OkZpbGxTb3VyY2UsIENh
aXJvOjpTdHJva2VTb3VyY2UsIENhaXJvOjpTaGFkb3dTdGF0ZSwgRmxvYXRQb2ludCwgUmVmUHRy
PGNhaXJvX3NjYWxlZF9mb250X3Q+LCBmbG9hdCwgVmVjdG9yPGNhaXJvX2dseXBoX3Q+LCBmbG9h
dCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBGbG9hdFNpemUsIENvbG9yLCBGb250U21v
b3RoaW5nTW9kZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3R2x5cGhzKCkgPSBkZWZhdWx0OwpA
QCAtNTM4LDYgKzUzOCw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoCiAgICAgICAgIFJlZlB0
cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSks
CiAgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhz
KSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksCiAgICAgICAgIHN0YXRlLnN0cm9r
ZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93
KCkuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKKworICAgIHJldHVybiBEaWREZWNvbXBvc2VHbHlw
aHM6Ok5vOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CmluZGV4IGQ2NTI3YzQ3ZDYxOTY3ODVkY2IxYjM4ZDgzZmVjNjQyMWQxMzY2YTQuLjQ4NTQ5ZDEx
NDAyNThhYzJhN2IxNDFjNjliNjFhOWUzOGZiMmFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYs
IGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgRGlkRGVjb21w
b3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6
OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpG
b250U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBX
ZWJDb3JlOjpGaWx0ZXImLCBXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzJikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3
R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmluZGV4IGFkNGJhMWQ2NDE3ZTcxODZjYzFlYWE1YjEzNWFl
NWUxYTQ0NTc3YjYuLmE5OGZhODJmN2ZjYzI0NDQwMTJjMmZkODVkZDc1NTM2YzQwNjgyMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhz
UmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0zOCw5ICszOCwxMCBAQCBEcmF3R2x5cGhz
UmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBmbG9h
dCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
K0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlwaHNSZWNvcmRlcjo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlw
aHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3Ro
aW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5
cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290aGluZ01vZGUpOwor
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6Tm87ICAgIAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcAppbmRleCA0ZjMzNDJmYTM5MTAxNzQ2NGYzNDRiNTQ5M2YzMjRjNGE4MjllYzdh
Li44Mjc0YzkzODkwOGMyNTk3MDk4OGJjNGU2NWE5ZWNkYzgwNDc4MjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgogCisjaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAj
aW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgpAQCAtMTIzLDcgKzEyNCwxMSBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhh
c2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdQogICAgICAgICAv
LyBSZXBsYXlpbmcgYmFjayBhIHdob2xlIGNhY2hlZCBnbHlwaCBydW4gdG8gdGhlIEdyYXBoaWNz
Q29udGV4dC4KICAgICAgICAgbV9jb250ZXh0LnRyYW5zbGF0ZSh0ZXh0T3JpZ2luKTsKICAgICAg
ICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKG1fY29udGV4dCwgKm1fZ2x5cGhEaXNw
bGF5TGlzdCk7Ci0gICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICBhdXRvIHJlcGxh
eVJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlcGxh
eVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMpCisgICAgICAgICAgICBtX2dseXBoRGlzcGxheUxp
c3QtPnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCpyZXBsYXlSZXN1
bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5
cGhzOjpZZXMpOworCiAgICAgICAgIG1fY29udGV4dC50cmFuc2xhdGUoLXRleHRPcmlnaW4pOwog
ICAgIH0KICAgICBtX2dseXBoRGlzcGxheUxpc3QgPSBudWxscHRyOwpAQCAtMjU1LDkgKzI2MCwx
OCBAQCBTdHJpbmcgVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5v
ZGVBc1RleHQoVGV4dCYgdGV4dE5vZGUsIE9wdAogICAgICAgICAgICAgZGlzcGxheUxpc3QgPSBU
ZXh0UGFpbnRlcjo6Z2x5cGhEaXNwbGF5TGlzdElmRXhpc3RzKCp0ZXh0Qm94LmlubGluZUJveCgp
KTsKICNlbmRpZgogICAgICAgICBpZiAoZGlzcGxheUxpc3QpIHsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGRpc3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgaWYgKGZsYWdzICYgRGlzcGxheUxpc3Q6OkFz
VGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKSB7CisgICAgICAgICAgICAgICAgLy8gUmVw
bGF5IGRpc3BsYXlMaXN0IHRocm91Z2ggYSBjb250ZXh0IHdpdGggRGVjb25zdHJ1Y3REcmF3R2x5
cGhzOjpZZXMgc28gdGhhdCB0aGUgb3V0cHV0IGRpc3BsYXkgbGlzdCBzaG93cyB0aGUgZHJhd2lu
ZyBjb21tYW5kcyBmb3IgZGVjb21wb3NwZWQgZ2x5cGhzLgorICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gb3V0cHV0RGlzcGxh
eUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PigpOwor
ICAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwgcmVjb3JkaW5nQ29udGV4
dCgqb3V0cHV0RGlzcGxheUxpc3QsIHsgfSwgeyB9LCB7IH0sIERpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworICAgICAgICAgICAgICAgIERpc3BsYXlM
aXN0OjpSZXBsYXllciByZXBsYXllcihyZWNvcmRpbmdDb250ZXh0LCAqZGlzcGxheUxpc3QpOwor
ICAgICAgICAgICAgICAgIGF1dG8gcmVwbGF5UmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7Cisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQob3V0cHV0RGlzcGxheUxpc3QtPmFzVGV4dChm
bGFncykpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoZGlzcGxheUxpc3QtPmFzVGV4dChmbGFncykpOwogICAgICAgICB9CisKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkODFhNWMyYTNmN2ZkYzhl
YzNiMWYyZWEzZDk0MThhMDA2OGM3YjIxLi5lZTVjZmM4NmExNDNmZTA4ZDVjNTk1MzI5OTYxNGIz
MWVlMDM5ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zMTc1LDYg
KzMxNzUsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6ZGlzcGxheUxpc3RGb3JF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVuc2lnbmVkCiAgICAgaWYgKGZsYWdzICYgRElTUExB
WV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0
RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0
aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dM
WVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZs
YWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigp
LT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vy
cm9yIH07CiAKQEAgLTMyMDAsNiArMzIwMyw5IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJu
YWxzOjpyZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgdW5zCiAg
ICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMp
CiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJ
bmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJ
U1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQo
RGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIGlm
ICghZWxlbWVudC5yZW5kZXJlcigpLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKQEAgLTMyMzMsNiArMzIzOSw5IEBAIEV4Y2Vw
dGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHRO
b2RlKE5vZGUmIG5vZGUsIHVuCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVT
X1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3Bs
YXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAgICBp
ZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykKKyAgICAgICAg
ZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNE
cmF3R2x5cGhzKTsKKwogICAgIHJldHVybiBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5
TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dChkb3duY2FzdDxUZXh0Pihub2RlKSwgZGlzcGxheUxpc3RG
bGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI0Y2FkZGQyMjQ0
MjMzNjZlYmY1YzllYzJmNjNlYzdmNTMwZTkwN2IuLjhmMzZlYzdlNGUyMTU4NjdiNmFmNmNhZTg0
N2E1MThhNDA1ZDRkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDc0LDYg
KzQ3NCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgLy8gVmFsdWVzIG5lZWQgdG8g
YmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAgICAgICAgRElTUExBWV9MSVNU
X0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxLAorICAgICAgICBESVNQTEFZX0xJU1Rf
REVDT01QT1NFU19EUkFXX0dMWVBIUyA9IDIKICAgICB9OwogICAgIEV4Y2VwdGlvbk9yPFN0cmlu
Zz4gZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmLCB1bnNpZ25lZCBzaG9ydCBmbGFncyk7
CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiByZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxl
bWVudCYsIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCA1NmZmNTAzYWJlMmQxZjA2ZGE1NjMwNjMzN2MwYjBkYjg2NGQ4YmRkLi4xYTNl
ZGNjNGNlZDFkZjM5NmI1NGE5N2I1MTdjY2Y0NTJhMWY0MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC02MDAsNiArNjAwLDcgQEAgdHlwZWRlZiAoRmV0Y2hSZXF1ZXN0
IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogCiAgICAgLy8gRmxhZ3MgZm9yIGRpc3Bs
YXlMaXN0Rm9yRWxlbWVudC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1Rf
SU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUyA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgPSAyOwogICAgIC8vIFJldHVy
bnMgdGhlIHJlY29yZGVkIGRpc3BsYXkgbGlzdC4KICAgICBET01TdHJpbmcgZGlzcGxheUxpc3RG
b3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgZmxhZ3Mg
PSAwKTsKICAgICAvLyBSZXR1cm5zIHRoZSBkaXNwbGF5IGxpc3QgdGhhdCB3YXMgYWN0dWFsbHkg
cGFpbnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA3YTA3MzJlMjkyZWVj
ZWY1NjMwODAzZjUwZDY4ODc5ZTQwYmQ1NDc4Li43YWJiMDcyZmMzOGE2MzdkNjdlOTU2MGMzYzY5
OTVmNDlmMmRlY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yNTMsNyAr
MjUzLDcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3R2x5cGhzV2l0aFF1
YWxpZmllZElkZW50aWZpZXIoRGlzcGxheUxpc3Q6OkQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQpOworICAgIGhhbmRsZUl0ZW0o
V1RGTW92ZShpdGVtKSwgKmZvbnQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB9KTsKIH0KIAogdm9p
ZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvblJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM0NzI2Yzc2NTZjMGNjM2UxMzU0MTE4YWVk
NGRkODY5NWRiYzQ0OS4uYjgxMjYzY2JkZjYyZjU5ZWEyMDgzNzdmYzQxMWNiZjkwN2NhZmM3ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA1LTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHRoZSBvdmVyaGVhZCBvZiBEcmF3R2x5
cGhzUmVjb3JkZXIgd2hlbiBkcmF3aW5nIGNhY2hlZCBnbHlwaCBidWZmZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA0MjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamku
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmct
Zm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNw
bGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdr
Mi9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKIDIwMjItMDUtMTQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtSZXBhaW50XSBCb3JkZXIgaWdub3JlcyBjdXJyZW50Q29sb3IgY2hhbmdlIHdoZW4gaG92ZXJp
bmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY5MTc2YTVmYWE5Yzk5NjkwNjI0MmQxY2VjNzczMWNk
MjkzMmViYzIuLmVkNzczYWEzZjYzNzI1ODg1NmNmOTZjYzcyMTc4NjcwOGI3N2IxYzMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNTEwOCw2ICs1MTA4LDggQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9ucy5odG1sIFsg
RHUKIAogIyBEaXNwbGF5IGxpc3QgbG9nZ2luZyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBkZWJ1Zwog
WyBSZWxlYXNlIF0gZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1jb2xvci5odG1sIFsgU2tp
cCBdCitbIFJlbGVhc2UgXSBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLmh0bWwg
WyBTa2lwIF0KK1sgUmVsZWFzZSBdIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZv
bnQuaHRtbCBbIFNraXAgXQogCiAjIFBsdWdpbnMKICMgRklYTUU6IFJlbW92ZSB0aGVzZSB0ZXN0
cy4K
</data>
<flag name="commit-queue"
          id="488457"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459374</attachid>
            <date>2022-05-14 20:49:33 -0700</date>
            <delta_ts>2022-05-14 22:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514204932.patch</filename>
            <type>text/plain</type>
            <size>88476</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MmNiM2E0MzNjZTg3NTIzNTJiNjA1YWFiOWRkNDFkZDc0MzQ3MTBjLi5i
NTM2ZjhkMTg0MjZjMjU5YjljNzBjYmMwMDgxNTgwMDdhOWQzNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTQgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRl
ciB3aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVu
dGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdH
bHlwaAorICAgICAgICBpdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0
ZW1zIGZyb20gdGhlIGNhY2hlIGluCisgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVt
cGhhc2lzTWFya3MoKS4KKworICAgICAgICBJbmRlcGVuZGVudGx5LCB0ZXh0IGRyYXdpbmcgaW4g
Z2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKKyAgICAgICAgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxheSBsaXN0
IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4g
dGhlIEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUK
KyAgICAgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQorICAgICAgICBEcmF3R2x5cGhz
UmVjb3JkZXIgdG8gZGV0ZWN0IHdoZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdp
bmcgaW50byBsb3dlciBsZXZlbCBnbHlwaAorICAgICAgICBhbmQgaW1hZ2UgZHJhd2luZywgdXNp
bmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBt
ZWFzdXJhYmxlCisgICAgICAgIG92ZXJoZWFkLCBzbyB3ZSB3YW50IHRvIGF2b2lkIGl0IHdoZW4g
d2UgY2FuLgorICAgICAgICAKKyAgICAgICAgVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCisg
ICAgICAgIGdseXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlz
cGxheSBsaXN0IHRvIHNheSB3aGV0aGVyIGFueQorICAgICAgICBkcmF3R2x5cGhzKCkgY2FsbHMg
dHJpZ2dlcmVkIGdseXBoIGRlY29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93
czoKKyAgICAgICAgCisgICAgICAgICogRHJhd0dseXBoc1JlY29yZGVyIGlzIG1vZGlmaWVkIHRv
IGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0cmlnZ2VyZWQgYW55CisgICAgICAg
ICAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5nICh3aGljaCBjYW4g
aGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKKyAgICAgICAgICBhbmQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1bHQg
aW5kaWNhdGluZyB0aGlzLgorICAgICAgICAqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFs
PGJvb2w+IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5l
ZAorICAgICAgICAgIG9uIHBsYXliYWNrLgorICAgICAgICAqIFRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MoKSBjYWxscyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVj
b21wb3NpdGlvbigpCisgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBn
bHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eSkuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRl
Y29tcG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBh
CisgICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNo
IHR1cm5zIGludG8gYSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KKyAgICAgICAgVGV4dFBh
aW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25k
cyB0byB0aGlzIGJ5IHJlcGxheWluZyB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRocm91Z2gg
YSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyByZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBk
aXNwbGF5IGxpc3QKKyAgICAgICAgd2l0aCBkZWNvbXBvc2VkIGdseXBocy4KKworICAgICAgICBE
aXNwbGF5IGxpc3QgbG9nZ2luZyBjdXJyZW50bHkgZHVtcHMgcmVzb3VyY2UgaWRlbnRpZmllcnMs
IHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgCisgICAgICAgIGxheW91dCB0ZXN0IGJlY2F1c2UgdGhl
eSBhcmUndCBuZWNlc3NhcmlseSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRl
c1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFn
YXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmlu
ZyB0aGVtIHRvCisgICAgICAgIGNvbnZlcnRlZCBmcm9tIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZmxhZ3MgYXJndW1lbnQu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5o
dG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3Jk
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpjb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6ZHVtcEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJdGVtSGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlEcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIy
LTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRkZDXVtJ
bnRlZ3JhdGlvbl0gQWRkICJmaXhlZCBzaXplZC9hbGwgZGVmYXVsdCB2YWx1ZSIgZmxleCBsYXlv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZDc2NGJjYWZkYWI0OWRmZTY1ZDcyYmFjYjBlYTRjNGZlMTI2MTA3ZC4u
ZDA2ODRiZDY3NjRkMWQ1NzlhODM1Y2Y0NDUzZTRjNmRmMzQzMTgwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVy
IHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50
bHksIFRleHRQYWludGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0ds
eXBoCisgICAgICAgIGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRl
bXMgZnJvbSB0aGUgY2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcygpLgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3Qg
bWVjaGFuaXNtLiBJbiBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0
aGUgR1BVIFByb2Nlc3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQor
ICAgICAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNS
ZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2lu
ZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2lu
ZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1l
YXN1cmFibGUKKyAgICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3
ZSBjYW4uCisgICAgICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVj
b3JkZXIgb3ZlcmhlYWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAg
ICAgICAgZ2x5cGggYnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNw
bGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0
cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dz
OgorICAgICAgICAKKyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8g
ZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAg
ICBpbWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBo
YXBwZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBp
bmRpY2F0aW5nIHRoaXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8
Ym9vbD4gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVk
CisgICAgICAgICAgb24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4
dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uKCkKKyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGds
eXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAg
ICAgICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KKyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVj
b21wb3NpdGlvbiwgd2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEK
KyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2gg
dHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFp
bnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRz
IHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBh
IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRp
c3BsYXkgbGlzdAorICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERp
c3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywg
d2hpY2ggaXMgYSBwcm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5
IGFyZSd0IG5lY2Vzc2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVz
UmVzb3VyY2VJZGVudGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdh
dGUgaW50byBhbGwgdGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5n
IHRoZW0gdG8KKyAgICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Li4uKSB0byBkdW1wSXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdH
bHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2Ug
cmVmZXJzIHRvIHVudXNlZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYWNkMDg2ZjIyYTJjMjE3ODlmYmI1OTk4MzFhOWNhM2UwYzI3OTZjYy4uNDllMTY4ZmM0
NGExNGYxM2ZhYWNiMjE3NzZlNGFiMTMyYzViMWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM4MSwxMCArMzgxLDExIEBAIEZsb2F0U2l6ZSBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QKICAgICBy
ZXR1cm4gc2l6ZTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUp
CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9u
dFNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7Ci0gICAgbV9wcmltYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX3NlY29u
ZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgYXV0byBkaWREZWNvbXBvc2UgPSBtX3By
aW1hcnlDb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAg
ICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pOworICAgIHJldHVybiBkaWREZWNvbXBvc2U7CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGEzZjBkMTk4NmZmMWUzNThkNzYxNGM4MGM0MmUz
NjdkZDM3ZjAyMDcuLmZjNDI3YTQwOGVjZTlmYjk1MTExOTBkODgzMTQ2MDI3MzExM2UwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7CisgICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDY4NmVmY2Uz
YmE4MWIyNzdiMWRiNjQ1MzYwNDdlYmRjNGI5ZWQ0ZWIuLjE2YjgxZDliMTc3NzI1NTgyMWRkMjY0
NTBlMGJkNmNkNTU0NGQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0
IHNjYWxlRmFjdG9yID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21D
b250ZXh0OjpObyk7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4p
CiAgICAgdm9pZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENU
TGluZVJlZiwgQ0dSZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWdu
ZWQgbV9vdXRwdXRHbHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAz
ZjAxODFkOWU0ODQ2ZmFmZTcxMTIxMDY1NzE2NTZiYWM2ZS4uMzZjN2VlMGY1ZGJmNGYzODU0Zjlk
NzM1MzU4NWE2MGY2ZjViZmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMjksOSArMTI5LDEwIEBAIEZsb2F0
U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK0dy
YXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKCp0
aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3Ro
aW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGY0YzdhODdlYzFkYjM0OGNiMzU0ZDllNDM1MmJjZTYyN2M2MTZkN2UuLjU1YjBm
Mzk4M2E5YmExZmZlNTE3NjQ3MjkxZTdiMTExODQyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yODMsNyArMjgz
LDYgQEAgcHVibGljOgogICAgIC8vIFRleHQKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
RmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKQEAg
LTI5Miw2ICsyOTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIGRyYXdHbHlwaHMoZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogICAgIH0K
IAorICAgIGVudW0gY2xhc3MgRGlkRGVjb21wb3NlR2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24gPSB7
IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3Vu
ZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZs
b2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJv
b2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGNiZmU3NWQ2MzJkYjk4MDA1ZGIyMTQ4NzBhNzM0M2JhYmM4OTBiYjMu
LjM1YTZkOTFjNTE3NjNkODE0YjRmYzE0NDU0NGIxMjliMmZiYTM0ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7
IHJldHVybiB7IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBj
b25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERl
Y29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1
cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2Fk
ZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZv
bnROb3RSZWFkeSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
MjYyZjBkNjAyYjgwZGMzNzdjNDA5ZjQ0NmRiYjQ4OGRhYzMxMjI0NC4uMzhhMzAyZTgzNjU3YzBj
YjI0OGUwMmMxNTk3OGU4NWRhZjc4M2E3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtNDA4LDEwICs0MDgsMTAgQEAgUmVuZGVyaW5nTW9kZSBHcmFwaGljc0NvbnRleHRDYWly
bzo6cmVuZGVyaW5nTW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6aXNBY2Nl
bGVyYXRlZENvbnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBH
cmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERl
Y29tcG9zaXRpb24pCiB7CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsKIAog
ICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKICAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4g
Y2Fpcm9HbHlwaHMobnVtR2x5cGhzKTsKQEAgLTQzNSw2ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2Fs
ZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKICAgICAg
ICAgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0
ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAg
IGZvbnRTbW9vdGhpbmcpOworCisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIGNhaXJvX3QqIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uaAppbmRleCA3MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFk
NWU5Li40NjkwOGNlNWFhOGI5YjYwZDM3MDI1Y2I3ODgwY2IwMzY5YTYzZWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ry
b2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxv
YXRSZWN0JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7Cisg
ICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxi
b29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcAppbmRleCAyNmE3NTE1ZjljZWE5OGE5OTQ1ZTU4ZTVhZDc0MmQ0MTM0
ZDI1NzAzLi45MTY4MzMxMTc3NmNmYmJiYjgxZTc4NzVhNTU0ODA0YTg0ZTMxYTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMDQsNiArMzA0
LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJp
bmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB9CiAKICAgICBtX293bmVyLmRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRp
b25zKHBvc2l0aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGluaXRpYWxQ
ZW5Qb3NpdGlvbiwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX291dHB1dEdseXBoQ291bnQgKz0g
Y291bnQ7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAt
MzIzLDYgKzMyNCw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2Uo
Q0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAKICAgICBhdXRvIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKICAgICBtX293bmVyLmRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIEZsb2F0UmVjdChyZWN0KSwgRmxvYXRSZWN0IHt7
IH0sIGltYWdlLT5zaXplKCl9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7IEltYWdlT3JpZW50YXRp
b246Ok9yaWdpblRvcExlZnQgfSk7CisgICAgbV9kaWREcmF3SW1hZ2UgPSB0cnVlOwogCiAgICAg
Ly8gVW5kbyB0aGUgYWJvdmUgeS1mbGlwIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuCiAgICAgbV9v
d25lci5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKQEAgLTM0Myw2ICszNDUsNyBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVzdGluYXRpb25SZWN0Lm1v
dmVCeShwZW5Qb3NpdGlvbik7CiAgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX2RpZERyYXdJbWFn
ZSA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBwZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2
YW5jZXNbaV0pKTsKQEAgLTM5NSw5ICszOTgsMTcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhjb25zdCBGb250JiBmb24K
ICAgICBkcmF3KCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3Jh
cGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBj
b25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdN
b2RlKQogeworICAgIG1fb3V0cHV0R2x5cGhDb3VudCA9IDA7CisgICAgbV9kaWREcmF3SW1hZ2Ug
PSBmYWxzZTsKKwogICAgIGRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01v
ZGUpOworICAgIAorICAgIGlmIChtX2RpZERyYXdJbWFnZSB8fCBtX291dHB1dEdseXBoQ291bnQg
IT0gbnVtR2x5cGhzKQorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBv
c2VHbHlwaHM6OlllczsKKworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9z
ZUdseXBoczo6Tm87CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3TmF0aXZlVGV4
dChDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmIGxpbmUsIENHUmVj
dCBsaW5lUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDMyYzljNTEyYzdiN2U5
OGE3MTc1ZDM3NzYwNTYzNjhhZjlhNTA5MDcuLmE1NDM2YzYyNTY4NTRkZTQ2MWFiYWI3Njg1ZmVh
MzNmNjhhNjcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMTEwLDE2ICsxMTAs
MjAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKE9wdGlvblNldDxBc1Rl
eHRGbGFnPiBmbGFncywgSXRlbUhhbmRsZSBpdGUKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0
KE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0
cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3Jt
YXR0aW5nOjpTVkdTdHlsZVJlY3QpOworI2lmICFMT0dfRElTQUJMRUQKICAgICBmb3IgKGF1dG8g
ZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBp
dGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBpZiAo
IXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7Ci0gICAgICAg
IHN0cmVhbSA8PCBpdGVtOworICAgICAgICBkdW1wSXRlbUhhbmRsZShzdHJlYW0sIGl0ZW0sIGZs
YWdzKTsKICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAgICAgICAgICAgc3Ry
ZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGZsYWdzKTsKKyNlbmRpZgogICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwogfQogCkBA
IC0xMjgsMTMgKzEzMiwxNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJlYW0mIHRz
KSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgIHRzIDw8
ICJkaXNwbGF5IGxpc3QiOwogCisjaWYgIUxPR19ESVNBQkxFRAogICAgIGZvciAoYXV0byBkaXNw
bGF5TGlzdEl0ZW0gOiAqdGhpcykgewogICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1T
aXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRTdHJl
YW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwotICAgICAgICB0cyA8PCBpdGVtOworICAgICAgICBk
dW1wSXRlbUhhbmRsZSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOwogICAg
ICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVu
dCAiIDw8IGV4dGVudDsKICAgICB9CisjZW5kaWYKKwogICAgIHRzLnN0YXJ0R3JvdXAoKTsKICAg
ICB0cyA8PCAic2l6ZSBpbiBieXRlczogIiA8PCBzaXplSW5CeXRlcygpOwogICAgIHRzLmVuZEdy
b3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDcwYmZjNDQ5OGY2NTAwMzc0Y2EzM2Uz
YTZiNTA4OGFmNjZkNGJiNTIuLjkzNzIyMDFlYmExN2YwNDU0M2NmZjgwNmYwNDkyZTg1ZmQwZjVi
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC00NiwxMiArNDYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0gY2xhc3MgQXNUZXh0
RmxhZyA6IHVpbnQ4X3QgewotICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAgPSAx
IDw8IDAsCi0gICAgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9IDEgPDwgMSwKLSAg
ICBEZWNvbXBvc2VzRHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAotfTsKLQogY2xhc3Mg
RGlzcGxheUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVySW1wbDsKQEAg
LTkzLDYgKzg3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29t
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbihib29sIHZhbHVlKSB7IG1fY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9z
aXRpb24gPSB2YWx1ZTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAKQEAgLTEyOSw2ICsxMjYs
NyBAQCBwcml2YXRlOgogICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbjsKICAgICBi
b29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI0NjQxYTEzNDQ3ZjFiNDQ3ODhhMGJh
ZWE2NmYyZTgzMDVhNGE1OS4uOGNhMjNmYTZhMDYwMzcyODIyMmIzZGQyNWMwZDIyMWFhOGJkYjJk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0yOCw2ICsyOCwx
MiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51
bSBjbGFzcyBBc1RleHRGbGFnIDogdWludDhfdCB7CisgICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJh
dGlvbnMgICAgICA9IDEgPDwgMCwKKyAgICBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgICAg
ID0gMSA8PCAxLAorICAgIERlY29tcG9zZXNEcmF3R2x5cGhzICAgICAgICAgICAgPSAxIDw8IDIs
Cit9OworCiBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBS
ZXN0b3JlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDM1YTdiNGVh
MWMyNDA3NzEyZTUyOTM2NWZiOWZmNWQ3NzA2MWMwNWIuLjE2ZTE3YTAxNjczMWIxYjZhODlkNmRi
MjQyOGQzMGY3NjQ3MTIwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTIwMCw5ICsyMDAsOSBAQCBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgRwogICAgIGNvbXB1dGVC
b3VuZHMoZm9udCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAorR3JhcGhpY3NDb250ZXh0OjpEaWRE
ZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250JiBmb250LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBv
c2l0aW9uKSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5k
YXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCks
IG1fc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBt
X2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hv
clBvaW50KCksIG1fc21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRpb24pOwogfQog
CiB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKQEAgLTY4
OCwxODQgKzY4OCwxNjMgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIngiLCBpdGVtLngoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ5IiwgaXRlbS55KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmdsZSIsIGl0ZW0uYW5n
bGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY2FsZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNjYWxlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBp
dGVtLnRyYW5zZm9ybSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ29uY2F0ZW5hdGVDVE0mIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImN0bSIsIGl0ZW0udHJh
bnNmb3JtKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0
ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IGl0ZW0uY29sb3IoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIHN0YXRlLmNvbG9y
KCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5j
b2xvcigpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgc3RhdGUudGhpY2tuZXNzKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0u
dGhpY2tuZXNzKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldFN0YXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMgPDwg
aXRlbS5zdGF0ZSgpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgbGluZUNhcCkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwgbGluZUNhcC5saW5l
Q2FwKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwg
aXRlbS5saW5lQ2FwKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgbGluZURhc2gpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVEYXNoLmRhc2hBcnJheSgp
KTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGluZURhc2guZGFzaE9mZnNl
dCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLWFycmF5Iiwg
aXRlbS5kYXNoQXJyYXkoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGl0
ZW0uZGFzaE9mZnNldCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikK
IHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGxpbmVKb2luLmxpbmVKb2luKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGl0ZW0u
bGluZUpvaW4oKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRNaXRlckxpbWl0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQubWl0ZXJM
aW1pdCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1p
dCIsIGl0ZW0ubWl0ZXJMaW1pdCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQ2xpcCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXAmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dCYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZl
ci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFm
bGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5p
bWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3Qi
LCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0p
Cit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIGl0ZW0ud2luZFJ1bGUoKSk7Ci0gICAgcmV0dXJuIHRz
OwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmll
ciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFp
bnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJ
ZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBp
dGVtLnNvdXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0
cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJhbmNob3ItcG9pbnQiLCBpdGVtLmFuY2hvclBvaW50KCkpOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgibGVuZ3RoIiwgaXRlbS5nbHlwaHMoKS5zaXplKCkpOwogCi0gICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFn
cykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRl
bS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1Rl
eHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBp
dGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFzVGV4dEZs
YWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1N5c3RlbUltYWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd1N5c3RlbUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8g
RklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9u
IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFn
ZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5j
b250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmll
cigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwgaXRlbS5wYXR0
ZXJuVHJhbnNmb3JtKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0IiwgaXRlbS50
aWxlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdFJl
Y3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhhc2UoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1JlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVj
dCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJvcmRlci10aGlja25l
c3MiLCBpdGVtLmJvcmRlclRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmUmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTEiLCBpdGVt
LnBvaW50MSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBpdGVtLnBvaW50Migp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxv
Y2tMb2NhdGlvbigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0u
bG9jYWxBbmNob3IoKSk7CkBAIC04NzUsMzgwICs4NTQsMzUwIEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBpdGVtLndpZHRocygpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5pc1ByaW50aW5nKCkpOwogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0VsbGlwc2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3RWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBh
dGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgib2Zmc2V0IiwgaXRlbS5vZmZzZXQoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVj
dHMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHko
InJlY3RzIiwgaXRlbS5yZWN0cygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRl
bS53aWR0aCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RmlsbFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3Im
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4KICAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQ29tcG9z
aXRlZFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
Q29tcG9zaXRlZFJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJj
b2xvciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb21wb3NpdGUtb3Bl
cmF0aW9uIiwgaXRlbS5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
ImJsZW5kLW1vZGUiLCBpdGVtLmJsZW5kTW9kZSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVkUmVj
dCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVk
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xv
ciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRl
bS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicm91bmRlZC1ob2xl
LXJlY3QiLCBpdGVtLnJvdW5kZWRIb2xlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNv
bG9yIiwgaXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmlsbExpbmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxBcmMmIGl0ZW0pCit2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFn
PikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0
dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VB
cmMmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VBcmMm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBh
dGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVt
LnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
UGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxQYXRo
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJw
YXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRp
YSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0czsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9r
ZVBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQ
YXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVt
LnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0KCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBp
dGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVyJiBpdGVtKQordm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgib3Bh
Y2l0eSIsIGl0ZW0ub3BhY2l0eSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Im
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNj
YWxlRmFjdG9yJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRs
ZSBpdGVtKQordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbUhh
bmRsZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewogICAgIHRzIDw8IGl0
ZW0udHlwZSgpOwogCiAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5
cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8VHJhbnNsYXRlPigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8Um90YXRlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Um90YXRlPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFNjYWxlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNl
dENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0Q1RNPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8U2V0Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25j
YXRlbmF0ZUNUTT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENvbmNhdGVuYXRl
Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9y
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0
cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRo
aWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PFNldFN0YXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFNldExpbmVEYXNoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVKb2luPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxTZXRNaXRlckxpbWl0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXA+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXBPdXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwT3V0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVy
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxDbGlwT3V0VG9QYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBQYXRoPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxEcmF3R2x5cGhzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0lt
YWdlQnVmZmVyPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd0ltYWdlQnVm
ZmVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3UGF0dGVybj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXR0
ZXJuPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdS
ZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGlu
ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdMaW5lPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7CisgICAgICAg
IGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXRoPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOworICAgICAgICBkdW1wSXRlbSh0cywg
aXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxs
UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9y
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8RmlsbFJvdW5kZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxMaW5l
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PEZpbGxMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxBcmM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxBcmM+KCk7
CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsQXJjPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxRdWFkQ3VydmU6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxGaWxsUXVhZEN1cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxCZXppZXJDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEJl
emllckN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEJlemllckN1
cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEVs
bGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
UGFpbnRGcmFtZUZvck1lZGlhPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ry
b2tlUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYg
RU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlQXJjOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VBcmM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxTdHJva2VBcmM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJv
a2VRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VRdWFk
Q3VydmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlQmV6aWVyQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUJlemllckN1cnZl
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlQmV6aWVyQ3VydmU+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTdHJva2VFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ry
b2tlRWxsaXBzZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOworICAgICAgICBkdW1w
SXRlbSh0cywgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKSwgZmxhZ3Mp
OwogICAgICAgICBicmVhazsKLQogICAgIC8vIEl0ZW1zIHdpdGggbm8gYWRkaXRpb25hbCBkYXRh
LgogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToK
QEAgLTEyNjAsNyArMTIwOSw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiB0czsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBkMTQ0MDc3M2FlZDNhZjg2NmY0OWUyNzY5MWQ1
ZmM3OTk5ZmYxNjc3Li4wMDU0ODQ2MTM0ODIxMGI4YzUxMmM2MWUxZWY4YTA2ZTAwMjEzYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0
IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCitlbnVt
IGNsYXNzIEFzVGV4dEZsYWcgOiB1aW50OF90Owogc3RydWN0IEl0ZW1IYW5kbGU7CiAKIC8qIGlz
SW5saW5lSXRlbSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IG5lZWRzIHRvIGJlIHBhc3Nl
ZCB0aHJvdWdoIElQQzo6RW5jb2RlciBpbiBvcmRlciB0byBzZXJpYWxpemUsCkBAIC01OTIsNyAr
NTkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEdseXBo
QnVmZmVyQWR2YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50
JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlw
aERlY29tcG9zaXRpb24pIGNvbnN0OwogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQpAQCAtMjA1MSw2NyArMjA1Miw4MCBAQCBzaXplX3QgcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogSXRl
bVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogI2lm
ICFMT0dfRElTQUJMRUQKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFRyYW5zbGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY2FsZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0Q1RN
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBDb25jYXRlbmF0ZUNUTSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVT
dHJva2VDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGlu
ZUNhcCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgU2V0TGluZURhc2gmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0Jik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBDbGlwJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBDbGlwT3V0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dFRvUGF0
aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgQ2xpcFBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3R2x5cGhz
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1N5c3RlbUlt
YWdlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3UGF0dGVybiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1JlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGlu
ZXNGb3JUZXh0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJik7Ci1XRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RWxsaXBzZSYp
OwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd1BhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGll
bnQmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0Jik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgVHJhbnNsYXRlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0ZSYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBTY2FsZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRDVE0mLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
Q29uY2F0ZW5hdGVDVE0mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0
cm9rZVRoaWNrbmVzcyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBTZXRMaW5lQ2FwJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVEYXNoJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFNldExpbmVKb2luJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldE1pdGVyTGltaXQmLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgQ2xpcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0JiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IENsaXBUb0ltYWdlQnVmZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRUb1BhdGgmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgQ2xpcFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9F
WFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
SW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdlJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0dGVybiYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3UmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2UmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZp
bGxSZWN0V2l0aEdyYWRpZW50JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYs
IE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgRmlsbExpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxBcmMmKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxCZXppZXJDdXJ2ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQXJjJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUJlemllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBGaWxsTGluZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQXJjJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEJlemllckN1cnZl
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUFyYyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFk
Q3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFBhdGgm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxFbGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBGaWxsUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsRWxsaXBzZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CiAjaWYgRU5BQkxFKFZJREVPKQotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlh
Jik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBQYWlu
dEZyYW1lRm9yTWVkaWEmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJM
RShWSURFTykKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IFN0cm9rZVJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUVsbGlwc2UmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUxpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
QXBwbHlEZXZpY2VTY2FsZUZhY3RvciYpOwotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBJdGVtSGFuZGxlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUGF0aCYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBTdHJva2VFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUm
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShU
ZXh0U3RyZWFtJiwgY29uc3QgQ2xlYXJSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVCYgaXRlbSkKK3sKKyAgICBkdW1w
SXRlbSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucywg
QXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOworICAgIHJldHVybiB0
czsKK30KKwordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiwgY29uc3QgSXRlbUhhbmRs
ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CisKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlKQoreworICAg
IGR1bXBJdGVtSGFuZGxlKHRzLCBpdGVtSGFuZGxlLCB7IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxh
dGZvcm1PcGVyYXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMg
fSk7CisgICAgcmV0dXJuIHRzOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMDc0YmY2
MDkzZWQzNzhlMTgxMWZmOGZjNmNhNWQwNTdiNzdlOTk5Ny4uNzY1OGY4MzQyZGVmNmNlMmU0MTAz
MzgxMzMzMDM4NjRkOGYyMWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTYxLDE3ICsxNjEsMjAgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAg
ICByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VS
ZWN0LCBmaWx0ZXIpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBz
dGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0
YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pCiB7Ci0gICAgaWYgKG1fZGVjb25zdHJ1Y3RE
cmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKSB7CisgICAgaWYgKG1fZGVj
b25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKQorICAgICAg
ICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiUmVjb3JkZXI6OmRyYXdHbHlwaHMg
LSBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiAiIDw8IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsK
KworICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlw
aHM6OlllcyAmJiAoIW5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uIHx8ICpuZWVkc0dseXBoRGVjb21w
b3NpdGlvbikpIHsKICAgICAgICAgaWYgKCFtX2RyYXdHbHlwaHNSZWNvcmRlcikKICAgICAgICAg
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyID0gbWFrZVVuaXF1ZTxEcmF3R2x5cGhzUmVjb3JkZXI+
KCp0aGlzLCBtX2luaXRpYWxTY2FsZSk7CiAKLSAgICAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIt
PmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbV9kcmF3
R2x5cGhzUmVjb3JkZXItPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICB9CiAKICAgICBkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2Fs
QW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjAwNDgzMzZhN2Y4MDkzODJlZGQwZDAyNzQ1NWQ4
MmY0OGZiZjgzNy4uNjIzNDQ4ZGExNDY3YjgwYjE1N2ExNzY3YTZmZjkzYzE4Y2M1NzNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMTIsNyArMjEyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdl
UmVjdCwgRmlsdGVyJiwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCA5N2UxMWNiODYwZDkxOTAwMzllZTdlYWFkN2MzOGRmMTQyOWViZjlkLi43
OWRhZWE3NTc2MjM5YWIwNTIxYTA4N2Y1MTVmNmNhNjNlMjgzYjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xMDcsNTUgKzEwNyw1NyBAQCBpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNl
dFN0YXRlSXRlbShHcmFwaAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5RHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVz
b3VyY2VIZWFwLCBEcmF3R2x5cGhzJiBkcmF3R2x5cGhzSXRlbSkKK2lubGluZSBzdGF0aWMgc3Rk
OjpwYWlyPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgR3JhcGhp
Y3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGFwcGx5RHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBEcmF3R2x5
cGhzJiBkcmF3R2x5cGhzSXRlbSwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21w
b3NpdGlvbikKIHsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGRyYXdHbHlwaHNJdGVt
LmZvbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSByZXNvdXJjZUhlYXAuZ2V0
Rm9udChyZXNvdXJjZUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGRyYXdHbHlwaHNJdGVtLmFwcGx5
KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
YXV0byBkaWREZWNvbXBvc2UgPSBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250ZXh0LCAqZm9udCwg
bmVlZHNHbHlwaERlY29tcG9zaXRpb24pOworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IGRpZERlY29tcG9zZSB9OwogICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgIHJldHVybiB7IHJlc291cmNlSWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNv
bXBvc2VHbHlwaHM6Ok5vIH07CiB9CiAKLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJl
cGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorYXV0byBSZXBsYXllcjo6YXBwbHlJ
dGVtKEl0ZW1IYW5kbGUgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgc3dpdGNoIChp
dGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgogICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFn
ZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAs
IGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlEcmF3R2x5cGhzKG1fY29udGV4dCwgbV9yZXNvdXJj
ZUhlYXAsIGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpKQotICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9OworCisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczogeworICAgICAgICBhdXRvIGRyYXdHbHlwaHNSZXN1bHQgPSBhcHBseURyYXdH
bHlwaHMobV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKSwg
bV9kaXNwbGF5TGlzdC5jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpKTsK
KyAgICAgICAgaWYgKGRyYXdHbHlwaHNSZXN1bHQuZmlyc3QpCisgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUoZHJhd0ds
eXBoc1Jlc3VsdC5maXJzdCksIHsgfSB9OworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSwgZHJh
d0dseXBoc1Jlc3VsdC5zZWNvbmQgfTsKKyAgICB9CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2Fj
aGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsg
fSB9OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQsIG1fcmVz
b3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgog
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlT
b3VyY2VJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1v
dmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9OworICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShtX2Nv
bnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlz
c2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IH07CiB9CiAKIFJl
cGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3LDEyICsxODksMTYgQEAgUmVwbGF5UmVzdWx0
IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFj
a1JlcGxheUxpc3QKIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJl
YW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAo
YXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJd
ID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewotICAgICAgICAgICAgcmVz
dWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwotICAgICAgICAgICAg
cmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGFwcGx5UmVzdWx0ID0gYXBw
bHlJdGVtKGl0ZW0pOworICAgICAgICBpZiAoYXBwbHlSZXN1bHQuc3RvcFJlYXNvbikgeworICAg
ICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKmFwcGx5UmVzdWx0LnN0b3BSZWFz
b247CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IFdURk1vdmUoYXBwbHlSZXN1bHQucmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LmRpZERlY29tcG9zZUds
eXBocyAmJiAqYXBwbHlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4
dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXMpCisgICAgICAgICAgICByZXN1bHQuZGlkRGVjb21w
b3NlR2x5cGhzID0gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6OlllczsKKwog
ICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAog
ICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMjU4NGE1MzlmYzA1MzA4YzYyNDJhMTFmYzE3NjVl
ZGJhOGIwZDlmNi4uNGUzNTA0ZmI1MGUyMjg3ZGQ2NWI0NjI1NzFhNTMzNWFkMjk5OTJmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzIsNyArMzMsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlcGxh
eVJlc3VsdCB7CiAgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uRm9yU3RvcHBpbmcgeyBT
dG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zIH07CisgICAgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gZGlkRGVjb21wb3NlR2x5cGhzOwog
fTsKIAogY2xhc3MgUmVwbGF5ZXIgewpAQCAtNjEsNyArNjIsMTIgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwor
ICAgIHN0cnVjdCBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+IHN0b3BSZWFzb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRpZERlY29tcG9zZUds
eXBoczsKKyAgICB9OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgbV9kaXNwbGF5TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcAppbmRleCBjMzI4YjhmYjY2N2ViYWFhY2VmYzJkZWQ1MGY5ODg0NzIwMDBhZjhkLi5l
NGE0YTI1NzAxODJjZWM1MzZiZDEyMmNiNzMxZjFlMDI0ODcyYTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJI
YXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCkBAIC0zOCw5ICszOCwxMCBAQCBEcmF3
R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVy
LCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2Rl
KTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOyAg
ICAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCBlN2U2ZTZhMjczMzhl
NGY3OTkxN2RlNjYzZTY3Y2JjZTY2MjgzMGUwLi5iZDJlMDUwNjFhY2EzOGQ5ZmU0OTA5NWMwYjI1
MGM1ODJiMmI2YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxDbGVhclJlY3Q+KHJlY3QpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBmb250U21vb3RoaW5nLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIHN0
cnVjdCBEcmF3R2x5cGhzIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
Q2Fpcm86OkZpbGxTb3VyY2UsIENhaXJvOjpTdHJva2VTb3VyY2UsIENhaXJvOjpTaGFkb3dTdGF0
ZSwgRmxvYXRQb2ludCwgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+LCBmbG9hdCwgVmVjdG9y
PGNhaXJvX2dseXBoX3Q+LCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBGbG9h
dFNpemUsIENvbG9yLCBGb250U21vb3RoaW5nTW9kZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3
R2x5cGhzKCkgPSBkZWZhdWx0OwpAQCAtNTM4LDYgKzUzOCw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3Jt
RGF0YSgpLnNjYWxlZEZvbnQoKSksCiAgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgp
LCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlKCks
CiAgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zm
c2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKKworICAgIHJl
dHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGQ2NTI3YzQ3ZDYxOTY3ODVkY2IxYjM4ZDgzZmVj
NjQyMWQxMzY2YTQuLjBjYTYxNzFlNTYzYjc1YTBhMjgxODQwNjhmYjEwZDBjNDA0Y2FiNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0cm9rZUVsbGlwc2UoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhclJlY3QoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMo
Y29uc3QgV2ViQ29yZTo6Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBj
b25zdCBXZWJDb3JlOjpHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSkgb3Zl
cnJpZGU7CisgICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgV2ViQ29yZTo6
Rm9udCYsIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBXZWJDb3JlOjpH
bHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmLCBXZWJDb3JlOjpGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29s
PiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBXZWJDb3JlOjpGaWx0ZXImLCBXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJh
d0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmluZGV4IGFkNGJhMWQ2NDE3ZTcxODZjYzFl
YWE1YjEzNWFlNWUxYTQ0NTc3YjYuLmE5OGZhODJmN2ZjYzI0NDQwMTJjMmZkODVkZDc1NTM2YzQw
NjgyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
cmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0zOCw5ICszOCwxMCBAQCBE
cmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93
bmVyLCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlw
aHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3Ro
aW5nTW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlwaHNS
ZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01v
ZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQo
Zm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBtX3Ntb290aGlu
Z01vZGUpOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6
Tm87ICAgIAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludGVyLmNwcAppbmRleCA0ZjMzNDJmYTM5MTAxNzQ2NGYzNDRiNTQ5M2YzMjRj
NGE4MjllYzdhLi44Mjc0YzkzODkwOGMyNTk3MDk4OGJjNGU2NWE5ZWNkYzgwNDc4MjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgogCisjaW5jbHVk
ZSAiRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxh
eWVyLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgpAQCAtMTIzLDcgKzEyNCwxMSBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdQog
ICAgICAgICAvLyBSZXBsYXlpbmcgYmFjayBhIHdob2xlIGNhY2hlZCBnbHlwaCBydW4gdG8gdGhl
IEdyYXBoaWNzQ29udGV4dC4KICAgICAgICAgbV9jb250ZXh0LnRyYW5zbGF0ZSh0ZXh0T3JpZ2lu
KTsKICAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKG1fY29udGV4dCwgKm1f
Z2x5cGhEaXNwbGF5TGlzdCk7Ci0gICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICBh
dXRvIHJlcGxheVJlc3VsdCA9IHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICAKKyAgICAgICAg
aWYgKHJlcGxheVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMpCisgICAgICAgICAgICBtX2dseXBo
RGlzcGxheUxpc3QtPnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCpy
ZXBsYXlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4dDo6RGlkRGVj
b21wb3NlR2x5cGhzOjpZZXMpOworCiAgICAgICAgIG1fY29udGV4dC50cmFuc2xhdGUoLXRleHRP
cmlnaW4pOwogICAgIH0KICAgICBtX2dseXBoRGlzcGxheUxpc3QgPSBudWxscHRyOwpAQCAtMjU1
LDkgKzI2MCwxOCBAQCBTdHJpbmcgVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3Rz
Rm9yVGV4dE5vZGVBc1RleHQoVGV4dCYgdGV4dE5vZGUsIE9wdAogICAgICAgICAgICAgZGlzcGxh
eUxpc3QgPSBUZXh0UGFpbnRlcjo6Z2x5cGhEaXNwbGF5TGlzdElmRXhpc3RzKCp0ZXh0Qm94Lmlu
bGluZUJveCgpKTsKICNlbmRpZgogICAgICAgICBpZiAoZGlzcGxheUxpc3QpIHsKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGRpc3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgaWYgKGZsYWdzICYgRGlzcGxh
eUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKSB7CisgICAgICAgICAgICAg
ICAgLy8gUmVwbGF5IGRpc3BsYXlMaXN0IHRocm91Z2ggYSBjb250ZXh0IHdpdGggRGVjb25zdHJ1
Y3REcmF3R2x5cGhzOjpZZXMgc28gdGhhdCB0aGUgb3V0cHV0IGRpc3BsYXkgbGlzdCBzaG93cyB0
aGUgZHJhd2luZyBjb21tYW5kcyBmb3IgZGVjb21wb3NwZWQgZ2x5cGhzLgorICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gb3V0
cHV0RGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlM
aXN0PigpOworICAgICAgICAgICAgICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwgcmVjb3Jk
aW5nQ29udGV4dCgqb3V0cHV0RGlzcGxheUxpc3QsIHsgfSwgeyB9LCB7IH0sIERpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworICAgICAgICAgICAgICAg
IERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcihyZWNvcmRpbmdDb250ZXh0LCAqZGlzcGxh
eUxpc3QpOworICAgICAgICAgICAgICAgIGF1dG8gcmVwbGF5UmVzdWx0ID0gcmVwbGF5ZXIucmVw
bGF5KCk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQob3V0cHV0RGlzcGxheUxpc3Qt
PmFzVGV4dChmbGFncykpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoZGlzcGxheUxpc3QtPmFzVGV4dChmbGFncykpOwogICAgICAgICB9CisKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkODFhNWMy
YTNmN2ZkYzhlYzNiMWYyZWEzZDk0MThhMDA2OGM3YjIxLi5lZTVjZmM4NmExNDNmZTA4ZDVjNTk1
MzI5OTYxNGIzMWVlMDM5ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0zMTc1LDYgKzMxNzUsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6ZGlzcGxh
eUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIHVuc2lnbmVkCiAgICAgaWYgKGZsYWdz
ICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRp
c3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRm
b3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NF
U19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6
OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIGlmICghZWxlbWVudC5y
ZW5kZXJlcigpLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZEFjY2Vzc0Vycm9yIH07CiAKQEAgLTMyMDAsNiArMzIwMyw5IEBAIEV4Y2VwdGlvbk9yPFN0cmlu
Zz4gSW50ZXJuYWxzOjpyZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgdW5zCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09Q
RVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3MuYWRkKERpc3BsYXlMaXN0OjpBc1Rl
eHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7CiAKKyAgICBpZiAoZmxhZ3MgJiBE
SVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykKKyAgICAgICAgZGlzcGxheUxpc3RG
bGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRlY29tcG9zZXNEcmF3R2x5cGhzKTsK
KwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpLT5oYXNMYXllcigpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKQEAgLTMyMzMsNiArMzIzOSw5
IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0
c0ZvclRleHROb2RlKE5vZGUmIG5vZGUsIHVuCiAgICAgaWYgKGZsYWdzICYgRElTUExBWV9MSVNU
X0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMpCiAgICAgICAgIGRpc3BsYXlMaXN0RmxhZ3Mu
YWRkKERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucyk7
CiAKKyAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUykK
KyAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkRl
Y29tcG9zZXNEcmF3R2x5cGhzKTsKKwogICAgIHJldHVybiBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5
cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dChkb3duY2FzdDxUZXh0Pihub2RlKSwgZGlz
cGxheUxpc3RGbGFncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI0
Y2FkZGQyMjQ0MjMzNjZlYmY1YzllYzJmNjNlYzdmNTMwZTkwN2IuLjhmMzZlYzdlNGUyMTU4Njdi
NmFmNmNhZTg0N2E1MThhNDA1ZDRkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApA
QCAtNDc0LDYgKzQ3NCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgLy8gVmFsdWVz
IG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAgICAgICAgRElT
UExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxLAorICAgICAgICBESVNQ
TEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUyA9IDIKICAgICB9OwogICAgIEV4Y2VwdGlv
bk9yPFN0cmluZz4gZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmLCB1bnNpZ25lZCBzaG9y
dCBmbGFncyk7CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiByZXBsYXlEaXNwbGF5TGlzdEZvckVs
ZW1lbnQoRWxlbWVudCYsIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAppbmRleCA1NmZmNTAzYWJlMmQxZjA2ZGE1NjMwNjMzN2MwYjBkYjg2NGQ4
YmRkLi4xYTNlZGNjNGNlZDFkZjM5NmI1NGE5N2I1MTdjY2Y0NTJhMWY0MTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02MDAsNiArNjAwLDcgQEAgdHlwZWRlZiAoRmV0
Y2hSZXF1ZXN0IG9yIEZldGNoUmVzcG9uc2UpIEZldGNoT2JqZWN0OwogCiAgICAgLy8gRmxhZ3Mg
Zm9yIGRpc3BsYXlMaXN0Rm9yRWxlbWVudC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBESVNQ
TEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUyA9IDE7CisgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgPSAyOwogICAg
IC8vIFJldHVybnMgdGhlIHJlY29yZGVkIGRpc3BsYXkgbGlzdC4KICAgICBET01TdHJpbmcgZGlz
cGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQgZWxlbWVudCwgb3B0aW9uYWwgdW5zaWduZWQgc2hv
cnQgZmxhZ3MgPSAwKTsKICAgICAvLyBSZXR1cm5zIHRoZSBkaXNwbGF5IGxpc3QgdGhhdCB3YXMg
YWN0dWFsbHkgcGFpbnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA3YTA3
MzJlMjkyZWVjZWY1NjMwODAzZjUwZDY4ODc5ZTQwYmQ1NDc4Li43YWJiMDcyZmMzOGE2MzdkNjdl
OTU2MGMzYzY5OTVmNDlmMmRlY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBA
IC0yNTMsNyArMjUzLDcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3R2x5
cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoRGlzcGxheUxpc3Q6OkQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQpOworICAgIGhh
bmRsZUl0ZW0oV1RGTW92ZShpdGVtKSwgKmZvbnQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB9KTsK
IH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvblJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmM0NzI2Yzc2NTZjMGNjM2Ux
MzU0MTE4YWVkNGRkODY5NWRiYzQ0OS4uYjgxMjYzY2JkZjYyZjU5ZWEyMDgzNzdmYzQxMWNiZjkw
N2NhZmM3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA1LTE0ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHRoZSBvdmVyaGVhZCBv
ZiBEcmF3R2x5cGhzUmVjb3JkZXIgd2hlbiBkcmF3aW5nIGNhY2hlZCBnbHlwaCBidWZmZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA0MjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxp
c3QtZW1vamkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXkt
bGlzdC1zdmctZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9n
bHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMjItMDUtMTQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtSZXBhaW50XSBCb3JkZXIgaWdub3JlcyBjdXJyZW50Q29sb3IgY2hhbmdlIHdo
ZW4gaG92ZXJpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY5MTc2YTVmYWE5Yzk5NjkwNjI0MmQx
Y2VjNzczMWNkMjkzMmViYzIuLmVkNzczYWEzZjYzNzI1ODg1NmNmOTZjYzcyMTc4NjcwOGI3N2Ix
YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTEwOCw2ICs1MTA4LDggQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItbmFtZS12aWEtb3B0aW9u
cy5odG1sIFsgRHUKIAogIyBEaXNwbGF5IGxpc3QgbG9nZ2luZyBpcyBvbmx5IGF2YWlsYWJsZSBp
biBkZWJ1ZwogWyBSZWxlYXNlIF0gZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1jb2xvci5o
dG1sIFsgU2tpcCBdCitbIFJlbGVhc2UgXSBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVt
b2ppLmh0bWwgWyBTa2lwIF0KK1sgUmVsZWFzZSBdIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxp
c3Qtc3ZnLWZvbnQuaHRtbCBbIFNraXAgXQogCiAjIFBsdWdpbnMKICMgRklYTUU6IFJlbW92ZSB0
aGVzZSB0ZXN0cy4K
</data>
<flag name="commit-queue"
          id="488460"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459375</attachid>
            <date>2022-05-14 21:56:06 -0700</date>
            <delta_ts>2022-06-09 13:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220514215605.patch</filename>
            <type>text/plain</type>
            <size>88766</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MmNiM2E0MzNjZTg3NTIzNTJiNjA1YWFiOWRkNDFkZDc0MzQ3MTBjLi5i
NTM2ZjhkMTg0MjZjMjU5YjljNzBjYmMwMDgxNTgwMDdhOWQzNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTQgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRl
ciB3aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVu
dGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdH
bHlwaAorICAgICAgICBpdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0
ZW1zIGZyb20gdGhlIGNhY2hlIGluCisgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVt
cGhhc2lzTWFya3MoKS4KKworICAgICAgICBJbmRlcGVuZGVudGx5LCB0ZXh0IGRyYXdpbmcgaW4g
Z2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKKyAgICAgICAgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxheSBsaXN0
IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4g
dGhlIEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUK
KyAgICAgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQorICAgICAgICBEcmF3R2x5cGhz
UmVjb3JkZXIgdG8gZGV0ZWN0IHdoZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdp
bmcgaW50byBsb3dlciBsZXZlbCBnbHlwaAorICAgICAgICBhbmQgaW1hZ2UgZHJhd2luZywgdXNp
bmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBt
ZWFzdXJhYmxlCisgICAgICAgIG92ZXJoZWFkLCBzbyB3ZSB3YW50IHRvIGF2b2lkIGl0IHdoZW4g
d2UgY2FuLgorICAgICAgICAKKyAgICAgICAgVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCisg
ICAgICAgIGdseXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlz
cGxheSBsaXN0IHRvIHNheSB3aGV0aGVyIGFueQorICAgICAgICBkcmF3R2x5cGhzKCkgY2FsbHMg
dHJpZ2dlcmVkIGdseXBoIGRlY29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93
czoKKyAgICAgICAgCisgICAgICAgICogRHJhd0dseXBoc1JlY29yZGVyIGlzIG1vZGlmaWVkIHRv
IGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0cmlnZ2VyZWQgYW55CisgICAgICAg
ICAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5nICh3aGljaCBjYW4g
aGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKKyAgICAgICAgICBhbmQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1bHQg
aW5kaWNhdGluZyB0aGlzLgorICAgICAgICAqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFs
PGJvb2w+IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5l
ZAorICAgICAgICAgIG9uIHBsYXliYWNrLgorICAgICAgICAqIFRleHRQYWludGVyOjpwYWludFRl
eHRPckVtcGhhc2lzTWFya3MoKSBjYWxscyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVj
b21wb3NpdGlvbigpCisgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBn
bHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eSkuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRl
Y29tcG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBh
CisgICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNo
IHR1cm5zIGludG8gYSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KKyAgICAgICAgVGV4dFBh
aW50ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25k
cyB0byB0aGlzIGJ5IHJlcGxheWluZyB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRocm91Z2gg
YSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyByZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBk
aXNwbGF5IGxpc3QKKyAgICAgICAgd2l0aCBkZWNvbXBvc2VkIGdseXBocy4KKworICAgICAgICBE
aXNwbGF5IGxpc3QgbG9nZ2luZyBjdXJyZW50bHkgZHVtcHMgcmVzb3VyY2UgaWRlbnRpZmllcnMs
IHdoaWNoIGlzIGEgcHJvYmxlbSBmb3IgCisgICAgICAgIGxheW91dCB0ZXN0IGJlY2F1c2UgdGhl
eSBhcmUndCBuZWNlc3NhcmlseSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRl
c1Jlc291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFn
YXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmlu
ZyB0aGVtIHRvCisgICAgICAgIGNvbnZlcnRlZCBmcm9tIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZmxhZ3MgYXJndW1lbnQu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5o
dG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3Jk
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojpjb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OnNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphcHBseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6ZHVtcEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJdGVtSGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlEcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRQYWludGVyOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmRpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIy
LTA1LTE0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRkZDXVtJ
bnRlZ3JhdGlvbl0gQWRkICJmaXhlZCBzaXplZC9hbGwgZGVmYXVsdCB2YWx1ZSIgZmxleCBsYXlv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZDc2NGJjYWZkYWI0OWRmZTY1ZDcyYmFjYjBlYTRjNGZlMTI2MTA3ZC4u
ZDA2ODRiZDY3NjRkMWQ1NzlhODM1Y2Y0NDUzZTRjNmRmMzQzMTgwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAyMi0wNS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVy
IHdoZW4gZHJhd2luZyBjYWNoZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50
bHksIFRleHRQYWludGVyIGNhY2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0ds
eXBoCisgICAgICAgIGl0ZW1zIGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRl
bXMgZnJvbSB0aGUgY2FjaGUgaW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcygpLgorCisgICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3Qg
bWVjaGFuaXNtLiBJbiBvcmRlciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0
aGUgR1BVIFByb2Nlc3MsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQor
ICAgICAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNS
ZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2lu
ZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2lu
ZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1l
YXN1cmFibGUKKyAgICAgICAgb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3
ZSBjYW4uCisgICAgICAgIAorICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVj
b3JkZXIgb3ZlcmhlYWQgZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAg
ICAgICAgZ2x5cGggYnVmZmVyLCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNw
bGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0
cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dz
OgorICAgICAgICAKKyAgICAgICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8g
ZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAg
ICBpbWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBo
YXBwZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBp
bmRpY2F0aW5nIHRoaXMuCisgICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8
Ym9vbD4gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVk
CisgICAgICAgICAgb24gcGxheWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4
dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uKCkKKyAgICAgICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGds
eXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAg
ICAgICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KKyAgICAgICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVj
b21wb3NpdGlvbiwgd2UgZW5oYW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEK
KyAgICAgICAgRElTUExBWV9MSVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2gg
dHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFp
bnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRz
IHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBh
IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRp
c3BsYXkgbGlzdAorICAgICAgICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERp
c3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywg
d2hpY2ggaXMgYSBwcm9ibGVtIGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5
IGFyZSd0IG5lY2Vzc2FyaWx5IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVz
UmVzb3VyY2VJZGVudGlmaWVycworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdh
dGUgaW50byBhbGwgdGhlIGRpc3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5n
IHRoZW0gdG8KKyAgICAgICAgY29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Li4uKSB0byBkdW1wSXRlbSgpIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdH
bHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisKIDIwMjItMDUtMTQgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2Ug
cmVmZXJzIHRvIHVudXNlZCBjb250ZXh0IHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAK
aW5kZXggYWNkMDg2ZjIyYTJjMjE3ODlmYmI1OTk4MzFhOWNhM2UwYzI3OTZjYy4uNDllMTY4ZmM0
NGExNGYxM2ZhYWNiMjE3NzZlNGFiMTMyYzViMWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTM4MSwxMCArMzgxLDExIEBAIEZsb2F0U2l6ZSBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QKICAgICBy
ZXR1cm4gc2l6ZTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29u
c3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUp
CitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01vZGUgZm9u
dFNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pCiB7Ci0gICAgbV9wcmltYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX3NlY29u
ZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CisgICAgYXV0byBkaWREZWNvbXBvc2UgPSBtX3By
aW1hcnlDb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBwb2ludCwgZm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAg
ICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRp
b24pOworICAgIHJldHVybiBkaWREZWNvbXBvc2U7CiB9CiAKIHZvaWQgQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJj
YXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IGEzZjBkMTk4NmZmMWUzNThkNzYxNGM4MGM0MmUz
NjdkZDM3ZjAyMDcuLmZjNDI3YTQwOGVjZTlmYjk1MTExOTBkODgzMTQ2MDI3MzExM2UwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdHbHlw
aHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSkgZmluYWw7CisgICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCmluZGV4IDY4NmVmY2Uz
YmE4MWIyNzdiMWRiNjQ1MzYwNDdlYmRjNGI5ZWQ0ZWIuLjE2YjgxZDliMTc3NzI1NTgyMWRkMjY0
NTBlMGJkNmNkNTU0NGQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0
IHNjYWxlRmFjdG9yID0gMSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21D
b250ZXh0OjpObyk7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7
CisgICAgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4p
CiAgICAgdm9pZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENU
TGluZVJlZiwgQ0dSZWN0IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWdu
ZWQgbV9vdXRwdXRHbHlwaENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAz
ZjAxODFkOWU0ODQ2ZmFmZTcxMTIxMDY1NzE2NTZiYWM2ZS4uMzZjN2VlMGY1ZGJmNGYzODU0Zjlk
NzM1MzU4NWE2MGY2ZjViZmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMjksOSArMTI5LDEwIEBAIEZsb2F0
U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwg
cG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSkKK0dy
YXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKCp0
aGlzLCBmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3Ro
aW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGY0YzdhODdlYzFkYjM0OGNiMzU0ZDllNDM1MmJjZTYyN2M2MTZkN2UuLjU1YjBm
Mzk4M2E5YmExZmZlNTE3NjQ3MjkxZTdiMTExODQyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yODMsNyArMjgz
LDYgQEAgcHVibGljOgogICAgIC8vIFRleHQKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
RmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKQEAg
LTI5Miw2ICsyOTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIGRyYXdHbHlwaHMoZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogICAgIH0K
IAorICAgIGVudW0gY2xhc3MgRGlkRGVjb21wb3NlR2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290
aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24gPSB7
IH0pOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3Vu
ZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRp
bmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZs
b2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJv
b2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNz
Q29udGV4dC5oCmluZGV4IGNiZmU3NWQ2MzJkYjk4MDA1ZGIyMTQ4NzBhNzM0M2JhYmM4OTBiYjMu
LjM1YTZkOTFjNTE3NjNkODE0YjRmYzE0NDU0NGIxMjliMmZiYTM0ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7
IHJldHVybiB7IH07IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBj
b25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERl
Y29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1
cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2Fk
ZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZv
bnROb3RSZWFkeSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
MjYyZjBkNjAyYjgwZGMzNzdjNDA5ZjQ0NmRiYjQ4OGRhYzMxMjI0NC4uMzhhMzAyZTgzNjU3YzBj
YjI0OGUwMmMxNTk3OGU4NWRhZjc4M2E3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cApAQCAtNDA4LDEwICs0MDgsMTAgQEAgUmVuZGVyaW5nTW9kZSBHcmFwaGljc0NvbnRleHRDYWly
bzo6cmVuZGVyaW5nTW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6aXNBY2Nl
bGVyYXRlZENvbnRleHQoKnBsYXRmb3JtQ29udGV4dCgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVu
c2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmcpCitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBH
cmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlwaERl
Y29tcG9zaXRpb24pCiB7CiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsKIAog
ICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKICAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4g
Y2Fpcm9HbHlwaHMobnVtR2x5cGhzKTsKQEAgLTQzNSw2ICs0MzUsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqCiAgICAgICAgIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LCBzY2Fs
ZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjYWlyb0dseXBocywgeE9mZnNldCwKICAgICAg
ICAgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0
ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAg
IGZvbnRTbW9vdGhpbmcpOworCisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIGNhaXJvX3QqIEdyYXBoaWNzQ29udGV4dENhaXJvOjpjcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uaAppbmRleCA3MzIxNDcwZmM0ZjFjN2ZiMWYzYWY3YmI0NjhlYWExN2M1ZTFk
NWU5Li40NjkwOGNlNWFhOGI5YjYwZDM3MDI1Y2I3ODgwY2IwMzY5YTYzZWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Ry
b2tlUGF0aChjb25zdCBQYXRoJikgZmluYWw7CiAgICAgdm9pZCBjbGVhclJlY3QoY29uc3QgRmxv
YXRSZWN0JikgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7Cisg
ICAgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxi
b29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcAppbmRleCAyNmE3NTE1ZjljZWE5OGE5OTQ1ZTU4ZTVhZDc0MmQ0MTM0
ZDI1NzAzLi45MTY4MzMxMTc3NmNmYmJiYjgxZTc4NzVhNTU0ODA0YTg0ZTMxYTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMDQsNiArMzA0
LDcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJp
bmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB9CiAKICAgICBtX293bmVyLmRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRp
b25zKHBvc2l0aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGluaXRpYWxQ
ZW5Qb3NpdGlvbiwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX291dHB1dEdseXBoQ291bnQgKz0g
Y291bnQ7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAt
MzIzLDYgKzMyNCw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2Uo
Q0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAKICAgICBhdXRvIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKICAgICBtX293bmVyLmRyYXdOYXRpdmVJ
bWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIEZsb2F0UmVjdChyZWN0KSwgRmxvYXRSZWN0IHt7
IH0sIGltYWdlLT5zaXplKCl9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7IEltYWdlT3JpZW50YXRp
b246Ok9yaWdpblRvcExlZnQgfSk7CisgICAgbV9kaWREcmF3SW1hZ2UgPSB0cnVlOwogCiAgICAg
Ly8gVW5kbyB0aGUgYWJvdmUgeS1mbGlwIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuCiAgICAgbV9v
d25lci5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKQEAgLTM0Myw2ICszNDUsNyBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVzdGluYXRpb25SZWN0Lm1v
dmVCeShwZW5Qb3NpdGlvbik7CiAgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX2RpZERyYXdJbWFn
ZSA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBwZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2
YW5jZXNbaV0pKTsKQEAgLTM5NSw5ICszOTgsMTcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OmRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhjb25zdCBGb250JiBmb24K
ICAgICBkcmF3KCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3Jh
cGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3
R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBj
b25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdN
b2RlKQogeworICAgIG1fb3V0cHV0R2x5cGhDb3VudCA9IDA7CisgICAgbV9kaWREcmF3SW1hZ2Ug
PSBmYWxzZTsKKwogICAgIGRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhm
b250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01v
ZGUpOworICAgIAorICAgIGlmIChtX2RpZERyYXdJbWFnZSB8fCBtX291dHB1dEdseXBoQ291bnQg
IT0gbnVtR2x5cGhzKQorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBv
c2VHbHlwaHM6OlllczsKKworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9z
ZUdseXBoczo6Tm87CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3TmF0aXZlVGV4
dChDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmIGxpbmUsIENHUmVj
dCBsaW5lUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDMyYzljNTEyYzdiN2U5
OGE3MTc1ZDM3NzYwNTYzNjhhZjlhNTA5MDcuLmE1NDM2YzYyNTY4NTRkZTQ2MWFiYWI3Njg1ZmVh
MzNmNjhhNjcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMTEwLDE2ICsxMTAs
MjAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKE9wdGlvblNldDxBc1Rl
eHRGbGFnPiBmbGFncywgSXRlbUhhbmRsZSBpdGUKIFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0
KE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0
cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3Jt
YXR0aW5nOjpTVkdTdHlsZVJlY3QpOworI2lmICFMT0dfRElTQUJMRUQKICAgICBmb3IgKGF1dG8g
ZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBp
dGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBpZiAo
IXNob3VsZER1bXBGb3JGbGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7Ci0gICAgICAg
IHN0cmVhbSA8PCBpdGVtOworICAgICAgICBkdW1wSXRlbUhhbmRsZShzdHJlYW0sIGl0ZW0sIGZs
YWdzKTsKICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAgICAgICAgICAgc3Ry
ZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGZsYWdzKTsKKyNlbmRpZgogICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwogfQogCkBA
IC0xMjgsMTMgKzEzMiwxNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJlYW0mIHRz
KSBjb25zdAogICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgIHRzIDw8
ICJkaXNwbGF5IGxpc3QiOwogCisjaWYgIUxPR19ESVNBQkxFRAogICAgIGZvciAoYXV0byBkaXNw
bGF5TGlzdEl0ZW0gOiAqdGhpcykgewogICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1T
aXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRTdHJl
YW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwotICAgICAgICB0cyA8PCBpdGVtOworICAgICAgICBk
dW1wSXRlbUhhbmRsZSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3Bl
cmF0aW9ucywgQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOwogICAg
ICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVu
dCAiIDw8IGV4dGVudDsKICAgICB9CisjZW5kaWYKKwogICAgIHRzLnN0YXJ0R3JvdXAoKTsKICAg
ICB0cyA8PCAic2l6ZSBpbiBieXRlczogIiA8PCBzaXplSW5CeXRlcygpOwogICAgIHRzLmVuZEdy
b3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDcwYmZjNDQ5OGY2NTAwMzc0Y2EzM2Uz
YTZiNTA4OGFmNjZkNGJiNTIuLjkzNzIyMDFlYmExN2YwNDU0M2NmZjgwNmYwNDkyZTg1ZmQwZjVi
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC00NiwxMiArNDYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWVudW0gY2xhc3MgQXNUZXh0
RmxhZyA6IHVpbnQ4X3QgewotICAgIEluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zICAgICAgPSAx
IDw8IDAsCi0gICAgSW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzICAgICA9IDEgPDwgMSwKLSAg
ICBEZWNvbXBvc2VzRHJhd0dseXBocyAgICAgICAgICAgID0gMSA8PCAyLAotfTsKLQogY2xhc3Mg
RGlzcGxheUxpc3QgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc3BsYXlMaXN0KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIFJlY29yZGVySW1wbDsKQEAg
LTkzLDYgKzg3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCB0cmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50czsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wpOworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29t
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNv
bXBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbihib29sIHZhbHVlKSB7IG1fY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9z
aXRpb24gPSB2YWx1ZTsgfQogCiAgICAgY2xhc3MgSXRlcmF0b3I7CiAKQEAgLTEyOSw2ICsxMjYs
NyBAQCBwcml2YXRlOgogICAgIExvY2FsUmVzb3VyY2VIZWFwIG1fcmVzb3VyY2VIZWFwOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2luZ0l0ZW1FeHRlbnRzOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbjsKICAgICBi
b29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI0NjQxYTEzNDQ3ZjFiNDQ3ODhhMGJh
ZWE2NmYyZTgzMDVhNGE1OS4uOGNhMjNmYTZhMDYwMzcyODIyMmIzZGQyNWMwZDIyMWFhOGJkYjJk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0yOCw2ICsyOCwx
MiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51
bSBjbGFzcyBBc1RleHRGbGFnIDogdWludDhfdCB7CisgICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJh
dGlvbnMgICAgICA9IDEgPDwgMCwKKyAgICBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgICAg
ID0gMSA8PCAxLAorICAgIERlY29tcG9zZXNEcmF3R2x5cGhzICAgICAgICAgICAgPSAxIDw8IDIs
Cit9OworCiBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBS
ZXN0b3JlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDM1YTdiNGVh
MWMyNDA3NzEyZTUyOTM2NWZiOWZmNWQ3NzA2MWMwNWIuLjE2ZTE3YTAxNjczMWIxYjZhODlkNmRi
MjQyOGQzMGY3NjQ3MTIwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTIwMCw5ICsyMDAsOSBAQCBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgRwogICAgIGNvbXB1dGVC
b3VuZHMoZm9udCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250KSBjb25zdAorR3JhcGhpY3NDb250ZXh0OjpEaWRE
ZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250JiBmb250LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBv
c2l0aW9uKSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBtX2dseXBocy5k
YXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCks
IG1fc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBt
X2dseXBocy5kYXRhKCksIG1fYWR2YW5jZXMuZGF0YSgpLCBtX2dseXBocy5zaXplKCksIGFuY2hv
clBvaW50KCksIG1fc21vb3RoaW5nTW9kZSwgbmVlZHNHbHlwaERlY29tcG9zaXRpb24pOwogfQog
CiB2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKQEAgLTY4
OCwxODQgKzY4OCwxNjMgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBUcmFuc2xhdGUmIGl0ZW0sIE9wdGlvblNldDxB
c1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIngiLCBpdGVtLngoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ5IiwgaXRlbS55KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgUm90YXRlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmdsZSIsIGl0ZW0uYW5n
bGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY2FsZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNjYWxlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzaXplIiwgaXRlbS5hbW91bnQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRDVE0mIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInNldC1jdG0iLCBp
dGVtLnRyYW5zZm9ybSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ29uY2F0ZW5hdGVDVE0mIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImN0bSIsIGl0ZW0udHJh
bnNmb3JtKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0
ZS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IGl0ZW0uY29sb3IoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIHN0YXRlLmNvbG9y
KCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5j
b2xvcigpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgidGhpY2tuZXNzIiwgc3RhdGUudGhpY2tuZXNzKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIGl0ZW0u
dGhpY2tuZXNzKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTZXRTdGF0ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNldFN0YXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMgPDwg
aXRlbS5zdGF0ZSgpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0TGluZUNhcCYgbGluZUNhcCkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwgbGluZUNhcC5saW5l
Q2FwKCkpOwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtY2FwIiwg
aXRlbS5saW5lQ2FwKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgbGluZURhc2gpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRMaW5lRGFzaCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGxpbmVEYXNoLmRhc2hBcnJheSgp
KTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImRhc2gtb2Zmc2V0IiwgbGluZURhc2guZGFzaE9mZnNl
dCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLWFycmF5Iiwg
aXRlbS5kYXNoQXJyYXkoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGl0
ZW0uZGFzaE9mZnNldCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGxpbmVKb2luKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0TGluZUpvaW4mIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikK
IHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGxpbmVKb2luLmxpbmVKb2luKCkp
OwotICAgIHJldHVybiB0czsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxpbmUtam9pbiIsIGl0ZW0u
bGluZUpvaW4oKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldE1pdGVyTGltaXQmIG1pdGVyTGltaXQpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRNaXRlckxpbWl0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1pdCIsIG1pdGVyTGltaXQubWl0ZXJM
aW1pdCgpKTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJtaXRyZS1saW1p
dCIsIGl0ZW0ubWl0ZXJMaW1pdCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQ2xpcCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXAmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0JiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dCYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0u
cmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZl
ci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFm
bGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5p
bWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3Qi
LCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXRUb1BhdGgmIGl0ZW0p
Cit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIGl0ZW0ud2luZFJ1bGUoKSk7Ci0gICAgcmV0dXJuIHRz
OwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmll
ciIsIGl0ZW0uc291cmNlSW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFp
bnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzb3VyY2UtaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uc291cmNlSW1hZ2VJ
ZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLXJlY3QiLCBp
dGVtLnNvdXJjZUltYWdlUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0
cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJhbmNob3ItcG9pbnQiLCBpdGVtLmFuY2hvclBvaW50KCkpOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgibGVuZ3RoIiwgaXRlbS5nbHlwaHMoKS5zaXplKCkpOwogCi0gICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFn
cykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRl
bS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1Rl
eHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRG
bGFnPiBmbGFncykKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBp
dGVtLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFzVGV4dEZs
YWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiaW1hZ2UtaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1N5c3RlbUltYWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd1N5c3RlbUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8g
RklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9u
IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFn
ZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5j
b250YWlucyhBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImltYWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmll
cigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdHRlcm4tdHJhbnNmb3JtIiwgaXRlbS5wYXR0
ZXJuVHJhbnNmb3JtKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidGlsZS1yZWN0IiwgaXRlbS50
aWxlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdFJl
Y3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwaGFzZSIsIGl0ZW0ucGhhc2UoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJzcGFjaW5nIiwgaXRlbS5zcGFjaW5nKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1JlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVj
dCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImJvcmRlci10aGlja25l
c3MiLCBpdGVtLmJvcmRlclRoaWNrbmVzcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0xpbmUmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTEiLCBpdGVt
LnBvaW50MSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50LTIiLCBpdGVtLnBvaW50Migp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxv
Y2tMb2NhdGlvbigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0u
bG9jYWxBbmNob3IoKSk7CkBAIC04NzUsMzgwICs4NTQsMzUwIEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBpdGVtLndpZHRocygpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5pc1ByaW50aW5nKCkpOwogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZG91YmxlIiwgaXRlbS5kb3VibGVMaW5lcygpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
CiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0VsbGlwc2UmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3RWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdGgmIGl0ZW0sIE9wdGlv
blNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBh
dGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgid2lkdGgiLCBpdGVtLndpZHRoKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgib2Zmc2V0IiwgaXRlbS5vZmZzZXQoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJjb2xvciIsIGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVj
dHMmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHko
InJlY3RzIiwgaXRlbS5yZWN0cygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRl
bS53aWR0aCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RmlsbFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3Im
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29s
b3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgLy8gRklYTUU6IGxvZyBncmFkaWVudC4KICAgICB0
cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQ29tcG9z
aXRlZFJlY3QmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
Q29tcG9zaXRlZFJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJj
b2xvciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb21wb3NpdGUtb3Bl
cmF0aW9uIiwgaXRlbS5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
ImJsZW5kLW1vZGUiLCBpdGVtLmJsZW5kTW9kZSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVkUmVj
dCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSb3VuZGVk
UmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVjdCIsIGl0ZW0ucm91bmRlZFJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xv
ciIsIGl0ZW0uY29sb3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVuZC1tb2RlIiwgaXRl
bS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYgaXRlbSkK
K3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicm91bmRlZC1ob2xl
LXJlY3QiLCBpdGVtLnJvdW5kZWRIb2xlUmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImNv
bG9yIiwgaXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRmlsbExpbmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxBcmMmIGl0ZW0pCit2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRmlsbFF1YWRDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFn
PikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0
dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGaWxsQmV6aWVyQ3VydmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VB
cmMmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VBcmMm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBh
dGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVt
LnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUJlemllckN1cnZlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxs
UGF0aCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxQYXRo
JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJw
YXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgp
KTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRpYSYgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBhaW50RnJhbWVGb3JNZWRp
YSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0czsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKIAogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlUmVjdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQog
ewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImxpbmUtd2lkdGgiLCBpdGVtLmxpbmVXaWR0aCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9r
ZVBhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQ
YXRoJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlRWxsaXBzZSYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0sIE9w
dGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVt
LnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VMaW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgic3RhcnQiLCBpdGVtLnN0YXJ0KCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZW5kIiwgaXRlbS5lbmQoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclJlY3QmIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBp
dGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVyJiBpdGVtKQordm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgib3Bh
Y2l0eSIsIGl0ZW0ub3BhY2l0eSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3Im
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNj
YWxlRmFjdG9yJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzY2FsZS1mYWN0b3IiLCBpdGVtLnNjYWxlRmFjdG9yKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRs
ZSBpdGVtKQordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbUhh
bmRsZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewogICAgIHRzIDw8IGl0
ZW0udHlwZSgpOwogCiAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5
cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJhbnNsYXRlPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8VHJhbnNsYXRlPigpLCBmbGFncyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8Um90YXRlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Um90YXRlPigpLCBm
bGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFNjYWxlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNl
dENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0Q1RNPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8U2V0Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25j
YXRlbmF0ZUNUTT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENvbmNhdGVuYXRl
Q1RNPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9y
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0
cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigp
LCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRo
aWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PFNldFN0YXRlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0
PFNldExpbmVEYXNoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldExpbmVKb2luPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxTZXRNaXRlckxpbWl0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXA+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENs
aXBPdXQ+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwT3V0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVy
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVyPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxDbGlwT3V0VG9QYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsaXBQYXRoPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxEcmF3R2x5cGhzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0lt
YWdlQnVmZmVyPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd0ltYWdlQnVm
ZmVyPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwor
ICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdTeXN0ZW1JbWFnZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RHJhd1N5c3RlbUltYWdlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3UGF0dGVybj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXR0
ZXJuPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdS
ZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGlu
ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdMaW5lPigpLCBmbGFncyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7CisgICAgICAg
IGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4o
KTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdQYXRoPigpLCBmbGFncyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOworICAgICAgICBkdW1wSXRlbSh0cywg
aXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxs
UmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9y
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOworICAgICAgICBkdW1wSXRl
bSh0cywgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8RmlsbFJvdW5kZWRSZWN0PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxMaW5l
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PEZpbGxMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxBcmM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxBcmM+KCk7
CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsQXJjPigpLCBmbGFncyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxRdWFkQ3VydmU6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxGaWxsUXVhZEN1cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxCZXppZXJDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEJl
emllckN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEJlemllckN1
cnZlPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbFBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEVs
bGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
UGFpbnRGcmFtZUZvck1lZGlhPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ry
b2tlUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjaWYg
RU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlQXJjOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VBcmM+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxTdHJva2VBcmM+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJv
a2VRdWFkQ3VydmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VRdWFk
Q3VydmU+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlQmV6aWVyQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUJlemllckN1cnZl
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlQmV6aWVyQ3VydmU+KCks
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTdHJva2VFbGxpcHNlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ry
b2tlRWxsaXBzZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigpOworICAgICAgICBkdW1w
SXRlbSh0cywgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKSwgZmxhZ3Mp
OwogICAgICAgICBicmVhazsKLQogICAgIC8vIEl0ZW1zIHdpdGggbm8gYWRkaXRpb25hbCBkYXRh
LgogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToK
QEAgLTEyNjAsNyArMTIwOSw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiB0czsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBkMTQ0MDc3M2FlZDNhZjg2NmY0OWUyNzY5MWQ1
ZmM3OTk5ZmYxNjc3Li4wMDU0ODQ2MTM0ODIxMGI4YzUxMmM2MWUxZWY4YTA2ZTAwMjEzYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0
IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCitlbnVt
IGNsYXNzIEFzVGV4dEZsYWcgOiB1aW50OF90Owogc3RydWN0IEl0ZW1IYW5kbGU7CiAKIC8qIGlz
SW5saW5lSXRlbSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IG5lZWRzIHRvIGJlIHBhc3Nl
ZCB0aHJvdWdoIElQQzo6RW5jb2RlciBpbiBvcmRlciB0byBzZXJpYWxpemUsCkBAIC01OTIsNyAr
NTkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlwaHMoY29uc3QgRm9u
dCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1
bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiwgVmVjdG9yPEdseXBo
QnVmZmVyQWR2YW5jZSwgMTI4PiYmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50
JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbmVlZHNHbHlw
aERlY29tcG9zaXRpb24pIGNvbnN0OwogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQpAQCAtMjA1MSw2NyArMjA1Miw4MCBAQCBzaXplX3QgcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogSXRl
bVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogI2lm
ICFMT0dfRElTQUJMRUQKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFRyYW5zbGF0ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY2FsZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0Q1RN
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBDb25jYXRlbmF0ZUNUTSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVT
dHJva2VDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYpOwotV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGlu
ZUNhcCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgU2V0TGluZURhc2gmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVKb2luJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRNaXRlckxpbWl0Jik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBDbGlwJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBDbGlwT3V0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dFRvUGF0
aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgQ2xpcFBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3R2x5cGhz
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYpOwotV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1N5c3RlbUlt
YWdlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3UGF0dGVybiYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd1JlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lJik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGlu
ZXNGb3JUZXh0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyJik7Ci1XRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RWxsaXBzZSYp
OwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd1BhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdQYXRoJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGll
bnQmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJvdW5kZWRSZWN0Jik7Ci1XRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZSYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgVHJhbnNsYXRlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFJvdGF0ZSYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBTY2FsZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRDVE0mLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
Q29uY2F0ZW5hdGVDVE0mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IFNldElubGluZVN0cm9rZUNvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0
cm9rZVRoaWNrbmVzcyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRTdGF0ZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBTZXRMaW5lQ2FwJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldExpbmVEYXNoJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFNldExpbmVKb2luJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldE1pdGVyTGltaXQmLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgQ2xpcCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0JiwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0
IENsaXBUb0ltYWdlQnVmZmVyJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXRUb1BhdGgmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgQ2xpcFBhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9F
WFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0dseXBocyYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3
SW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdlJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdTeXN0ZW1JbWFnZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UGF0dGVybiYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBEcmF3UmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TGluZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0VsbGlwc2UmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRHJhd1BhdGgmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZp
bGxSZWN0V2l0aEdyYWRpZW50JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxDb21wb3NpdGVkUmVjdCYs
IE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgRmlsbExpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxBcmMmKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxCZXppZXJDdXJ2ZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQXJjJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFkQ3VydmUmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUJlemllckN1cnZlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBGaWxsTGluZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQXJjJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxRdWFkQ3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEJlemllckN1cnZl
JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0o
VGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUFyYyYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VRdWFk
Q3VydmUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFBhdGgm
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IEZpbGxFbGxpcHNlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mLCBjb25zdCBGaWxsUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsRWxsaXBzZSYsIE9wdGlv
blNldDxBc1RleHRGbGFnPik7CiAjaWYgRU5BQkxFKFZJREVPKQotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlh
Jik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBQYWlu
dEZyYW1lRm9yTWVkaWEmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwogI2VuZGlmIC8vIEVOQUJM
RShWSURFTykKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IFN0cm9rZVJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVBhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUVsbGlwc2UmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFN0cm9rZUxpbmUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IENsZWFyUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
QXBwbHlEZXZpY2VTY2FsZUZhY3RvciYpOwotCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBJdGVtSGFuZGxlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IFN0cm9rZVJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUGF0aCYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBTdHJva2VFbGxpcHNlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZUxpbmUm
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShU
ZXh0U3RyZWFtJiwgY29uc3QgQ2xlYXJSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZhY3RvciYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVCYgaXRlbSkKK3sKKyAgICBkdW1w
SXRlbSh0cywgaXRlbSwgeyBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucywg
QXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzIH0pOworICAgIHJldHVybiB0
czsKK30KKwordm9pZCBkdW1wSXRlbUhhbmRsZShUZXh0U3RyZWFtJiwgY29uc3QgSXRlbUhhbmRs
ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CisKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlKQoreworICAg
IGR1bXBJdGVtSGFuZGxlKHRzLCBpdGVtSGFuZGxlLCB7IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxh
dGZvcm1PcGVyYXRpb25zLCBBc1RleHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMg
fSk7CisgICAgcmV0dXJuIHRzOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlM
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMDc0YmY2
MDkzZWQzNzhlMTgxMWZmOGZjNmNhNWQwNTdiNzdlOTk5Ny4uNzY1OGY4MzQyZGVmNmNlMmU0MTAz
MzgxMzMzMDM4NjRkOGYyMWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTYxLDE3ICsxNjEsMjAgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAg
ICByZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VS
ZWN0LCBmaWx0ZXIpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBz
dGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0
YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pCiB7Ci0gICAgaWYgKG1fZGVjb25zdHJ1Y3RE
cmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKSB7CisgICAgaWYgKG1fZGVj
b25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKQorICAgICAg
ICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiUmVjb3JkZXI6OmRyYXdHbHlwaHMg
LSBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiAiIDw8IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsK
KworICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlw
aHM6OlllcyAmJiAoIW5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uIHx8ICpuZWVkc0dseXBoRGVjb21w
b3NpdGlvbikpIHsKICAgICAgICAgaWYgKCFtX2RyYXdHbHlwaHNSZWNvcmRlcikKICAgICAgICAg
ICAgIG1fZHJhd0dseXBoc1JlY29yZGVyID0gbWFrZVVuaXF1ZTxEcmF3R2x5cGhzUmVjb3JkZXI+
KCp0aGlzLCBtX2luaXRpYWxTY2FsZSk7CiAKLSAgICAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIt
PmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbV9kcmF3
R2x5cGhzUmVjb3JkZXItPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICB9CiAKICAgICBkcmF3R2x5cGhz
QW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2lu
dCwgc21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9
CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2Fs
QW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjAwNDgzMzZhN2Y4MDkzODJlZGQwZDAyNzQ1NWQ4
MmY0OGZiZjgzNy4uNjIzNDQ4ZGExNDY3YjgwYjE1N2ExNzY3YTZmZjkzYzE4Y2M1NzNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yMTIsNyArMjEyLDcgQEAg
cHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdl
UmVjdCwgRmlsdGVyJiwgRmlsdGVyUmVzdWx0cyYpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIERpZERlY29tcG9zZUdseXBocyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01v
ZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0dseXBoc0FuZENhY2hlRm9udChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCA5N2UxMWNiODYwZDkxOTAwMzllZTdlYWFkN2MzOGRmMTQyOWViZjlkLi43
OWRhZWE3NTc2MjM5YWIwNTIxYTA4N2Y1MTVmNmNhNjNlMjgzYjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xMDcsNTUgKzEwNyw1NyBAQCBpbmxpbmUg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNl
dFN0YXRlSXRlbShHcmFwaAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5RHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVz
b3VyY2VIZWFwLCBEcmF3R2x5cGhzJiBkcmF3R2x5cGhzSXRlbSkKK2lubGluZSBzdGF0aWMgc3Rk
OjpwYWlyPHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiwgR3JhcGhp
Y3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGFwcGx5RHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFJlc291cmNlSGVhcCYgcmVzb3VyY2VIZWFwLCBEcmF3R2x5
cGhzJiBkcmF3R2x5cGhzSXRlbSwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21w
b3NpdGlvbikKIHsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGRyYXdHbHlwaHNJdGVt
LmZvbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSByZXNvdXJjZUhlYXAuZ2V0
Rm9udChyZXNvdXJjZUlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGRyYXdHbHlwaHNJdGVtLmFwcGx5
KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
YXV0byBkaWREZWNvbXBvc2UgPSBkcmF3R2x5cGhzSXRlbS5hcHBseShjb250ZXh0LCAqZm9udCwg
bmVlZHNHbHlwaERlY29tcG9zaXRpb24pOworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IGRpZERlY29tcG9zZSB9OwogICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgIHJldHVybiB7IHJlc291cmNlSWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0OjpEaWREZWNv
bXBvc2VHbHlwaHM6Ok5vIH07CiB9CiAKLXN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJl
cGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorYXV0byBSZXBsYXllcjo6YXBwbHlJ
dGVtKEl0ZW1IYW5kbGUgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0CiB7CiAgICAgc3dpdGNoIChp
dGVtLnR5cGUoKSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgogICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFn
ZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAs
IGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Ci0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlEcmF3R2x5cGhzKG1fY29udGV4dCwgbV9yZXNvdXJj
ZUhlYXAsIGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpKQotICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9OworCisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczogeworICAgICAgICBhdXRvIGRyYXdHbHlwaHNSZXN1bHQgPSBhcHBseURyYXdH
bHlwaHMobV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKSwg
bV9kaXNwbGF5TGlzdC5jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpKTsK
KyAgICAgICAgaWYgKGRyYXdHbHlwaHNSZXN1bHQuZmlyc3QpCisgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUoZHJhd0ds
eXBoc1Jlc3VsdC5maXJzdCksIHsgfSB9OworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSwgZHJh
d0dseXBoc1Jlc3VsdC5zZWNvbmQgfTsKKyAgICB9CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1fY29udGV4dCwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2Fj
aGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsg
fSB9OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd05hdGl2ZUltYWdlPihtX2NvbnRleHQsIG1fcmVz
b3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpLCB7IH0gfTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgog
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlT
b3VyY2VJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0
ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1v
dmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9OworICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShtX2Nv
bnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtKSkKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlz
c2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIpLCB7IH0gfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IH07CiB9CiAKIFJl
cGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTg3LDEyICsxODksMTYgQEAgUmVwbGF5UmVzdWx0
IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFj
a1JlcGxheUxpc3QKIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJl
YW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAo
YXV0byBbcmVhc29uRm9yU3RvcHBpbmcsIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXJd
ID0gYXBwbHlJdGVtKGl0ZW0pOyByZWFzb25Gb3JTdG9wcGluZykgewotICAgICAgICAgICAgcmVz
dWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKnJlYXNvbkZvclN0b3BwaW5nOwotICAgICAgICAgICAg
cmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGFwcGx5UmVzdWx0ID0gYXBw
bHlJdGVtKGl0ZW0pOworICAgICAgICBpZiAoYXBwbHlSZXN1bHQuc3RvcFJlYXNvbikgeworICAg
ICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gKmFwcGx5UmVzdWx0LnN0b3BSZWFz
b247CisgICAgICAgICAgICByZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IFdURk1vdmUoYXBwbHlSZXN1bHQucmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGFwcGx5UmVzdWx0LmRpZERlY29tcG9zZUds
eXBocyAmJiAqYXBwbHlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzID09IEdyYXBoaWNzQ29udGV4
dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpZZXMpCisgICAgICAgICAgICByZXN1bHQuZGlkRGVjb21w
b3NlR2x5cGhzID0gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6OlllczsKKwog
ICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKIAog
ICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggMjU4NGE1MzlmYzA1MzA4YzYyNDJhMTFmYzE3NjVl
ZGJhOGIwZDlmNi4uNGUzNTA0ZmI1MGUyMjg3ZGQ2NWI0NjI1NzFhNTMzNWFkMjk5OTJmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzIsNyArMzMsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlcGxh
eVJlc3VsdCB7CiAgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uRm9yU3RvcHBpbmcgeyBT
dG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zIH07CisgICAgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gZGlkRGVjb21wb3NlR2x5cGhzOwog
fTsKIAogY2xhc3MgUmVwbGF5ZXIgewpAQCAtNjEsNyArNjIsMTIgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwor
ICAgIHN0cnVjdCBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+IHN0b3BSZWFzb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRpZERlY29tcG9zZUds
eXBoczsKKyAgICB9OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgbV9kaXNwbGF5TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcAppbmRleCBjMzI4YjhmYjY2N2ViYWFhY2VmYzJkZWQ1MGY5ODg0NzIwMDBhZjhkLi5l
NGE0YTI1NzAxODJjZWM1MzZiZDEyMmNiNzMxZjFlMDI0ODcyYTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJI
YXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCkBAIC0zOCw5ICszOCwxMCBAQCBEcmF3
R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVy
LCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9u
dCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2Rl
KTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOyAg
ICAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCBlN2U2ZTZhMjczMzhl
NGY3OTkxN2RlNjYzZTY3Y2JjZTY2MjgzMGUwLi4xNDEyMjM0NjdlM2EyNzY1YTNiNjc3NzljNzlj
ZDIzNTJjMDQ1OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxDbGVhclJlY3Q+KHJlY3QpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udFNtb290aGluZ01v
ZGUgZm9udFNtb290aGluZykKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21v
b3RoaW5nTW9kZSBmb250U21vb3RoaW5nLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogICAgIHN0
cnVjdCBEcmF3R2x5cGhzIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
Q2Fpcm86OkZpbGxTb3VyY2UsIENhaXJvOjpTdHJva2VTb3VyY2UsIENhaXJvOjpTaGFkb3dTdGF0
ZSwgRmxvYXRQb2ludCwgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+LCBmbG9hdCwgVmVjdG9y
PGNhaXJvX2dseXBoX3Q+LCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBGbG9h
dFNpemUsIENvbG9yLCBGb250U21vb3RoaW5nTW9kZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3
R2x5cGhzKCkgPSBkZWZhdWx0OwpAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ckdseXBoCiAgICAgfTsKIAogICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiAK
ICAgICBhdXRvIHhPZmZzZXQgPSBwb2ludC54KCk7CiAgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+
IGNhaXJvR2x5cGhzKG51bUdseXBocyk7CkBAIC01MzgsNiArNTM4LDggQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyR2x5cGgKICAgICAgICAgUmVmUHRyPGNhaXJvX3NjYWxlZF9mb250X3Q+KGZvbnQucGxh
dGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKSwKICAgICAgICAgZm9udC5zeW50aGV0aWNCb2xkT2Zm
c2V0KCksIFdURk1vdmUoY2Fpcm9HbHlwaHMpLCB4T2Zmc2V0LCBzdGF0ZS50ZXh0RHJhd2luZ01v
ZGUoKSwKICAgICAgICAgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKCksIHN0YXRlLmRyb3BTaGFkb3co
KS5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3coKS5jb2xvciwgZm9udFNtb290aGluZykpOworCisg
ICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZDY1MjdjNDdkNjE5Njc4NWRjYjFiMzhk
ODNmZWM2NDIxZDEzNjZhNC4uMGNhNjE3MWU1NjNiNzVhMGEyODE4NDA2OGZiMTBkMGM0MDRjYWI1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Ryb2tlRWxsaXBz
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJhd0ds
eXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBo
cywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2Rl
KSBvdmVycmlkZTsKKyAgICBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBXZWJD
b3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IFdlYkNv
cmU6OkdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2RlLCBzdGQ6Om9wdGlvbmFs
PGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkZpbHRlciYsIFdlYkNvcmU6OkZpbHRlclJlc3VsdHMmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKaW5kZXggYWQ0YmExZDY0MTdlNzE4
NmNjMWVhYTViMTM1YWU1ZTFhNDQ1NzdiNi4uYTk4ZmE4MmY3ZmNjMjQ0NDAxMmMyZmQ4NWRkNzU1
MzZjNDA2ODIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKQEAgLTM4LDkgKzM4LDEw
IEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4
dCYgb3duZXIsIGZsb2F0LCBEZXJpdmVGb250CiB7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
IGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVt
R2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBz
bW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hl
Rm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21v
b3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5
cGhzOjpObzsgICAgCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4IDRmMzM0MmZhMzkxMDE3NDY0ZjM0NGI1NDkz
ZjMyNGM0YTgyOWVjN2EuLjgyNzRjOTM4OTA4YzI1OTcwOTg4YmM0ZTY1YTllY2RjODA0NzgyOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMjMsNiArMjMs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRQYWludGVyLmgiCiAKKyNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCkBAIC0xMjMsNyArMTI0LDExIEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBh
aW50VGV4dE9yRW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1CiAgICAgICAgIC8vIFJlcGxheWluZyBiYWNrIGEgd2hvbGUgY2FjaGVkIGdseXBoIHJ1biB0
byB0aGUgR3JhcGhpY3NDb250ZXh0LgogICAgICAgICBtX2NvbnRleHQudHJhbnNsYXRlKHRleHRP
cmlnaW4pOwogICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIobV9jb250ZXh0
LCAqbV9nbHlwaERpc3BsYXlMaXN0KTsKLSAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CisgICAg
ICAgIGF1dG8gcmVwbGF5UmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CisgICAgICAgIAorICAg
ICAgICBpZiAocmVwbGF5UmVzdWx0LmRpZERlY29tcG9zZUdseXBocykKKyAgICAgICAgICAgIG1f
Z2x5cGhEaXNwbGF5TGlzdC0+c2V0Q29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRp
b24oKnJlcGxheVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMgPT0gR3JhcGhpY3NDb250ZXh0OjpE
aWREZWNvbXBvc2VHbHlwaHM6Olllcyk7CisKICAgICAgICAgbV9jb250ZXh0LnRyYW5zbGF0ZSgt
dGV4dE9yaWdpbik7CiAgICAgfQogICAgIG1fZ2x5cGhEaXNwbGF5TGlzdCA9IG51bGxwdHI7CkBA
IC0yNTUsOSArMjYwLDE4IEBAIFN0cmluZyBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5
TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dChUZXh0JiB0ZXh0Tm9kZSwgT3B0CiAgICAgICAgICAgICBk
aXNwbGF5TGlzdCA9IFRleHRQYWludGVyOjpnbHlwaERpc3BsYXlMaXN0SWZFeGlzdHMoKnRleHRC
b3guaW5saW5lQm94KCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChkaXNwbGF5TGlzdCkgewotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZGlzcGxheUxpc3QtPmFzVGV4dChmbGFncykpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBE
aXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6RGVjb21wb3Nlc0RyYXdHbHlwaHMpIHsKKyAgICAgICAg
ICAgICAgICAvLyBSZXBsYXkgZGlzcGxheUxpc3QgdGhyb3VnaCBhIGNvbnRleHQgd2l0aCBEZWNv
bnN0cnVjdERyYXdHbHlwaHM6OlllcyBzbyB0aGF0IHRoZSBvdXRwdXQgZGlzcGxheSBsaXN0IHNo
b3dzIHRoZSBkcmF3aW5nIGNvbW1hbmRzIGZvciBkZWNvbXBvc3BlZCBnbHlwaHMuCisgICAgICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0
PiBvdXRwdXREaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlz
cGxheUxpc3Q+KCk7CisgICAgICAgICAgICAgICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCBy
ZWNvcmRpbmdDb250ZXh0KCpvdXRwdXREaXNwbGF5TGlzdCwgeyB9LCB7IH0sIHsgfSwgRGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CisgICAgICAgICAg
ICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKHJlY29yZGluZ0NvbnRleHQsICpk
aXNwbGF5TGlzdCk7CisgICAgICAgICAgICAgICAgYXV0byByZXBsYXlSZXN1bHQgPSByZXBsYXll
ci5yZXBsYXkoKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvdXRwdXREaXNwbGF5
TGlzdC0+YXNUZXh0KGZsYWdzKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChkaXNwbGF5TGlzdC0+YXNUZXh0KGZsYWdzKSk7CiAgICAgICAgIH0K
KworICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICB9CiAKICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ4
MWE1YzJhM2Y3ZmRjOGVjM2IxZjJlYTNkOTQxOGEwMDY4YzdiMjEuLmVlNWNmYzg2YTE0M2ZlMDhk
NWM1OTUzMjk5NjE0YjMxZWUwMzlmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTMxNzUsNiArMzE3NSw5IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJuYWxzOjpk
aXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgdW5zaWduZWQKICAgICBpZiAo
ZmxhZ3MgJiBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUykKICAgICAg
ICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkluY2x1ZGVz
UGxhdGZvcm1PcGVyYXRpb25zKTsKIAorICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElTVF9ERUNP
TVBPU0VTX0RSQVdfR0xZUEhTKQorICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5
TGlzdDo6QXNUZXh0RmxhZzo6RGVjb21wb3Nlc0RyYXdHbHlwaHMpOworCiAgICAgaWYgKCFlbGVt
ZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkQWNjZXNzRXJyb3IgfTsKIApAQCAtMzIwMCw2ICszMjAzLDkgQEAgRXhjZXB0aW9uT3I8
U3RyaW5nPiBJbnRlcm5hbHM6OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50JiBl
bGVtZW50LCB1bnMKICAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZP
Uk1fT1BFUkFUSU9OUykKICAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6
OkFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKTsKIAorICAgIGlmIChmbGFn
cyAmIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTKQorICAgICAgICBkaXNwbGF5
TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6RGVjb21wb3Nlc0RyYXdHbHlw
aHMpOworCiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApAQCAtMzIzMyw2ICsz
MjM5LDkgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmNhY2hlZEdseXBoRGlzcGxh
eUxpc3RzRm9yVGV4dE5vZGUoTm9kZSYgbm9kZSwgdW4KICAgICBpZiAoZmxhZ3MgJiBESVNQTEFZ
X0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUykKICAgICAgICAgZGlzcGxheUxpc3RG
bGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRp
b25zKTsKIAorICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZ
UEhTKQorICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0Rmxh
Zzo6RGVjb21wb3Nlc0RyYXdHbHlwaHMpOworCiAgICAgcmV0dXJuIFRleHRQYWludGVyOjpjYWNo
ZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KGRvd25jYXN0PFRleHQ+KG5vZGUp
LCBkaXNwbGF5TGlzdEZsYWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggYjRjYWRkZDIyNDQyMzM2NmViZjVjOWVjMmY2M2VjN2Y1MzBlOTA3Yi4uOGYzNmVjN2U0ZTIx
NTg2N2I2YWY2Y2FlODQ3YTUxOGE0MDVkNGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCkBAIC00NzQsNiArNDc0LDcgQEAgcHVibGljOgogICAgIGVudW0gewogICAgICAgICAvLyBW
YWx1ZXMgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBJbnRlcm5hbHMuaWRsLgogICAgICAg
ICBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUyA9IDEsCisgICAgICAg
IERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTID0gMgogICAgIH07CiAgICAgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYsIHVuc2lnbmVk
IHNob3J0IGZsYWdzKTsKICAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHJlcGxheURpc3BsYXlMaXN0
Rm9yRWxlbWVudChFbGVtZW50JiwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDU2ZmY1MDNhYmUyZDFmMDZkYTU2MzA2MzM3YzBiMGRi
ODY0ZDhiZGQuLjFhM2VkY2M0Y2VkMWRmMzk2YjU0YTk3YjUxN2NjZjQ1MmExZjQxNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTYwMCw2ICs2MDAsNyBAQCB0eXBlZGVm
IChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAKICAgICAvLyBG
bGFncyBmb3IgZGlzcGxheUxpc3RGb3JFbGVtZW50LgogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IERJU1BMQVlfTElTVF9JTkNMVURFU19QTEFURk9STV9PUEVSQVRJT05TID0gMTsKKyAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUyA9IDI7
CiAgICAgLy8gUmV0dXJucyB0aGUgcmVjb3JkZWQgZGlzcGxheSBsaXN0LgogICAgIERPTVN0cmlu
ZyBkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBmbGFncyA9IDApOwogICAgIC8vIFJldHVybnMgdGhlIGRpc3BsYXkgbGlzdCB0aGF0
IHdhcyBhY3R1YWxseSBwYWludGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4
IDdhMDczMmUyOTJlZWNlZjU2MzA4MDNmNTBkNjg4NzllNDBiZDU0NzguLjdhYmIwNzJmYzM4YTYz
N2Q2N2U5NTYwYzNjNjk5NWY0OWYyZGVjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRy
YXdHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihEaXNwbGF5TGlzdDo6RAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCAqZm9udCk7Cisg
ICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCAqZm9udCwgc3RkOjpvcHRpb25hbDxib29sPiB7
IH0pOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzQ3MjZjNzY1NmMw
Y2MzZTEzNTQxMThhZWQ0ZGQ4Njk1ZGJjNDQ5Li5iODEyNjNjYmRmNjJmNTllYTIwODM3N2ZjNDEx
Y2JmOTA3Y2FmYzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJo
ZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRlciB3aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQy
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVt
b2ppLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3Bs
YXktbGlzdC1lbW9qaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvZ2x5cGgtZGlz
cGxheS1saXN0LXN2Zy1mb250LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90
ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mtd2syL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAyMi0wNS0xNCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1JlcGFpbnRdIEJvcmRlciBpZ25vcmVzIGN1cnJlbnRDb2xvciBjaGFu
Z2Ugd2hlbiBob3ZlcmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjkxNzZhNWZhYTljOTk2OTA2
MjQyZDFjZWM3NzMxY2QyOTMyZWJjMi4uZWQ3NzNhYTNmNjM3MjU4ODU2Y2Y5NmNjNzIxNzg2NzA4
Yjc3YjFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC01MTA4LDYgKzUxMDgsOCBAQCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLXZpYS1v
cHRpb25zLmh0bWwgWyBEdQogCiAjIERpc3BsYXkgbGlzdCBsb2dnaW5nIGlzIG9ubHkgYXZhaWxh
YmxlIGluIGRlYnVnCiBbIFJlbGVhc2UgXSBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWNv
bG9yLmh0bWwgWyBTa2lwIF0KK1sgUmVsZWFzZSBdIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxp
c3QtZW1vamkuaHRtbCBbIFNraXAgXQorWyBSZWxlYXNlIF0gZmFzdC90ZXh0L2dseXBoLWRpc3Bs
YXktbGlzdC1zdmctZm9udC5odG1sIFsgU2tpcCBdCiAKICMgUGx1Z2lucwogIyBGSVhNRTogUmVt
b3ZlIHRoZXNlIHRlc3RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459501</attachid>
            <date>2022-05-17 08:55:24 -0700</date>
            <delta_ts>2022-05-17 13:09:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240422-20220517085523.patch</filename>
            <type>text/plain</type>
            <size>101991</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">RnJvbSBkMjAxN2VhNzM4ZjdkMWJlY2VkMTU1NmVkYTlkODE5Y2I1ZTgzYTljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBGcmFzZXIgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgMTcgTWF5IDIwMjIgMDg6NTQ6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBB
dm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2luZyBjYWNo
ZWQKIGdseXBoIGJ1ZmZlcnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MDQyMgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTb3VyY2UvV2ViQ29yZToKCldo
ZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVudGx5LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxh
eSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdHbHlwaAppdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0
Q2FjaGUsIGFuZCB1c2VzIGl0ZW1zIGZyb20gdGhlIGNhY2hlIGluClRleHRQYWludGVyOjpwYWlu
dFRleHRPckVtcGhhc2lzTWFya3MoKS4KCkluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBn
ZW5lcmFsIGdvZXMgdG8gdGhlIEdQVSBQcm9jZXNzIHZpYQpSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHksIHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNt
LiBJbiBvcmRlciB0bwphdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nlc3MsIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQpEZWNvbnN0cnVjdERyYXdHbHlw
aHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBo
cygpIHVzZSBhCkRyYXdHbHlwaHNSZWNvcmRlciB0byBkZXRlY3Qgd2hldGhlciB3ZSBzaG91bGQg
ZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2VyIGxldmVsIGdseXBoCmFuZCBpbWFnZSBk
cmF3aW5nLCB1c2luZyBhIGN1c3RvbSBDR0NvbnRleHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBp
bnRyb2R1Y2VzIG1lYXN1cmFibGUKb3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hl
biB3ZSBjYW4uCgpUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3ZlcmhlYWQg
ZXZlcnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKZ2x5cGggYnVmZmVyLCB3ZSBj
YW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8gc2F5IHdoZXRoZXIg
YW55CmRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5cGggZGVjb21wb3NpdGlvbi4gVGhp
cyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgoKKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZp
ZWQgdG8gZGV0ZWN0IHdoZXRoZXIgZHJhd2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKICBp
bWFnZSBkcmF3aW5nLCBvciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBw
ZW4gd2l0aCBzb21lIGtpbmQgb2YgZm9udHMpLAogIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdH
bHlwaHMoKSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRo
aXMuCiogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNhdGluZyB3aGV0
aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCiAgb24gcGxheWJhY2suCiogVGV4
dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygpIGNhbGxzIHNldENvbnRhaW5zSXRl
bXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkKICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlz
dCB3aGVuIGdseXBoIGRlY29tcG9zaXRpb24gd2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRp
b24KICBjb250ZXh0IChlLmcuIHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5KS4KCkluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwgd2UgZW5o
YW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKRElTUExBWV9MSVNUX0RFQ09N
UE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBhIERpc3BsYXlMaXN0OjpB
c1RleHQgb3B0aW9uLgpUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0
Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkgcmVwbGF5aW5nIHRoZQpkaXNwbGF5IGxp
c3QgdGhyb3VnaCBhIERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0
aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAp3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgoKRGlzcGxheSBs
aXN0IGxvZ2dpbmcgY3VycmVudGx5IGR1bXBzIHJlc291cmNlIGlkZW50aWZpZXJzLCB3aGljaCBp
cyBhIHByb2JsZW0gZm9yCmxheW91dCB0ZXN0IGJlY2F1c2UgdGhleSBhcmUndCBuZWNlc3Nhcmls
eSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmll
cnMKZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFnYXRlIGludG8gYWxsIHRoZSBkaXNwbGF5IGl0
ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmluZyB0aGVtIHRvCmNvbnZlcnRlZCBmcm9tIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIC4uLikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0
YWtlIGEgZmxhZ3MgYXJndW1lbnQuCgpUZXN0czogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS5odG1sCiAgICAgICBmYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250
Lmh0bWwKCiogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHA6
CihXZWJDb3JlOjpCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0Lmg6CiogcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CiogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CiogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CihXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdHbHlwaHMpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQu
aDoKKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHA6CihXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgoo
V2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UpOgooV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4pOgooV2ViQ29yZTo6RHJhd0dseXBoc1Jl
Y29yZGVyOjpkcmF3R2x5cGhzKToKKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojphc1RleHQg
Y29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkdW1wIGNvbnN0KToK
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29t
cG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzZXRD
b250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbik6CiogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaDoKKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CihXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0dseXBoczo6YXBwbHkgY29uc3QpOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmR1bXBJ
dGVtKToKKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpkdW1wSXRlbUhhbmRsZSk6CiogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpvcGVyYXRvcjw8KToKKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHA6CihXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRy
YXdHbHlwaHMpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmg6CiogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwOgooV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5RHJhd0dseXBocyk6CihXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CihXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgooV2Vi
Q29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyk6CihXZWJDb3JlOjpU
ZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCk6Ciog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpkaXNwbGF5TGlzdEZv
ckVsZW1lbnQpOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXBsYXlEaXNwbGF5TGlzdEZvckVsZW1l
bnQpOgooV2ViQ29yZTo6SW50ZXJuYWxzOjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHRO
b2RlKToKKiB0ZXN0aW5nL0ludGVybmFscy5oOgoqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKClNv
dXJjZS9XZWJLaXQ6CgpXaGVuIHRleHQgaXMgcGFpbnRpbmcgZnJlcXVlbnRseSwgVGV4dFBhaW50
ZXIgY2FjaGVzIGRpc3BsYXkgbGlzdHMgY29uc2lzdGluZyBvZiBEcmF3R2x5cGgKaXRlbXMgaW4g
R2x5cGhEaXNwbGF5TGlzdENhY2hlLCBhbmQgdXNlcyBpdGVtcyBmcm9tIHRoZSBjYWNoZSBpbgpU
ZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKCkuCgpJbmRlcGVuZGVudGx5LCB0
ZXh0IGRyYXdpbmcgaW4gZ2VuZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxh
eSBsaXN0IG1lY2hhbmlzbS4gSW4gb3JkZXIgdG8KYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4gdGhl
IEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUKRGVj
b25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQpEcmF3R2x5cGhzUmVjb3JkZXIgdG8gZGV0ZWN0IHdo
ZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdpbmcgaW50byBsb3dlciBsZXZlbCBn
bHlwaAphbmQgaW1hZ2UgZHJhd2luZywgdXNpbmcgYSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3
R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBtZWFzdXJhYmxlCm92ZXJoZWFkLCBzbyB3ZSB3YW50
IHRvIGF2b2lkIGl0IHdoZW4gd2UgY2FuLgoKVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1Jl
Y29yZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCmds
eXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlzcGxheSBsaXN0
IHRvIHNheSB3aGV0aGVyIGFueQpkcmF3R2x5cGhzKCkgY2FsbHMgdHJpZ2dlcmVkIGdseXBoIGRl
Y29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93czoKCiogRHJhd0dseXBoc1Jl
Y29yZGVyIGlzIG1vZGlmaWVkIHRvIGRldGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0
cmlnZ2VyZWQgYW55CiAgaW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5n
ICh3aGljaCBjYW4gaGFwcGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKICBhbmQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1
bHQgaW5kaWNhdGluZyB0aGlzLgoqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFsPGJvb2w+
IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5lZAogIG9u
IHBsYXliYWNrLgoqIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoKSBjYWxs
cyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbigpCiAgb24gdGhlIGNh
Y2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBnbHlwaCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQg
YnkgdGhlIGRlc3RpbmF0aW9uCiAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSkuCgpJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRlY29t
cG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBhCkRJ
U1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNoIHR1cm5zIGludG8g
YSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KVGV4dFBhaW50ZXI6OmNhY2hlZEdseXBoRGlz
cGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25kcyB0byB0aGlzIGJ5IHJlcGxheWlu
ZyB0aGUKZGlzcGxheSBsaXN0IHRocm91Z2ggYSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyBy
ZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBkaXNwbGF5IGxpc3QKd2l0aCBkZWNvbXBvc2VkIGds
eXBocy4KCkRpc3BsYXkgbGlzdCBsb2dnaW5nIGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVu
dGlmaWVycywgd2hpY2ggaXMgYSBwcm9ibGVtIGZvcgpsYXlvdXQgdGVzdCBiZWNhdXNlIHRoZXkg
YXJlJ3QgbmVjZXNzYXJpbHkgc3RhYmxlLiBTbyB3ZSBwbHVtYiB0aHJvdWdoIGEgSW5jbHVkZXNS
ZXNvdXJjZUlkZW50aWZpZXJzCmZsYWcsIHdoaWNoIG5lZWRzIHRvIHByb3BhZ2F0ZSBpbnRvIGFs
bCB0aGUgZGlzcGxheSBpdGVtIGxvZ2dpbmcgZnVuY3Rpb25zLCByZXF1aXJpbmcgdGhlbSB0bwpj
b252ZXJ0ZWQgZnJvbSBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCAuLi4pIHRvIGR1bXBJdGVtKCkg
ZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGZsYWdzIGFyZ3VtZW50LgoKKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgooV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpkcmF3R2x5cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgoKTGF5b3V0
VGVzdHM6CgoqIFRlc3RFeHBlY3RhdGlvbnM6CiogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxp
c3QtZW1vamkuaHRtbDogQWRkZWQuCiogZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1zdmct
Zm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qt
c3ZnLWZvbnQuaHRtbDogQWRkZWQuCiogcGxhdGZvcm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgt
ZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0tLQogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgIHwgIDkxICsrKysrCiBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKysrCiAuLi4vZ3JhcGhp
Y3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAgICAgfCAgIDcgKy0KIC4uLi9ncmFwaGlj
cy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggICAgICB8ICAgMiArLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oICAgIHwgICA0ICstCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCAgICAgfCAgIDMgKy0KIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCAgICAgICB8ICAgNCArLQogLi4uL3BsYXRmb3JtL2dy
YXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCAgIHwgICAyICstCiAuLi4vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwICAgfCAgIDYgKy0KIC4uLi9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5oICAgICB8ICAgMiArLQogLi4uL2NvcmV0ZXh0L0RyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAgIHwgIDEzICstCiAuLi4vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCAgICAgfCAgMTEgKy0KIC4uLi9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaCAgICAgICB8ICAxMCArLQogLi4uL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmggICAgICAgIHwgICA2ICsKIC4uLi9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAgICAgICAgICB8IDMxNCArKysrKysrKy0tLS0tLS0tLS0KIC4uLi9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oICB8IDEzMCArKysrLS0tLQogLi4u
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAgICAgIHwgIDExICstCiAuLi4v
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCAgICAgICAgfCAgIDIgKy0KIC4uLi9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgICAgICB8ICA1NiArKy0tCiAuLi4v
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCAgICAgICAgfCAgMTAgKy0KIC4uLi9o
YXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgICB8ICAgMyArLQogLi4uL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCAgIHwgICA2ICstCiAuLi4vY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCAgICAgfCAgIDIgKy0KIC4uLi9ncmFw
aGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCAgICB8ICAgMyArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcCAgICAgIHwgIDIwICstCiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgICAgICAgICAgfCAgIDkgKwogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCAgICAgICAgICB8ICAgMSArCiAuLi4vZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgICAgfCAgIDIgKy0KIExheW91dFRlc3RzL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArCiBMYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL2dseXBoLWRpc3BsYXktbGlz
dC1lbW9qaS1leHBlY3RlZC50eHQgICAgIHwgIDE5ICsrCiAuLi4vZmFzdC90ZXh0L2dseXBoLWRp
c3BsYXktbGlzdC1lbW9qaS5odG1sICAgfCAgMjkgKysKIC4uLi9nbHlwaC1kaXNwbGF5LWxpc3Qt
c3ZnLWZvbnQtZXhwZWN0ZWQudHh0ICB8ICAxOSArKwogLi4uL3RleHQvZ2x5cGgtZGlzcGxheS1s
aXN0LXN2Zy1mb250Lmh0bWwgICAgIHwgIDM1ICsrCiAuLi4vZ2x5cGgtZGlzcGxheS1saXN0LWVt
b2ppLWV4cGVjdGVkLnR4dCAgICAgfCAgMTkgKysKIDM2IGZpbGVzIGNoYW5nZWQsIDYxMiBpbnNl
cnRpb25zKCspLCAzMDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVt
b2ppLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgt
ZGlzcGxheS1saXN0LXN2Zy1mb250LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvZmFzdC90ZXh0L2ds
eXBoLWRpc3BsYXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI2NWU2
MzEzNTlhLi42ZjJkYzVhYmUwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAyMi0w
NS0xNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBB
dm9pZCB0aGUgb3ZlcmhlYWQgb2YgRHJhd0dseXBoc1JlY29yZGVyIHdoZW4gZHJhd2luZyBjYWNo
ZWQgZ2x5cGggYnVmZmVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQwNDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiB0ZXh0IGlzIHBhaW50aW5nIGZyZXF1ZW50bHksIFRleHRQYWludGVyIGNh
Y2hlcyBkaXNwbGF5IGxpc3RzIGNvbnNpc3Rpbmcgb2YgRHJhd0dseXBoCisgICAgICAgIGl0ZW1z
IGluIEdseXBoRGlzcGxheUxpc3RDYWNoZSwgYW5kIHVzZXMgaXRlbXMgZnJvbSB0aGUgY2FjaGUg
aW4KKyAgICAgICAgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygpLgorCisg
ICAgICAgIEluZGVwZW5kZW50bHksIHRleHQgZHJhd2luZyBpbiBnZW5lcmFsIGdvZXMgdG8gdGhl
IEdQVSBQcm9jZXNzIHZpYQorICAgICAgICBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHks
IHdoaWNoIGFsc28gdXNlcyB0aGUgc2FtZSBkaXNwbGF5IGxpc3QgbWVjaGFuaXNtLiBJbiBvcmRl
ciB0bworICAgICAgICBhdm9pZCBpbWFnZSBkZWNvZGluZyBpbiB0aGUgR1BVIFByb2Nlc3MsIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBzZXRzIHRoZQorICAgICAgICBEZWNvbnN0cnVj
dERyYXdHbHlwaHMgZmxhZyBzbyB0aGF0IGNhbGxzIHRvIERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd0dseXBocygpIHVzZSBhCisgICAgICAgIERyYXdHbHlwaHNSZWNvcmRlciB0byBkZXRlY3Qg
d2hldGhlciB3ZSBzaG91bGQgZGVjb21wb3NlIHRleHQgZHJhd2luZyBpbnRvIGxvd2VyIGxldmVs
IGdseXBoCisgICAgICAgIGFuZCBpbWFnZSBkcmF3aW5nLCB1c2luZyBhIGN1c3RvbSBDR0NvbnRl
eHRSZWYuIERyYXdHbHlwaHNSZWNvcmRlciBpbnRyb2R1Y2VzIG1lYXN1cmFibGUKKyAgICAgICAg
b3ZlcmhlYWQsIHNvIHdlIHdhbnQgdG8gYXZvaWQgaXQgd2hlbiB3ZSBjYW4uCisgICAgICAgIAor
ICAgICAgICBUbyBhdm9pZCByZXBlYXRlZCBEcmF3R2x5cGhzUmVjb3JkZXIgb3ZlcmhlYWQgZXZl
cnkgdGltZSBUZXh0UGFpbnRlciBwYWludHMgYSBjYWNoZWQKKyAgICAgICAgZ2x5cGggYnVmZmVy
LCB3ZSBjYW4gc3RvcmUgYSBiaXQgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3QgdG8gc2F5IHdo
ZXRoZXIgYW55CisgICAgICAgIGRyYXdHbHlwaHMoKSBjYWxscyB0cmlnZ2VyZWQgZ2x5cGggZGVj
b21wb3NpdGlvbi4gVGhpcyBpcyBhY2hpZXZlZCBhcyBmb2xsb3dzOgorICAgICAgICAKKyAgICAg
ICAgKiBEcmF3R2x5cGhzUmVjb3JkZXIgaXMgbW9kaWZpZWQgdG8gZGV0ZWN0IHdoZXRoZXIgZHJh
d2luZyB0aGUgZ2x5cGhzIHRyaWdnZXJlZCBhbnkKKyAgICAgICAgICBpbWFnZSBkcmF3aW5nLCBv
ciBhbnkgZG91YmxlIGdseXBoIGRyYXdpbmcgKHdoaWNoIGNhbiBoYXBwZW4gd2l0aCBzb21lIGtp
bmQgb2YgZm9udHMpLAorICAgICAgICAgIGFuZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMo
KSByZXR1cm5zIGEgRGlkRGVjb21wb3NlR2x5cGhzIHJlc3VsdCBpbmRpY2F0aW5nIHRoaXMuCisg
ICAgICAgICogRGlzcGxheUxpc3QgZ2FpbnMgYW4gb3B0aW9uYWw8Ym9vbD4gaW5kaWNhdGluZyB3
aGV0aGVyIGFueSBnbHlwaCBkZWNvbXBvc2l0aW9uIGhhcHBlbmVkCisgICAgICAgICAgb24gcGxh
eWJhY2suCisgICAgICAgICogVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNNYXJrcygp
IGNhbGxzIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkKKyAgICAg
ICAgICBvbiB0aGUgY2FjaGVkIGRpc3BsYXkgbGlzdCB3aGVuIGdseXBoIGRlY29tcG9zaXRpb24g
d2FzIHJlcXVlc3RlZCBieSB0aGUgZGVzdGluYXRpb24KKyAgICAgICAgICBjb250ZXh0IChlLmcu
IHRoZSBjb250ZXh0IGlzIGEgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5KS4KKyAgICAg
ICAgCisgICAgICAgIEluIG9yZGVyIHRvIHRlc3QgZ2x5cGggZGVjb21wb3NpdGlvbiwgd2UgZW5o
YW5jZSB0aGUgZXhpc3RpbmcgSW50ZXJuYWxzIEFQSSB3aXRoIGEKKyAgICAgICAgRElTUExBWV9M
SVNUX0RFQ09NUE9TRVNfRFJBV19HTFlQSFMgZmxhZywgd2hpY2ggdHVybnMgaW50byBhIERpc3Bs
YXlMaXN0OjpBc1RleHQgb3B0aW9uLgorICAgICAgICBUZXh0UGFpbnRlcjo6Y2FjaGVkR2x5cGhE
aXNwbGF5TGlzdHNGb3JUZXh0Tm9kZUFzVGV4dCgpIHJlc3BvbmRzIHRvIHRoaXMgYnkgcmVwbGF5
aW5nIHRoZQorICAgICAgICBkaXNwbGF5IGxpc3QgdGhyb3VnaCBhIERlY29uc3RydWN0RHJhd0ds
eXBoczo6WWVzIHJlY29yZGVyLCBnZW5lcmF0aW5nIGEgbmV3IGRpc3BsYXkgbGlzdAorICAgICAg
ICB3aXRoIGRlY29tcG9zZWQgZ2x5cGhzLgorCisgICAgICAgIERpc3BsYXkgbGlzdCBsb2dnaW5n
IGN1cnJlbnRseSBkdW1wcyByZXNvdXJjZSBpZGVudGlmaWVycywgd2hpY2ggaXMgYSBwcm9ibGVt
IGZvciAKKyAgICAgICAgbGF5b3V0IHRlc3QgYmVjYXVzZSB0aGV5IGFyZSd0IG5lY2Vzc2FyaWx5
IHN0YWJsZS4gU28gd2UgcGx1bWIgdGhyb3VnaCBhIEluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVy
cworICAgICAgICBmbGFnLCB3aGljaCBuZWVkcyB0byBwcm9wYWdhdGUgaW50byBhbGwgdGhlIGRp
c3BsYXkgaXRlbSBsb2dnaW5nIGZ1bmN0aW9ucywgcmVxdWlyaW5nIHRoZW0gdG8KKyAgICAgICAg
Y29udmVydGVkIGZyb20gb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgLi4uKSB0byBkdW1wSXRlbSgp
IGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBmbGFncyBhcmd1bWVudC4KKworICAgICAgICBUZXN0czog
ZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250Lmh0bWwKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250
ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVy
OjpyZWNvcmREcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6cmVjb3JkRHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6
ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmNvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2V0Q29udGFpbnNJdGVt
c05lZWRpbmdHbHlwaERlY29tcG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpkdW1wSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6ZHVtcEl0ZW1IYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjphcHBseURyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRP
ckVtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmNhY2hlZEds
eXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZGlzcGxheUxpc3RGb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVwbGF5RGlzcGxheUxpc3RG
b3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2FjaGVkR2x5cGhEaXNw
bGF5TGlzdHNGb3JUZXh0Tm9kZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMjItMDUtMTYgIE9yaW9sIEJydWZh
dSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBUYWtlIGludHJpbnNpY0JvcmRlckZv
ckZpZWxkc2V0KCkgaW50byBhY2NvdW50IGluIGludHJpbnNpY2FsbHkgc2l6ZWQgZmllbGRzZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTI3Yjk3ZTc2ZTMzLi5kODg5YTM5MTZjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDkgQEAKKzIwMjItMDUtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKKyAgICAgICAgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIERyYXdHbHlwaHNSZWNvcmRlciB3
aGVuIGRyYXdpbmcgY2FjaGVkIGdseXBoIGJ1ZmZlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGV4dCBpcyBwYWludGluZyBmcmVxdWVudGx5
LCBUZXh0UGFpbnRlciBjYWNoZXMgZGlzcGxheSBsaXN0cyBjb25zaXN0aW5nIG9mIERyYXdHbHlw
aAorICAgICAgICBpdGVtcyBpbiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUsIGFuZCB1c2VzIGl0ZW1z
IGZyb20gdGhlIGNhY2hlIGluCisgICAgICAgIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhh
c2lzTWFya3MoKS4KKworICAgICAgICBJbmRlcGVuZGVudGx5LCB0ZXh0IGRyYXdpbmcgaW4gZ2Vu
ZXJhbCBnb2VzIHRvIHRoZSBHUFUgUHJvY2VzcyB2aWEKKyAgICAgICAgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LCB3aGljaCBhbHNvIHVzZXMgdGhlIHNhbWUgZGlzcGxheSBsaXN0IG1l
Y2hhbmlzbS4gSW4gb3JkZXIgdG8KKyAgICAgICAgYXZvaWQgaW1hZ2UgZGVjb2RpbmcgaW4gdGhl
IEdQVSBQcm9jZXNzLCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgc2V0cyB0aGUKKyAg
ICAgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGZsYWcgc28gdGhhdCBjYWxscyB0byBEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmRyYXdHbHlwaHMoKSB1c2UgYQorICAgICAgICBEcmF3R2x5cGhzUmVj
b3JkZXIgdG8gZGV0ZWN0IHdoZXRoZXIgd2Ugc2hvdWxkIGRlY29tcG9zZSB0ZXh0IGRyYXdpbmcg
aW50byBsb3dlciBsZXZlbCBnbHlwaAorICAgICAgICBhbmQgaW1hZ2UgZHJhd2luZywgdXNpbmcg
YSBjdXN0b20gQ0dDb250ZXh0UmVmLiBEcmF3R2x5cGhzUmVjb3JkZXIgaW50cm9kdWNlcyBtZWFz
dXJhYmxlCisgICAgICAgIG92ZXJoZWFkLCBzbyB3ZSB3YW50IHRvIGF2b2lkIGl0IHdoZW4gd2Ug
Y2FuLgorICAgICAgICAKKyAgICAgICAgVG8gYXZvaWQgcmVwZWF0ZWQgRHJhd0dseXBoc1JlY29y
ZGVyIG92ZXJoZWFkIGV2ZXJ5IHRpbWUgVGV4dFBhaW50ZXIgcGFpbnRzIGEgY2FjaGVkCisgICAg
ICAgIGdseXBoIGJ1ZmZlciwgd2UgY2FuIHN0b3JlIGEgYml0IG9uIHRoZSBjYWNoZWQgZGlzcGxh
eSBsaXN0IHRvIHNheSB3aGV0aGVyIGFueQorICAgICAgICBkcmF3R2x5cGhzKCkgY2FsbHMgdHJp
Z2dlcmVkIGdseXBoIGRlY29tcG9zaXRpb24uIFRoaXMgaXMgYWNoaWV2ZWQgYXMgZm9sbG93czoK
KyAgICAgICAgCisgICAgICAgICogRHJhd0dseXBoc1JlY29yZGVyIGlzIG1vZGlmaWVkIHRvIGRl
dGVjdCB3aGV0aGVyIGRyYXdpbmcgdGhlIGdseXBocyB0cmlnZ2VyZWQgYW55CisgICAgICAgICAg
aW1hZ2UgZHJhd2luZywgb3IgYW55IGRvdWJsZSBnbHlwaCBkcmF3aW5nICh3aGljaCBjYW4gaGFw
cGVuIHdpdGggc29tZSBraW5kIG9mIGZvbnRzKSwKKyAgICAgICAgICBhbmQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3R2x5cGhzKCkgcmV0dXJucyBhIERpZERlY29tcG9zZUdseXBocyByZXN1bHQgaW5k
aWNhdGluZyB0aGlzLgorICAgICAgICAqIERpc3BsYXlMaXN0IGdhaW5zIGFuIG9wdGlvbmFsPGJv
b2w+IGluZGljYXRpbmcgd2hldGhlciBhbnkgZ2x5cGggZGVjb21wb3NpdGlvbiBoYXBwZW5lZAor
ICAgICAgICAgIG9uIHBsYXliYWNrLgorICAgICAgICAqIFRleHRQYWludGVyOjpwYWludFRleHRP
ckVtcGhhc2lzTWFya3MoKSBjYWxscyBzZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbigpCisgICAgICAgICAgb24gdGhlIGNhY2hlZCBkaXNwbGF5IGxpc3Qgd2hlbiBnbHlw
aCBkZWNvbXBvc2l0aW9uIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGRlc3RpbmF0aW9uCisgICAgICAg
ICAgY29udGV4dCAoZS5nLiB0aGUgY29udGV4dCBpcyBhIFJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eSkuCisgICAgICAgIAorICAgICAgICBJbiBvcmRlciB0byB0ZXN0IGdseXBoIGRlY29t
cG9zaXRpb24sIHdlIGVuaGFuY2UgdGhlIGV4aXN0aW5nIEludGVybmFscyBBUEkgd2l0aCBhCisg
ICAgICAgIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTIGZsYWcsIHdoaWNoIHR1
cm5zIGludG8gYSBEaXNwbGF5TGlzdDo6QXNUZXh0IG9wdGlvbi4KKyAgICAgICAgVGV4dFBhaW50
ZXI6OmNhY2hlZEdseXBoRGlzcGxheUxpc3RzRm9yVGV4dE5vZGVBc1RleHQoKSByZXNwb25kcyB0
byB0aGlzIGJ5IHJlcGxheWluZyB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRocm91Z2ggYSBE
ZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcyByZWNvcmRlciwgZ2VuZXJhdGluZyBhIG5ldyBkaXNw
bGF5IGxpc3QKKyAgICAgICAgd2l0aCBkZWNvbXBvc2VkIGdseXBocy4KKworICAgICAgICBEaXNw
bGF5IGxpc3QgbG9nZ2luZyBjdXJyZW50bHkgZHVtcHMgcmVzb3VyY2UgaWRlbnRpZmllcnMsIHdo
aWNoIGlzIGEgcHJvYmxlbSBmb3IgCisgICAgICAgIGxheW91dCB0ZXN0IGJlY2F1c2UgdGhleSBh
cmUndCBuZWNlc3NhcmlseSBzdGFibGUuIFNvIHdlIHBsdW1iIHRocm91Z2ggYSBJbmNsdWRlc1Jl
c291cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZmxhZywgd2hpY2ggbmVlZHMgdG8gcHJvcGFnYXRl
IGludG8gYWxsIHRoZSBkaXNwbGF5IGl0ZW0gbG9nZ2luZyBmdW5jdGlvbnMsIHJlcXVpcmluZyB0
aGVtIHRvCisgICAgICAgIGNvbnZlcnRlZCBmcm9tIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIC4u
LikgdG8gZHVtcEl0ZW0oKSBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZmxhZ3MgYXJndW1lbnQuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3R2x5
cGhzV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorCiAyMDIyLTA1LTE2ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIg
MjUwNTU2QG1haW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWNkMDg2ZjIyYTJj
Li40OWUxNjhmYzQ0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zODEsMTAg
KzM4MSwxMSBAQCBGbG9hdFNpemUgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQo
Y29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUsIGNvbnN0CiAgICAgcmV0dXJuIHNpemU7CiB9CiAK
LXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250ZXh0
OjpEaWREZWNvbXBvc2VHbHlwaHMgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKQogewotICAgIG1fcHJp
bWFyeUNvbnRleHQuZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMs
IHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7Ci0gICAgbV9zZWNvbmRhcnlDb250ZXh0LmRyYXdH
bHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290
aGluZ01vZGUpOworICAgIGF1dG8gZGlkRGVjb21wb3NlID0gbV9wcmltYXJ5Q29udGV4dC5kcmF3
R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9pbnQsIGZvbnRTbW9v
dGhpbmdNb2RlLCBuZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CisgICAgbV9zZWNvbmRhcnlDb250
ZXh0LmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwg
Zm9udFNtb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKyAgICByZXR1cm4g
ZGlkRGVjb21wb3NlOwogfQogCiB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdF
bXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQuaAppbmRleCBhM2YwZDE5ODZmZjEuLmZjNDI3YTQwOGVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRmxvYXRT
aXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZs
b2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsOwotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5h
bDsKKyAgICBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+KSBmaW5hbDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZs
b2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8g
PSBzdGQ6Om51bGxvcHQpIGZpbmFsOwogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6
Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnRO
b3RSZWFkeSkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKaW5kZXggNjg2ZWZjZTNiYTgxLi4xNmI4MWQ5YjE3
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlw
aHNSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdH
bHlwaHNSZWNvcmRlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZXhwbGljaXQg
RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IHNjYWxlRmFjdG9yID0g
MSwgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpObyk7CiAK
LSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgR3JhcGhpY3ND
b250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
KTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3
TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNpemUsIENUTGluZVJlZiwgQ0dSZWN0
IGxpbmVSZWN0KTsKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxD
R0NvbG9yUmVmPiBtX2luaXRpYWxGaWxsQ29sb3I7CiAgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+
IG1faW5pdGlhbFN0cm9rZUNvbG9yOwogI2VuZGlmCisgICAgdW5zaWduZWQgbV9vdXRwdXRHbHlw
aENvdW50IHsgMCB9OworICAgIGJvb2wgbV9kaWREcmF3SW1hZ2UgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjZiNTAzZjAxODFkLi4zNmM3ZWUw
ZjVkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcApAQCAtMTI5LDkgKzEyOSwxMCBAQCBGbG9hdFNpemUgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYg
cnVuLAogICAgIHJldHVybiBmb250LmRyYXdUZXh0KCp0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0
byk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCitHcmFwaGljc0NvbnRleHQ6
OkRpZERlY29tcG9zZUdseXBocyBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9kZSwgc3RkOjpvcHRpb25h
bDxib29sPikKIHsKICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgZ2x5
cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOworICAg
IHJldHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBmNGM3
YTg3ZWMxZGIuLjU1YjBmMzk4M2E5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI4Myw3ICsyODMsNiBAQCBwdWJsaWM6
CiAgICAgLy8gVGV4dAogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFNpemUgZHJh
d1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6
bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdFbXBoYXNpc01hcmtz
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1h
cmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBG
b250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KTsKIApAQCAtMjkyLDYgKzI5MSw5
IEBAIHB1YmxpYzoKICAgICAgICAgZHJhd0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBu
dW1HbHlwaHMsIHBvaW50LCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgfQogCisgICAgZW51bSBj
bGFzcyBEaWREZWNvbXBvc2VHbHlwaHMgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgRGlkRGVjb21wb3NlR2x5cGhzIGRyYXdHbHlwaHMoY29uc3QgRm9udCYs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNp
Z25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSwgc3Rk
OjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlvbiA9IHsgfSk7CisKICAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29u
c3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywgYm9vbCBkb3Vi
bGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNz
LCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5l
cyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggY2JmZTc1ZDYzMmRiLi4zNWE2ZDkxYzUxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwcml2YXRlOgogCiAgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IHJldHVybiB7IH07
IH0KIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBv
aW50JiwgRm9udFNtb290aGluZ01vZGUpIGZpbmFsIHsgfQorICAgIERpZERlY29tcG9zZUdseXBo
cyBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21v
b3RoaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWwgeyByZXR1cm4gRGlkRGVjb21w
b3NlR2x5cGhzOjpObzsgfQogCiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250
Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRmxvYXRQ
b2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxv
cHQpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkg
ZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMjYyZjBkNjAyYjgw
Li4zOGEzMDJlODM2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQwOCwx
MCArNDA4LDEwIEBAIFJlbmRlcmluZ01vZGUgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OnJlbmRlcmlu
Z01vZGUoKSBjb25zdAogICAgIHJldHVybiBDYWlybzo6U3RhdGU6OmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCpwbGF0Zm9ybUNvbnRleHQoKSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fp
cm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCog
Z2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBmb250U21v
b3RoaW5nKQorR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgR3JhcGhpY3NDb250
ZXh0Q2Fpcm86OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25l
ZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5nTW9kZSBm
b250U21vb3RoaW5nLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9u
KQogewogICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiAKICAgICBhdXRvIHhP
ZmZzZXQgPSBwb2ludC54KCk7CiAgICAgVmVjdG9yPGNhaXJvX2dseXBoX3Q+IGNhaXJvR2x5cGhz
KG51bUdseXBocyk7CkBAIC00MzUsNiArNDM1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKgog
ICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3lu
dGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCiAgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSgpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgc3RhdGUuZHJvcFNoYWRv
dygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLAogICAgICAgICBmb250U21vb3Ro
aW5nKTsKKworICAgIHJldHVybiBEaWREZWNvbXBvc2VHbHlwaHM6Ok5vOwogfQogCiBjYWlyb190
KiBHcmFwaGljc0NvbnRleHRDYWlybzo6Y3IoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmgKaW5kZXggNzMyMTQ3MGZjNGYxLi40NjkwOGNlNWFhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdHJva2VQYXRoKGNv
bnN0IFBhdGgmKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSBm
aW5hbDsKIAotICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKKyAgICBEaWREZWNv
bXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRz
R2x5cGhEZWNvbXBvc2l0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCmluZGV4IDI2YTc1MTVmOWNlYS4uOTE2ODMzMTE3NzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRl
eHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMDQsNiArMzA0LDcgQEAgdm9p
ZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJl
ZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB9CiAKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0
aW9ucywgY291bnQsIHRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGluaXRpYWxQZW5Qb3NpdGlv
biwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX291dHB1dEdseXBoQ291bnQgKz0gY291bnQ7CiAK
ICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAtMzIzLDYgKzMy
NCw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UoQ0dSZW5kZXJp
bmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiAKICAgICBhdXRvIGltYWdlID0gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKICAgICBtX293bmVyLmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIGltYWdlLT5zaXplKCksIEZsb2F0UmVjdChyZWN0KSwgRmxvYXRSZWN0IHt7IH0sIGltYWdl
LT5zaXplKCl9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7IEltYWdlT3JpZW50YXRpb246Ok9yaWdp
blRvcExlZnQgfSk7CisgICAgbV9kaWREcmF3SW1hZ2UgPSB0cnVlOwogCiAgICAgLy8gVW5kbyB0
aGUgYWJvdmUgeS1mbGlwIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuCiAgICAgbV9vd25lci5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKQEAgLTM0Myw2ICszNDUsNyBAQCB2b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVzdGluYXRpb25SZWN0Lm1vdmVCeShwZW5Q
b3NpdGlvbik7CiAgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX2RpZERyYXdJbWFnZSA9IHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICBwZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2YW5jZXNbaV0p
KTsKQEAgLTM5NSw5ICszOTgsMTcgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdCeVNw
bGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhjb25zdCBGb250JiBmb24KICAgICBkcmF3
KCk7CiB9CiAKLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBz
dGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250
ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewor
ICAgIG1fb3V0cHV0R2x5cGhDb3VudCA9IDA7CisgICAgbV9kaWREcmF3SW1hZ2UgPSBmYWxzZTsK
KwogICAgIGRyYXdCeVNwbGl0dGluZ0ludG9PVFNWR0FuZE5vbk9UU1ZHUnVucyhmb250LCBnbHlw
aHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOworICAg
IAorICAgIGlmIChtX2RpZERyYXdJbWFnZSB8fCBtX291dHB1dEdseXBoQ291bnQgIT0gbnVtR2x5
cGhzKQorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM6
OlllczsKKworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6
Tm87CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3TmF0aXZlVGV4dChDVEZvbnRS
ZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmIGxpbmUsIENHUmVjdCBsaW5lUmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDMyYzljNTEyYzdiNy4uYTU0MzZjNjI1
Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTExMCwxNiArMTEwLDIwIEBAIGJv
b2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhPcHRpb25TZXQ8QXNUZXh0RmxhZz4g
ZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4
dFN0cmVhbTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGluZzo6
U1ZHU3R5bGVSZWN0KTsKKyNpZiAhTE9HX0RJU0FCTEVECiAgICAgZm9yIChhdXRvIGRpc3BsYXlM
aXN0SXRlbSA6ICp0aGlzKSB7CiAgICAgICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJ
bkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKICAgICAgICAgaWYgKCFzaG91bGRE
dW1wRm9yRmxhZ3MoZmxhZ3MsIGl0ZW0pKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cChzdHJlYW0pOwotICAgICAgICBzdHJlYW0g
PDwgaXRlbTsKKyAgICAgICAgZHVtcEl0ZW1IYW5kbGUoc3RyZWFtLCBpdGVtLCBmbGFncyk7CiAg
ICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKICAgICAgICAgICAgIHN0cmVhbSA8PCAi
IGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmbGFn
cyk7CisjZW5kaWYKICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKIH0KIApAQCAtMTI4LDEz
ICsxMzIsMTYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QK
ICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICB0cyA8PCAiZGlzcGxh
eSBsaXN0IjsKIAorI2lmICFMT0dfRElTQUJMRUQKICAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJ
dGVtIDogKnRoaXMpIHsKICAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVm
ZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBUZXh0U3RyZWFtOjpHcm91
cFNjb3BlIGdyb3VwKHRzKTsKLSAgICAgICAgdHMgPDwgaXRlbTsKKyAgICAgICAgZHVtcEl0ZW1I
YW5kbGUodHMsIGl0ZW0sIHsgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMs
IEFzVGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyB9KTsKICAgICAgICAgaWYg
KGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQogICAgICAgICAgICAgdHMgPDwgIiBleHRlbnQgIiA8PCBl
eHRlbnQ7CiAgICAgfQorI2VuZGlmCisKICAgICB0cy5zdGFydEdyb3VwKCk7CiAgICAgdHMgPDwg
InNpemUgaW4gYnl0ZXM6ICIgPDwgc2l6ZUluQnl0ZXMoKTsKICAgICB0cy5lbmRHcm91cCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA3MGJmYzQ0OThmNjUuLjkzNzIyMDFlYmExNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTQ2LDEyICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotZW51bSBjbGFzcyBBc1RleHRGbGFnIDog
dWludDhfdCB7Ci0gICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMgICAgICA9IDEgPDwgMCwK
LSAgICBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgICAgID0gMSA8PCAxLAotICAgIERlY29t
cG9zZXNEcmF3R2x5cGhzICAgICAgICAgICAgPSAxIDw8IDIsCi19OwotCiBjbGFzcyBEaXNwbGF5
TGlzdCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlzcGxheUxpc3QpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgUmVjb3JkZXJJbXBsOwpAQCAtOTMsNiAr
ODcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzOyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9vbCk7CisgICAgCisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBjb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNJdGVtc05lZWRpbmdHbHlwaERlY29tcG9zaXRp
b247IH0KKyAgICB2b2lkIHNldENvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9u
KGJvb2wgdmFsdWUpIHsgbV9jb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21wb3NpdGlvbiA9
IHZhbHVlOyB9CiAKICAgICBjbGFzcyBJdGVyYXRvcjsKIApAQCAtMTI5LDYgKzEyNiw3IEBAIHBy
aXZhdGU6CiAgICAgTG9jYWxSZXNvdXJjZUhlYXAgbV9yZXNvdXJjZUhlYXA7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEl0ZW1CdWZmZXI+IG1faXRlbXM7CiAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0Pj4gbV9kcmF3aW5nSXRlbUV4dGVudHM7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBtX2NvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uOwogICAgIGJvb2wgbV90
cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCBmYjQ2NDFhMTM0NDcuLjhjYTIzZmE2YTA2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC0yOCw2ICsyOCwxMiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAorZW51bSBjbGFz
cyBBc1RleHRGbGFnIDogdWludDhfdCB7CisgICAgSW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMg
ICAgICA9IDEgPDwgMCwKKyAgICBJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgICAgID0gMSA8
PCAxLAorICAgIERlY29tcG9zZXNEcmF3R2x5cGhzICAgICAgICAgICAgPSAxIDw8IDIsCit9Owor
CiBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgU2F2ZSwKICAgICBSZXN0b3Jl
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDM1YTdiNGVhMWMyNC4u
MTZlMTdhMDE2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0y
MDAsOSArMjAwLDkgQEAgRHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEcKICAgICBjb21wdXRlQm91bmRz
KGZvbnQpOwogfQogCi12b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRm9udCYgZm9udCkgY29uc3QKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21w
b3NlR2x5cGhzIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRm9udCYgZm9udCwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVjb21wb3NpdGlv
bikgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgbV9nbHlwaHMuZGF0YSgp
LCBtX2FkdmFuY2VzLmRhdGEoKSwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Nt
b290aGluZ01vZGUpOworICAgIHJldHVybiBjb250ZXh0LmRyYXdHbHlwaHMoZm9udCwgbV9nbHlw
aHMuZGF0YSgpLCBtX2FkdmFuY2VzLmRhdGEoKSwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2lu
dCgpLCBtX3Ntb290aGluZ01vZGUsIG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKIH0KIAogdm9p
ZCBEcmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKGNvbnN0IEZvbnQmIGZvbnQpCkBAIC02ODgsMTg0
ICs2ODgsMTYzIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNsYXRlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ4IiwgaXRlbS54KCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgieSIsIGl0ZW0ueSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJvdGF0ZSYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJvdGF0ZSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW5nbGUiLCBpdGVtLmFuZ2xlKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2NhbGUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTY2FsZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2l6ZSIsIGl0ZW0uYW1vdW50KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0Q1RNJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0Q1RNJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzZXQtY3RtIiwgaXRlbS50
cmFuc2Zvcm0oKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb25jYXRlbmF0ZUNUTSYgaXRlbSkKK3ZvaWQgZHVtcEl0
ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENvbmNhdGVuYXRlQ1RNJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjdG0iLCBpdGVtLnRyYW5zZm9y
bSgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgc3RhdGUpCit2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgc3RhdGUuY29s
b3IoKSk7Ci0gICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVt
LmNvbG9yKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRJbmxpbmVTdHJva2VDb2xvciYgc3RhdGUpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRJbmxpbmVTdHJva2VDb2xvciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBzdGF0ZS5jb2xvcigpKTsK
LSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIsIGl0ZW0uY29sb3Io
KSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNl
dFN0cm9rZVRoaWNrbmVzcyYgc3RhdGUpCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTZXRTdHJva2VUaGlja25lc3MmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
LSAgICB0cy5kdW1wUHJvcGVydHkoInRoaWNrbmVzcyIsIHN0YXRlLnRoaWNrbmVzcygpKTsKLSAg
ICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ0aGlja25lc3MiLCBpdGVtLnRoaWNr
bmVzcygpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2V0U3RhdGUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
ZXRTdGF0ZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzIDw8IGl0ZW0u
c3RhdGUoKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFNldExpbmVDYXAmIGxpbmVDYXApCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTZXRMaW5lQ2FwJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWNhcCIsIGxpbmVDYXAubGluZUNhcCgp
KTsKLSAgICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWNhcCIsIGl0ZW0u
bGluZUNhcCgpKTsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgU2V0TGluZURhc2gmIGxpbmVEYXNoKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2V0TGluZURhc2gmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoImRhc2gtYXJyYXkiLCBsaW5lRGFzaC5kYXNoQXJyYXkoKSk7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJkYXNoLW9mZnNldCIsIGxpbmVEYXNoLmRhc2hPZmZzZXQoKSk7
Ci0gICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1hcnJheSIsIGl0ZW0u
ZGFzaEFycmF5KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGFzaC1vZmZzZXQiLCBpdGVtLmRh
c2hPZmZzZXQoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNldExpbmVKb2luJiBsaW5lSm9pbikKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNldExpbmVKb2luJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWpvaW4iLCBsaW5lSm9pbi5saW5lSm9pbigpKTsKLSAg
ICByZXR1cm4gdHM7CisgICAgdHMuZHVtcFByb3BlcnR5KCJsaW5lLWpvaW4iLCBpdGVtLmxpbmVK
b2luKCkpOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRNaXRlckxpbWl0JiBtaXRlckxpbWl0KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2V0TWl0ZXJMaW1pdCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibWl0cmUtbGltaXQiLCBtaXRlckxpbWl0Lm1pdGVyTGltaXQo
KSk7Ci0gICAgcmV0dXJuIHRzOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibWl0cmUtbGltaXQiLCBp
dGVtLm1pdGVyTGltaXQoKSk7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IENsaXAmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBDbGlwJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dCYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBPdXQmIGl0ZW0sIE9wdGlvblNl
dDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3Qo
KSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4gZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRl
bnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3Mu
Y29udGFpbnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VC
dWZmZXJJZGVudGlmaWVyKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRl
bS5kZXN0aW5hdGlvblJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwT3V0VG9QYXRoJiBpdGVtKQordm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xpcE91dFRvUGF0aCYgaXRlbSwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0u
cGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
ICAgICB0cy5kdW1wUHJvcGVydHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJ3aW5kLXJ1bGUiLCBpdGVtLndpbmRSdWxlKCkpOwotICAgIHJldHVybiB0czsKIH0K
IAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZpbHRl
cmVkSW1hZ2VCdWZmZXImIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+IGZs
YWdzKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLWltYWdlLWlkZW50aWZpZXIiLCBp
dGVtLnNvdXJjZUltYWdlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWZsYWdzLmNvbnRhaW5zKEFz
VGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycykpCisgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic291cmNlLWltYWdlLWlkZW50aWZpZXIiLCBpdGVtLnNvdXJjZUltYWdlSWRlbnRp
ZmllcigpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1pbWFnZS1yZWN0IiwgaXRlbS5z
b3VyY2VJbWFnZVJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3R2x5cGhzJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0dseXBocyYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIC8vIEZJWE1FOiBkdW1wIG1vcmUgc3R1ZmYuCiAgICAgdHMuZHVt
cFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2FsQW5jaG9yKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgiYW5jaG9yLXBvaW50IiwgaXRlbS5hbmNob3JQb2ludCgpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoImxlbmd0aCIsIGl0ZW0uZ2x5cGhzKCkuc2l6ZSgpKTsKIAotICAgIHJldHVy
biB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4gZmxhZ3MpCiB7
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFpbnMoQXNUZXh0Rmxh
Zzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJpbWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwot
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4g
ZmxhZ3MpCiB7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5p
bWFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFmbGFncy5jb250YWlucyhBc1RleHRGbGFnOjpJ
bmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImlt
YWdlLWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdTeXN0
ZW1JbWFnZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdT
eXN0ZW1JbWFnZSYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIC8vIEZJWE1F
OiBkdW1wIG1vcmUgc3R1ZmYuCiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0
ZW0uZGVzdGluYXRpb25SZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+IGZsYWdzKQogewotICAgIHRzLmR1bXBQcm9wZXJ0eSgiaW1hZ2UtaWRl
bnRpZmllciIsIGl0ZW0uaW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghZmxhZ3MuY29udGFp
bnMoQXNUZXh0RmxhZzo6SW5jbHVkZXNSZXNvdXJjZUlkZW50aWZpZXJzKSkKKyAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJpbWFnZS1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUlkZW50aWZpZXIoKSk7
CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXR0ZXJuLXRyYW5zZm9ybSIsIGl0ZW0ucGF0dGVyblRy
YW5zZm9ybSgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInRpbGUtcmVjdCIsIGl0ZW0udGlsZVJl
Y3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RSZWN0KCkp
OwogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGhhc2UiLCBpdGVtLnBoYXNlKCkpOwogICAgIHRzLmR1
bXBQcm9wZXJ0eSgic3BhY2luZyIsIGl0ZW0uc3BhY2luZygpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdSZWN0
JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1JlY3QmIGl0
ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3Qi
LCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJib3JkZXItdGhpY2tuZXNzIiwg
aXRlbS5ib3JkZXJUaGlja25lc3MoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZSYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwb2ludC0xIiwgaXRlbS5wb2lu
dDEoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwb2ludC0yIiwgaXRlbS5wb2ludDIoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0xpbmVzRm9yVGV4dCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+
KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxvY2stbG9jYXRpb24iLCBpdGVtLmJsb2NrTG9j
YXRpb24oKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJsb2NhbC1hbmNob3IiLCBpdGVtLmxvY2Fs
QW5jaG9yKCkpOwpAQCAtODc1LDM4MCArODU0LDM1MCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TGluZXNGb3JUZXh0JiBpdGVtKQogICAgIHRzLmR1
bXBQcm9wZXJ0eSgid2lkdGhzIiwgaXRlbS53aWR0aHMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJpcy1wcmludGluZyIsIGl0ZW0uaXNQcmludGluZygpKTsKICAgICB0cy5kdW1wUHJvcGVydHko
ImRvdWJsZSIsIGl0ZW0uZG91YmxlTGluZXMoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3RG90c0ZvckRvY3Vt
ZW50TWFya2VyJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVjdCIsIGl0ZW0ucmVjdCgpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdF
bGxpcHNlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0Vs
bGlwc2UmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0aCYgaXRlbSkKK3ZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXRoJiBpdGVtLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4
dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoIndpZHRoIiwgaXRlbS53aWR0aCgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoIm9mZnNldCIsIGl0ZW0ub2Zmc2V0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29s
b3IiLCBpdGVtLmNvbG9yKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ZvY3VzUmluZ1JlY3RzJiBp
dGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0
cyIsIGl0ZW0ucmVjdHMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aCIsIGl0ZW0ud2lk
dGgoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJvZmZzZXQiLCBpdGVtLm9mZnNldCgpKTsKICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbG9yIiwgaXRlbS5jb2xvcigpKTsKLSAgICByZXR1cm4gdHM7
CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxS
ZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3Qm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJlY3QoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhDb2xvciYgaXRlbSkKK3Zv
aWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0Iiwg
aXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBpdGVtLmNvbG9yKCkp
OwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KQogewogICAgIC8vIEZJWE1FOiBsb2cgZ3JhZGllbnQuCiAgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbENvbXBvc2l0ZWRS
ZWN0JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbENvbXBv
c2l0ZWRSZWN0JiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3Ii
LCBpdGVtLmNvbG9yKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29tcG9zaXRlLW9wZXJhdGlv
biIsIGl0ZW0uY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJibGVu
ZC1tb2RlIiwgaXRlbS5ibGVuZE1vZGUoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmIGl0
ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUm91bmRlZFJlY3Qm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJl
Y3QiLCBpdGVtLnJvdW5kZWRSZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29sb3IiLCBp
dGVtLmNvbG9yKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmQtbW9kZSIsIGl0ZW0uYmxl
bmRNb2RlKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUmIGl0ZW0pCit2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVj
dCIsIGl0ZW0ucmVjdCgpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoInJvdW5kZWQtaG9sZS1yZWN0
IiwgaXRlbS5yb3VuZGVkSG9sZVJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvciIs
IGl0ZW0uY29sb3IoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCiAjaWYgRU5BQkxFKElOTElORV9Q
QVRIX0RBVEEpCiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEZpbGxMaW5lJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bExpbmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInBhdGgiLCBpdGVtLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsQXJjJiBpdGVtKQordm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEFyYyYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEZpbGxRdWFkQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBGaWxsUXVhZEN1cnZlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7
CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bEJlemllckN1cnZlJiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RmlsbEJlemllckN1cnZlJiBpdGVtLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlQXJjJiBp
dGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlQXJjJiBpdGVt
LCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwg
aXRlbS5wYXRoKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBpdGVtKQordm9pZCBkdW1w
SXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUXVhZEN1cnZlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJwYXRoIiwgaXRlbS5wYXRo
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlQmV6aWVyQ3VydmUmIGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYgaXRlbSwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIsIGl0ZW0ucGF0aCgpKTsK
LSAgICByZXR1cm4gdHM7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkK
IAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFBhdGgm
IGl0ZW0pCit2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsUGF0aCYgaXRl
bSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0aCIs
IGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxFbGxpcHNlJiBpdGVtKQordm9pZCBkdW1wSXRl
bShUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbEVsbGlwc2UmIGl0ZW0sIE9wdGlvblNldDxBc1Rl
eHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7Ci0g
ICAgcmV0dXJuIHRzOwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCit2
b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0
ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoImRlc3Rp
bmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCiAKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU3Ryb2tlUmVjdCYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAg
ICB0cy5kdW1wUHJvcGVydHkoInJlY3QiLCBpdGVtLnJlY3QoKSk7CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJsaW5lLXdpZHRoIiwgaXRlbS5saW5lV2lkdGgoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQYXRo
JiBpdGVtKQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUGF0aCYg
aXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgicGF0
aCIsIGl0ZW0ucGF0aCgpKTsKLSAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZUVsbGlwc2UmIGl0ZW0pCit2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VFbGxpcHNlJiBpdGVtLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5yZWN0
KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU3Ryb2tlTGluZSYgaXRlbSkKK3ZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFN0cm9rZUxpbmUmIGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsK
ICAgICB0cy5kdW1wUHJvcGVydHkoInN0YXJ0IiwgaXRlbS5zdGFydCgpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImVuZCIsIGl0ZW0uZW5kKCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0JiBpdGVtKQor
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJSZWN0JiBpdGVtLCBPcHRp
b25TZXQ8QXNUZXh0RmxhZz4pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWN0IiwgaXRlbS5y
ZWN0KCkpOwotICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgQmVnaW5UcmFuc3BhcmVuY3lMYXllciYgaXRlbSkKK3ZvaWQgZHVt
cEl0ZW0oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXImIGl0ZW0s
IE9wdGlvblNldDxBc1RleHRGbGFnPikKIHsKICAgICB0cy5kdW1wUHJvcGVydHkoIm9wYWNpdHki
LCBpdGVtLm9wYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseURldmljZVNjYWxlRmFjdG9yJiBpdGVt
KQordm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlEZXZpY2VTY2FsZUZh
Y3RvciYgaXRlbSwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KQogewogICAgIHRzLmR1bXBQcm9wZXJ0
eSgic2NhbGUtZmFjdG9yIiwgaXRlbS5zY2FsZUZhY3RvcigpKTsKLSAgICByZXR1cm4gdHM7CiB9
CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRl
bSkKK3ZvaWQgZHVtcEl0ZW1IYW5kbGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1IYW5kbGUm
IGl0ZW0sIE9wdGlvblNldDxBc1RleHRGbGFnPiBmbGFncykKIHsKICAgICB0cyA8PCBpdGVtLnR5
cGUoKTsKIAogICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKICAgICBjYXNlIEl0ZW1UeXBlOjpU
cmFuc2xhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKKyAgICAgICAg
ZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFJv
dGF0ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFJvdGF0ZT4oKSwgZmxhZ3Mp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2NhbGU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTY2Fs
ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldENUTT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PFNldENUTT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q29uY2F0ZW5h
dGVDVE0+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVG
aWxsQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKSwgZmxh
Z3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VD
b2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSwgZmxh
Z3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25l
c3M6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxT
ZXRTdGF0ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpOworICAgICAg
ICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U2V0TGluZUNhcD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0TGluZURhc2g+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRM
aW5lRGFzaD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lSm9pbjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKSwgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8U2V0TWl0ZXJMaW1pdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwPigpOworICAgICAgICBk
dW1wSXRlbSh0cywgaXRlbS5nZXQ8Q2xpcD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0
PigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8Q2xpcE91dD4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxDbGlwT3V0VG9QYXRoPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
Q2xpcE91dFRvUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7CisgICAg
ICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxDbGlwUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXI+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcj4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3R2x5cGhzPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5n
ZXQ8RHJhd0dseXBocz4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdJbWFnZUJ1
ZmZlcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKKyAgICAg
ICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3U3lzdGVtSW1hZ2U6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PERyYXdTeXN0ZW1JbWFnZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PERyYXdTeXN0ZW1JbWFnZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJh
d1BhdHRlcm4+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3UGF0dGVybj4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1JlY3Q+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxEcmF3UmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0xpbmU+KCk7
CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3TGluZT4oKSwgZmxhZ3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpOworICAgICAgICBkdW1wSXRlbSh0
cywgaXRlbS5nZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpOworICAgICAgICBkdW1w
SXRlbSh0cywgaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVt
LmdldDxEcmF3RWxsaXBzZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7Cisg
ICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxEcmF3UGF0aD4oKSwgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCk7CisgICAgICAgIGR1bXBJdGVtKHRz
LCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0u
Z2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3Q+
KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxGaWxsUmVjdD4oKSwgZmxhZ3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CisgICAgICAgIGR1bXBJ
dGVtKHRzLCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7CisgICAgICAgIGR1bXBJdGVt
KHRzLCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMs
IGl0ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxSb3VuZGVkUmVjdD4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZp
bGxSb3VuZGVkUmVjdD4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxG
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsTGluZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbExpbmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxGaWxsTGluZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsQXJjOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQXJjPigpOworICAg
ICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8RmlsbEFyYz4oKSwgZmxhZ3MpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUXVhZEN1cnZlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxGaWxsUXVhZEN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8
RmlsbFF1YWRDdXJ2ZT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsQmV6aWVyQ3VydmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxCZXppZXJD
dXJ2ZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxCZXppZXJDdXJ2ZT4o
KSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUGF0aD4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxQYXRoPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsRWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PEZpbGxFbGxpcHNl
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNl
IEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBh
aW50RnJhbWVGb3JNZWRpYT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFBhaW50
RnJhbWVGb3JNZWRpYT4oKSwgZmxhZ3MpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZVJl
Y3Q+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBpdGVtLmdldDxTdHJva2VSZWN0PigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7CisgICAgICAgIGR1bXBJdGVtKHRzLCBp
dGVtLmdldDxTdHJva2VMaW5lPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUFyYzoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlQXJjPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRl
bS5nZXQ8U3Ryb2tlQXJjPigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZVF1YWRDdXJ2ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUXVh
ZEN1cnZlPigpOworICAgICAgICBkdW1wSXRlbSh0cywgaXRlbS5nZXQ8U3Ryb2tlUXVhZEN1cnZl
PigpLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUJl
emllckN1cnZlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VCZXppZXJDdXJ2ZT4oKTsK
KyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZUJlemllckN1cnZlPigpLCBmbGFn
cyk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKKyAgICAgICAgZHVtcEl0
ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZVBhdGg+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
U3Ryb2tlRWxsaXBzZT4oKTsKKyAgICAgICAgZHVtcEl0ZW0odHMsIGl0ZW0uZ2V0PFN0cm9rZUVs
bGlwc2U+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xl
YXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7CisgICAgICAgIGR1
bXBJdGVtKHRzLCBpdGVtLmdldDxDbGVhclJlY3Q+KCksIGZsYWdzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKTsKKyAgICAgICAgZHVtcEl0ZW0o
dHMsIGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCksIGZsYWdzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKTsKKyAgICAgICAgZHVt
cEl0ZW0odHMsIGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCksIGZsYWdzKTsKICAg
ICAgICAgYnJlYWs7Ci0KICAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9uYWwgZGF0YS4KICAg
ICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6CkBAIC0x
MjYwLDcgKzEyMDksNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJ
dGVtSGFuZGxlIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gdHM7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZDE0NDA3NzNhZWQzLi4wMDU0ODQ2MTM0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNTUsNiArNTUsNyBAQCBzdHJ1Y3QgSW1h
Z2VQYWludGluZ09wdGlvbnM7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKK2VudW0gY2xh
c3MgQXNUZXh0RmxhZyA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgSXRlbUhhbmRsZTsKIAogLyogaXNJbmxp
bmVJdGVtIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgbmVlZHMgdG8gYmUgcGFzc2VkIHRo
cm91Z2ggSVBDOjpFbmNvZGVyIGluIG9yZGVyIHRvIHNlcmlhbGl6ZSwKQEAgLTU5Miw3ICs1OTMs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01v
ZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlwaHMoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYmLCBWZWN0b3I8R2x5cGhCdWZm
ZXJBZHZhbmNlLCAxMjg+JiYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBhcHBseShHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGb250Jiwgc3RkOjpvcHRpb25hbDxib29sPiBuZWVkc0dseXBoRGVj
b21wb3NpdGlvbikgY29uc3Q7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIG1fYm91bmRzOyB9CkBAIC0yMDUxLDY3ICsyMDUyLDgwIEBAIHNpemVfdCBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiBJdGVtVHlw
ZSBkaXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAjaWYgIUxP
R19ESVNBQkxFRAotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgVHJhbnNsYXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBSb3RhdGUmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNjYWxlJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRDVE0mKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IENvbmNhdGVuYXRlQ1RNJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldElubGluZVN0cm9r
ZUNvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0YXRlJik7Ci1XRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTZXRMaW5lQ2Fw
Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBTZXRMaW5lRGFzaCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGluZUpvaW4mKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFNldE1pdGVyTGltaXQmKTsKLVdF
QkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENs
aXAmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IENsaXBPdXQmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBDbGlwT3V0VG9QYXRoJik7
Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25z
dCBDbGlwUGF0aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXImKTsKLVdFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdHbHlwaHMmKTsK
LVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IERyYXdJbWFnZUJ1ZmZlciYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd05hdGl2ZUltYWdlJik7Ci1XRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3U3lzdGVtSW1hZ2Um
KTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IERyYXdQYXR0ZXJuJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3UmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0xpbmUmKTsKLVdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lc0Zv
clRleHQmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXImKTsKLVdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdFbGxpcHNlJik7Ci1X
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBE
cmF3UGF0aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgRHJhd0ZvY3VzUmluZ1BhdGgmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdGb2N1c1JpbmdSZWN0cyYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RmlsbFJlY3QmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYp
OwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgRmlsbENvbXBvc2l0ZWRSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUm91bmRlZFJlY3QmKTsKLVdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBUcmFuc2xhdGUmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgUm90YXRlJiwgT3B0aW9uU2V0PEFz
VGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNv
bnN0IFNjYWxlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldENUTSYsIE9wdGlvblNldDxBc1RleHRGbGFn
Pik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBDb25j
YXRlbmF0ZUNUTSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImLCBPcHRpb25T
ZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgU2V0SW5saW5lU3Ryb2tlQ29sb3ImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0U3Ryb2tl
VGhpY2tuZXNzJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNldFN0YXRlJiwgT3B0aW9uU2V0PEFzVGV4dEZs
YWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFNl
dExpbmVDYXAmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBk
dW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0TGluZURhc2gmLCBPcHRpb25TZXQ8QXNUZXh0
RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3Qg
U2V0TGluZUpvaW4mLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU2V0TWl0ZXJMaW1pdCYsIE9wdGlvblNldDxB
c1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBj
b25zdCBDbGlwJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQg
ZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IENsaXBPdXQmLCBPcHRpb25TZXQ8QXNUZXh0Rmxh
Zz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xp
cFRvSW1hZ2VCdWZmZXImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQ2xpcE91dFRvUGF0aCYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBDbGlwUGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
ciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mLCBjb25zdCBEcmF3R2x5cGhzJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdJbWFn
ZUJ1ZmZlciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmLCBPcHRpb25TZXQ8QXNU
ZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29u
c3QgRHJhd1N5c3RlbUltYWdlJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdQYXR0ZXJuJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IERyYXdSZWN0JiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IERyYXdMaW5lJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IERyYXdMaW5lc0ZvclRleHQmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRHJhd0RvdHNGb3JEb2N1
bWVudE1hcmtlciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3RWxsaXBzZSYsIE9wdGlvblNldDxBc1Rl
eHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25z
dCBEcmF3UGF0aCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBEcmF3Rm9jdXNSaW5nUGF0aCYsIE9wdGlvblNl
dDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0m
LCBjb25zdCBEcmF3Rm9jdXNSaW5nUmVjdHMmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJlY3QmLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiwgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3ImLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4p
OworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFJl
Y3RXaXRoR3JhZGllbnQmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQg
dm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgRmlsbENvbXBvc2l0ZWRSZWN0JiwgT3B0
aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0
cmVhbSYsIGNvbnN0IEZpbGxSb3VuZGVkUmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CiAjaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBGaWxsTGluZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbEFyYyYpOwotV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmlsbFF1YWRDdXJ2ZSYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RmlsbEJlemllckN1cnZlJik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VBcmMmKTsKLVdFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2ZSYpOwotV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ry
b2tlQmV6aWVyQ3VydmUmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IEZpbGxMaW5lJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxBcmMmLCBPcHRpb25TZXQ8
QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwg
Y29uc3QgRmlsbFF1YWRDdXJ2ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBGaWxsQmV6aWVyQ3VydmUmLCBP
cHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0
U3RyZWFtJiwgY29uc3QgU3Ryb2tlQXJjJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFN0cm9rZVF1YWRDdXJ2
ZSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVt
KFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VCZXppZXJDdXJ2ZSYsIE9wdGlvblNldDxBc1RleHRG
bGFnPik7CiAjZW5kaWYgLy8gRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi1XRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWxsUGF0aCYpOwot
V0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RmlsbEVsbGlwc2UmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYs
IGNvbnN0IEZpbGxQYXRoJiwgT3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JU
IHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IEZpbGxFbGxpcHNlJiwgT3B0aW9uU2V0
PEFzVGV4dEZsYWc+KTsKICNpZiBFTkFCTEUoVklERU8pCi1XRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVhbSYsIGNvbnN0IFBhaW50RnJh
bWVGb3JNZWRpYSYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKQotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwg
Y29uc3QgU3Ryb2tlUmVjdCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlUGF0aCYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlRWxsaXBzZSYpOwotV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU3Ry
b2tlTGluZSYpOwotV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgQ2xlYXJSZWN0Jik7Ci1XRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBCZWdpblRyYW5zcGFyZW5jeUxheWVyJik7Ci1XRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBBcHBs
eURldmljZVNjYWxlRmFjdG9yJik7Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIEl0ZW1IYW5kbGUpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFt
JiwgY29uc3QgU3Ryb2tlUmVjdCYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGR1bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBTdHJva2VQYXRoJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcEl0ZW0oVGV4dFN0cmVh
bSYsIGNvbnN0IFN0cm9rZUVsbGlwc2UmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgU3Ryb2tlTGluZSYsIE9w
dGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBJdGVtKFRleHRT
dHJlYW0mLCBjb25zdCBDbGVhclJlY3QmLCBPcHRpb25TZXQ8QXNUZXh0RmxhZz4pOworV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wSXRlbShUZXh0U3RyZWFtJiwgY29uc3QgQmVnaW5UcmFuc3BhcmVu
Y3lMYXllciYsIE9wdGlvblNldDxBc1RleHRGbGFnPik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGR1
bXBJdGVtKFRleHRTdHJlYW0mLCBjb25zdCBBcHBseURldmljZVNjYWxlRmFjdG9yJiwgT3B0aW9u
U2V0PEFzVGV4dEZsYWc+KTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBUJiBpdGVtKQoreworICAgIGR1bXBJdGVt
KHRzLCBpdGVtLCB7IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zLCBBc1Rl
eHRGbGFnOjpJbmNsdWRlc1Jlc291cmNlSWRlbnRpZmllcnMgfSk7CisgICAgcmV0dXJuIHRzOwor
fQorCit2b2lkIGR1bXBJdGVtSGFuZGxlKFRleHRTdHJlYW0mLCBjb25zdCBJdGVtSGFuZGxlJiwg
T3B0aW9uU2V0PEFzVGV4dEZsYWc+KTsKKworaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUpCit7CisgICAgZHVt
cEl0ZW1IYW5kbGUodHMsIGl0ZW1IYW5kbGUsIHsgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9y
bU9wZXJhdGlvbnMsIEFzVGV4dEZsYWc6OkluY2x1ZGVzUmVzb3VyY2VJZGVudGlmaWVycyB9KTsK
KyAgICByZXR1cm4gdHM7Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAwNzRiZjYwOTNl
ZDMuLjc2NThmODM0MmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMTYxLDE3ICsxNjEsMjAgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QKICAgICBy
ZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgc291cmNlSW1hZ2VSZWN0
LCBmaWx0ZXIpOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFy
dFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQorR3JhcGhpY3NDb250ZXh0
OjpEaWREZWNvbXBvc2VHbHlwaHMgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9u
dCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0
UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbmVlZHNHbHlwaERlY29tcG9zaXRpb24pCiB7Ci0gICAgaWYgKG1fZGVjb25zdHJ1Y3REcmF3
R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKSB7CisgICAgaWYgKG1fZGVjb25z
dHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKQorICAgICAgICBB
TFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiUmVjb3JkZXI6OmRyYXdHbHlwaHMgLSBu
ZWVkc0dseXBoRGVjb21wb3NpdGlvbiAiIDw8IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKTsKKwor
ICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6
OlllcyAmJiAoIW5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uIHx8ICpuZWVkc0dseXBoRGVjb21wb3Np
dGlvbikpIHsKICAgICAgICAgaWYgKCFtX2RyYXdHbHlwaHNSZWNvcmRlcikKICAgICAgICAgICAg
IG1fZHJhd0dseXBoc1JlY29yZGVyID0gbWFrZVVuaXF1ZTxEcmF3R2x5cGhzUmVjb3JkZXI+KCp0
aGlzLCBtX2luaXRpYWxTY2FsZSk7CiAKLSAgICAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXItPmRy
YXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBz
bW9vdGhpbmdNb2RlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbV9kcmF3R2x5
cGhzUmVjb3JkZXItPmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhz
LCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICB9CiAKICAgICBkcmF3R2x5cGhzQW5k
Q2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwg
c21vb3RoaW5nTW9kZSk7CisgICAgcmV0dXJuIERpZERlY29tcG9zZUdseXBoczo6Tm87CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
IGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5j
aG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjAwNDgzMzZhN2Y4Li42MjM0NDhkYTE0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMjEyLDcgKzIxMiw3IEBAIHBy
aXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIEZpbHRlciYsIEZpbHRlclJlc3VsdHMmKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
LCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQ
b2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAKaW5kZXggOTdlMTFjYjg2MGQ5Li43OWRhZWE3NTc2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTEwNyw1NSArMTA3LDU3IEBAIGlubGluZSBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0
U3RhdGVJdGVtKEdyYXBoCiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotaW5saW5lIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlEcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VIZWFwJiByZXNv
dXJjZUhlYXAsIERyYXdHbHlwaHMmIGRyYXdHbHlwaHNJdGVtKQoraW5saW5lIHN0YXRpYyBzdGQ6
OnBhaXI8c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+LCBHcmFwaGlj
c0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gYXBwbHlEcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VIZWFwJiByZXNvdXJjZUhlYXAsIERyYXdHbHlw
aHMmIGRyYXdHbHlwaHNJdGVtLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBv
c2l0aW9uKQogewogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gZHJhd0dseXBoc0l0ZW0u
Zm9udElkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogZm9udCA9IHJlc291cmNlSGVhcC5nZXRG
b250KHJlc291cmNlSWRlbnRpZmllcikpIHsKLSAgICAgICAgZHJhd0dseXBoc0l0ZW0uYXBwbHko
Y29udGV4dCwgKmZvbnQpOwotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBh
dXRvIGRpZERlY29tcG9zZSA9IGRyYXdHbHlwaHNJdGVtLmFwcGx5KGNvbnRleHQsICpmb250LCBu
ZWVkc0dseXBoRGVjb21wb3NpdGlvbik7CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwg
ZGlkRGVjb21wb3NlIH07CiAgICAgfQotICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgcmV0dXJuIHsgcmVzb3VyY2VJZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29t
cG9zZUdseXBoczo6Tm8gfTsKIH0KIAotc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxh
eVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVw
bGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCithdXRvIFJlcGxheWVyOjphcHBseUl0
ZW0oSXRlbUhhbmRsZSBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQKIHsKICAgICBzd2l0Y2ggKGl0
ZW0udHlwZSgpKSB7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6CiAgICAg
ICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdl
QnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwg
aXRlbSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2Fj
aGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsK
LSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKLQotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseURyYXdHbHlwaHMobV9jb250ZXh0LCBtX3Jlc291cmNl
SGVhcCwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1p
c3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyKSwgeyB9IH07CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3R2x5cGhzOiB7CisgICAgICAgIGF1dG8gZHJhd0dseXBoc1Jlc3VsdCA9IGFwcGx5RHJhd0ds
eXBocyhtX2NvbnRleHQsIG1fcmVzb3VyY2VIZWFwLCBpdGVtLmdldDxEcmF3R2x5cGhzPigpLCBt
X2Rpc3BsYXlMaXN0LmNvbnRhaW5zSXRlbXNOZWVkaW5nR2x5cGhEZWNvbXBvc2l0aW9uKCkpOwor
ICAgICAgICBpZiAoZHJhd0dseXBoc1Jlc3VsdC5maXJzdCkKKyAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShkcmF3R2x5
cGhzUmVzdWx0LmZpcnN0KSwgeyB9IH07CisgICAgICAgIHJldHVybiB7IHsgfSwgeyB9LCBkcmF3
R2x5cGhzUmVzdWx0LnNlY29uZCB9OworICAgIH0KIAogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4obV9jb250ZXh0LCBt
X3Jlc291cmNlSGVhcCwgaXRlbSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVh
c29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSwgeyB9
IH07CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KG1fY29udGV4dCwgbV9yZXNv
dXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVz
b3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciksIHsgfSB9Owor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNv
dXJjZUltYWdlSXRlbTxEcmF3UGF0dGVybj4obV9jb250ZXh0LCBtX3Jlc291cmNlSGVhcCwgaXRl
bSkpCi0gICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVk
UmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAg
ICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92
ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSwgeyB9IH07CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKICAgICAgICAgaWYgKGF1dG8g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKG1fY29u
dGV4dCwgbV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciksIHsgfSB9OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgZGVmYXVsdDoKICAgICAgICAg
aXRlbS5hcHBseShtX2NvbnRleHQpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgfTsKIH0KIAogUmVw
bGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwg
Ym9vbCB0cmFja1JlcGxheUxpc3QpCkBAIC0xODcsMTIgKzE4OSwxNiBAQCBSZXBsYXlSZXN1bHQg
UmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNr
UmVwbGF5TGlzdAogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVh
bSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogCi0gICAgICAgIGlmIChh
dXRvIFtyZWFzb25Gb3JTdG9wcGluZywgbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcl0g
PSBhcHBseUl0ZW0oaXRlbSk7IHJlYXNvbkZvclN0b3BwaW5nKSB7Ci0gICAgICAgICAgICByZXN1
bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqcmVhc29uRm9yU3RvcHBpbmc7Ci0gICAgICAgICAgICBy
ZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IFdURk1vdmUobWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gYXBwbHlSZXN1bHQgPSBhcHBs
eUl0ZW0oaXRlbSk7CisgICAgICAgIGlmIChhcHBseVJlc3VsdC5zdG9wUmVhc29uKSB7CisgICAg
ICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSAqYXBwbHlSZXN1bHQuc3RvcFJlYXNv
bjsKKyAgICAgICAgICAgIHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0g
V1RGTW92ZShhcHBseVJlc3VsdC5yZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoYXBwbHlSZXN1bHQuZGlkRGVjb21wb3NlR2x5
cGhzICYmICphcHBseVJlc3VsdC5kaWREZWNvbXBvc2VHbHlwaHMgPT0gR3JhcGhpY3NDb250ZXh0
OjpEaWREZWNvbXBvc2VHbHlwaHM6OlllcykKKyAgICAgICAgICAgIHJlc3VsdC5kaWREZWNvbXBv
c2VHbHlwaHMgPSBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBoczo6WWVzOworCiAg
ICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6ZUluQnVmZmVyOwogCiAg
ICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCAyNTg0YTUzOWZjMDUuLjRlMzUwNGZiNTBlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzIsNyArMzMsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IFJlcGxh
eVJlc3VsdCB7CiAgICAgc2l6ZV90IG51bWJlck9mQnl0ZXNSZWFkIHsgMCB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgIFN0b3BSZXBsYXlSZWFzb24gcmVhc29uRm9yU3RvcHBpbmcgeyBT
dG9wUmVwbGF5UmVhc29uOjpSZXBsYXllZEFsbEl0ZW1zIH07CisgICAgc3RkOjpvcHRpb25hbDxH
cmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocz4gZGlkRGVjb21wb3NlR2x5cGhzOwog
fTsKIAogY2xhc3MgUmVwbGF5ZXIgewpAQCAtNjEsNyArNjIsMTIgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJdGVtKEl0ZW1IYW5kbGUpOwor
ICAgIHN0cnVjdCBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+IHN0b3BSZWFzb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHM+IGRpZERlY29tcG9zZUds
eXBoczsKKyAgICB9OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgbV9kaXNwbGF5TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcAppbmRleCBjMzI4YjhmYjY2N2UuLmU0YTRhMjU3MDE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVy
SGFyZkJ1enouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtMzgsOSArMzgsMTAgQEAgRHJh
d0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25l
ciwgZmxvYXQsIERlcml2ZUZvbnQKIHsKIH0KIAotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRy
YXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhz
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGlu
Z01vZGUpCitHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9zZUdseXBocyBEcmF3R2x5cGhzUmVj
b3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
IHNtb290aGluZ01vZGUpCiB7CiAgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZv
bnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9k
ZSk7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzOjpObzsg
ICAgCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggZTdlNmU2YTI3MzM4
Li4xNDEyMjM0NjdlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPENsZWFyUmVjdD4ocmVjdCkpOwogfQogCi12b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhC
dWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1
bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBmb250U21vb3RoaW5nKQorR3JhcGhpY3NDb250ZXh0OjpEaWREZWNvbXBvc2VHbHlwaHMg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRT
bW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pCiB7CiAgICAg
c3RydWN0IERyYXdHbHlwaHMgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0
YTxDYWlybzo6RmlsbFNvdXJjZSwgQ2Fpcm86OlN0cm9rZVNvdXJjZSwgQ2Fpcm86OlNoYWRvd1N0
YXRlLCBGbG9hdFBvaW50LCBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4sIGZsb2F0LCBWZWN0
b3I8Y2Fpcm9fZ2x5cGhfdD4sIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIEZs
b2F0U2l6ZSwgQ29sb3IsIEZvbnRTbW9vdGhpbmdNb2RlPiB7CiAgICAgICAgIHZpcnR1YWwgfkRy
YXdHbHlwaHMoKSA9IGRlZmF1bHQ7CkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgKICAgICB9OwogCiAgICAgaWYgKCFmb250LnBsYXRmb3JtRGF0YSgpLnNpemUoKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsK
IAogICAgIGF1dG8geE9mZnNldCA9IHBvaW50LngoKTsKICAgICBWZWN0b3I8Y2Fpcm9fZ2x5cGhf
dD4gY2Fpcm9HbHlwaHMobnVtR2x5cGhzKTsKQEAgLTUzOCw2ICs1MzgsOCBAQCB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaAogICAgICAgICBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4oZm9udC5w
bGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpLAogICAgICAgICBmb250LnN5bnRoZXRpY0JvbGRP
ZmZzZXQoKSwgV1RGTW92ZShjYWlyb0dseXBocyksIHhPZmZzZXQsIHN0YXRlLnRleHREcmF3aW5n
TW9kZSgpLAogICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgc3RhdGUuZHJvcFNoYWRv
dygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLCBmb250U21vb3RoaW5nKSk7CisK
KyAgICByZXR1cm4gRGlkRGVjb21wb3NlR2x5cGhzOjpObzsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkNjUyN2M0N2Q2MTkuLjBjYTYxNzFl
NTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Ryb2tlRWxs
aXBzZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFy
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUds
eXBocywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdN
b2RlKSBvdmVycmlkZTsKKyAgICBEaWREZWNvbXBvc2VHbHlwaHMgZHJhd0dseXBocyhjb25zdCBX
ZWJDb3JlOjpGb250JiwgY29uc3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IFdl
YkNvcmU6OkdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkZvbnRTbW9vdGhpbmdNb2RlLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG5lZWRzR2x5cGhEZWNvbXBvc2l0aW9uKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkZpbHRlciYsIFdlYkNvcmU6OkZpbHRlclJlc3VsdHMm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKaW5kZXggYWQ0YmExZDY0MTdl
Li5hOThmYTgyZjdmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0zOCw5ICsz
OCwxMCBAQCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmIG93bmVyLCBmbG9hdCwgRGVyaXZlRm9udAogewogfQogCi12b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01v
ZGUgc21vb3RoaW5nTW9kZSkKK0dyYXBoaWNzQ29udGV4dDo6RGlkRGVjb21wb3NlR2x5cGhzIERy
YXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMs
IHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBt
X3Ntb290aGluZ01vZGUpOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkRpZERlY29tcG9z
ZUdseXBoczo6Tm87ICAgIAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCA0ZjMzNDJmYTM5MTAuLjgyNzRjOTM4
OTA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIK
IAorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgiCiAjaW5jbHVkZSAiRGlzcGxh
eUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTEyMyw3ICsxMjQsMTEgQEAgdm9pZCBUZXh0UGFpbnRl
cjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBUZXh0UnUKICAgICAgICAgLy8gUmVwbGF5aW5nIGJhY2sgYSB3aG9sZSBjYWNoZWQgZ2x5cGgg
cnVuIHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCiAgICAgICAgIG1fY29udGV4dC50cmFuc2xhdGUo
dGV4dE9yaWdpbik7CiAgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcihtX2Nv
bnRleHQsICptX2dseXBoRGlzcGxheUxpc3QpOwotICAgICAgICByZXBsYXllci5yZXBsYXkoKTsK
KyAgICAgICAgYXV0byByZXBsYXlSZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChyZXBsYXlSZXN1bHQuZGlkRGVjb21wb3NlR2x5cGhzKQorICAgICAgICAg
ICAgbV9nbHlwaERpc3BsYXlMaXN0LT5zZXRDb250YWluc0l0ZW1zTmVlZGluZ0dseXBoRGVjb21w
b3NpdGlvbigqcmVwbGF5UmVzdWx0LmRpZERlY29tcG9zZUdseXBocyA9PSBHcmFwaGljc0NvbnRl
eHQ6OkRpZERlY29tcG9zZUdseXBoczo6WWVzKTsKKwogICAgICAgICBtX2NvbnRleHQudHJhbnNs
YXRlKC10ZXh0T3JpZ2luKTsKICAgICB9CiAgICAgbV9nbHlwaERpc3BsYXlMaXN0ID0gbnVsbHB0
cjsKQEAgLTI1NSw5ICsyNjAsMTggQEAgU3RyaW5nIFRleHRQYWludGVyOjpjYWNoZWRHbHlwaERp
c3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KFRleHQmIHRleHROb2RlLCBPcHQKICAgICAgICAg
ICAgIGRpc3BsYXlMaXN0ID0gVGV4dFBhaW50ZXI6OmdseXBoRGlzcGxheUxpc3RJZkV4aXN0cygq
dGV4dEJveC5pbmxpbmVCb3goKSk7CiAjZW5kaWYKICAgICAgICAgaWYgKGRpc3BsYXlMaXN0KSB7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChkaXNwbGF5TGlzdC0+YXNUZXh0KGZsYWdzKSk7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIGlmIChmbGFn
cyAmIERpc3BsYXlMaXN0OjpBc1RleHRGbGFnOjpEZWNvbXBvc2VzRHJhd0dseXBocykgeworICAg
ICAgICAgICAgICAgIC8vIFJlcGxheSBkaXNwbGF5TGlzdCB0aHJvdWdoIGEgY29udGV4dCB3aXRo
IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzIHNvIHRoYXQgdGhlIG91dHB1dCBkaXNwbGF5IGxp
c3Qgc2hvd3MgdGhlIGRyYXdpbmcgY29tbWFuZHMgZm9yIGRlY29tcG9zcGVkIGdseXBocy4KKyAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxh
eUxpc3Q+IG91dHB1dERpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6SW5NZW1v
cnlEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJ
bXBsIHJlY29yZGluZ0NvbnRleHQoKm91dHB1dERpc3BsYXlMaXN0LCB7IH0sIHsgfSwgeyB9LCBE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKKyAgICAg
ICAgICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIocmVjb3JkaW5nQ29udGV4
dCwgKmRpc3BsYXlMaXN0KTsKKyAgICAgICAgICAgICAgICBhdXRvIHJlcGxheVJlc3VsdCA9IHJl
cGxheWVyLnJlcGxheSgpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG91dHB1dERp
c3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRpc3BsYXlMaXN0LT5hc1RleHQoZmxhZ3MpKTsKICAgICAg
ICAgfQorCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIH0KIAogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggYjIwMzhlMzg5YzA2Li45NWE3ZDFkZGVlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTMxNzUsNiArMzE3NSw5IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW50ZXJu
YWxzOjpkaXNwbGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgdW5zaWduZWQKICAg
ICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUykK
ICAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6Oklu
Y2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKTsKIAorICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElT
VF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTKQorICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChE
aXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6RGVjb21wb3Nlc0RyYXdHbHlwaHMpOworCiAgICAgaWYg
KCFlbGVtZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApAQCAtMzIwMCw2ICszMjAzLDkgQEAgRXhjZXB0
aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OnJlcGxheURpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCB1bnMKICAgICBpZiAoZmxhZ3MgJiBESVNQTEFZX0xJU1RfSU5DTFVERVNf
UExBVEZPUk1fT1BFUkFUSU9OUykKICAgICAgICAgZGlzcGxheUxpc3RGbGFncy5hZGQoRGlzcGxh
eUxpc3Q6OkFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKTsKIAorICAgIGlm
IChmbGFncyAmIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZUEhTKQorICAgICAgICBk
aXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZzo6RGVjb21wb3Nlc0Ry
YXdHbHlwaHMpOworCiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIApAQCAtMzIz
Myw2ICszMjM5LDkgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmNhY2hlZEdseXBo
RGlzcGxheUxpc3RzRm9yVGV4dE5vZGUoTm9kZSYgbm9kZSwgdW4KICAgICBpZiAoZmxhZ3MgJiBE
SVNQTEFZX0xJU1RfSU5DTFVERVNfUExBVEZPUk1fT1BFUkFUSU9OUykKICAgICAgICAgZGlzcGxh
eUxpc3RGbGFncy5hZGQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1P
cGVyYXRpb25zKTsKIAorICAgIGlmIChmbGFncyAmIERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RS
QVdfR0xZUEhTKQorICAgICAgICBkaXNwbGF5TGlzdEZsYWdzLmFkZChEaXNwbGF5TGlzdDo6QXNU
ZXh0RmxhZzo6RGVjb21wb3Nlc0RyYXdHbHlwaHMpOworCiAgICAgcmV0dXJuIFRleHRQYWludGVy
OjpjYWNoZWRHbHlwaERpc3BsYXlMaXN0c0ZvclRleHROb2RlQXNUZXh0KGRvd25jYXN0PFRleHQ+
KG5vZGUpLCBkaXNwbGF5TGlzdEZsYWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggYjRjYWRkZDIyNDQyLi44ZjM2ZWM3ZTRlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtNDc0LDYgKzQ3NCw3IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAg
ICAgLy8gVmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4K
ICAgICAgICAgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxLAor
ICAgICAgICBESVNQTEFZX0xJU1RfREVDT01QT1NFU19EUkFXX0dMWVBIUyA9IDIKICAgICB9Owog
ICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gZGlzcGxheUxpc3RGb3JFbGVtZW50KEVsZW1lbnQmLCB1
bnNpZ25lZCBzaG9ydCBmbGFncyk7CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiByZXBsYXlEaXNw
bGF5TGlzdEZvckVsZW1lbnQoRWxlbWVudCYsIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1NmZmNTAzYWJlMmQuLjFhM2VkY2M0Y2Vk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjAwLDYgKzYwMCw3IEBA
IHR5cGVkZWYgKEZldGNoUmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKIAog
ICAgIC8vIEZsYWdzIGZvciBkaXNwbGF5TGlzdEZvckVsZW1lbnQuCiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgRElTUExBWV9MSVNUX0lOQ0xVREVTX1BMQVRGT1JNX09QRVJBVElPTlMgPSAxOwor
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERJU1BMQVlfTElTVF9ERUNPTVBPU0VTX0RSQVdfR0xZ
UEhTID0gMjsKICAgICAvLyBSZXR1cm5zIHRoZSByZWNvcmRlZCBkaXNwbGF5IGxpc3QuCiAgICAg
RE9NU3RyaW5nIGRpc3BsYXlMaXN0Rm9yRWxlbWVudChFbGVtZW50IGVsZW1lbnQsIG9wdGlvbmFs
IHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7CiAgICAgLy8gUmV0dXJucyB0aGUgZGlzcGxheSBs
aXN0IHRoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKaW5kZXggN2EwNzMyZTI5MmVlLi43YWJiMDcyZmMzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmRyYXdHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihEaXNwbGF5TGlzdDo6RAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCAq
Zm9udCk7CisgICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCAqZm9udCwgc3RkOjpvcHRpb25h
bDxib29sPiB7IH0pOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdJ
bWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiODFl
YWFlOTVkMmYuLjM0Y2E0ZDQzMzczOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA1LTE0
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lk
IHRoZSBvdmVyaGVhZCBvZiBEcmF3R2x5cGhzUmVjb3JkZXIgd2hlbiBkcmF3aW5nIGNhY2hlZCBn
bHlwaCBidWZmZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDA0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC90ZXh0L2dseXBoLWRpc3Bs
YXktbGlzdC1lbW9qaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9n
bHlwaC1kaXNwbGF5LWxpc3QtZW1vamkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdC1zdmctZm9udC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVt
b2ppLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjItMDUtMTYgIEthcmwgUmFja2xlciAgPHJh
Y2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvdW5sb2FkaW5nLWRvY3Vt
ZW50cy8wMDQuaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY5
MTc2YTVmYWE5Yy4uZWQ3NzNhYTNmNjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUxMDgsNiAr
NTEwOCw4IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2Vycy9zaGFyZWQt
d29ya2VyLW5hbWUtdmlhLW9wdGlvbnMuaHRtbCBbIER1CiAKICMgRGlzcGxheSBsaXN0IGxvZ2dp
bmcgaXMgb25seSBhdmFpbGFibGUgaW4gZGVidWcKIFsgUmVsZWFzZSBdIGZhc3QvdGV4dC9nbHlw
aC1kaXNwbGF5LWxpc3QtY29sb3IuaHRtbCBbIFNraXAgXQorWyBSZWxlYXNlIF0gZmFzdC90ZXh0
L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS5odG1sIFsgU2tpcCBdCitbIFJlbGVhc2UgXSBmYXN0
L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250Lmh0bWwgWyBTa2lwIF0KIAogIyBQbHVn
aW5zCiAjIEZJWE1FOiBSZW1vdmUgdGhlc2UgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2RmM2Q0NmQ0NzkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1l
bW9qaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorCisoc2V0LWN0bQorICAoc2V0LWN0
bSB7bT0oKDEuMDAsMC4wMCkoMC4wMCwtMS4wMCkpIHQ9KDAuMDAsMC4wMCl9KSkKKyh0cmFuc2xh
dGUKKyAgKHggMC4wMCkKKyAgKHkgNzQuMDApKQorKHNjYWxlCisgIChzaXplIHdpZHRoPTEgaGVp
Z2h0PS0xKSkKKyhkcmF3LW5hdGl2ZS1pbWFnZQorICAoc291cmNlLXJlY3QgYXQgKDAsMCkgc2l6
ZSAxNjB4MTYwKQorICAoZGVzdC1yZWN0IGF0ICgwLC0xMykgc2l6ZSAxMDB4MTAwKSBleHRlbnQg
YXQgKDAsMCkgc2l6ZSAweDApCisoc2NhbGUKKyAgKHNpemUgd2lkdGg9MSBoZWlnaHQ9LTEpKQor
KHRyYW5zbGF0ZQorICAoeCAwLjAwKQorICAoeSAtNzQuMDApKQorKHNldC1jdG0KKyAgKHNldC1j
dG0gaWRlbnRpdHkpKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgt
ZGlzcGxheS1saXN0LWVtb2ppLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZ2x5cGgtZGlz
cGxheS1saXN0LWVtb2ppLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi45ZWE5ODEyNDhlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9Citp
ZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0Rm9yY2VVc2VHbHlwaERpc3Bs
YXlMaXN0Rm9yVGVzdGluZyh0cnVlKTsKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJydW4oKSI+
CisKKzxkaXYgaWQ9dGV4dCBzdHlsZT0iZm9udDogMTAwcHggJ0FwcGxlIENvbG9yIEVtb2ppJyI7
PiYjeDFmOTg4OzwvZGl2PgorCis8cHJlIGlkPW91dHB1dD48L3ByZT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBydW4oKSB7CisgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRGb3JjZVVz
ZUdseXBoRGlzcGxheUxpc3RGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBvdXRw
dXQudGV4dENvbnRlbnQgPSBpbnRlcm5hbHMuY2FjaGVkR2x5cGhEaXNwbGF5TGlzdHNGb3JUZXh0
Tm9kZSh0ZXh0LmZpcnN0Q2hpbGQsIGludGVybmFscy5ESVNQTEFZX0xJU1RfREVDT01QT1NFU19E
UkFXX0dMWVBIUyk7CisgICAgICAgICAgICAgICAgdGV4dC5yZW1vdmUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qt
c3ZnLWZvbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2dseXBoLWRpc3Bs
YXktbGlzdC1zdmctZm9udC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4zYTEwNjZjMjQ1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LXN2Zy1mb250LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE5IEBACisKKyhkcmF3LWdseXBocworICAobG9jYWwtYW5jaG9yICgwLDApKQorICAo
YW5jaG9yLXBvaW50ICgwLDApKQorICAobGVuZ3RoIDEpIGV4dGVudCBhdCAoMCwwKSBzaXplIDB4
MCkKKyhkcmF3LWltYWdlLWJ1ZmZlcgorICAoc291cmNlLXJlY3QgYXQgKDAsMCkgc2l6ZSA5MHg4
MCkKKyAgKGRlc3QtcmVjdCBhdCAoMTAwLC03MCkgc2l6ZSA5MHg4MCkgZXh0ZW50IGF0ICgwLDAp
IHNpemUgMHgwKQorKGRyYXctaW1hZ2UtYnVmZmVyCisgIChzb3VyY2UtcmVjdCBhdCAoMCwwKSBz
aXplIDk2eDk2KQorICAoZGVzdC1yZWN0IGF0ICgyMDAsLTc4KSBzaXplIDk2eDk2KSBleHRlbnQg
YXQgKDAsMCkgc2l6ZSAweDApCisoZHJhdy1pbWFnZS1idWZmZXIKKyAgKHNvdXJjZS1yZWN0IGF0
ICgwLDApIHNpemUgOTZ4ODgpCisgIChkZXN0LXJlY3QgYXQgKDMwMCwtNzQpIHNpemUgOTZ4ODgp
IGV4dGVudCBhdCAoMCwwKSBzaXplIDB4MCkKKyhkcmF3LWdseXBocworICAobG9jYWwtYW5jaG9y
ICg0MDAsMCkpCisgIChhbmNob3ItcG9pbnQgKDQwMCwwKSkKKyAgKGxlbmd0aCAxKSBleHRlbnQg
YXQgKDAsMCkgc2l6ZSAweDApCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9n
bHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9n
bHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjIzYTY2YWY1MGRjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3Qtc3ZnLWZvbnQuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKK30KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXRGb3Jj
ZVVzZUdseXBoRGlzcGxheUxpc3RGb3JUZXN0aW5nKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+
CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogIlNWR0ZvbnQiOworICAgIHNyYzogdXJs
KCJyZXNvdXJjZXMvQWhlbS1TVkcudHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpOworfQorPC9zdHls
ZT4KKzxib2R5IG9ubG9hZD0icnVuKCkiPgorCis8ZGl2IGlkPXRleHQgc3R5bGU9ImZvbnQ6IDEw
MHB4ICdTVkdGb250JyI7PmFBQkNhPC9kaXY+CisKKzxwcmUgaWQ9b3V0cHV0PjwvcHJlPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rp
b24oKSB7CisgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxz
LnNldEZvcmNlVXNlR2x5cGhEaXNwbGF5TGlzdEZvclRlc3RpbmcoZmFsc2UpOworICAgICAgICAg
ICAgICAgIG91dHB1dC50ZXh0Q29udGVudCA9IGludGVybmFscy5jYWNoZWRHbHlwaERpc3BsYXlM
aXN0c0ZvclRleHROb2RlKHRleHQuZmlyc3RDaGlsZCwgaW50ZXJuYWxzLkRJU1BMQVlfTElTVF9E
RUNPTVBPU0VTX0RSQVdfR0xZUEhTKTsKKyAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9m
YXN0L3RleHQvZ2x5cGgtZGlzcGxheS1saXN0LWVtb2ppLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy13azIvZmFzdC90ZXh0L2dseXBoLWRpc3BsYXktbGlzdC1lbW9qaS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMWUw
Yzg1N2ViMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L2Zhc3QvdGV4dC9nbHlwaC1kaXNwbGF5LWxpc3QtZW1vamktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTkgQEAKKworKHNldC1jdG0KKyAgKHNldC1jdG0ge209KCgxLjAwLDAuMDApKDAuMDAsLTEu
MDApKSB0PSgwLjAwLDAuMDApfSkpCisodHJhbnNsYXRlCisgICh4IDAuMDApCisgICh5IDcwLjAw
KSkKKyhzY2FsZQorICAoc2l6ZSB3aWR0aD0xIGhlaWdodD0tMSkpCisoZHJhdy1uYXRpdmUtaW1h
Z2UKKyAgKHNvdXJjZS1yZWN0IGF0ICgwLDApIHNpemUgMTYweDE2MCkKKyAgKGRlc3QtcmVjdCBh
dCAoMSwtMTUpIHNpemUgMTAweDEwMCkgZXh0ZW50IGF0ICgwLDApIHNpemUgMHgwKQorKHNjYWxl
CisgIChzaXplIHdpZHRoPTEgaGVpZ2h0PS0xKSkKKyh0cmFuc2xhdGUKKyAgKHggMC4wMCkKKyAg
KHkgLTcwLjAwKSkKKyhzZXQtY3RtCisgIChzZXQtY3RtIGlkZW50aXR5KSkKKwotLSAKMi4zMi4w
IChBcHBsZSBHaXQtMTMyKQoK
</data>
<flag name="commit-queue"
          id="488622"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>