<?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>217194</bug_id>
          
          <creation_ts>2020-10-01 16:07:05 -0700</creation_ts>
          <short_desc>Add stubs for AudioWorkletProcessor and AudioWorkletGlobalScope</short_desc>
          <delta_ts>2020-10-02 12:22:19 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217153</dependson>
          <blocked>217058</blocked>
    
    <blocked>217242</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693910</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 16:07:05 -0700</bug_when>
    <thetext>Add stubs for AudioWorkletProcessor and AudioWorkletGlobalScope:
- https://www.w3.org/TR/webaudio/#audioworkletprocessor
- https://www.w3.org/TR/webaudio/#audioworkletglobalscope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693915</commentid>
    <comment_count>1</comment_count>
      <attachid>410280</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 16:18:32 -0700</bug_when>
    <thetext>Created attachment 410280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693957</commentid>
    <comment_count>2</comment_count>
      <attachid>410296</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 18:16:08 -0700</bug_when>
    <thetext>Created attachment 410296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693962</commentid>
    <comment_count>3</comment_count>
      <attachid>410298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-01 18:36:41 -0700</bug_when>
    <thetext>Created attachment 410298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694136</commentid>
    <comment_count>4</comment_count>
      <attachid>410298</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-02 10:27:23 -0700</bug_when>
    <thetext>Comment on attachment 410298
Patch

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

What&apos;s the deal with all the extra &quot;DOM&quot;s added to the generated code? Name conflict? Can you add an explanation to the changelog?

&gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:53
&gt; +    float sampleRate() const { return 44100; }

This number should probably be in its own constexpr with a clear name to explain it (unless you expect this to go away real soon).

&gt; Source/WebCore/Modules/webaudio/AudioWorkletProcessorConstructor.idl:31
&gt; +]callback AudioWorkletProcessorConstructor = AudioWorkletProcessor (object options);

Please add a space after the closing ].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694137</commentid>
    <comment_count>5</comment_count>
      <attachid>410298</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-02 10:30:39 -0700</bug_when>
    <thetext>Comment on attachment 410298
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:53
&gt;&gt; +    float sampleRate() const { return 44100; }
&gt; 
&gt; This number should probably be in its own constexpr with a clear name to explain it (unless you expect this to go away real soon).

If they were going to stay like this for a long time we could use static constexpr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694138</commentid>
    <comment_count>6</comment_count>
      <attachid>410298</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 10:32:40 -0700</bug_when>
    <thetext>Comment on attachment 410298
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:53
&gt;&gt;&gt; +    float sampleRate() const { return 44100; }
&gt;&gt; 
&gt;&gt; This number should probably be in its own constexpr with a clear name to explain it (unless you expect this to go away real soon).
&gt; 
&gt; If they were going to stay like this for a long time we could use static constexpr.

This is going to go away real soon to return the actual context sample rate. I could have returned 0 here but I figured I would return a realistic sample rate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694140</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 10:36:30 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 410298 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410298&amp;action=review
&gt; 
&gt; What&apos;s the deal with all the extra &quot;DOM&quot;s added to the generated code? Name
&gt; conflict? Can you add an explanation to the changelog?

Yes, there was a name conflict since we now have both JSAudioWorkletProcessor and JSAudioWorkletProcessorConstructor classes (Due to having AudioWorkletProcessor.idl and AudioWorkletProcessorConstructor.idl). The issue was that the DOMConstructor for JSAudioWorkletProcessor was named JSAudioWorkletProcessorConstructor too. So I renamed it to JSAudioWorkletProcessorDOMConstructor.

&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:53
&gt; &gt; +    float sampleRate() const { return 44100; }
&gt; 
&gt; This number should probably be in its own constexpr with a clear name to
&gt; explain it (unless you expect this to go away real soon).
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioWorkletProcessorConstructor.idl:31
&gt; &gt; +]callback AudioWorkletProcessorConstructor = AudioWorkletProcessor (object options);
&gt; 
&gt; Please add a space after the closing ].

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694183</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 12:21:09 -0700</bug_when>
    <thetext>Committed r267891: &lt;https://trac.webkit.org/changeset/267891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694186</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-02 12:22:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/69891959&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410280</attachid>
            <date>2020-10-01 16:18:32 -0700</date>
            <delta_ts>2020-10-01 18:16:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217194-20201001161831.patch</filename>
            <type>text/plain</type>
            <size>280942</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY2ZmEyY2FiZjM4NGQ2
MjI3NmEwMDBlYWMzNTE0YTQzMWE2OTdmOC4uZTM4OTRkOGM0ZTdlNGY5OTZjNGI0YWE4NTBiNTVh
YTFjZGY0ZGM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0dWJzIGZvciBBdWRp
b1dvcmtsZXRQcm9jZXNzb3IgYW5kIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3R1YnMgZm9yIEF1ZGlv
V29ya2xldFByb2Nlc3NvciBhbmQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6CisgICAgICAgIC0g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1ZGlvLyNhdWRpb3dvcmtsZXRwcm9jZXNzb3IKKyAg
ICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2F1ZGlvd29ya2xldGdsb2Jh
bHNjb3BlCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjdXJyZW50RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OmN1cnJlbnRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpzYW1wbGVSYXRlIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Xb3JrbGV0UHJvY2Vzc29yOjpwb3J0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JD
b25zdHJ1Y3Rvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZCk6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlv
bkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcyk6CisKIDIwMjAtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIEF1ZGlvV29ya2xldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxOTQzODAyM2M0MzU4YjA2MDYxMDNjNjVjNDdkNTg5Zjdl
ZTVjMzRjLi41ZTk4ZTc3OTIyNjBjZDQ5MjFhMTUxNDUzZGZjNjRhOTYxMjRjMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDc3LDYgKzQ3Nyw4IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwK
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJPcHRpb25zLmlkbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYThkY2Y5Njk4
MmE0MDgyOTk3NDU4MjU4MzRiNzE2MGI0NWQyN2Y1Zi4uNDUwZWE3NWJiZDVhZWJiZGVmZjE4YWUy
ODQ0YmExNzlkM2ZmMjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0zMzMsNiArMzMzLDggQEAgJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyT3B0aW9ucy5pZGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMzY3OTVlYTQxMzM4
ZWRkYTg0YWQyODM0ZjY4OGRlZDMyMDRkZTBkOC4uZTBjMDRmYzQyMGUxMTkzMzYyNjdkOGM3Y2Ji
ZWQ4NGRiNDgyYjQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTIxNCw2ICsyMTQsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXROb2RlLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXROb2RlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3Jr
bGV0Tm9kZU9wdGlvbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3Ry
dWN0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudElucHV0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAyYzFjMTA4OWFkNWFiNmI3NTlmNTA2ZGMxYWU5MDNjZmYy
MDYwNmY2Li5hYTFjNWZmZmYyOWIzYzhkMWRlMjZkNzcxMTMwNGE3OTE3NzI5NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQxMCw2ICs0MTAsOCBAQCBKU19CSU5ESU5HX0lE
TFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZU9wdGlvbnMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0UHJvY2Vzc29yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGQ3ZmFkYjdlMDFlZDNkNzFlZDU0MmU3MDZiOTk0MGNhOTYyMTdlNmQuLjgxOGUyNGQx
ZTBiNjM5NzllOWMyNmYxMGJkZjk3YWZjYjM0NWUwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oIgogCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00Nyw2ICs0OCwxMiBAQCBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhyZWFk
JiB0aHJlYWQsIGNvbgogCiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6fkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKCkgPSBkZWZhdWx0OwogCit2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpy
ZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3I+JiYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFVO
VVNFRF9QQVJBTShuYW1lKTsKK30KKwogVGhyZWFkKiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6
dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGhyZWFkLT50aHJlYWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBlMTViZmE0Y2VjNmFmZGJmMmYzMmNlMzk2YTdkYmQy
MzNhZjkxNzBlLi4zYTQxMDYwYmM2MmQzY2IxNDJiZjIzNmZhZjc3NWI2MDc4NjY4MGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3I7CiBjbGFzcyBBdWRpb1dv
cmtsZXRUaHJlYWQ7CiAKIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVyczsKQEAgLTQ2LDYgKzQ3LDEx
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlKCk7CiAKKyAg
ICB2b2lkIHJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcj4mJik7CisgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIDA7IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiAwOyB9Cisg
ICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIDQ0MTAwOyB9CisKICAgICBUaHJl
YWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwKaW5kZXggN2YzMmZjOGVhYTJmODRiMzY2NTVhOWJlMDExNzBlZmE1MGZkNWMy
Zi4uM2I2ZmIyMmNmNzg0ZGZjMDU5ZGUzNTNjNzM1MDJjOGI5ZmIxZjY2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwKQEAgLTM1LDUgKzM1LDggQEAKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2JhbD0oV29ya2xldCxBdWRpb1dvcmtsZXQp
LAogXSBpbnRlcmZhY2UgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUgOiBXb3JrbGV0R2xvYmFsU2Nv
cGUgewotICAgIC8vIEltcGxlbWVudCBBUEkuCisgICAgdW5kZWZpbmVkIHJlZ2lzdGVyUHJvY2Vz
c29yKERPTVN0cmluZyBuYW1lLCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3RvciBwcm9j
ZXNzb3JDdG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRGcmFtZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzYW1wbGVSYXRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNDc2YjIxZTZlNjhmYWNiNjhhY2VkOGUxY2YyMzdiZjBkMWJmMjgy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xl
dFByb2Nlc3NvcigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTY0NzY4M2RkZDM0
NDM1Y2JlMzJiNWU3ZDYyOGU1NGVlZDRmODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworCitj
bGFzcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmts
ZXRQcm9jZXNzb3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFByb2Nl
c3Nvcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
V29ya2xldFByb2Nlc3Nvcik7CisgICAgfQorCisgICAgTWVzc2FnZVBvcnQqIHBvcnQoKSB7IHJl
dHVybiBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNTEzZjcyNjNlMGIyMjY1M2E3MzE5
YTg1YTJjODMzMzU1NTVmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEV4cG9zZWQ9QXVkaW9Xb3JrbGV0LAorICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7
CisgICAgY29uc3RydWN0b3IoKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQg
cG9ydDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjljNjhmYmFiMTQzY2NkYzNkODMyMzgxZjBlYmYxZGEwZjhkMDQ5ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tS
ZXN1bHQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvcjsKKworY2xhc3MgQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yQ29uc3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rvcj4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmly
dHVhbCBDYWxsYmFja1Jlc3VsdDxSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gaGFuZGxl
RXZlbnQoSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gb3B0aW9ucykgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg3OGE4MDUxOTky
YjdlODZlYWIxNGI1ODAyMWUyMDBjMDYxZDAyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3Iu
aWRsCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworY2FsbGJhY2sgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IgPSBB
dWRpb1dvcmtsZXRQcm9jZXNzb3IgKG9iamVjdCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YzdlY2ZkZDE1NWM1MjgwZDU4NTRiZmI1MmJlYmVhMDI4NGFkYjdhMy4uZjEwMzcyMDNmZGMyM2Yx
ZDIzZWNhNjBjMGQ4OTk5M2IxY2EzZTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwOCw2ICsyMDgs
NyBAQCBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5LmNwcAogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAorTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRFNQS2VybmVsLmNwcApAQCAtMjY4
Nyw2ICsyNjg4LDggQEAgSlNBdWRpb1dvcmtsZXQuY3BwCiBKU0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAogSlNBdWRpb1dvcmtsZXROb2RlLmNwcAogSlNBdWRpb1dvcmtsZXROb2RlT3B0aW9u
cy5jcHAKK0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorSlNBdWRpb1dvcmtsZXRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5jcHAgCiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0
cy5jcHAKIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5jcHAKIEpTQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNhMDBmOWUwYTI2YmYyMWE4YmNj
OWZmNTUxMDIyZjc0Nzk4MTIwZGQuLjA4MGNjODY1NWE4OTMzYjFmNmVlMjJjNDkzOGQ1OWYyZWIw
ZTFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTI0OTUsNiArMjQ5NSw3IEBACiAJCTgzNzA1NjhFMUY1MDkxNTcwMEQ5MzQy
NSAvKiBKU0ZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3MDU2OEIxRjUwOTE1MDAwRDkzNDI1IC8qIEpTRmlsZUNhbGxiYWNrLmgg
Ki87IH07CiAJCTgzNzA1NjkwMUY1MDkxNUMwMEQ5MzQyNSAvKiBKU0ZpbGVTeXN0ZW1FbnRyeUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzcwNTY4OTFGNTA5MTUwMDBEOTM0MjUgLyogSlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oICov
OyB9OwogCQk4MzcxQUMzQjFGNTA5QkU0MDBGQkYyODQgLyogRXJyb3JDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MUFDMzkxRjUwOUJE
RDAwRkJGMjg0IC8qIEVycm9yQ2FsbGJhY2suaCAqLzsgfTsKKwkJODM3MjZFRkIyNTI2NzlDNTAw
QzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzcyNkVGODI1MjY3OUIyMDBDNjEx
NEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzQ1RDAyMjREODk5RDMwMEZC
RENDNCAvKiBHYWluT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3NDVDRkYyNEQ4OTlDMjAwRkJEQ0M0IC8qIEdhaW5PcHRpb25zLmggKi87
IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIx
ODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1MjksNiArMjUzMCw3IEBACiAJCTgzQjk4NzBCMjUy
MjVGN0QwMEE5MzlGMSAvKiBBdWRpb1dvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk4NzAxMjUyMjVGMEMwMEE5MzlGMSAvKiBBdWRpb1dv
cmtsZXQuaCAqLzsgfTsKIAkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1N
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk4
NkZGMjUyMjVGMEIwMEE5MzlGMSAvKiBBdWRpb1BhcmFtTWFwLmggKi87IH07CiAJCTgzQkI1Qzg4
MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVB
NzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJODNCQjhCNUYyNTI2
Nzc2NDAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQjhCNUQyNTI2Nzc1NTAwRDg5RjBCIC8q
IEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oICovOyB9OwogCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNF
NjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRT
dGF0ZS5oICovOyB9OwogCQk4M0MwNUE1QjFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuaCAqLzsgfTsKIAkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1
YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNDMUY1OTIxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5o
ICovOyB9OwpAQCAtMTA2ODQsNiArMTA2ODYsOCBAQAogCQk4MzcxQUMzNzFGNTA5QkREMDBGQkYy
ODQgLyogRXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXJyb3JDYWxs
YmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzFBQzM4MUY1MDlCREQw
MEZCRjI4NCAvKiBGaWxlQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVD
YWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzFBQzM5MUY1MDlC
REQwMEZCRjI4NCAvKiBFcnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM3
MjZFRjgyNTI2NzlCMjAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNzI2RUZBMjUyNjc5QjMwMEM2MTE0RSAvKiBB
dWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzcy
REIzMDFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc0NUNGRjI0RDg5OUMyMDBGQkRD
QzQgLyogR2Fpbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Fpbk9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NDVEMDEyNEQ4OTlDMjAwRkJEQ0M0IC8qIEdhaW5P
cHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHYWluT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDc1Myw2ICsxMDc1Nyw5IEBACiAJCTgzQjk4NzA3MjUyMjVGMEUwMEE5MzlGMSAv
KiBBdWRpb1dvcmtsZXROb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvV29ya2xldE5vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTg3MDgyNTIyNUYwRTAwQTkzOUYxIC8q
IEF1ZGlvUGFyYW1NYXAuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvUGFyYW1NYXAuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFu
dHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2Nl
bmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JCOEI1
QjI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzQkI4QjVEMjUyNjc3NTUwMEQ4OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNz
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzQkI4QjVFMjUyNjc3NTYwMEQ4OUYwQiAvKiBBdWRpb1dvcmts
ZXRQcm9jZXNzb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0Nv
bnRleHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNF
NjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODND
MDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxl
UHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtMjk4OTUsNiArMjk5MDIsMTEgQEAKIAkJCQk4M0I5ODcwNDI1MjI1RjBE
MDBBOTM5RjEgLyogQXVkaW9Xb3JrbGV0Tm9kZS5pZGwgKi8sCiAJCQkJODNCOTg3MDAyNTIyNUYw
QjAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zLmggKi8sCiAJCQkJODNCOTg3MDUy
NTIyNUYwRDAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zLmlkbCAqLywKKwkJCQk4
M0JCOEI1QjI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcCAqLywK
KwkJCQk4M0JCOEI1RDI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgg
Ki8sCisJCQkJODNCQjhCNUUyNTI2Nzc1NjAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nv
ci5pZGwgKi8sCisJCQkJODM3MjZFRjgyNTI2NzlCMjAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFBy
b2Nlc3NvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJODM3MjZFRkEyNTI2NzlCMzAwQzYxMTRFIC8q
IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbCAqLywKIAkJCQk4M0ZDOTk0QTI1
MjU1N0U4MDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcCAqLywKIAkJCQk4M0ZDOTk0
OTI1MjU1N0U3MDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmggKi8sCiAJCQkJODMxOThG
QkIyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuY3BwICovLApAQCAtMzA1MDUs
NiArMzA1MTcsOCBAQAogCQkJCTgzM0JEODFFMjUyNEQ1MzQwMDZFNzJCMyAvKiBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MDkyNTIyNUY3MjAw
QTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjk4NzBB
MjUyMjVGNzYwMEE5MzlGMSAvKiBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODNCQjhCNUYyNTI2Nzc2NDAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM3MjZFRkIyNTI2NzlDNTAwQzYxMTRFIC8qIEF1ZGlv
V29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZDOTk0
QjI1MjU1N0VBMDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEY3MTNBMEQ1QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1OGZkMWE3YTI2
ZmRkMWRhYzRkYjJiNzBiMWM1NDUzNzViY2Q0ZjlhLi5iMDFiZDcwNWYyNjhlMzUxY2I0OWQ4Yjg5
YzY3NzE2ZmFhNTk2ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzk4OSw2ICszOTg5LDggQEAgc3ViIEdlbmVyYXRl
UnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogICAgICAgICBwdXNoKEAk
Y29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQ
dHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCki
KTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2xldCIpIHsKICAgICAgICAgcHVzaChA
JGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0
UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUo
KSIpOworICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJBdWRpb1dvcmtsZXQiKSB7CisgICAgICAg
IHB1c2goQCRjb25qdW5jdHMsICJpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2VydCgiVW5yZWNvZ25p
emVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBv
c2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICciIC4gcmVm
KCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQ3ODcsNyArNDc4OSw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFzc05hbWV9RE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5
RnVuY3Rpb259KSB7CkBAIC02NTc0LDcgKzY1NzYsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uQ29udGVudAogCiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiSlNWYWx1
ZSAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIntcbiIp
OwotICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfURPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xu
Iik7CiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTc2
NzQsNyArNzY3Niw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBt
eSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwotICAgIG15ICRjb25zdHJ1
Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0
cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfURPTUNvbnN0cnVjdG9yIjsKICAgICBteSAk
dGVtcGxhdGVDbGFzc05hbWUgPSBHZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRpbnRl
cmZhY2UpOwogCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7dGVtcGxhdGVDbGFzc05hbWV9Lmgi
KTsKQEAgLTc2OTgsNyArNzcwMCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bnMKIAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXggPSAiY29uc3RydWN0
JHtjbGFzc05hbWV9IjsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyAke2NsYXNzTmFtZX1D
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyAk
e2NsYXNzTmFtZX1ET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSlcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pO1xuIik7CkBAIC03NzI1LDcgKzc3MjcsNyBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlZmluaXRpb24KICAgICByZXR1cm4gaWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3Io
JGludGVyZmFjZSk7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWU7Ci0gICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiA6ICIk
e2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0g
JGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uIiA6ICIke2NsYXNzTmFtZX1ET01Db25zdHJ1Y3RvciI7CiAKICAgICBpZiAo
SXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIGlmIChIYXNDdXN0b21Db25z
dHJ1Y3RvcigkaW50ZXJmYWNlKSkgewpAQCAtNzg1NSw3ICs3ODU3LDcgQEAgc3ViIEdlbmVyYXRl
Q29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNz
TmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2Us
ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSA9IEBfOwogCi0gICAgbXkgJGNvbnN0
cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiJHtj
bGFzc05hbWV9TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
ciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0
b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2Ns
YXNzTmFtZX1ET01Db25zdHJ1Y3RvciI7CiAgICAgbXkgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGgg
PSAwOwogICAgIGlmIChAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc30gPiAwKSB7CiAgICAgICAg
ICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMjU1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKaW5kZXggOWQ2MDRk
OWFmNWU5YjU3MWJkYWVlOTBiZTg2Y2E5ODYxZjFhODRkOC4uZDI2Mzc2MGE4NWMzN2M4ZGUwZmYz
M2YwNTYzZTVhNGM0MDFkMTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNET01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0
b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
RE9NV2luZG93VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKTsKIAotdXNpbmcg
SlNET01XaW5kb3dDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTRE9NV2luZG93PjsKK3VzaW5nIEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0RPTVdpbmRvdz47CiAKIC8qIEhhc2ggdGFibGUg
Ki8KIApAQCAtMTU0LDE5ICsxNTQsMTkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
RE9NV2luZG93VGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
RE9NV2luZG93VGFibGUgPSB7IDExLCAzMSwgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwgSlNE
T01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07Ci10ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNET01XaW5kb3dDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiBKU1ZhbHVlIEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICByZXR1cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxP
YmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNET01XaW5kb3dDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiB2b2lkIEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0
LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkRPTVdpbmRvdyJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkRPTVdpbmRvdyIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dDb25zdHJ1Y3Rvcikg
fTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93RE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkRPTVdpbmRvdyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNET01XaW5kb3dET01Db25zdHJ1Y3RvcikgfTsKIAogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEpT
RE9NV2luZG93OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2luZG93UHJveHkqIHByb3h5KQog
CiBKU1ZhbHVlIEpTRE9NV2luZG93OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTRE9NV2luZG93Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTRE9N
V2luZG93RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJ
RExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZGViNTFmNmVmMmUzMTJiZjViMmUzYzcy
YmNjYjZlYWRiZGNmZmMxNC4uMmJkNzNjMzlmYjRmNGVjMjg4NzgxMDI5ZjNjZjkxODA3ZThkMTNl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCi11c2lu
ZyBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPjsKK3VzaW5n
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwogCiAv
KiBIYXNoIHRhYmxlICovCiAKQEAgLTY3LDE5ICs2NywxOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogfTsK
IAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlVGFi
bGUgPSB7IDEsIDEsIHRydWUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwg
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8
PiBKU1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU1dvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25z
dHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0Lmdl
dFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1By
b3h5KiBwcm94eSkKIAogSlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cuY3BwCmluZGV4IDkyM2ZjNzI2NzY3YWMwOWM2YzQ3NDA2N2Y1MjA4OTFjZThkZDhkZTcuLjBh
NDdlOTZiN2ZhM2ZiY2RiNTYzNWI4MzczZWM5NjNlZDQyMmY4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgcHJpdmF0
ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd1Byb3RvdHlwZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5
cGU6OkJhc2UpOwogCi11c2luZyBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3RvcjxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz47Cit1c2luZyBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
cjxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdz47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29u
c3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTExfQVRUUklCVVRFUyBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVj
dG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBhdXRvIG9iamVjdCA9
IEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6Y3JlYXRlKCk7CiAgICAgc3RhdGljX2Fzc2VydChU
eXBlT3JFeGNlcHRpb25PclVuZGVybHlpbmdUeXBlPGRlY2x0eXBlKG9iamVjdCk+Ojppc1JlZik7
CkBAIC0xNDMsMjIgKzE0MywyMiBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTExfQVRUUklCVVRFUyBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbgogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVmFsdWUpOwogfQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKK0pTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9O
KEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRlbXBs
YXRlPD4gSlNWYWx1ZSBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3dET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiB2b2lkIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3dDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRv
d0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApA
QCAtMjA1LDcgKzIwNSw3IEBAIEpTT2JqZWN0KiBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhCiAKIEpTVmFsdWUgSlNF
eHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
dm9pZCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBhMTY2ZWE3
MmZlNzFkZjljYWRhMTJiMzA1MGY0NmYxMmVhMDA5YmMzLi5lZGFjZDEyYjcxNDk3MjZmMzVhMTU4
ZWQ3OWRiNjQxMmZkNjhmZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNQYWludFdvcmtsZXRHbG9iYWxTY29wZVBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29u
c3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1BhaW50V29ya2xldEds
b2JhbFNjb3BlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKLXVzaW5nIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+OwordXNpbmcgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8K
IApAQCAtNjcsMTkgKzY3LDE5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
VGFibGVWYWx1ZXMsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZUluZGV4IH07Ci10ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTV29ya2xl
dEdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRl
bXBsYXRlPD4gdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
Z2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlBhaW50V29ya2xldEdsb2Jh
bFNjb3BlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJQYWludFdvcmtsZXRHbG9iYWxT
Y29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSlNQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94
eSkKIAogSlNWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
KiBJRExBdHRyaWJ1dGU8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZT46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDljODJkZmM3NGUz
MjQwMDdhYjM2ZDdhZWZkNTcyOWQxMWI5NjY3OGMuLmNhMjc2YTkzMjk4YTAzZWE5YTI4OTQ2NDlk
NGE0NTQzZmQ4MWMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKLXVzaW5n
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47Cit1c2luZyBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRh
YmxlICovCiAKQEAgLTY3LDE5ICs2NywxOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwg
dHJ1ZSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVUYWJsZUlu
ZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBy
ZXR1cm4gSlNXb3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmpl
Y3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25z
dHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTUHJveHkqIHByb3h5KQogCiBKU1ZhbHVlIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCBm
NTE5MjNjMDNkZDE1OWE4Njg5Y2JlZDEyOGNkMmQ4YjAxZGQyNmU3Li4wYTdkNDdlMDM2ZDRlMWI5
NDQwNjE5OGI1MjZmMTQ3ODM0ZGMyYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAg
LTEwNCwyMiArMTA0LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUsIEpTVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENFUmVhY3Rpb25zPjsKK3Vz
aW5nIEpTVGVzdENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RDRVJlYWN0aW9ucz47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnND
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zRE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdENFUmVhY3Rpb25zIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAot
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdENFUmVhY3Rpb25zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSB9
OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdGlvbnNET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdENFUmVhY3Rpb25zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnN0
cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTczLDcg
KzE3Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RDRVJlYWN0aW9uczo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RDRVJlYWN0
aW9uczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDRVJlYWN0aW9u
c0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDRVJlYWN0aW9u
c0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Y3BwCmluZGV4IGMwMzZhY2UyNzZhOTM1N2JlM2RmN2NkZmQ1NDIxOTg3YzY4ZDEzMzEuLjkwMjI0
NDk4MThjNzA0NDQxZDU0NjE1NTc5NDU1MjgzZmIzNjA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKQEAgLTkxLDIyICs5MSwyMiBAQCBwcml2YXRl
OgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXJQcm90b3R5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90
b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyPjsKK3VzaW5nIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25z
dHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE1NSw3
ICsxNTUsNyBAQCBKU09iamVjdCogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsbwogCiBKU1ZhbHVlIEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZv
aWQgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcAppbmRleCA4ODIzM2NhZjZiNjRmYTYzOGEzYTBiZjJl
YThkYTE2NDYxMjlmMWE1Li42ZTRjZGE4NDMxYjZkMTMyZTg4NzU3Yzc5NDczMWNhNWY3MzRjNWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToK
IH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlLCBKU1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNU
ZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0Q2FsbFRyYWNlcj47Cit1c2luZyBKU1Rlc3RDYWxsVHJhY2VyRE9NQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDYWxsVHJhY2VyPjsK
IAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIApAQCAtMTIwLDEzICsxMjAsMTMg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzW10gPQogCiBzdGF0aWNfYXNzZXJ0KFRlc3RDYWxsVHJhY2VyOjp0ZXN0Q29u
c3RWYWx1ZSA9PSBmYWxzZSwgInRlc3RDb25zdFZhbHVlIGluIFRlc3RDYWxsVHJhY2VyIGRvZXMg
bm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RD
YWxsVHJhY2VyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RDYWxsVHJhY2VyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90
b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RDYWxsVHJhY2VyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDYWxs
VHJhY2VyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUcKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENhbGxUcmFj
ZXI6OmluZm8oKSwgSlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlz
KTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbFRyYWNlckNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2FsbFRyYWNlciIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVj
dG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbFRyYWNlckRPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2FsbFRyYWNlciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2FsbFRyYWNlckRPTUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTkz
LDcgKzE5Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RDYWxsVHJhY2VyOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdENhbGxU
cmFjZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q2FsbFRyYWNl
ckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDYWxsVHJhY2Vy
RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0Q2FsbFRyYWNlcjo6ZGVzdHJveShKU0M6OkpT
Q2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCmluZGV4IDRl
ODgzNmE2Y2U0ZTJjNGU2MjI3YTdjOTczNTJkMjM5NjQ4ZjQ2OTEuLmJhNmJlNTA1NzY5NDVmZWU0
YjY4N2QyYWU4YzljMmE1ZWViOGI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJm
YWNlLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjp+SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UoKQogI2VuZGlmCiB9CiAKLXVzaW5nIEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT47Cit1c2luZyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+OwogCiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCkBA
IC0xNTEsMTMgKzE1MSwxMyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogc3RhdGljX2Fzc2VydChU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkNPTlNUQU5UMSA9PSAxLCAiQ09OU1RBTlQxIGluIFRlc3RD
YWxsYmFja0ludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogc3RhdGlj
X2Fzc2VydChUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkNPTlNUQU5UMiA9PSAyLCAiQ09OU1RBTlQy
IGluIFRlc3RDYWxsYmFja0ludGVyZmFjZSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIp
OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFS
QU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0K
IAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
Q2FsbGJhY2tJbnRlcmZhY2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKQEAgLTE2NSwxMSArMTY1LDExIEBA
IHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBu
dWxscHRyLCBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0
aGlzKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dENhbGxiYWNrSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURPTUNvbnN0cnVjdG9yKSB9
OwogCiBKU1ZhbHVlIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRp
b25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoTm9QYXJhbSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAppbmRleCA2NGU4MDI2MjRiZTVmODM5ZjQ2MjFlNGY5NTMyMTliODFlNzJkZGM3Li4zNjljZjYw
Mzc0NjdlOTJmYWI0OGQwZTNhMDA3NDg3Y2VhY2JlYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTgwLDI3ICs4MCwy
NyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgPSBKU0RPTUJ1aWx0aW5Db25z
dHJ1Y3RvcjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj47Cit1c2luZyBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yID0gSlNET01CdWls
dGluQ29uc3RydWN0b3I8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+OwogCi10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rp
b25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShW
TSYgdm0pCit0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0m
IHZtKQogewogICAgIHJldHVybiB0ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JJbml0
aWFsaXplVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSk7
CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01Db25z
dHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Niw3
ICsxNDYsNyBAQCBKU09iamVjdCogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6
OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZQogCiBKU1ZhbHVlIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlcy5jcHAKaW5kZXggZWQwNzM2YTQyZDBhNWY4M2I2MWM4MGZhMzM2OWVkYWFiNmYw
OGEyNC4uYzdjZDMyZjUyODZkY2I1YTlhOGQ5NjdmZmY2ODNhMWQwZDZiNzU3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHBy
aXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlc1Byb3RvdHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc1Byb3Rv
dHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXM+OwordXNpbmcgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cz47CiAKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKQEAgLTE3MywxMyArMTcz
LDEzIEBAIHN0YXRpY19hc3NlcnQoVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OkNPTlNUX0lNUEwg
PT0gMiwgIkNPTlNUX0lNUEwgaW4gVGVzdENvbmRpCiBzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRp
b25hbEluY2x1ZGVzOjpQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCA9PSA1LCAi
UEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgaW4gVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXMgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKICNlbmRpZgogCi10ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtMjExLDcgKzIxMSw3
IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2CiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q29uZGl0aW9uYWxJbmNsdWRl
cyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtNDcxLDcgKzQ3MSw3IEBAIEpTT2JqZWN0KiBKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsCiAKIEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUuY3BwCmluZGV4IGRhMTdiYjBkYWEwNjJjNzc0ZmIyMWM0YmU4ZGI3ZjdmOTkyZTE1
YjAuLjBhNjEwYjkzNWU3YzkwYzNlZGZkMWU1MGM2NDZkOTA0ZmQ4NDc5YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVQcm90b3R5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGVQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlPjsKK3VzaW5nIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTEzOCwy
MCArMTM4LDIwIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZSA9IHsgMiwgNywgdHJ1ZSwgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6aW5mbygpLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlVGFibGVWYWx1ZXMsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZUluZGV4IH07
Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSJfcyksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1
Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBKU09iamVj
dCogSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsbwogCiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAK
aW5kZXggZjc3NTMwYmRmZWJjNGU0NjU2MDg1YTcyZDMwNjgzMTkxNWY0ZWRhNC4uOWU4MzlkYjRl
MzU2N2VhMmI4MjllMTcyY2YzNmM2NmE0MTgxZmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTUw
MiwyMSArNTAyLDIxIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlLCBKU1Rlc3RET01KSVRQcm90b3R5cGU6OkJh
c2UpOwogCi11c2luZyBKU1Rlc3RET01KSVRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERPTUpJVD47Cit1c2luZyBKU1Rlc3RET01KSVRET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERPTUpJVD47
CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTTm9kZTo6Z2V0Q29uc3RydWN0b3Iodm0s
ICZnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RE9NSklUQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RET01KSVRET01Db25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RET01KSVQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERPTUpJVCJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdERPTUpJVENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RE9NSklUIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RET01KSVRDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERPTUpJVERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RE9NSklUIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RET01KSVRE
T01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAg
LTYwMiw3ICs2MDIsNyBAQCBKU09iamVjdCogSlNUZXN0RE9NSklUOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdERPTUpJ
VDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RET01KSVRDb25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9NSklURE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogSURMQXR0cmlidXRlPEpTVGVz
dERPTUpJVD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcAppbmRleCBk
ZjZjZGQxYzAwNWZmOTBkZjljMzVjMDRiOTQ2MDkyMjNhMTM5NGUxLi41ZDY1YjI5YTZlN2UwZWFj
ZGRlMGYyYTJlYjNjODI0ZWJjYTE3ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3Bw
CkBAIC0xNDIsMjIgKzE0MiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Qcm90b3R5cGUsIEpTVGVzdERlZmF1
bHRUb0pTT05Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3REZWZhdWx0VG9KU09OQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0
VG9KU09OPjsKK3VzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05ET01Db25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERlZmF1bHRUb0pTT04+OwogCi10ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBK
U1Rlc3REZWZhdWx0VG9KU09ORE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTjo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTiJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pT
T04iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dERlZmF1bHRUb0pTT04iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05ET01Db25zdHJ1Y3RvcikgfTsKIAogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI0Miw3ICsyNDIsNyBAQCBKU09iamVj
dCogSlNUZXN0RGVmYXVsdFRvSlNPTjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdAogCiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT046OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9KU09ORE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTjo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZC5jcHAKaW5kZXggNjU2MDQyYzBmYzgyZTBkMjZkZGQxZTg1NmMxNzUxMTJlZDViYTYz
My4uNTM3NzJjZTNlY2U5M2E4Nzg4MTI3NGYyMjllMTJiMGYzOTU1NWM1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKQEAg
LTkxLDIyICs5MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSwg
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpCYXNlKTsKIAot
dXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQ+OwordXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfTsK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1
Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE3Myw3ICsx
NzMsNyBAQCBKU09iamVjdCogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpw
cm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iagogCiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKaW5kZXggOGMyMjEyNTNk
MjYzNGExOGQ3NzIzMTNlZGNjNTIxYzM4OTc3YjE1NC4uM2ZmYTc1MGI5NzgzYmYzOTlmMWU4YWEy
MjNlMWRjNmRmYzI1ZTAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCkBAIC03OCwyMSArNzgsMjEgQEAgcHJpdmF0
ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+Owor
dXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAK
LXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJ
bmhlcml0YW5jZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRv
SlNPTkluZGlyZWN0SW5oZXJpdGFuY2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLwogCkBAIC0xMzgsNyArMTM4LDcgQEAgSlNPYmplY3QqIEpTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE8KIAogSlNW
YWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZTo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0LmNwcAppbmRleCBmNzExODQ0ZGMzMmM0YjE2ODc1YTg1OGFjZjYxNmVmNmUxNjlj
ZjQ1Li5iYzAzMDk4YjUwNDc0ZDc4ZDgwOGIyNGJmNzZhZDU2YTA3ZDZmOGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKQEAgLTEwNywyMSArMTA3LDIxIEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0PjsKK3VzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdD47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiBKU1Rlc3REZWZhdWx0VG9KU09OOjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmds
b2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdDo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQiX3MpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3Ip
IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjksNyArMTY5LDcgQEAgSlNPYmplY3QqIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmEKIAogSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdDo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdCogSURMQXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Pjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3Bw
CmluZGV4IDk2YTRlNzg2ZmFkN2QxNDY3ZTVhNzkxOWI1N2E2ODJkYWUxZTc5Y2IuLjgyY2Y2OTY4
MDQ5YTRiYzlmMjA1YzA3YWNlYTU5MzVmYTUzYzkxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKQEAgLTEwOSwyMSArMTA5LDIxIEBAIHBy
aXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbFByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWxDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+OwordXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbERPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD47CiAKLXRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsK
IH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWxET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbENvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApA
QCAtMTcyLDcgKzE3Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYKIAogSlNWYWx1ZSBKU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbERPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCmluZGV4IDljYzUwY2VlZDI4
OWM1MTI0NjUxNDY5YTJlZjRmMTFkNGEzODU4NzQuLjlkM2RjZTE4M2QyOWE0MjFlMGQ5YjJjNTRh
YmExMWJhNTM2YzgyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcApAQCAtOTQs
NyArOTQsNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlLCBKU1Rlc3REb21haW5TZWN1cml0eVBy
b3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REb21haW5TZWN1cml0eT47
Cit1c2luZyBKU1Rlc3REb21haW5TZWN1cml0eURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RG9tYWluU2VjdXJpdHk+OwogCiAvKiBIYXNoIHRh
YmxlICovCiAKQEAgLTExMCwyMCArMTEwLDIwIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3REb21haW5TZWN1cml0eVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3REb21haW5TZWN1cml0eVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rl
c3REb21haW5TZWN1cml0eTo6aW5mbygpLCBKU1Rlc3REb21haW5TZWN1cml0eVRhYmxlVmFsdWVz
LCBKU1Rlc3REb21haW5TZWN1cml0eVRhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RG9tYWlu
U2VjdXJpdHlDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERvbWFpblNl
Y3VyaXR5RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RG9tYWluU2VjdXJpdHk6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdERvbWFpblNlY3VyaXR5Il9zKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RG9tYWlu
U2VjdXJpdHlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERvbWFpblNlY3VyaXR5IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RE
b21haW5TZWN1cml0eUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERvbWFp
blNlY3VyaXR5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3REb21haW5TZWN1cml0eURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTcyLDcgKzE3Miw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3REb21haW5TZWN1cml0eTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjCiAKIEpTVmFsdWUgSlNUZXN0RG9tYWluU2VjdXJpdHk6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAogdm9pZCBKU1Rlc3REb21haW5TZWN1cml0eTo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRleCA4NmMyY2Y3ZTEy
NjM5Mjk2NGUzZjAwOTVkZDkyMzJmM2U2NzhkZmY1Li45MjkzY2YyMTc0YzhmNGEwZmNjODUwOTM4
OTkzZjY0NDJhMmFlMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlLCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RW5h
YmxlZEJ5U2V0dGluZz47Cit1c2luZyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nPjsKIAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIApAQCAtMTE1LDEzICsx
MTUsMTMgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogCiBzdGF0aWNfYXNzZXJ0KFRlc3RFbmFibGVk
QnlTZXR0aW5nOjplbmFibGVkQnlTZXR0aW5nQ29uc3RhbnQgPT0gMCwgImVuYWJsZWRCeVNldHRp
bmdDb25zdGFudCBpbiBUZXN0RW5hYmxlZEJ5U2V0dGluZyBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBm
cm9tIElETCIpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0Nv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0RW5hYmxlZEJ5U2V0dGluZyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtMTM1LDcgKzEz
NSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdEVuYWJsZWRCeVNldHRpbmciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcikg
fTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEVuYWJsZWRCeVNldHRpbmciLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBKU09iamVjdCogSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zzo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iagogCiBKU1Zh
bHVlIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I+KHZtLCAqanND
YXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQg
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCmluZGV4IDNjYjQxNTI3ODU4MTdiMjc2ZmIx
OTg0ZjQxNDUzY2Q4ZWMyY2E4N2UuLmJmM2MyNzc5YWRhOWQ0NDE2M2Y2ZmI3ZWU2YjRlNWM4MDky
NmM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcApAQCAtODUsMjIg
Kzg1LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250
ZXh0UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEVuYWJsZWRG
b3JDb250ZXh0PjsKK3VzaW5nIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0RE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFbmFibGVkRm9yQ29udGV4
dD47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwog
fQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0RE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdEVuYWJsZWRGb3JDb250ZXh0Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEZvckNvbnRleHRD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEVuYWJsZWRGb3JDb250ZXh0IiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVk
Rm9yQ29udGV4dENvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHRET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEVuYWJs
ZWRGb3JDb250ZXh0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iCiAKIEpTVmFsdWUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RW5hYmxlZEZvckNvbnRleHRD
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RW5hYmxlZEZvckNv
bnRleHRET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCBhMWNkZGNhMWMyYzIyMTVjZTlhNTlhYjYwZWY5NjQzYTE0MWZmMTJkLi44ZjZiZjUx
ZjcwMmE0YWRlNWIwNWRjOGVmYjM1YzcwZDE3NjdkNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCkBAIC0xNjMsMTMgKzE2MywxMyBAQCBwcml2YXRlOgogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90
b3R5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVz
dEV2ZW50Q29uc3RydWN0b3I+OwordXNpbmcgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjsKIAotdGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRP
TUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElL
RUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMTg4LDIxICsxODgsMjEg
QEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpT
Q19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
ckNvbnN0cnVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qp
OworSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNv
bnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6
OmNvbnN0cnVjdCk7CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBy
ZXR1cm4gSlNFdmVudDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dEV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEV2
ZW50Q29uc3RydWN0b3IiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RFdmVudENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLwogCkBAIC0yNTUsNyArMjU1LDcgQEAgSlNPYmplY3QqIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmoKIAogSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBJRExBdHRyaWJ1
dGU8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDQxM2ZiZjJjZjY0ODgyYWUzZDA2NTc1OWRlNGM0YmRiMjczN2NmNWEuLmQ2
MTgyMmNjZDk4YjY1YzllZmMzM2FjNTgyZmIzOTUxMDVmMWU5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtODksMjEgKzg5LDIxIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUsIEpTVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RXZlbnRUYXJnZXRD
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEV2ZW50
VGFyZ2V0PjsKK3VzaW5nIEpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFdmVudFRhcmdldD47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rv
cih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFdmVudFRh
cmdldENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRE
T01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudFRhcmdldDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0RXZlbnRUYXJnZXQiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0
b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudFRhcmdldERPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0RE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0x
NTAsNyArMTUwLDcgQEAgSlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0Ojpwcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50
VGFyZ2V0RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA5MDk3Njc4MzM0ZWQ5OTdiYjNhNzk3ZjgzMDYyMmNl
NTVkNThlZWRjLi5hZTVhMDQwNmEyNmFmNzdlNDE0ZGE4NmIwYzQ5NGYwZDgxOTBkMDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhj
ZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtODIsMjIgKzgyLDIyIEBAIHByaXZhdGU6CiB9OwogU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
LCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEV4
Y2VwdGlvbj47Cit1c2luZyBKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEV4Y2VwdGlvbj47CiAKLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV4Y2VwdGlvbkRPTUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0RXhjZXB0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RFeGNlcHRpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9p
ZCBKU1Rlc3RFeGNlcHRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggMjFhNzhkMjEyODNlYzA0YmY2MWM4
MTI4YmJjMGNmNzVjMGNmMGVjYS4uNjNjYWQwZTcwZTc2M2RkMzkyMzcxNDBiYjA1NTE0NjExM2U4
YWZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtODIs
MjIgKzgyLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSwgSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGU+OwordXNpbmcgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZURP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZT47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVu
Y3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKSB9
OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZURP
TUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KIApAQCAtMTU0LDcgKzE1NCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
CiAKIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBlZThkODRiZjc1
ODdjOGM3YTI2Y2RiNGUzZTdmN2YxZmIyM2M0ODhjLi4wZDY5Nzk0ZGNjOWQ0MGM0ZTE2ZTJhMTZl
MTEzOGRhNTEwMjhiYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMjkwLDcg
KzI5MCw3IEBAIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlCiBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEdsb2JhbE9iamVjdFRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKTsKIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3IpOwogCi11c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEdsb2JhbE9iamVjdD47Cit1c2luZyBKU1Rl
c3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdEdsb2JhbE9iamVjdD47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtNjYy
LDEzICs2NjIsMTMgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9i
amVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAjZW5kaWYKIH07CiAKLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RH
bG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2Jh
bE9iamVjdERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0R2xvYmFsT2JqZWN0Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CkBAIC02NzYsNyArNjc2LDcg
QEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE8KICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzLCAqdGhpcyk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2xvYmFsT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2xv
YmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIEpTVGVzdEds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBKU1ZhbHVlIEpTVGVzdEdsb2Jh
bE9iamVjdDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2xvYmFs
T2JqZWN0RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCmluZGV4IDNkZjc5NzNlMDY1MjYyMTE4YTI3MmY3Nzk4YWQ1ZTM2MGZh
M2ZiNWQuLmNlOTJkMDMxOTkzZWVhYWQ4NDNmZGNiMzVhZDcxYjNiNjk2MDVhMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTgxLDIy
ICs4MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+OwogCi10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90
eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmCiAKIEpTVmFs
dWUgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA2ZGZhNzE1MDU3OWQ5NWFi
NzM5NjVkNzY1NDhjZjU3YmUyMDcxYWVkLi5mMjhlYzVjNjk1MzBiZTljZjJkYjM2YTBmZjMwNGQ5
MmYwOTA0YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcApAQCAtODEsMjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj47Cit1c2luZyBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj47CiAK
LXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1
bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90
b3R5cGUgKi8KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqCiAK
IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbkNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmlu
ZGV4IDVlNzdlNmUwOTAzZWJkMDdjMDc4NWRhNTI3ZTc1ODAxOWY2MTc0ZWMuLmE5YTU5ZTc3MDU3
MmMxMDU0YjNmMDZmMTI4YzZjY2I3ZTAxNTc0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC04NywyMiArODcsMjIgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPjsKIAotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90
b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDksNyArMTQ5LDcgQEAgSlNPYmplY3Qq
IEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QKIAogSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2Fz
dDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggNjM5ZGIwMTNiMDA0MzQwZmQzZDg1NWM5N2Vk
NmI4NDNlNzVmNjJjYS4uMGJjMTJhODk5MTkyMDUzZDVlODUzZDkxNGE3ZGI5YjJjNDlhZTkwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBwcml2YXRlOgogfTsK
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdEludGVyZmFjZT47Cit1
c2luZyBKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNU
ZXN0SW50ZXJmYWNlPjsKIAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIApAQCAt
MjU4LDExICsyNTgsMTEgQEAgc3RhdGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpTVVBQTEVN
RU5UQUxDT05TVEFOVDEgPT0gMSwgIlNVUFBMRU1FTlRBTENPTlNUQU4KIHN0YXRpY19hc3NlcnQo
VGVzdFN1cHBsZW1lbnRhbDo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBUZXN0U3Vw
cGxlbWVudGFsIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYKIAotdGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqPihjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlRE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VS
VChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CkBAIC0yODQsMTUgKzI4NCwxNSBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Ywog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOwogfQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QpOworSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0SW50ZXJm
YWNlRE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZh
Y2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEludGVyZmFjZSJfcyksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsCiAgICAgcmVp
ZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSwgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi10ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dEludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC00OTgsNyArNDk4LDcgQEAgSlNPYmplY3QqIEpTVGVz
dEludGVyZmFjZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdElu
dGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IDMwMTJmZTQ1MGJlNTdiMzA1
MDdlYjJjYjFiZDhhYmRiZWQzNjIwNGMuLjlhYTZkOTMwZDc0NGJjZDllYWE1MDQ1NTQxNGIzYTI2
ODJjZmFmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcApAQCAtODIsMjIgKzgyLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQ
cm90b3R5cGUsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlOjpCYXNl
KTsKIAotdXNpbmcgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlPjsKK3VzaW5nIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlRE9NQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZT47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiB2b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlRE9NQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNvbnN0cnVj
dG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ0LDcgKzE0
NCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmCiAKIEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
IH0KIAogdm9pZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDI0YjIzODBhMjlmMmEzYjE5
YmQ1OGVkYzQ2MzA3ZTNlMTFjZDkzN2MuLjM0YmJkM2FmYzQzYWU0ZDkzZWQwMWFkMmQ3OTY2OTYy
NTk3MjgyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtOTIsMjIgKzkyLDIyIEBAIHByaXZh
dGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SXRlcmFi
bGVQcm90b3R5cGUsIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNU
ZXN0SXRlcmFibGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTVGVzdEl0ZXJhYmxlPjsKK3VzaW5nIEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJdGVyYWJsZT47CiAKLXRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SXRlcmFibGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SXRl
cmFibGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEl0ZXJhYmxlRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0SXRlcmFibGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdEl0ZXJhYmxlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdEl0ZXJhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SXRlcmFibGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdEl0ZXJhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RJdGVyYWJsZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTU4LDcgKzE1OCw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3RJdGVyYWJsZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RJdGVyYWJsZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RJdGVyYWJsZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEl0
ZXJhYmxlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggYzhkMjZmNDkwNDFiYzVkZjk4ZGNlMDBjMTY0MDgz
ODQ2ODczMmZlMS4uNjNmNDVjNzZjY2E4NGEwMThkODRjMzI5OTkzNjVlNjg2MDUxODUwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC04NSwyNyArODUs
MjcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yID0gSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3I+OwordXNpbmcgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjsK
IAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7
CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01D
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0m
IHZtKQordGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkKIHsKICAg
ICByZXR1cm4gdGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ii
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNTIsNyArMTUyLDcgQEAgSlNPYmplY3QqIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmEKIAogSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmNwcAppbmRleCA1MjkxZTQyMmZiMzMxYzhhNDVkMDM4MDU3MDA1NTA5MTMzMjYy
ZjdhLi4wMjhiNDBkNjIxYzQwYjBhZDZlMjA1MzM2ZDMyNTBhMDA4Mzg5ZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcApAQCAtODMsMjMgKzgzLDIzIEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbj47Cit1c2luZyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbj47CiB1c2luZyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24gPSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcikg
fTsKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpjb25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewpAQCAtMTkzLDcgKzE5Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iCiAKIEpT
VmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25ET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXggN2YzZTk4
MmMzZmI4MjNhNDE1MGI0Yjc0OGM4OTQ1ZmEyOTVmZjBkMy4uYWQ0NTUxNDY0M2I0MTg1Y2EyMzYx
MjYxMWZiZjlmYzhhNmM3MTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLmNwcApAQCAtODksMjIgKzg5LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1By
b3RvdHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+Owor
dXNpbmcgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucz47
CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5
cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvCiAKIEpTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2Uu
Y3BwCmluZGV4IDk4Njc2MzM3MGI0YzMxMTE2OWM1NjQ5NDc0OWFlOTU1YjA2YzQxZTkuLjIwNjMx
NWMyODdlZThjNDI1ZTJmM2YzZmI1YWMzNGEzMzRkNmIzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAK
QEAgLTk4LDIyICs5OCwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE1hcExpa2VQcm90b3R5cGUsIEpTVGVzdE1hcExpa2VQcm90b3R5
cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RNYXBMaWtlPjsKK3VzaW5nIEpTVGVzdE1hcExp
a2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dE1hcExpa2U+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TWFwTGlrZURPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RNYXBMaWtlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWFwTGlrZTo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0TWFwTGlrZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE1hcExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1hcExpa2VDb25zdHJ1Y3RvcikgfTsK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdE1hcExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3RvcikgfTsKIAog
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBKU09i
amVjdCogSlNUZXN0TWFwTGlrZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RNYXBMaWtlOjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE1hcExpa2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0TWFwTGlrZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVz
dE1hcExpa2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKaW5kZXggMjUxMWZl
Y2I0NjU1MWZlYTI3OGRlMTczZjZhNDdjNzA0YzE4YTZhMS4uYzBkZmJhZjllYmI5MzExZGQ0NDc1
YTI3NmU2NDdhZTk2OWU0NmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcApAQCAtMTAwLDIyICsxMDAsMjIgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RNYXBM
aWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlLCBKU1Rlc3RNYXBMaWtlV2l0aE92
ZXJyaWRkZW5PcGVyYXRpb25zUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz47Cit1
c2luZyBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0
b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzIsNyArMTcy
LDcgQEAgSlNPYmplY3QqIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2IKIAogSlNWYWx1ZSBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGQ5ZTNj
ZGYyY2RkYmQ1NzA3MjZjMGVlZDgyMTE1ZmQxNGU2OTgxZjIuLmMzOGMxZmZjZjNjYjFiZWY0NDY5
ZGIyODhhYjYzNmY0ZjcyZWRmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC04MiwyMiArODIsMjIgQEAg
cHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVT
RURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUo
KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDMsNyArMTQzLDcgQEAgSlNPYmplY3QqIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWwKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OwogfQogCiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmluZGV4IDY1MTgz
MTViYWQ2NjJhMjI2OTY5OWY4NjQ3MWMwZTUzYjZiY2U2ZGIuLjI0NjA4ZTE5OTM5ZmQxZmY0ZDkz
MTE2Y2JmNjFkMGQxNTgwNDAwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtODIsMjIg
KzgyLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpC
YXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPjsKK3VzaW5nIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIl9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9Owor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90
b3R5cGUgKi8KIApAQCAtMTQzLDcgKzE0Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HCiAK
IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGY0MzRl
NDc4NGM1ZGEzNTU0YTY0YmViOTAwNmJjMDAyMDgzNGFlZjkuLjY4MWIxNGMzNGMzMmFjMzg4ZTAz
MWNmODg5ODNlZTZlNGM4NzEwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtODksMjIgKzg5LDIy
IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNp
bmcgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZTxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAKLXRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9y
KSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5
cGUgKi8KIApAQCAtMTUyLDcgKzE1Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iCiAKIEpT
VmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9p
ZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5jcHAKaW5kZXggYWQ0ZjFhMDg5NDc0NjNlMzdhNDE1NzU5MzQ1NGVlMzViOWYzNzM1ZS4u
M2JlNGY2OWNhZGRiMTg5YWNmMTEyMjJiYzc2YjBkZDMwOTExNTVjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAKQEAgLTgxLDIyICs4MSwyMiBA
QCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciJfcyksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFt
ZWREZWxldGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1
Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsK
IAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBK
U09iamVjdCogSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZwogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5j
cHAKaW5kZXggZTNhZjQxOTZkODAwYmNlNmU2MGJhMzkyMWU5YTZlNGZkMjg1MWQ1ZS4uMjA5NjYz
MDNiMzg0NGYwYTYzZDQxNTk5NTNjNmU4NWU2NGEyZTRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC04MSwyMiArODEs
MjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZSwgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+Owor
dXNpbmcgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24iX3MpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLwogCkBAIC0xNDIsNyArMTQyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amUKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKaW5k
ZXggYmVkYTFiNjk4ODk3ZWQwMTI5OGZlYzE1NGU0NTkyZjJkM2M1MmM1NC4uYWU2YTI2ZjFjODVh
ZmVhYTNlZmJlNDRmMDBkOTljZjY2M2NjMGE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC04NiwyMiArODYsMjIgQEAgcHJpdmF0
ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPjsKIAotdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9
CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYKIAogSlNW
YWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRl
eGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggMmM4M2RlNDM5MWU4
NTg5OWM2ZDEyMjMxMmFjN2JjNjc2NDFjZWVmZC4uOGZlMTJhMWIyZGYxYTBhYWU3YWI4NjZkMmRj
NjE4NTRhYWQwZWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC04MiwyMiArODIsMjIgQEAgcHJpdmF0ZToKIH07CiBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlclByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhl
ZEdldHRlckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI+OwordXNpbmcgSlNUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPjsKIAotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9u
UHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SW5kZXhlZEdldHRlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3Ry
dWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWREZWxl
dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0x
NDMsNyArMTQzLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0
dGVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGguY3BwCmluZGV4IGM4ZjA3ODk2ZWRiMTk5OWMwMmE5OTEyZmIwOWIxMmY0
OTRiYmExNWQuLjU4NzQzMjJmOWI3MmI0OWU3Mzg3YWY2YWI4ZDViYmNjYTBjZTAxN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKQEAgLTgxLDIyICs4MSwyMiBA
QCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGhQcm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhQ
cm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoPjsKK3VzaW5nIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGg+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90
eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCJfcyksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVy
Q2FsbFdpdGgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhET01Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyQ2Fs
bFdpdGhET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aDo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbAogCiBKU1ZhbHVl
IEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4
IDJlMDZhZDkxMjFmMWRkMWI1OWIyYjI2YjhkNGY1M2ViOWVmMGFkZDcuLjAxNDBhNTM0MDY0M2Vk
ZThlZjIwZDU3ZGY4NTZkNTA1M2Q3YThjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtODEsMjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9Owog
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBl
OjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllcj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRH
ZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
IApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsCiAKIEpTVmFsdWUg
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29u
c3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAppbmRleCBiYTlkMDZhMDhhMmJiYWFmNzU2MjUxNjFiN2I0OWZlZjMxZWRj
Mzk3Li43NjJiNGM3ODBkYzI5M2Y0NjBmZmEyZTU5ZDgyNzJiYjY4NTFmMWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCkBAIC04NiwyMiAr
ODYsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj47Cit1c2luZyBKU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyPjsKIAotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlw
ZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6
OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JgogCiBKU1ZhbHVl
IEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6
ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCmluZGV4IGViNzgyODFjNTY1NWFhOGU3ZDliNDk2NzVlYmM1NWM5
YWQ5NzMwMzYuLjk5NTUzNWZiNzZhYTkzN2FkZDM2YzMwMWFiNGZkMWRlZWQ3YmRmNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtODEsMjIg
KzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj47CiAKLXRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9
OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRl
ck5vSWRlbnRpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCAyZmM4ODM4
ZjYyNjY2NWJlZGM1YjBmNzM4MTc2OGRmYWRmMDdlNmJhLi40NWQyNzNlMWQyOTYzMWIyNjdhNzM0
OWE3MDg4YjVmMTRjZDAzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC04MSwyMiArODEsMjIgQEAgcHJpdmF0ZToKIH07
CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj47Cit1c2luZyBKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPjsKIAotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQog
Ci10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IpIH07
CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDIsNyArMTQyLDcgQEAg
SlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWMKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRlc3Ryb3koSlND
OjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAKaW5kZXggMjgyZjI2ZDNmZjFlZWVhN2U4ZjA4ODdmODI5NmIxZDJhYjBhNjhj
YS4uYzJhN2M5MjQ3ZDk1ZWE2MWQ1YWUxNWJiZDJjOWY5ZTQ5M2U0YjQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtODYsMjIgKzg2
LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAKLXRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVT
RURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUo
KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
IApAQCAtMTQ4LDcgKzE0OCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYKIAogSlNWYWx1ZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKaW5kZXggOTE0MDM3NmY4N2Q5NmMyYjc3YWMzZDFi
ZDcyNzBjYTY4YmVkMzllZS4uYTE0YWVlZTEyNTQ2YjRiZDQ4NDVlNzE5YTJmNTQzOWEzMTI2ZmNm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmNwcApAQCAtODksMjIgKzg5LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclBy
b3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZTo6QmFz
ZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI+OwordXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTUyLDcgKzE1Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXIuY3BwCmluZGV4IDMxNzA3OTM5ZTEyN2Y1Nzg2MzgxYWY1NzQzZGI3ZGE1
NmY2NDQ0MTcuLmM5MzYzMGYyMjY5Mzg3ZjE1MzNlMTE4NDIxOGQ5MTMwNDg5OGYzMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5jcHAKQEAgLTg5LDIyICs4OSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0
dGVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJE
T01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25z
dHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBKU09iamVjdCogSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbAogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcApp
bmRleCA2ZTlkY2E2M2NlN2M5M2FjZWFjNDQ5NTI2MzQyZmYyNzJkM2YyODY2Li41YTQ2MDRlYWVk
YzY3OWI1MjRkMDA2MGE4Y2NjMmQ1NjA3ZmZkNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBA
IC04MSwyMiArODEsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJv
dG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90
eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucz47Cit1c2luZyBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwog
CkBAIC0xNDIsNyArMTQyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2wKIAogSlNWYWx1ZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlc3Ryb3koSlND
OjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCmluZGV4IGJmYWMw
Mjk1MGY3MmMzZDFmYWRhZGI2NDIyNGM1YTNiYzM5M2Y0NjcuLjBhNWFiZTc3NThhNGRmNGViMGM2
ODRhMWI1NDY5ODExNTI1YWUzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
UHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
cz47Cit1c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz47CiAKIC8qIEhhc2gg
dGFibGUgKi8KIApAQCAtMTA3LDIwICsxMDcsMjAgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmwK
IH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6aW5mbygpLCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZVZhbHVlcywgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVJbmRleCB9OwotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiX3MpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9NQ29uc3RydWN0b3IpIH07
CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjYsNyArMTY2LDcgQEAg
SlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
czo6cHJvdG90eXBlKFZNJiB2bSwgSlMKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAppbmRleCBlNDU3OGEyOWI2YTZm
MzZlMzRkZTY5OThlZjQ3NDc3MzMzNGI0MDBkLi4zNmY1MGI3MDczMWEzZjJjOWIzNmVkODQ5NGMx
MzliNjg1NWRkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
QW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1Byb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OwordXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucz47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtMTA3LDIwICsxMDcsMjAgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZEwKIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjppbmZvKCks
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNUYWJsZVZhbHVlcywgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlSW5kZXgg
fTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdl
YWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
IApAQCAtMTY2LDcgKzE2Niw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0CiAKIEpTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5
T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDk0ZTEzMTAwY2FjZGEzOGZl
NDU2NmM2MGM0NTUxYmMxZTVlYTk0NzcuLjkzNGFmNDJjOGE3NjgyYzdhOWQ5Njc0ODhhNDYxMzA2
ZmJkZDExYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTEwNiwxMyArMTA2LDEzIEBAIHByaXZhdGU6CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Tm9kZVByb3RvdHlw
ZSwgSlNUZXN0Tm9kZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5vZGVDb25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9kZT47Cit1c2luZyBKU1Rlc3ROb2RlRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGU+OwogCi10ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TExfQVRUUklCVVRFUyBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3IqPihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBhdXRvIG9i
amVjdCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKICAgICBzdGF0aWNfYXNzZXJ0KFR5cGVPckV4Y2Vw
dGlvbk9yVW5kZXJseWluZ1R5cGU8ZGVjbHR5cGUob2JqZWN0KT46OmlzUmVmKTsKQEAgLTEyMywy
MSArMTIzLDIxIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRS
SUJVVEVTIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RyCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1
ZSk7CiB9Ci1KU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3ROb2RlQ29uc3RydWN0b3JD
b25zdHJ1Y3QsIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKK0pTQ19BTk5PVEFU
RV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE5vZGVET01Db25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0
Tm9kZURPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0Tm9kZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJu
IEpTTm9kZTo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0Tm9kZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5vZGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdE5vZGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROb2RlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROb2RlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROb2RlIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3ROb2RlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LwogCkBAIC0yNTIsNyArMjUyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5vZGU6OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0
Tm9kZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGVET01Db25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
IH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogSURMQXR0cmlidXRlPEpTVGVzdE5v
ZGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDc5MWZkMGQyMjE5ZTc5YzZhZjFlMzA2Yzgw
YjU1Y2M4YjBmM2VkODcuLjAwM2Q3MTU5ZmI1ZTNiMzBhZWM5MTJhMWVlODc2ZjU2N2ZiNzY4YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC0xODI0LDcgKzE4MjQsNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE9ialByb3RvdHlwZSwgSlNUZXN0T2Jq
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0T2JqQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yPEpTVGVzdE9iaj47Cit1c2luZyBKU1Rlc3RPYmpET01Db25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3I8SlNUZXN0T2JqPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC0xOTM3
LDExICsxOTM3LDExIEBAIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQgPT0g
MHgxYWJjLCAiQ09OU1RfVkFMVUVfMTQgaW4gVGVzdE9iaiBkb2VzCiBzdGF0aWNfYXNzZXJ0KFRl
c3RPYmo6OkNPTlNUX0lNUEwgPT0gMTUsICJDT05TVF9JTVBMIGluIFRlc3RPYmogZG9lcyBub3Qg
bWF0Y2ggdmFsdWUgZnJvbSBJREwiKTsKIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6cmVhZG9ubHkg
PT0gMCwgInJlYWRvbmx5IGluIFRlc3RPYmogZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwi
KTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMg
SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqRE9NQ29uc3Ry
dWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsK
ICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkBAIC0x
OTY1LDE1ICsxOTY1LDE1IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TF9BVFRSSUJVVEVTIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNWYWx1ZSk7CiB9Ci1KU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3RPYmpDb25zdHJ1
Y3RvckNvbnN0cnVjdCwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5O
T1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3RPYmpET01Db25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNU
ZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7
CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiB2b2lkIEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE9iajo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T2JqZWN0Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CkBAIC0xOTk3
LDcgKzE5OTcsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYgogI2VuZGlmCiB9CiAKLXRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RPYmpDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RP
YmpET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAK
QEAgLTI0NTcsNyArMjQ1Nyw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPYmo6OnByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0T2Jq
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE9iakNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
dm9pZCBKU1Rlc3RPYmo6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAppbmRleCA4ZGFhOGZhZjQyMjQ1ZWJjYjE0ZjBj
NGY5OGRlOWQ1ODllZWRmYzI4Li4zZWJiMDEzMGM5ZmM3ZjhjYzAxZjgwMTA0NTAzOTMzNWY3ODk2
N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKQEAgLTky
LDIyICs5MiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlLCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD47Cit1c2luZyBKU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbERPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxP
YmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RPcGVyYXRpb25Db25k
aXRpb25hbCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RPcGVyYXRpb25Db25kaXRpb25hbCIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWxDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPcGVyYXRpb25D
b25kaXRpb25hbCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1Y3RvcikgfTsKIAog
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE2Myw3ICsxNjMsNyBAQCBKU09i
amVjdCogSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYQogCiBKU1ZhbHVlIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFs
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE9wZXJhdGlvbkNvbmRp
dGlvbmFsQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE9wZXJh
dGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWw6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggYzdmZDNhZmIxNDA0NzExNzc1ZmY4ZDVh
NDIzYjA5ODU4YmI4NTljZC4uODFhNjU4YTIzYjM1M2VkODc0M2U3MjM1NzA4M2U5YmI3Yzg4OTM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAt
ODUsMTMgKzg1LDEzIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSwgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz47Cit1c2luZyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+OwogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rv
cio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBjb252ZXJ0PElETEFycmF5QnVmZmVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImFy
cmF5QnVmZmVyIiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5
QnVmZmVyIik7IH0pOwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoSlNHbG9iYWxPYmpl
CiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGFy
cmF5QnVmZmVyVmlldyA9IGNvbnZlcnQ8SURMQXJyYXlCdWZmZXJWaWV3PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImFycmF5QnVmZmVyVmlldyIs
ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJBcnJheUJ1ZmZlclZpZXci
KTsgfSk7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyhKU0dsb2JhbE9iamUKIHsKICAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gYmxvYiA9IGNv
bnZlcnQ8SURMSW50ZXJmYWNlPEJsb2I+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMCwgImJsb2IiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMi
LCBudWxscHRyLCAiQmxvYiIpOyB9KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEpT
R2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBzdHJpbmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEpT
R2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgYXV0byBsb25nQXJn
cyA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgMCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEpTR2xvYmFs
T2JqZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9CiAKLXRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtMjA2LDIwICsyMDYsMjAgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0MK
IH0KIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01D
b25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI2
NSw3ICsyNjUsNyBAQCBKU09iamVjdCogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsbwogCiBKU1ZhbHVlIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmNwcAppbmRleCBiYTE3ZGE5ODNiNDQ5MzdmYWI1ZGQ2MTRkMTM1NGU1
ZTE3ZmUzOGNhLi5kY2FiN2JkYzU5Njg5NDY4NzgwMzYwYTJiZTQxNGE0NzQwMzcyMzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UuY3BwCkBAIC04NCwxMyArODQsMTMgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlUHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPjsKK3VzaW5nIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT47CiAKIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZTEoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURP
TUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVk
VGhpcyk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgYXV0byBzZXF1ZW5jZU9mU3RyaW5ncyA9IGFyZ3VtZW50MC52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj46
OlJldHVyblR5cGV7IH0gOiBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CkBAIC0xMDksNyArMTA5LDcgQEAg
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlMigKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAg
QVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8gc3RyaW5nID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSk7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMigKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOwogfQogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE0NSwyMCArMTQ1LDIwIEBAIHRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXCiB9CiBKU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAot
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURPTUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpIH07
Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwog
CkBAIC0yMDQsNyArMjA0LDcgQEAgSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmEKIAogSlNWYWx1ZSBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCmluZGV4IDM1NzZmMTkzMzVkYzk0
NGUxMTI1NzQ0ZjkwOWY1OTczNzMzMWNmZDUuLjUzZTUzZWEwMDAyZjMwY2E5OGE5NjM2ZmMxMTEx
ZDRiYWI3YzBkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC04MCwy
MiArODAsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFj
ZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0UGx1Z2luSW50ZXJm
YWNlPjsKK3VzaW5nIEpTVGVzdFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0UGx1Z2luSW50ZXJmYWNlPjsKIAotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RQbHVnaW5JbnRlcmZh
Y2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdFBsdWdpbkludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFBsdWdpbkludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UGx1Z2luSW50ZXJmYWNl
RE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBA
IC0xNDEsNyArMTQxLDcgQEAgSlNPYmplY3QqIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFBsdWdp
bkludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKaW5kZXggYjYwM2Y4ODBlZjBhNjQ2OWNiYjRjOGU3
Mzk5YjVkM2ZhZmZjZTQ1MC4uMTMxM2JhNmZmN2ZmYjk0M2IxNzc1N2E0MGFhMzM0ZWExMWEzZTI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAKQEAgLTE2
NCwxMyArMTY0LDEzIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvdG90eXBlLCBKU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50PjsKK3VzaW5nIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+
OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUo
KSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKQEAgLTE4OSwyMSArMTg5LDIxIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9Ci1KU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5OT1RBVEVfSE9T
VF9GVU5DVElPTihKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1Y3RvckNvbnN0
cnVjdCwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I6OmNvbnN0cnVj
dCk7CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIEpTRXZlbnQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAot
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLwogCkBAIC0yNTEsNyArMjUxLDcgQEAgSlNPYmplY3QqIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudDo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2IKIAog
SlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OmdldENvbnN0cnVjdG9yKFZNJiB2
bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQqIElETEF0dHJpYnV0ZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0UmVhZE9ubHlNYXBMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCmluZGV4IGNlOGMwOTk0NjA4YzkxOTE4
NGYzYTI2OTk1NmQ0YzcyNTljN2M1MjIuLmJlYmRlYzcyNWNjZGFiNzg0ZTkwZTc2NDNlZjc5NGU5
MmZhNTUxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwCkBAIC05NSwyMiAr
OTUsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5cGUsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0UmVhZE9ubHlNYXBMaWtl
PjsKK3VzaW5nIEpTVGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0UmVhZE9ubHlNYXBMaWtlPjsKIAotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UmVhZE9ubHlNYXBM
aWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RSZWFkT25seU1hcExpa2Ui
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dFJlYWRPbmx5TWFwTGlrZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdFJlYWRPbmx5TWFwTGlrZSIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0x
NjQsNyArMTY0LDcgQEAgSlNPYmplY3QqIEpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rlc3RS
ZWFkT25seU1hcExpa2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFJlYWRPbmx5
TWFwTGlrZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5
U2V0TGlrZS5jcHAKaW5kZXggMjAwNDM1ZmRkMDdiOGRmMjJlYjkyZjVjNDJjMTVmYzg5MzM0M2Ji
My4uMjRiYjhkYTFlYTQ5OTMyOTI1MWU1YmQyMDEzMjA2MDEzYTk3YzVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5U2V0
TGlrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFJlYWRPbmx5U2V0TGlrZS5jcHAKQEAgLTk0LDIyICs5NCwyMiBAQCBwcml2YXRlOgogfTsK
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlr
ZVByb3RvdHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNp
bmcgSlNUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RSZWFkT25seVNldExpa2U+OwordXNpbmcgSlNUZXN0UmVhZE9u
bHlTZXRMaWtlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3RSZWFkT25seVNldExpa2U+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVhZE9ubHlTZXRM
aWtlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RSZWFkT25seVNldExp
a2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2U6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdFJlYWRPbmx5U2V0TGlrZSJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5
U2V0TGlrZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVhZE9ubHlTZXRMaWtlIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RS
ZWFkT25seVNldExpa2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVh
ZE9ubHlTZXRMaWtlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3RvcikgfTsKIAogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBKU09iamVj
dCogSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZQogCiBKU1ZhbHVlIEpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UmVhZE9ubHlTZXRMaWtlRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNw
cAppbmRleCA5ZDZiNGE0OGQ4NTUxOWU1MWVjYjk0MzgxZDQyNDA1ZTZiOTE2NjFlLi40ZDA5M2Fi
YmZkOTFmNmI3ZjA3OTA1OThhYzRiZWZjNzc0NTY1N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcApAQCAtNzksMjIgKzc5LDIyIEBAIHByaXZhdGU6CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0UmVwb3J0RXh0cmFN
ZW1vcnlDb3N0UHJvdG90eXBlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGU6
OkJhc2UpOwogCi11c2luZyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdD47Cit1c2luZyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdD47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFJlcG9ydEV4dHJhTWVt
b3J5Q29zdERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Il9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVj
dG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQxLDcgKzE0MSw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iCiAKIEpTVmFsdWUgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0OjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RSZXBvcnRFeHRy
YU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9y
eUNvc3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDUyZmJjY2ExY2U4
MWNjN2Q5M2JkN2RmNzYzYzdmNDY1ODg0OTNiYWQuLmZlOTRlMTEyZTEwZDEwZGM3YTVjMmIzNjUz
Mzc5YzAzNzAwOWU2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0xMDMsMjIgKzEwMywyMiBAQCBwcml2YXRlOgog
fTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OwordXNpbmcgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBm
b3IgcHJvdG90eXBlICovCiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBKU09iamVjdCogSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iagogCiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNldExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNldExpa2UuY3BwCmluZGV4IGUyNTk3ZTE5YzMwZTlhMDM2MDY3Njk2NzFiYzJk
ZGU3ZjYxMzMyMDQuLmNmYWM4MDUxYmVkNGNmOGIxZWRmMWRjMjJjZDExNjJlNmYzYTBkNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXRMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2V0TGlrZS5jcHAKQEAgLTk3LDIyICs5NywyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFNldExpa2VQcm90b3R5cGUsIEpT
VGVzdFNldExpa2VQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RTZXRMaWtlQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTZXRMaWtlPjsK
K3VzaW5nIEpTVGVzdFNldExpa2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdFNldExpa2U+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
U2V0TGlrZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXRMaWtlQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXRMaWtlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U2V0TGlr
ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2V0TGlrZSJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFNldExpa2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNldExpa2UiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNldExp
a2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNldExp
a2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNldExpa2UiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNldExpa2VET01D
b25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBKU09iamVjdCogSlNUZXN0U2V0TGlrZTo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RTZXRMaWtl
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNldExpa2VDb25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U2V0TGlrZURPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OwogfQogCiB2b2lkIEpTVGVzdFNldExpa2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
cy5jcHAKaW5kZXggMWZiMTliZGE5OGZjZGQwODk2OTdhNjQ4NzdjODA1OGJlNzk3ZTJiZi4uODFm
MGRiZDJmZDBmNjNhMzZhODU4NzE0ZGVjMWQzMjdhMjAxNTlhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcApAQCAtOTks
MjIgKzk5LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgSlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVz
aW5nIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnM+OwordXNpbmcgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
IH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlv
bnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U2V0TGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
IApAQCAtMTcwLDcgKzE3MCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iCiAKIEpTVmFsdWUg
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllci5jcHAKaW5kZXggODU4MGU1OThjZjRiNjI5ZDc0OTFiMDgxMDNhMWVmNjYy
NmRkYmM1MC4uMGRlZmExMTIwZjQ3ZTY5Y2I1OGUxOTcyMzRhMjZiOTI4M2MzYTc2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXIuY3BwCkBAIC04NSwyMiArODUsMjIgQEAgcHJpdmF0ZToKIH07CiBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclByb3Rv
dHlwZSwgSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RT
dHJpbmdpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0U3RyaW5naWZpZXI+OwordXNpbmcgSlNUZXN0U3RyaW5naWZpZXJET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyPjsK
IAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllckRPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U3RyaW5naWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllcjo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5naWZpZXIiX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RT
dHJpbmdpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXIiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0
cmluZ2lmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXIi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNPYmplY3QqIEpTVGVzdFN0cmluZ2lm
aWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
CiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0U3Ry
aW5naWZpZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAppbmRleCBiMGRjZDg0NjA1
NThhNGM3M2YxZWIxZDlkMDRkMjk3ZTRiNTA4ZDZiLi44OTZmOGZkYjdkZWE3Yjc1ZGQ5ZDQxNGNm
NGNiZGQ0NjVmNDczMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbi5jcHAKQEAgLTg1LDIyICs4NSwyMiBAQCBwcml2YXRlOgogfTsK
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uUHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvblByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3Vz
T3BlcmF0aW9uQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbj47Cit1c2luZyBKU1Rlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OwogCi10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rp
b25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5v
bnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25z
dHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVy
QW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdp
ZmllckFub255bW91c09wZXJhdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25E
T01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAg
LTE0Nyw3ICsxNDcsNyBAQCBKU09iamVjdCogSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVy
YXRpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZQogCiBKU1ZhbHVlIEpTVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5jcHAKaW5kZXggZDY1NTJiNTI4YzM4YTY3ZmM4
Yjk3ZmRjNTQwMThhMDZkYzkxMGJhMC4uZGE0ZjYxYjM3NWIzNGUyMjI3ZDZiYzJhYjZiOWU4MjA3
YTJmZDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uLmNwcApAQCAtODYsMjIgKzg2LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3Rv
dHlwZSwgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvblByb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24+OwordXNpbmcgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJOYW1l
ZE9wZXJhdGlvbj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck5hbWVk
T3BlcmF0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpT
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdp
Zmllck5hbWVkT3BlcmF0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIEpTT2JqZWN0KiBKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYKIAogSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3Bw
CmluZGV4IDljMzBlZjI5YjlkZDYzNzg1OTEzYzBlZDQwZGZmYjFhNmZiNDhmYWEuLmZiZjMyZTIx
YWNlZjFmYzAzNDAyNDM3NDQ4NzhmZjc5ODZjOTc0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwCkBAIC04Niwy
MiArODYsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGUsIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc1Byb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzPjsKK3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzPjsKIAotdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rp
b25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNET01Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
cyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0b3IpIH07
CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDksNyArMTQ5LDcgQEAg
SlNPYmplY3QqIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWwKIAogSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I+KHZtLCAqanND
YXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
c0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKaW5kZXggZTg3
OWY3ZmU3NjE5MTkxZTBhOWJkOTY2OGM5YWQzZGUyMzZjZDQxMS4uNGRjZmY1YWU4MTM0MmI0OTgx
MWQ1M2I0YWIzMzE1NTA0ZDRiYTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAKQEAgLTg1LDIyICs4NSwyMiBA
QCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZSwgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVk
VG9TdHJpbmc+OwordXNpbmcgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlw
ZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBKU09iamVjdCog
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbAogCiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRU
b1N0cmluZzo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nRE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIHZvaWQgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDFmNWM2NDI3YjJhOTA4OTQ0NTRlMDQy
YjI4NzMyOTEyOWQ5N2U5ZTUuLjdhZGJkMDExMTg0ZTg3N2Q1ZWRkNjYwZjA1YTQ5ODQyNjA2ODBh
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZS5jcHAKQEAgLTg3LDIyICs4NywyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQ
cm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVQcm90b3R5cGU6OkJh
c2UpOwogCi11c2luZyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlPjsKK3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmli
dXRlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJp
YnV0ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU09iamVjdCogSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplYwogCiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RT
dHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUu
Y3BwCmluZGV4IDYwMmMwOGNlOGNmNjU1NTFkNTQ0NTZjMDJhZTRkMjJhODcxMGE4MGMuLmE0YTdk
NzZhYTdlNjUwMDc2OGIwZWRlZjRmZjI2ZDZlYWNkYjA5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0
ZUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApAQCAtODgsMjIgKzg4
LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGUsIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0
U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjsK
K3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZT47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KIApAQCAtMTUxLDcgKzE1MSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RTdHJp
bmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDIzODNlMzg1ODJiZWY3ZjcyMWU0NDAxYWI4MzdlZjAw
NjcwMWExNWQuLjY5NmIwNGI3NTZlZTgyNmI4OWRiNGYwYmM2NmRkOTcwOTRjYWExNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUsIEpT
VGVzdFR5cGVkZWZzUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0VHlwZWRlZnM+OwordXNpbmcgSlNUZXN0
VHlwZWRlZnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0VHlwZWRlZnM+
OwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTE1NCwxMSArMTU0LDExIEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAiVGVzdFN1Yk9iaiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRl
c3RTdWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiB9OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTExfQVRUUklCVVRFUyBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0
VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKGNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMTgwLDE1ICsxODAsMTUgQEAgdGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6Y28KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpTQ19BTk5P
VEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpT
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5OT1RBVEVfSE9TVF9G
VU5DVElPTihKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RUeXBl
ZGVmc0RPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90
b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dFR5cGVkZWZzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RUeXBlZGVmcyJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3RUeXBlZGVmc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
LCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKIH0KIAotdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdFR5cGVkZWZzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdFR5cGVkZWZzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFR5
cGVkZWZzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDE3OTgyZDRmNGM1NDVmMTg0YzdkOTMxMmMxNjZlYzBkNWViNGQ3Y2EuLjRm
NjQ5MTdmY2I2NjM0YTNkZjYyMTIxYzY0MjllNDNjN2YxZjA1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJH
bG9iYWxTY29wZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnUK
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNXb3JrZXJHbG9iYWxTY29wZVdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1dvcmtl
ckdsb2JhbFNjb3BlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKLXVzaW5nIEpTV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTV29ya2VyR2xvYmFsU2NvcGU+OwordXNpbmcgSlNXb3JrZXJHbG9iYWxTY29wZURPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNXb3JrZXJHbG9i
YWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtMTAzLDE5ICsxMDMsMTkgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlc1td
ID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxl
ID0geyA2LCAxNSwgdHJ1ZSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckds
b2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07Ci10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6Omdl
dENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpT
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTV29y
a2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIldvcmtlckdsb2JhbFNjb3BlIl9zKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrZXJHbG9iYWxTY29wZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrZXJH
bG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpTT2JqZWN0KiBK
U1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0CiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
IH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNXb3JrZXJHbG9iYWxTY29wZSogSURMQXR0cmlidXRl
PEpTV29ya2VyR2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNj
b3BlLmNwcAppbmRleCAyNTEwNDAzMzU4ZTA3ZWRmNTcyOWI0YWQzZWNjZTEyYmY4NDQ3YWMyLi43
Y2NhOGI1ZDk5NmNiMmFkZDE2ODA3YWM3NmFmNGNlNjlmZjRkMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNXb3JrbGV0R2xvYmFsU2NvcGVXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1
Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTV29ya2xldEdsb2JhbFNjb3Bl
V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCi11c2luZyBKU1dvcmtsZXRHbG9iYWxT
Y29wZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNXb3Jr
bGV0R2xvYmFsU2NvcGU+OwordXNpbmcgSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTV29ya2xldEdsb2JhbFNjb3Bl
PjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC02NywxOSArNjcsMTkgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB9Owog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7IDEs
IDEsIHRydWUsIEpTV29ya2xldEdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2xldEdsb2JhbFNj
b3BlVGFibGVWYWx1ZXMsIEpTV29ya2xldEdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENv
bnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTV29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1dvcmts
ZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTV29ya2xldEdsb2JhbFNjb3BlOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIldvcmtsZXRHbG9iYWxTY29wZSJfcyksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTV29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIldvcmtsZXRHbG9iYWxTY29w
ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIldv
cmtsZXRHbG9iYWxTY29wZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAog
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBKU09i
amVjdCogSlNXb3JrbGV0R2xvYmFsU2NvcGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplYwogCiBKU1ZhbHVlIEpTV29ya2xldEdsb2JhbFNjb3BlOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2xldEdsb2JhbFNjb3BlRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTV29ya2xldEdsb2JhbFNjb3BlKiBJ
RExBdHRyaWJ1dGU8SlNXb3JrbGV0R2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410296</attachid>
            <date>2020-10-01 18:16:08 -0700</date>
            <delta_ts>2020-10-01 19:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217194-20201001181607.patch</filename>
            <type>text/plain</type>
            <size>285294</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZjMmYyZmRhNjE4ZTc5
NTBiYWQ3ZTBhMjk0Y2I4NTFkMzBiODRjYS4uZWU1ODMxNTJhNjQ0MDU0MGFjYjcxZmY5OGQ5Nzk0
ZjQ5NjZhMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0dWJzIGZvciBBdWRp
b1dvcmtsZXRQcm9jZXNzb3IgYW5kIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3R1YnMgZm9yIEF1ZGlv
V29ya2xldFByb2Nlc3NvciBhbmQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6CisgICAgICAgIC0g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1ZGlvLyNhdWRpb3dvcmtsZXRwcm9jZXNzb3IKKyAg
ICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2F1ZGlvd29ya2xldGdsb2Jh
bHNjb3BlCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjdXJyZW50RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OmN1cnJlbnRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpzYW1wbGVSYXRlIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Xb3JrbGV0UHJvY2Vzc29yOjpwb3J0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JD
b25zdHJ1Y3Rvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZCk6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlv
bkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcyk6CisKIDIwMjAtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIEF1ZGlvV29ya2xldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxOTQzODAyM2M0MzU4YjA2MDYxMDNjNjVjNDdkNTg5Zjdl
ZTVjMzRjLi41ZTk4ZTc3OTIyNjBjZDQ5MjFhMTUxNDUzZGZjNjRhOTYxMjRjMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDc3LDYgKzQ3Nyw4IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwK
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJPcHRpb25zLmlkbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYThkY2Y5Njk4
MmE0MDgyOTk3NDU4MjU4MzRiNzE2MGI0NWQyN2Y1Zi4uNDUwZWE3NWJiZDVhZWJiZGVmZjE4YWUy
ODQ0YmExNzlkM2ZmMjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0zMzMsNiArMzMzLDggQEAgJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyT3B0aW9ucy5pZGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMzY3OTVlYTQxMzM4
ZWRkYTg0YWQyODM0ZjY4OGRlZDMyMDRkZTBkOC4uZTBjMDRmYzQyMGUxMTkzMzYyNjdkOGM3Y2Ji
ZWQ4NGRiNDgyYjQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTIxNCw2ICsyMTQsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXROb2RlLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXROb2RlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3Jr
bGV0Tm9kZU9wdGlvbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3Ry
dWN0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudElucHV0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAyYzFjMTA4OWFkNWFiNmI3NTlmNTA2ZGMxYWU5MDNjZmYy
MDYwNmY2Li5hYTFjNWZmZmYyOWIzYzhkMWRlMjZkNzcxMTMwNGE3OTE3NzI5NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQxMCw2ICs0MTAsOCBAQCBKU19CSU5ESU5HX0lE
TFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZU9wdGlvbnMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0UHJvY2Vzc29yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGQ3ZmFkYjdlMDFlZDNkNzFlZDU0MmU3MDZiOTk0MGNhOTYyMTdlNmQuLjgxOGUyNGQx
ZTBiNjM5NzllOWMyNmYxMGJkZjk3YWZjYjM0NWUwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oIgogCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00Nyw2ICs0OCwxMiBAQCBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhyZWFk
JiB0aHJlYWQsIGNvbgogCiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6fkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKCkgPSBkZWZhdWx0OwogCit2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpy
ZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3I+JiYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFVO
VVNFRF9QQVJBTShuYW1lKTsKK30KKwogVGhyZWFkKiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6
dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGhyZWFkLT50aHJlYWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBlMTViZmE0Y2VjNmFmZGJmMmYzMmNlMzk2YTdkYmQy
MzNhZjkxNzBlLi4zYTQxMDYwYmM2MmQzY2IxNDJiZjIzNmZhZjc3NWI2MDc4NjY4MGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3I7CiBjbGFzcyBBdWRpb1dv
cmtsZXRUaHJlYWQ7CiAKIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVyczsKQEAgLTQ2LDYgKzQ3LDEx
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlKCk7CiAKKyAg
ICB2b2lkIHJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcj4mJik7CisgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIDA7IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiAwOyB9Cisg
ICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIDQ0MTAwOyB9CisKICAgICBUaHJl
YWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwKaW5kZXggN2YzMmZjOGVhYTJmODRiMzY2NTVhOWJlMDExNzBlZmE1MGZkNWMy
Zi4uM2I2ZmIyMmNmNzg0ZGZjMDU5ZGUzNTNjNzM1MDJjOGI5ZmIxZjY2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwKQEAgLTM1LDUgKzM1LDggQEAKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2JhbD0oV29ya2xldCxBdWRpb1dvcmtsZXQp
LAogXSBpbnRlcmZhY2UgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUgOiBXb3JrbGV0R2xvYmFsU2Nv
cGUgewotICAgIC8vIEltcGxlbWVudCBBUEkuCisgICAgdW5kZWZpbmVkIHJlZ2lzdGVyUHJvY2Vz
c29yKERPTVN0cmluZyBuYW1lLCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3RvciBwcm9j
ZXNzb3JDdG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRGcmFtZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzYW1wbGVSYXRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNDc2YjIxZTZlNjhmYWNiNjhhY2VkOGUxY2YyMzdiZjBkMWJmMjgy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xl
dFByb2Nlc3NvcigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTY0NzY4M2RkZDM0
NDM1Y2JlMzJiNWU3ZDYyOGU1NGVlZDRmODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworCitj
bGFzcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmts
ZXRQcm9jZXNzb3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFByb2Nl
c3Nvcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
V29ya2xldFByb2Nlc3Nvcik7CisgICAgfQorCisgICAgTWVzc2FnZVBvcnQqIHBvcnQoKSB7IHJl
dHVybiBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNTEzZjcyNjNlMGIyMjY1M2E3MzE5
YTg1YTJjODMzMzU1NTVmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEV4cG9zZWQ9QXVkaW9Xb3JrbGV0LAorICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7
CisgICAgY29uc3RydWN0b3IoKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQg
cG9ydDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjljNjhmYmFiMTQzY2NkYzNkODMyMzgxZjBlYmYxZGEwZjhkMDQ5ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tS
ZXN1bHQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvcjsKKworY2xhc3MgQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yQ29uc3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rvcj4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmly
dHVhbCBDYWxsYmFja1Jlc3VsdDxSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gaGFuZGxl
RXZlbnQoSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gb3B0aW9ucykgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg3OGE4MDUxOTky
YjdlODZlYWIxNGI1ODAyMWUyMDBjMDYxZDAyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3Iu
aWRsCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworY2FsbGJhY2sgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IgPSBB
dWRpb1dvcmtsZXRQcm9jZXNzb3IgKG9iamVjdCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YzdlY2ZkZDE1NWM1MjgwZDU4NTRiZmI1MmJlYmVhMDI4NGFkYjdhMy4uZjEwMzcyMDNmZGMyM2Yx
ZDIzZWNhNjBjMGQ4OTk5M2IxY2EzZTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwOCw2ICsyMDgs
NyBAQCBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5LmNwcAogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAorTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRFNQS2VybmVsLmNwcApAQCAtMjY4
Nyw2ICsyNjg4LDggQEAgSlNBdWRpb1dvcmtsZXQuY3BwCiBKU0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAogSlNBdWRpb1dvcmtsZXROb2RlLmNwcAogSlNBdWRpb1dvcmtsZXROb2RlT3B0aW9u
cy5jcHAKK0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorSlNBdWRpb1dvcmtsZXRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5jcHAgCiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0
cy5jcHAKIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5jcHAKIEpTQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNhMDBmOWUwYTI2YmYyMWE4YmNj
OWZmNTUxMDIyZjc0Nzk4MTIwZGQuLjA4MGNjODY1NWE4OTMzYjFmNmVlMjJjNDkzOGQ1OWYyZWIw
ZTFiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTI0OTUsNiArMjQ5NSw3IEBACiAJCTgzNzA1NjhFMUY1MDkxNTcwMEQ5MzQy
NSAvKiBKU0ZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3MDU2OEIxRjUwOTE1MDAwRDkzNDI1IC8qIEpTRmlsZUNhbGxiYWNrLmgg
Ki87IH07CiAJCTgzNzA1NjkwMUY1MDkxNUMwMEQ5MzQyNSAvKiBKU0ZpbGVTeXN0ZW1FbnRyeUNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzcwNTY4OTFGNTA5MTUwMDBEOTM0MjUgLyogSlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oICov
OyB9OwogCQk4MzcxQUMzQjFGNTA5QkU0MDBGQkYyODQgLyogRXJyb3JDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MUFDMzkxRjUwOUJE
RDAwRkJGMjg0IC8qIEVycm9yQ2FsbGJhY2suaCAqLzsgfTsKKwkJODM3MjZFRkIyNTI2NzlDNTAw
QzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzcyNkVGODI1MjY3OUIyMDBDNjEx
NEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzQ1RDAyMjREODk5RDMwMEZC
RENDNCAvKiBHYWluT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3NDVDRkYyNEQ4OTlDMjAwRkJEQ0M0IC8qIEdhaW5PcHRpb25zLmggKi87
IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIx
ODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1MjksNiArMjUzMCw3IEBACiAJCTgzQjk4NzBCMjUy
MjVGN0QwMEE5MzlGMSAvKiBBdWRpb1dvcmtsZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk4NzAxMjUyMjVGMEMwMEE5MzlGMSAvKiBBdWRpb1dv
cmtsZXQuaCAqLzsgfTsKIAkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1N
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk4
NkZGMjUyMjVGMEIwMEE5MzlGMSAvKiBBdWRpb1BhcmFtTWFwLmggKi87IH07CiAJCTgzQkI1Qzg4
MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVB
NzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJODNCQjhCNUYyNTI2
Nzc2NDAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQjhCNUQyNTI2Nzc1NTAwRDg5RjBCIC8q
IEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oICovOyB9OwogCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNF
NjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRT
dGF0ZS5oICovOyB9OwogCQk4M0MwNUE1QjFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuaCAqLzsgfTsKIAkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1
YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNDMUY1OTIxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5o
ICovOyB9OwpAQCAtMTA2ODQsNiArMTA2ODYsOCBAQAogCQk4MzcxQUMzNzFGNTA5QkREMDBGQkYy
ODQgLyogRXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXJyb3JDYWxs
YmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzFBQzM4MUY1MDlCREQw
MEZCRjI4NCAvKiBGaWxlQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVD
YWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzFBQzM5MUY1MDlC
REQwMEZCRjI4NCAvKiBFcnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM3
MjZFRjgyNTI2NzlCMjAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNzI2RUZBMjUyNjc5QjMwMEM2MTE0RSAvKiBB
dWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzcy
REIzMDFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc0NUNGRjI0RDg5OUMyMDBGQkRD
QzQgLyogR2Fpbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Fpbk9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NDVEMDEyNEQ4OTlDMjAwRkJEQ0M0IC8qIEdhaW5P
cHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBHYWluT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDc1Myw2ICsxMDc1Nyw5IEBACiAJCTgzQjk4NzA3MjUyMjVGMEUwMEE5MzlGMSAv
KiBBdWRpb1dvcmtsZXROb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvV29ya2xldE5vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTg3MDgyNTIyNUYwRTAwQTkzOUYxIC8q
IEF1ZGlvUGFyYW1NYXAuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvUGFyYW1NYXAuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFu
dHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2Nl
bmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JCOEI1
QjI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzQkI4QjVEMjUyNjc3NTUwMEQ4OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNz
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzQkI4QjVFMjUyNjc3NTYwMEQ4OUYwQiAvKiBBdWRpb1dvcmts
ZXRQcm9jZXNzb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0Nv
bnRleHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNF
NjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODND
MDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxl
UHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwpAQCAtMjk4OTUsNiArMjk5MDIsMTEgQEAKIAkJCQk4M0I5ODcwNDI1MjI1RjBE
MDBBOTM5RjEgLyogQXVkaW9Xb3JrbGV0Tm9kZS5pZGwgKi8sCiAJCQkJODNCOTg3MDAyNTIyNUYw
QjAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zLmggKi8sCiAJCQkJODNCOTg3MDUy
NTIyNUYwRDAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGVPcHRpb25zLmlkbCAqLywKKwkJCQk4
M0JCOEI1QjI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcCAqLywK
KwkJCQk4M0JCOEI1RDI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgg
Ki8sCisJCQkJODNCQjhCNUUyNTI2Nzc1NjAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nv
ci5pZGwgKi8sCisJCQkJODM3MjZFRjgyNTI2NzlCMjAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFBy
b2Nlc3NvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJODM3MjZFRkEyNTI2NzlCMzAwQzYxMTRFIC8q
IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbCAqLywKIAkJCQk4M0ZDOTk0QTI1
MjU1N0U4MDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcCAqLywKIAkJCQk4M0ZDOTk0
OTI1MjU1N0U3MDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmggKi8sCiAJCQkJODMxOThG
QkIyNEExNjBDMTAwNDIwQjA1IC8qIEJhc2VBdWRpb0NvbnRleHQuY3BwICovLApAQCAtMzA1MDUs
NiArMzA1MTcsOCBAQAogCQkJCTgzM0JEODFFMjUyNEQ1MzQwMDZFNzJCMyAvKiBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MDkyNTIyNUY3MjAw
QTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjk4NzBB
MjUyMjVGNzYwMEE5MzlGMSAvKiBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODNCQjhCNUYyNTI2Nzc2NDAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM3MjZFRkIyNTI2NzlDNTAwQzYxMTRFIC8qIEF1ZGlv
V29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZDOTk0
QjI1MjU1N0VBMDAxNzc2MTggLyogQXVkaW9Xb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEY3MTNBMEQ1QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1OGZkMWE3YTI2
ZmRkMWRhYzRkYjJiNzBiMWM1NDUzNzViY2Q0ZjlhLi5hNDQ2YmQ0NzQxZmNhODk0YzE1MzNlZjUx
ZTljOWJjNjU4NGVkMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzk4OSw2ICszOTg5LDggQEAgc3ViIEdlbmVyYXRl
UnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogICAgICAgICBwdXNoKEAk
Y29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQ
dHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCki
KTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2xldCIpIHsKICAgICAgICAgcHVzaChA
JGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0
UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrbGV0R2xvYmFsU2NvcGUo
KSIpOworICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJBdWRpb1dvcmtsZXQiKSB7CisgICAgICAg
IHB1c2goQCRjb25qdW5jdHMsICJpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2VydCgiVW5yZWNvZ25p
emVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBv
c2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICciIC4gcmVm
KCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTQ3ODcsNyArNDc4OSw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntMZWdhY3lOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFzc05hbWV9RE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5
RnVuY3Rpb259KSB7CkBAIC02NTc0LDcgKzY1NzYsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uQ29udGVudAogCiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiSlNWYWx1
ZSAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIntcbiIp
OwotICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfURPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xu
Iik7CiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4iKTsKICAgICB9CiAKQEAgLTY2
NzYsNyArNjY3OCw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50
CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBhdXRvIHJldHVyblZhbHVlID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHJldHVybiByZXR1cm5W
YWx1ZTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHJldHVy
biB7IFdURk1vdmUocmV0dXJuVmFsdWUpIH07XG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ9XG5cbiIpOwpAQCAtNzY3NCw3ICs3Njc2LDcgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIG15ICgkb3V0cHV0QXJyYXks
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0g
IiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUg
PSAiJHtjbGFzc05hbWV9RE9NQ29uc3RydWN0b3IiOwogICAgIG15ICR0ZW1wbGF0ZUNsYXNzTmFt
ZSA9IEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUoJGludGVyZmFjZSk7CiAKICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiJHt0ZW1wbGF0ZUNsYXNzTmFtZX0uaCIpOwpAQCAtNzY5OCw3ICs3
NzAwLDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogCiAgICAgICAgICAg
ICBteSAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCA9ICJjb25zdHJ1Y3Qke2NsYXNzTmFtZX0iOwog
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4g
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTICR7Y2xhc3NOYW1lfURPTUNv
bnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4i
KTsKQEAgLTc3MjUsNyArNzcyNyw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bgogICAgIHJldHVybiBpZiBIYXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKTsKIAog
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKLSAgICBteSAk
Y29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiA/
ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1lfUNvbnN0
cnVjdG9yIjsKKyAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDog
IiR7Y2xhc3NOYW1lfURPTUNvbnN0cnVjdG9yIjsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUo
JGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZh
Y2UpKSB7CkBAIC03ODU1LDcgKzc4NTcsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBl
ck1ldGhvZHMKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFz
c05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24pID0gQF87CiAKLSAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUg
PSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lG
YWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAgICBteSAkY29u
c3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiA/ICIk
e2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1lfURPTUNvbnN0
cnVjdG9yIjsKICAgICBteSAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDA7CiAgICAgaWYgKEB7
JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfSA+IDApIHsKICAgICAgICAgJGxlYXN0Q29uc3RydWN0
b3JMZW5ndGggPSAyNTU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAppbmRleCA5ZDYwNGQ5YWY1ZTliNTcxYmRhZWU5
MGJlODZjYTk4NjFmMWE4NGQ4Li5kMjYzNzYwYTg1YzM3YzhkZTBmZjMzZjA1NjNlNWE0YzQwMWQx
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0RPTVdpbmRvdy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzRE9NV2luZG93VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0
cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNET01XaW5kb3dUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOwogCi11c2luZyBKU0RPTVdpbmRvd0NvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+Owor
dXNpbmcgSlNET01XaW5kb3dET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTRE9NV2luZG93PjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC0xNTQsMTkg
KzE1NCwxOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dUYWJsZVZh
bHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9
IHsgMTEsIDMxLCB0cnVlLCBKU0RPTVdpbmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFs
dWVzLCBKU0RPTVdpbmRvd1RhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU0RPTVdp
bmRvd0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNE
T01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBK
U0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRl
bXBsYXRlPD4gdm9pZCBKU0RPTVdpbmRvd0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZv
aWQgSlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGly
ZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiRE9NV2luZG93Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0K
IAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRE9NV2luZG93IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRE9N
V2luZG93IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNXaW5kb3dQcm94eSogcHJveHkpCiAKIEpTVmFsdWUgSlNET01X
aW5kb3c6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNET01XaW5kb3dDb25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNET01XaW5kb3dET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETEF0dHJpYnV0ZTxKU0RP
TVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCBkZWI1MWY2ZWYyZTMxMmJmNWIyZTNjNzJiY2NiNmVhZGJkY2ZmYzE0
Li4yYmQ3M2MzOWZiNGY0ZWMyODg3ODEwMjlmM2NmOTE4MDdlOGQxM2UyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZURlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKLXVzaW5nIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OwordXNpbmcgSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8K
IApAQCAtNjcsMTkgKzY3LDE5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB9OwogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1
ZSwgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJs
ZUluZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcmV0dXJuIEpTV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xv
YmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0
KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkRlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUHJveHkqIHByb3h5KQogCiBK
U1ZhbHVlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZNJiB2
bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUqIElETEF0dHJpYnV0ZTxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKaW5kZXggOTIz
ZmM3MjY3NjdhYzA5YzZjNDc0MDY3ZjUyMDg5MWNlOGRkOGRlNy4uMGE0N2U5NmI3ZmEzZmJjZGI1
NjM1YjgzNzNlYzk2M2VkNDIyZjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3cuY3BwCkBAIC0xMjYsMTMgKzEyNiwxMyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93UHJv
dG90eXBlLCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVz
aW5nIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yPEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93PjsKK3VzaW5nIEpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTRXhwb3NlZFRvV29y
a2VyQW5kV2luZG93PjsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
X0FUVFJJQlVURVMgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVT
IEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8gb2JqZWN0ID0gRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93OjpjcmVhdGUoKTsKICAgICBzdGF0aWNfYXNzZXJ0KFR5cGVPckV4Y2VwdGlvbk9y
VW5kZXJseWluZ1R5cGU8ZGVjbHR5cGUob2JqZWN0KT46OmlzUmVmKTsKQEAgLTE0MywyMiArMTQz
LDIyIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVT
IEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9
Ci1KU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0Nv
bnN0cnVjdG9yQ29uc3RydWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QpOworSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3dET01Db25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gSlNWYWx1ZSBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBK
U0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZv
aWQgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvdzo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3ciX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3Ip
IH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0yMDUsNyArMjA1LDcg
QEAgSlNPYmplY3QqIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Ojpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmEKIAogSlNWYWx1ZSBKU0V4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvdzo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTRXhwb3NlZFRv
V29ya2VyQW5kV2luZG93OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGExNjZlYTcyZmU3MWRmOWNhZGExMmIz
MDUwZjQ2ZjEyZWEwMDliYzMuLmVkYWNkMTJiNzE0OTcyNmYzNWExNThlZDc5ZGI2NDEyZmQ2OGZk
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1BhaW50V29y
a2xldEdsb2JhbFNjb3BlUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAotdXNpbmcgSlNQYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZT47Cit1c2luZyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC02NywxOSArNjcs
MTkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjppbmZvKCksIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gSlNWYWx1ZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNXb3JrbGV0R2xvYmFsU2NvcGU6Omdl
dENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lk
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0
UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlBhaW50V29y
a2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3Rv
dHlwZSAqLwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUHJveHkqIHByb3h5KQogCiBKU1ZhbHVlIEpT
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRl
bXBsYXRlPD4gaW5saW5lIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggOWM4MmRmYzc0ZTMyNDAwN2FiMzZkN2FlZmQ1
NzI5ZDExYjk2Njc4Yy4uY2EyNzZhOTMyOThhMDNlYTlhMjg5NDY0OWQ0YTQ1NDNmZDgxYzJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAotdXNpbmcgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPjsKK3VzaW5nIEpTU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtNjcs
MTkgKzY3LDE5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxl
VmFsdWVzLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU1dvcmtlckds
b2JhbFNjb3BlOjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IHZvaWQgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBn
bG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2VydmljZVdvcmtlckds
b2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQcm94
eSogcHJveHkpCiAKIEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IGY1MTkyM2MwM2RkMTU5YTg2
ODljYmVkMTI4Y2QyZDhiMDFkZDI2ZTcuLjBhN2Q0N2UwMzZkNGUxYjk0NDA2MTk4YjUyNmYxNDc4
MzRkYzJhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMTA0LDIyICsxMDQsMjIg
QEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RDRVJlYWN0aW9uc1Byb3RvdHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGU6OkJhc2Up
OwogCi11c2luZyBKU1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q0VSZWFjdGlvbnM+OwordXNpbmcgSlNUZXN0Q0VSZWFj
dGlvbnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdENFUmVhY3Rpb25zPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENFUmVhY3Rpb25z
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RD
RVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7
CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RD
RVJlYWN0aW9uczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q0VSZWFjdGlv
bnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
Q0VSZWFjdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0Q0VSZWFjdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3IpIH07CiAKIC8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzMsNyArMTczLDcgQEAgSlNPYmpl
Y3QqIEpTVGVzdENFUmVhY3Rpb25zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdENFUmVhY3Rpb25zOjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKIHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKaW5kZXggYzAzNmFj
ZTI3NmE5MzU3YmUzZGY3Y2RmZDU0MjE5ODdjNjhkMTMzMS4uOTAyMjQ0OTgxOGM3MDQ0NDFkNTQ2
MTU1Nzk0NTUyODNmYjM2MDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmNwcApAQCAtOTEsMjIgKzkxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclBy
b3RvdHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+Owor
dXNpbmcgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj47
CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5
cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTU1LDcgKzE1NSw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvCiAKIEpTVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
cjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxU
cmFjZXIuY3BwCmluZGV4IDg4MjMzY2FmNmI2NGZhNjM4YTNhMGJmMmVhOGRhMTY0NjEyOWYxYTUu
LjZlNGNkYTg0MzFiNmQxMzJlODg3NTdjNzk0NzMxY2E1ZjczNGM1YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bFRyYWNlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENhbGxUcmFjZXJQcm90b3R5cGUsIEpTVGVz
dENhbGxUcmFjZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RDYWxsVHJhY2VyQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDYWxsVHJh
Y2VyPjsKK3VzaW5nIEpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENhbGxUcmFjZXI+OwogCiAvKiBIYXNoIHRhYmxl
IGZvciBjb25zdHJ1Y3RvciAqLwogCkBAIC0xMjAsMTMgKzEyMCwxMyBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9
CiAKIHN0YXRpY19hc3NlcnQoVGVzdENhbGxUcmFjZXI6OnRlc3RDb25zdFZhbHVlID09IGZhbHNl
LCAidGVzdENvbnN0VmFsdWUgaW4gVGVzdENhbGxUcmFjZXIgZG9lcyBub3QgbWF0Y2ggdmFsdWUg
ZnJvbSBJREwiKTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENhbGxUcmFj
ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENhbGxUcmFjZXI6
OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENhbGxUcmFjZXIiX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2FsbFRy
YWNlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NRwogICAg
IHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0Q2FsbFRyYWNlcjo6aW5mbygpLCBKU1Rl
c3RDYWxsVHJhY2VyQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi10ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RDYWxsVHJhY2VyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsVHJhY2VyRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RDYWxsVHJhY2VyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDYWxsVHJhY2VyRE9NQ29uc3RydWN0b3IpIH07CiAK
IC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNP
YmplY3QqIEpTVGVzdENhbGxUcmFjZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0Q2FsbFRyYWNlcjo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENhbGxUcmFjZXJET01Db25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAogdm9pZCBKU1Rlc3RDYWxsVHJhY2VyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDc5NzQ4MzRlOTA2ZDVmYmI0N2Ez
YzEyMWJjYzJhODgzY2ZiMDQwNTUuLjBhNTZhZWJkMWIzZjZiZmM1M2M4ZjMwNmRhMjFhNTUzMGM5
OGRiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlv
blR5cGU+IEpTVGVzdENhbGxiYWNrRnVuY3Rpb24KICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
KTsKLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5W
YWx1ZSkgfTsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrRnVuY3Rpb24mIGlt
cGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcAppbmRl
eCAxN2NiZTJlN2YzOTdkNGIzN2ExMmJkNDkzMGQ2NTk0NGRiYmRhMGU2Li40ZDI3ODg1NmZjYzIz
ZDc2ZjM5OTdlYjk0MjlmOWYzYTY1Y2U4MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uUmV0aHJvdy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24KICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9i
YWxPYmplY3QsIGpzUmVzdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsKLSAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1ZSkgfTsKIH0KIAogSlNDOjpK
U1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93JiBpbXBsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKaW5kZXggNGU4ODM2YTZjZTRlMmM0ZTYyMjdhN2M5
NzM1MmQyMzk2NDhmNDY5MS4uNTI2ZGE1OTk1M2Y0ZDQxN2U5YTlhZTYzMzE0YzVmNTU0YWEzZjY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCkBAIC0xMzgsNyArMTM4
LDcgQEAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6On5KU1Rlc3RDYWxsYmFja0ludGVyZmFjZSgp
CiAjZW5kaWYKIH0KIAotdXNpbmcgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
PjsKK3VzaW5nIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT47CiAKIC8q
IEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKQEAgLTE1MSwxMyArMTUxLDEzIEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVj
dG9yVGFibGVWYWx1ZXNbXSA9CiBzdGF0aWNfYXNzZXJ0KFRlc3RDYWxsYmFja0ludGVyZmFjZTo6
Q09OU1RBTlQxID09IDEsICJDT05TVEFOVDEgaW4gVGVzdENhbGxiYWNrSW50ZXJmYWNlIGRvZXMg
bm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiBzdGF0aWNfYXNzZXJ0KFRlc3RDYWxsYmFja0lu
dGVyZmFjZTo6Q09OU1RBTlQyID09IDIsICJDT05TVEFOVDIgaW4gVGVzdENhbGxiYWNrSW50ZXJm
YWNlIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAKLXRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpT
VGVzdENhbGxiYWNrSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURf
UEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDYWxsYmFja0ludGVyZmFjZSJfcyks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwpAQCAtMTY1LDExICsxNjUsMTEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIG51bGxwdHIsIEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi10ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3Ry
dWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlRE9NQ29uc3RydWN0b3IpIH07CiAKIEpTVmFsdWUgSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlOjpjYWxsYmFja1dpdGhOb1BhcmFtKCkKQEAgLTM2MSw3ICszNjEsNyBAQCBDYWxs
YmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhYwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwganNSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pOwotICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9Owog
fQogCiBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9u
VHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0
aW9ucyh0eXBlbmFtZSBJRExFbnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+
OjpQYXJhbWV0ZXJUeXBlIGVudW1QYXJhbSkKQEAgLTM5Miw3ICszOTIsNyBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhYwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwganNSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pOwotICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwogfQogCiBD
YWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4g
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2sodHlw
ZW5hbWUgSURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+OjpQ
YXJhbWV0ZXJUeXBlIGRpY3Rpb25hcnlQYXJhbSkKQEAgLTQxOSw3ICs0MTksNyBAQCBDYWxsYmFj
a1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0
Q2FsbGJhY2tJbnRlcmZhYwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwganNSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pOwotICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwogfQog
CiBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlw
ZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlwZW5h
bWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBl
bmFtZSBJRExJbnRlcmZhY2U8VGVzdE9iaj46OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFtKQpA
QCAtNDQ5LDcgKzQ0OSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6
SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXR1cm5WYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBqc1Jlc3VsdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4
Y2VwdGlvblRocm93bik7Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiB7IFdU
Rk1vdmUocmV0dXJuVmFsdWUpIH07CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKFRlc3RDYWxsYmFj
a0ludGVyZmFjZSYgaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDY0ZTgwMjYyNGJlNWY4MzlmNDYyMWU0Zjk1MzIx
OWI4MWU3MmRkYzcuLjM2OWNmNjAzNzQ2N2U5MmZhYjQ4ZDBlM2EwMDc0ODdjZWFjYmViZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcApAQCAtODAsMjcgKzgwLDI3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpCYXNl
KTsKIAotdXNpbmcgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciA9IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yPjsKK3VzaW5nIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29u
c3RydWN0b3IgPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvcj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1
dGFibGUqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkKK3RlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxl
KiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pCiB7CiAgICAgcmV0dXJuIHRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvckluaXRpYWxpemVUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JDb2RlR2VuZXJhdG9yKHZtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90
b3R5cGUgKi8KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplCiAK
IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcAppbmRleCBlZDA3MzZhNDJkMGE1Zjgz
YjYxYzgwZmEzMzY5ZWRhYWI2ZjA4YTI0Li5jN2NkMzJmNTI4NmRjYjVhOWE4ZDk2N2ZmZjY4M2Ex
ZDBkNmI3NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCkBA
IC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzUHJvdG90eXBlLCBKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0Q29uZGl0aW9u
YWxJbmNsdWRlc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcz47Cit1c2luZyBKU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rl
c3RDb25kaXRpb25hbEluY2x1ZGVzPjsKIAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3Ig
Ki8KIApAQCAtMTczLDEzICsxNzMsMTMgQEAgc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlczo6Q09OU1RfSU1QTCA9PSAyLCAiQ09OU1RfSU1QTCBpbiBUZXN0Q29uZGkKIHN0YXRp
Y19hc3NlcnQoVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OlBBUlRJQUxfTUlYSU5fQ09OU1RBTlRf
RlJPTV9QQVJUSUFMID09IDUsICJQQVJUSUFMX01JWElOX0NPTlNUQU5UX0ZST01fUEFSVElBTCBp
biBUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcyBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIp
OwogI2VuZGlmCiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RD
b25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90
b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXND
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIl9zKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CkBAIC0yMTEsNyArMjExLDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRpdGlvbmFs
SW5jbHVkZXNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHYKICNlbmRpZgog
fQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDb25kaXRpb25hbEluY2x1ZGVzIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDb25k
aXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RDb25kaXRpb25hbEluY2x1ZGVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9NQ29uc3RydWN0
b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC00NzEsNyArNDcx
LDcgQEAgSlNPYmplY3QqIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OnByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWwKIAogSlNWYWx1ZSBKU1Rlc3RDb25kaXRpb25h
bEluY2x1ZGVzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdENvbmRp
dGlvbmFsSW5jbHVkZXM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxs
eVJlYWRXcml0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZS5jcHAKaW5kZXggZGExN2JiMGRhYTA2MmM3NzRm
YjIxYzRiZThkYjdmN2Y5OTJlMTViMC4uMGE2MTBiOTM1ZTdjOTBjM2VkZmQxZTUwYzY0NmQ5MDRm
ZDg0NzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZSwgSlNU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU+OwordXNpbmcgSlNUZXN0
Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZT47CiAKIC8qIEhhc2gg
dGFibGUgKi8KIApAQCAtMTM4LDIwICsxMzgsMjAgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVRhYmxlID0g
eyAyLCA3LCB0cnVlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjppbmZvKCksIEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVUYWJsZVZhbHVlcywgSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZVRhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVz
dENvbmRpdGlvbmFsbHlSZWFkV3JpdGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURPTUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMjYw
LDcgKzI2MCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpwcm90
b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvCiAKIEpTVmFsdWUgSlNUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVET01Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
dm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcAppbmRleCBmNzc1MzBiZGZlYmM0ZTQ2NTYwODVhNzJkMzA2ODMx
OTE1ZjRlZGE0Li45ZTgzOWRiNGUzNTY3ZWEyYjgyOWUxNzJjZjM2YzY2YTQxODFmZGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcApAQCAtNTAyLDIxICs1MDIsMjEgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RET01KSVRQcm90b3R5cGUsIEpTVGVz
dERPTUpJVFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdERPTUpJVENvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RE9NSklUPjsKK3VzaW5n
IEpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0RE9NSklUPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERPTUpJVENv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RE9N
SklURE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNOb2Rl
OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERP
TUpJVERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERPTUpJVDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0RE9NSklUIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAot
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklUQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RET01KSVQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0RE9NSklURE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RET01KSVQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KIApAQCAtNjAyLDcgKzYwMiw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RET01K
SVQ6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAK
IEpTVmFsdWUgSlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdERPTUpJVENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RET01KSVRET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklU
KiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT04uY3BwCmluZGV4IGRmNmNkZDFjMDA1ZmY5MGRmOWMzNWMwNGI5NDYwOTIyM2ExMzk0
ZTEuLjVkNjViMjlhNmU3ZTBlYWNkZGUwZjJhMmViM2M4MjRlYmNhMTdkZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09OLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTi5jcHAKQEAgLTE0MiwyMiArMTQyLDIyIEBAIHByaXZhdGU6CiB9Owog
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTlBy
b3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTlByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpT
VGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdERlZmF1bHRUb0pTT04+OwordXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkRP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVm
YXVsdFRvSlNPTj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZh
dWx0VG9KU09ORE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
IH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05ET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3REZWZhdWx0VG9KU09OOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZh
dWx0VG9KU09OIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0RGVmYXVsdFRvSlNPTiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yKSB9Owor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMjQy
LDcgKzI0Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3REZWZhdWx0VG9KU09OOjpwcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0CiAKIEpTVmFsdWUgSlNUZXN0RGVm
YXVsdFRvSlNPTjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZh
dWx0VG9KU09OQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERl
ZmF1bHRUb0pTT05ET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAppbmRleCA2NTYwNDJjMGZjODJlMGQyNmRk
ZDFlODU2YzE3NTExMmVkNWJhNjMzLi41Mzc3MmNlM2VjZTkzYTg3ODgxMjc0ZjIyOWUxMmIwZjM5
NTU1YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkLmNwcApAQCAtOTEsMjIgKzkxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkUHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQ
cm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD47Cit1c2luZyBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD47CiAKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIl9zKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZENvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5
cGUgKi8KIApAQCAtMTczLDcgKzE3Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqCiAKIEpT
VmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
LmNwcAppbmRleCA4YzIyMTI1M2QyNjM0YTE4ZDc3MjMxM2VkY2M1MjFjMzg5NzdiMTU0Li4zZmZh
NzUwYjk3ODNiZjM5OWYxZThhYTIyM2UxZGM2ZGZjMjVlMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGly
ZWN0SW5oZXJpdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKQEAgLTc4
LDIxICs3OCwyMSBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlUHJvdG90eXBlLCBK
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZVByb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZT47Cit1c2luZyBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U+OwogCi10ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICByZXR1cm4gSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6OmdldENvbnN0cnVjdG9yKHZtLCAm
Z2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZURPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSJfcyksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlRE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVm
YXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBKU09iamVjdCog
SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6OnByb3RvdHlwZShWTSYgdm0s
IEpTRE9NR2xvYmFsTwogCiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCmluZGV4IGY3MTE4NDRkYzMyYzRiMTY4
NzVhODU4YWNmNjE2ZWY2ZTE2OWNmNDUuLmJjMDMwOThiNTA0NzRkNzhkODA4YjI0YmY3NmFkNTZh
MDdkNmY4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcApA
QCAtMTA3LDIxICsxMDcsMjEgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3RvdHlwZSwgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ+OwordXNpbmcgSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pTT046Omdl
dENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZh
dWx0VG9KU09OSW5oZXJpdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01Db25zdHJ1Y3Rvcikg
fTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE2OSw3ICsxNjksNyBA
QCBKU09iamVjdCogSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6OnByb3RvdHlwZShWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYQogCiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0KiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbC5jcHAKaW5kZXggOTZhNGU3ODZmYWQ3ZDE0NjdlNWE3OTE5YjU3YTY4
MmRhZTFlNzljYi4uODJjZjY5NjgwNDlhNGJjOWYyMDVjMDdhY2VhNTkzNWZhNTNjOTE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcApAQCAt
MTA5LDIxICsxMDksMjEgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlLCBKU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbD47Cit1c2lu
ZyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWxET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdDo6Z2V0Q29uc3RydWN0b3Io
dm0sICZnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWw6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0RmluYWwiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQog
Ci10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzIsNyArMTcyLDcgQEAgSlNPYmplY3QqIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JgogCiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5j
cHAKaW5kZXggOWNjNTBjZWVkMjg5YzUxMjQ2NTE0NjlhMmVmNGYxMWQ0YTM4NTg3NC4uOWQzZGNl
MTgzZDI5YTQyMWUwZDliMmM1NGFiYTExYmE1MzZjODI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWlu
U2VjdXJpdHkuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5cGUsIEpT
VGVzdERvbWFpblNlY3VyaXR5UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RG9tYWlu
U2VjdXJpdHlDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdERvbWFpblNlY3VyaXR5PjsKK3VzaW5nIEpTVGVzdERvbWFpblNlY3VyaXR5RE9NQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REb21haW5TZWN1
cml0eT47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtMTEwLDIwICsxMTAsMjAgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdERvbWFpblNlY3VyaXR5VGFibGVWYWx1ZXNbXSA9
CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdERvbWFpblNlY3VyaXR5VGFibGUg
PSB7IDEsIDEsIHRydWUsIEpTVGVzdERvbWFpblNlY3VyaXR5OjppbmZvKCksIEpTVGVzdERvbWFp
blNlY3VyaXR5VGFibGVWYWx1ZXMsIEpTVGVzdERvbWFpblNlY3VyaXR5VGFibGVJbmRleCB9Owot
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REb21haW5TZWN1cml0eURPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REb21haW5TZWN1
cml0eTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RG9tYWluU2VjdXJpdHki
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
RG9tYWluU2VjdXJpdHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REb21haW5TZWN1cml0eURPTUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERvbWFpblNlY3VyaXR5RE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzIsNyAr
MTcyLDcgQEAgSlNPYmplY3QqIEpTVGVzdERvbWFpblNlY3VyaXR5Ojpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWMKIAogSlNWYWx1ZSBKU1Rlc3REb21haW5T
ZWN1cml0eTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REb21haW5T
ZWN1cml0eUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REb21h
aW5TZWN1cml0eURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdERvbWFpblNlY3VyaXR5Ojpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcu
Y3BwCmluZGV4IDg2YzJjZjdlMTI2MzkyOTY0ZTNmMDA5NWRkOTIzMmYzZTY3OGRmZjUuLjkyOTNj
ZjIxNzRjOGY0YTBmY2M4NTA5Mzg5OTNmNjQ0MmEyYWUxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90
b3R5cGUsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjsKK3VzaW5nIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OwogCiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3Rv
ciAqLwogCkBAIC0xMTUsMTMgKzExNSwxMyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAKIHN0YXRp
Y19hc3NlcnQoVGVzdEVuYWJsZWRCeVNldHRpbmc6OmVuYWJsZWRCeVNldHRpbmdDb25zdGFudCA9
PSAwLCAiZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50IGluIFRlc3RFbmFibGVkQnlTZXR0aW5nIGRv
ZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFbmFibGVkQnlTZXR0aW5nIl9zKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CkBAIC0xMzUsNyArMTM1LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLAogICAgIH0K
IH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0Nv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEJ5U2V0dGluZyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEJ5
U2V0dGluZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMjQ0LDcgKzI0NCw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqCiAKIEpTVmFsdWUgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEVuYWJsZWRCeVNldHRpbmdET01D
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKaW5kZXgg
M2NiNDE1Mjc4NTgxN2IyNzZmYjE5ODRmNDE0NTNjZDhlYzJjYTg3ZS4uYmYzYzI3NzlhZGE5ZDQ0
MTYzZjZmYjdlZTZiNGU1YzgwOTI2YzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuY3BwCkBAIC04NSwyMiArODUsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFByb3RvdHlwZSwg
SlNUZXN0RW5hYmxlZEZvckNvbnRleHRQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RF
bmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+OwordXNpbmcgSlNUZXN0RW5hYmxlZEZvckNv
bnRleHRET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdEVuYWJsZWRGb3JDb250ZXh0PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVuYWJs
ZWRGb3JDb250ZXh0Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1
bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkRm9y
Q29udGV4dENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHRET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RW5hYmxlZEZvckNvbnRleHQiX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEZv
ckNvbnRleHQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0RW5hYmxlZEZvckNvbnRleHQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0RE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0x
NDgsNyArMTQ4LDcgQEAgSlNPYmplY3QqIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Ojpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2IKIAogSlNWYWx1ZSBKU1Rlc3RF
bmFibGVkRm9yQ29udGV4dDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGExY2RkY2ExYzJjMjIxNWNlOWE1OWFiNjBlZjk2
NDNhMTQxZmYxMmQuLjhmNmJmNTFmNzAyYTRhZGU1YjA1ZGM4ZWZiMzVjNzBkMTc2N2Q0ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2MywxMyArMTYzLDEzIEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlw
ZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj47Cit1c2luZyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I+OwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExf
QVRUUklCVVRFUyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7
CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yRE9N
Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CkBAIC0xODgsMjEgKzE4OCwyMSBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTExfQVRUUklCVVRFUyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVmFsdWUpOwogfQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3RF
dmVudENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2ZW50OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmds
b2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0RXZlbnRDb25zdHJ1Y3RvciJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3RvcikgfTsK
IAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBK
U09iamVjdCogSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iagogCiBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqIElETEF0dHJpYnV0ZTxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNDEzZmJmMmNmNjQ4ODJhZTNkMDY1NzU5
ZGU0YzRiZGIyNzM3Y2Y1YS4uZDYxODIyY2NkOThiNjVjOWVmYzMzYWM1ODJmYjM5NTEwNWYxZTkw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC04OSwyMSArODksMjEgQEAgcHJpdmF0
ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZSwgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGU6OkJhc2UpOwogCi11c2lu
ZyBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0RXZlbnRUYXJnZXQ+OwordXNpbmcgSlNUZXN0RXZlbnRUYXJnZXRET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEV2ZW50
VGFyZ2V0PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdl
dERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTRXZlbnRU
YXJnZXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RFdmVudFRhcmdldERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0Ojpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFdmVudFRhcmdldCJfcyksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudFRhcmdldCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudFRhcmdl
dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBKU09iamVjdCogSlNUZXN0RXZlbnRU
YXJnZXQ6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAKIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29u
c3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogYm9vbCBKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDkwOTc2NzgzMzRl
ZDk5N2JiM2E3OTdmODMwNjIyY2U1NWQ1OGVlZGMuLmFlNWEwNDA2YTI2YWY3N2U0MTRkYTg2YjBj
NDk0ZjBkODE5MGQwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC04MiwyMiArODIsMjIg
QEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RFeGNlcHRpb25Qcm90b3R5cGUsIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNUZXN0RXhjZXB0aW9uPjsKK3VzaW5nIEpTVGVzdEV4Y2VwdGlvbkRPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RXhjZXB0
aW9uPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXhjZXB0aW9uRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXhjZXB0aW9uOjpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFeGNlcHRpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXhjZXB0aW9uQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFeGNlcHRpb25E
T01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXhjZXB0aW9uRE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0x
NDQsNyArMTQ0LDcgQEAgSlNPYmplY3QqIEpTVGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RFeGNl
cHRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV4Y2VwdGlvbkRP
TUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCAy
MWE3OGQyMTI4M2VjMDRiZjYxYzgxMjhiYmMwY2Y3NWMwY2YwZWNhLi42M2NhZDBlNzBlNzYzZGQz
OTIzNzE0MGJiMDU1MTQ2MTEzZThhZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCkBAIC04MiwyMiArODIsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90
eXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT47Cit1c2luZyBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPjsKIAotdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0b3IpIH07CiAK
IC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNTQsNyArMTU0LDcgQEAgSlNP
YmplY3QqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWwKIAogSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGVlOGQ4NGJmNzU4N2M4YzdhMjZjZGI0ZTNlN2Y3ZjFmYjIzYzQ4OGMuLjBkNjk3
OTRkY2M5ZDQwYzRlMTZlMmExNmUxMTM4ZGE1MTAyOGJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUKIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0VGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcik7CiAKLXVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0R2xvYmFs
T2JqZWN0PjsKK3VzaW5nIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0R2xvYmFsT2JqZWN0PjsKIAogLyogSGFz
aCB0YWJsZSAqLwogCkBAIC02NjIsMTMgKzY2MiwxMyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICNlbmRp
ZgogfTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0Lmdl
dFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHbG9iYWxPYmplY3QiX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKQEAgLTY3Niw3ICs2NzYsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNETwogICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKIH0KIAotdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSB9OwordGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVj
dG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtNzU2LDcgKzc1
Niw3IEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAK
IEpTVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RH
bG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggM2RmNzk3M2UwNjUyNjIx
MThhMjcyZjc3OThhZDVlMzYwZmEzZmI1ZC4uY2U5MmQwMzE5OTNlZWFhZDg0M2ZkY2IzNWFkNzFi
M2I2OTYwNWExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcApAQCAtODEsMjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclBy
b3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7
CiAKLXVzaW5nIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI+OwordXNpbmcgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllcj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxP
YmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lk
IEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYKIAogSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmlu
ZGV4IDZkZmE3MTUwNTc5ZDk1YWI3Mzk2NWQ3NjU0OGNmNTdiZTIwNzFhZWQuLmYyOGVjNWM2OTUz
MGJlOWNmMmRiMzZhMGZmMzA0ZDkyZjA5MDRjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC04MSwyMiArODEsMjIg
QEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPjsK
K3VzaW5nIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJl
dHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IpIH07CiAKIC8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDIsNyArMTQyLDcgQEAgSlNPYmpl
Y3QqIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKFZNJiB2
bSwgSlNET01HbG9iYWxPYmoKIAogSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKaW5kZXggNWU3N2U2ZTA5MDNlYmQwN2MwNzg1ZGE1MjdlNzU4MDE5
ZjYxNzRlYy4uYTlhNTllNzcwNTcyYzEwNTRiM2YwNmYxMjhjNmNjYjdlMDE1NzRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAg
LTg3LDIyICs4NywyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcg
SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+
OwordXNpbmcgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25z
dHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25z
dHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0OSw3
ICsxNDksNyBAQCBKU09iamVjdCogSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpw
cm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdAogCiBKU1ZhbHVlIEpTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA2MzlkYjAx
M2IwMDQzNDBmZDNkODU1Yzk3ZWQ2Yjg0M2U3NWY2MmNhLi4wYmMxMmE4OTkxOTIwNTNkNWU4NTNk
OTE0YTdkYjliMmM0OWFlOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTk0LDcgKzE5
NCw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OkJhc2Up
OwogCi11c2luZyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8
SlNUZXN0SW50ZXJmYWNlPjsKK3VzaW5nIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2U+OwogCiAvKiBIYXNoIHRhYmxlIGZvciBj
b25zdHJ1Y3RvciAqLwogCkBAIC0yNTgsMTEgKzI1OCwxMSBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RT
dXBwbGVtZW50YWw6OlNVUFBMRU1FTlRBTENPTlNUQU5UMSA9PSAxLCAiU1VQUExFTUVOVEFMQ09O
U1RBTgogc3RhdGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTVBMID09IDIsICJD
T05TVF9JTVBMIGluIFRlc3RTdXBwbGVtZW50YWwgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJ
REwiKTsKICNlbmRpZgogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExf
QVRUUklCVVRFUyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdEludGVy
ZmFjZURPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKQEAgLTI4NCwxNSArMjg0LDE1IEBAIHRlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yOjpjCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9Ci1KU0NfQU5OT1RB
VEVfSE9TVF9GVU5DVElPTihKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5OT1RBVEVfSE9TVF9G
VU5DVElPTihKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0SW50
ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9u
UHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdEludGVyZmFjZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SW50
ZXJmYWNlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2wKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEludGVyZmFj
ZTo6aW5mbygpLCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7
CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcikg
fTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rv
cikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTQ5OCw3ICs0OTgs
NyBAQCBKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZTo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
KyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKaW5k
ZXggMzAxMmZlNDUwYmU1N2IzMDUwN2ViMmNiMWJkOGFiZGJlZDM2MjA0Yy4uOWFhNmQ5MzBkNzQ0
YmNkOWVhYTUwNDU1NDE0YjNhMjY4MmNmYWY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC04MiwyMiArODIsMjIgQEAgcHJpdmF0
ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmVQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+OwordXNpbmcgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjsKIAotdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9
CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgSlNPYmplY3QqIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYKIAogSlNW
YWx1ZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5k
ZXggMjRiMjM4MGEyOWYyYTNiMTliZDU4ZWRjNDYzMDdlM2UxMWNkOTM3Yy4uMzRiYmQzYWZjNDNh
ZTRkOTNlZDAxYWQyZDc5NjY5NjI1OTcyODJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC05
MiwyMiArOTIsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSwgSlNUZXN0SXRlcmFibGVQcm90b3R5cGU6
OkJhc2UpOwogCi11c2luZyBKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SXRlcmFibGU+OwordXNpbmcgSlNUZXN0SXRlcmFi
bGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dEl0ZXJhYmxlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJdGVyYWJsZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0SXRlcmFibGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJdGVyYWJsZTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SXRlcmFibGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJdGVyYWJs
ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SXRlcmFibGUiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEl0ZXJhYmxlQ29uc3Ry
dWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJdGVyYWJsZURPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SXRlcmFibGUiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNTgsNyAr
MTU4LDcgQEAgSlNPYmplY3QqIEpTVGVzdEl0ZXJhYmxlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdEl0ZXJhYmxlOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCBjOGQyNmY0OTA0
MWJjNWRmOThkY2UwMGMxNjQwODM4NDY4NzMyZmUxLi42M2Y0NWM3NmNjYTg0YTAxOGQ4NGMzMjk5
OTM2NWU2ODYwNTE4NTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKQEAgLTg1LDI3ICs4NSwyNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlLCBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
cjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj47Cit1c2luZyBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckRPTUNvbnN0cnVjdG9yID0gSlNET01CdWlsdGluQ29uc3RydWN0b3I8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Qu
ZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gRnVuY3Rp
b25FeGVjdXRhYmxlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0
aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pCit0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSog
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1
dGFibGUoVk0mIHZtKQogewogICAgIHJldHVybiB0ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JJbml0
aWFsaXplVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSk7CiB9CiAKLXRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rv
cikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE1Miw3ICsxNTIs
NyBAQCBKU09iamVjdCogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYQogCiBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCmluZGV4IDUyOTFlNDIyZmIzMzFjOGE0
NWQwMzgwNTcwMDU1MDkxMzMyNjJmN2EuLjAyOGI0MGQ2MjFjNDBiMGFkNmUyMDUzMzZkMzI1MGEw
MDgzODllN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3Bw
CkBAIC04MywyMyArODMsMjMgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKK3VzaW5nIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKIHVzaW5nIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IEpTRE9NTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj47CiAKLXRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkRPTUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24i
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0
b3J5RnVuY3Rpb246OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgSlNPYmplY3Qq
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2IKIAogSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbkRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiBKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjo6Z2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAppbmRleCA3ZjNlOTgyYzNmYjgyM2E0MTUwYjRiNzQ4Yzg5NDVmYTI5NWZmMGQzLi5h
ZDQ1NTE0NjQzYjQxODVjYTIzNjEyNjExZmJmOWZjOGE2YzcxMzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC04OSwyMiArODksMjIgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0Nv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TGVnYWN5
T3ZlcnJpZGVCdWlsdElucz47Cit1c2luZyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0x
NTEsNyArMTUxLDcgQEAgSlNPYmplY3QqIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG8KIAogSlNWYWx1ZSBKU1Rlc3RM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQog
CiB2b2lkIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwq
IGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKaW5kZXggOTg2NzYzMzcwYjRjMzExMTY5YzU2NDk0NzQ5
YWU5NTViMDZjNDFlOS4uMjA2MzE1YzI4N2VlOGM0MjVlMmYzZjNmYjVhYzM0YTMzNGQ2YjM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNYXBMaWtlLmNwcApAQCAtOTgsMjIgKzk4LDIyIEBAIHByaXZhdGU6CiB9OwogU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVByb3RvdHlwZSwg
SlNUZXN0TWFwTGlrZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE1hcExpa2VDb25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE1hcExpa2U+
OwordXNpbmcgSlNUZXN0TWFwTGlrZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0TWFwTGlrZT47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RNYXBMaWtlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBV
TlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5
cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE1hcExpa2VDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RNYXBM
aWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RNYXBMaWtlIl9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWFwTGlrZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TWFw
TGlrZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWFw
TGlrZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWFwTGlrZSIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TWFwTGlrZURP
TUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAt
MTcwLDcgKzE3MCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RNYXBMaWtlOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdE1hcExp
a2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TWFwTGlrZUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RNYXBMaWtlRE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIHZvaWQgSlNUZXN0TWFwTGlrZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zLmNwcAppbmRleCAyNTExZmVjYjQ2NTUxZmVhMjc4ZGUxNzNmNmE0N2M3MDRjMThhNmExLi5j
MGRmYmFmOWViYjkzMTFkZDQ0NzVhMjc2ZTY0N2FlOTY5ZTQ2YjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCkBAIC0x
MDAsMjIgKzEwMCwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUs
IEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGU6OkJhc2UpOwog
Ci11c2luZyBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zPjsKK3VzaW5nIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TWFw
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnND
b25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1hcExpa2VX
aXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE1h
cExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBKU09iamVjdCogSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYgogCiBKU1Zh
bHVlIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RNYXBMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAKaW5kZXggZDllM2NkZjJjZGRiZDU3MDcyNmMwZWVkODIxMTVmZDE0ZTY5ODFmMi4u
YzM4YzFmZmNmM2NiMWJlZjQ0NjlkYjI4OGFiNjM2ZjRmNzJlZGY5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAK
QEAgLTgyLDIyICs4MiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpC
YXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI+OwogCi10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
ckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1
Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Myw3ICsx
NDMsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbAogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKaW5kZXggNjUxODMxNWJhZDY2MmEyMjY5Njk5Zjg2NDcxYzBlNTNiNmJjZTZkYi4u
MjQ2MDhlMTk5MzlmZDFmZjRkOTMxMTZjYmY2MWQwZDE1ODA0MDA3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCkBAIC04MiwyMiArODIsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+
OwordXNpbmcgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IpIH07CiAKIC8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDMsNyArMTQzLDcgQEAgSlNPYmpl
Y3QqIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUcKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKaW5kZXggZjQzNGU0Nzg0YzVkYTM1NTRhNjRiZWI5MDA2YmMwMDIwODM0YWVmOS4u
NjgxYjE0YzM0YzMyYWMzODhlMDMxY2Y4ODk4M2VlNmU0Yzg3MTAyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIu
Y3BwCkBAIC04OSwyMiArODksMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
clByb3RvdHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNTIsNyArMTUyLDcgQEAgSlNPYmplY3Qq
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2IKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBhZDRmMWEwODk0NzQ2M2UzN2E0MTU3
NTkzNDU0ZWUzNWI5ZjM3MzVlLi4zYmU0ZjY5Y2FkZGIxODlhY2YxMTIyMmJjNzZiMGRkMzA5MTE1
NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNw
cApAQCAtODEsMjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBK
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj47Cit1c2lu
ZyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcj47
CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
cjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmll
ckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApA
QCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAKIEpTVmFsdWUgSlNU
ZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBlM2FmNDE5NmQ4MDBiY2U2ZTYwYmEzOTIxZTlh
NmU0ZmQyODUxZDVlLi4yMDk2NjMwM2IzODQ0ZjBhNjNkNDE1OTk1M2M2ZTg1ZTY0YTJlNGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAKQEAgLTgxLDIyICs4MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlLCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6QmFz
ZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbj47Cit1c2luZyBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFS
QU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0K
IAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0
aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
biIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKK3RlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9u
RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3RvcikgfTsK
IAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBK
U09iamVjdCogSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZQogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5h
bWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyLmNwcAppbmRleCBiZWRhMWI2OTg4OTdlZDAxMjk4ZmVjMTU0ZTQ1OTJmMmQz
YzUyYzU0Li5hZTZhMjZmMWM4NWFmZWFhM2VmYmU0NGYwMGQ5OWNmNjYzY2MwYTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTg2
LDIyICs4NiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj47Cit1c2lu
ZyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVu
Y3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyRE9N
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU09iamVjdCog
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JgogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJZGVudGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cAppbmRleCAyYzgzZGU0MzkxZTg1ODk5YzZkMTIyMzEyYWM3YmM2NzY0MWNlZWZkLi44ZmUxMmEx
YjJkZjFhMGFhZTdhYjg2NmQyZGM2MTg1NGFhZDBlZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTgyLDIyICs4Miwy
MiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj47Cit1
c2luZyBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBn
bG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBs
YXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpwcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciJfcyksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZQogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVk
R2V0dGVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKaW5kZXggYzhmMDc4OTZlZGIx
OTk5YzAyYTk5MTJmYjA5YjEyZjQ5NGJiYTE1ZC4uNTg3NDMyMmY5YjcyYjQ5ZTczODdhZjZhYjhk
NWJiY2NhMGNlMDE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNw
cApAQCAtODEsMjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZSwgSlNUZXN0
TmFtZWRHZXR0ZXJDYWxsV2l0aFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg+OwordXNpbmcgSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aERPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aD47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RO
YW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxP
YmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGhET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxX
aXRoOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEdldHRlckNhbGxX
aXRoIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0
cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0
aCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBKU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGhET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5jcHAKaW5kZXggMmUwNmFkOTEyMWYxZGQxYjU5YjJiMjZiOGQ0ZjUzZWI5ZWYw
YWRkNy4uMDE0MGE1MzQwNjQzZWRlOGVmMjBkNTdkZjg1NmQ1MDUzZDdhOGNkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC04MSwyMiArODEs
MjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdl
dHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJO
b0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckRP
TUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDIsNyArMTQyLDcgQEAgSlNPYmplY3QqIEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2wKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGJhOWQwNmEwOGEyYmJhYWY3
NTYyNTE2MWI3YjQ5ZmVmMzFlZGMzOTcuLjc2MmI0Yzc4MGRjMjkzZjQ2MGZmYTJlNTlkODI3MmJi
Njg1MWYxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKQEAgLTg2LDIyICs4NiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90
b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwog
Ci11c2luZyBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU09iamVjdCogSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKaW5kZXggZWI3ODI4MWM1NjU1
YWE4ZTdkOWI0OTY3NWViYzU1YzlhZDk3MzAzNi4uOTk1NTM1ZmI3NmFhOTM3YWRkMzZjMzAxYWI0
ZmQxZGVlZDdiZGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXIuY3BwCkBAIC04MSwyMiArODEsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllclByb3Rv
dHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11
c2luZyBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+Owor
dXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJO
b0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDIsNyAr
MTQyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2wKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZFNl
dHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2
b2lkIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCmluZGV4IDJmYzg4MzhmNjI2NjY1YmVkYzViMGY3MzgxNzY4ZGZhZGYwN2U2YmEuLjQ1
ZDI3M2UxZDI5NjMxYjI2N2E3MzQ5YTcwODhiNWYxNGNkMDNhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTgxLDIyICs4
MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEpTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uPjsKK3Vz
aW5nIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiJfcyksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25ET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplYwogCiBKU1ZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCAyODJmMjZkM2ZmMWVlZWE3ZThm
MDg4N2Y4Mjk2YjFkMmFiMGE2OGNhLi5jMmE3YzkyNDdkOTVlYTYxZDVhZTE1YmJkMmM5ZjllNDkz
ZTRiNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCkBAIC04NiwyMiArODYsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90
eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAot
dXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cj47Cit1c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNPYmplY3QqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JgogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
ZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCA5MTQw
Mzc2Zjg3ZDk2YzJiNzdhYzNkMWJkNzI3MGNhNjhiZWQzOWVlLi5hMTRhZWVlMTI1NDZiNGJkNDg0
NWU3MTlhMmY1NDM5YTMxMjZmY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC04OSwyMiArODksMjIgQEAgcHJpdmF0ZToK
IH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcj47Cit1c2luZyBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyPjsKIAotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblBy
b3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpIH07
Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3Ip
IH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNTIsNyArMTUyLDcg
QEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWMKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OwogfQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKaW5kZXggMzE3MDc5MzllMTI3
ZjU3ODYzODFhZjU3NDNkYjdkYTU2ZjY0NDQxNy4uYzkzNjMwZjIyNjkzODdmMTUzM2UxMTg0MjE4
ZDkxMzA0ODk4ZjMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcApAQCAtODksMjIgKzg5LDIyIEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZSwgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlclByb3RvdHlwZTo6QmFzZSk7CiAKLXVz
aW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI+OwordXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj47
CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVy
biBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0cnVjdG9y
KSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTUyLDcgKzE1Miw3
IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuY3BwCmluZGV4IDZlOWRjYTYzY2U3YzkzYWNlYWM0NDk1MjYzNDJmZjI3
MmQzZjI4NjYuLjVhNDYwNGVhZWRjNjc5YjUyNGQwMDYwYThjY2MyZDU2MDdmZmQ0YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKQEAgLTgxLDIyICs4MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNE
T01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbAogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdEluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVy
dGllcy5jcHAKaW5kZXggYmZhYzAyOTUwZjcyYzNkMWZhZGFkYjY0MjI0YzVhM2JjMzkzZjQ2Ny4u
MGE1YWJlNzc1OGE0ZGY0ZWIwYzY4NGExYjU0Njk4MTE1MjVhZTNhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC0xMDcsMjAgKzEwNywyMCBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzVGFibAogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsZSA9IHsgMiwgMywg
dHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpp
bmZvKCksIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Rh
YmxlVmFsdWVzLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNUYWJsZUluZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNET01Db25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAK
QEAgLTE2Niw3ICsxNjYsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpwcm90b3R5cGUoVk0mIHZtLCBKUwogCiBKU1ZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9NQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3Bw
CmluZGV4IGU0NTc4YTI5YjZhNmYzNmUzNGRlNjk5OGVmNDc0NzczMzM0YjQwMGQuLjM2ZjUwYjcw
NzMxYTNmMmM5YjM2ZWQ4NDk0YzEzOWI2ODU1ZGQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lV
bmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5j
cHAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucz47Cit1c2lu
ZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC0x
MDcsMjAgKzEwNywyMCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTAogfTsKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1RhYmxlVmFsdWVzLCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zVGFibGVJbmRleCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMi
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjYsNyArMTY2LDcgQEAgSlNPYmplY3QqIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHQKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2Fz
dDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5k
ZXggOTRlMTMxMDBjYWNkYTM4ZmU0NTY2YzYwYzQ1NTFiYzFlNWVhOTQ3Ny4uOTM0YWY0MmM4YTc2
ODJjN2E5ZDk2NzQ4OGE0NjEzMDZmYmRkMTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTA2LDEzICsx
MDYsMTMgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROb2RlUHJvdG90eXBlLCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNp
bmcgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlPjsK
K3VzaW5nIEpTVGVzdE5vZGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0
Tm9kZT47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJV
VEVTIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE5vZGVET01Db25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5vZGVE
T01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3Rl
ZFRoaXMpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE5vZGU6OmNyZWF0ZSgpOwogICAgIHN0YXRp
Y19hc3NlcnQoVHlwZU9yRXhjZXB0aW9uT3JVbmRlcmx5aW5nVHlwZTxkZWNsdHlwZShvYmplY3Qp
Pjo6aXNSZWYpOwpAQCAtMTIzLDIxICsxMjMsMjEgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHIK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpT
VGVzdE5vZGVDb25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QpOworSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0Tm9kZURPTUNvbnN0cnVj
dG9yQ29uc3RydWN0LCBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICByZXR1cm4gSlNOb2RlOjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9i
amVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Tm9kZTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Tm9kZSJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5vZGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGVDb25zdHJ1Y3RvcikgfTsK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5vZGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI1Miw3ICsyNTIsNyBAQCBKU09iamVjdCogSlNU
ZXN0Tm9kZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIAogSlNWYWx1ZSBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0Tm9kZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBJ
RExBdHRyaWJ1dGU8SlNUZXN0Tm9kZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNzkxZmQw
ZDIyMTllNzljNmFmMWUzMDZjODBiNTVjYzhiMGYzZWQ4Ny4uMDAzZDcxNTlmYjVlM2IzMGFlYzkx
MmExZWU4NzZmNTY3ZmI3NjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4MjQsNyArMTgyNCw3IEBAIHBy
aXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T2Jq
UHJvdG90eXBlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RPYmpD
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T2JqPjsKK3VzaW5nIEpTVGVzdE9i
akRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmo+OwogCiAvKiBIYXNo
IHRhYmxlICovCiAKQEAgLTE5MzcsMTEgKzE5MzcsMTEgQEAgc3RhdGljX2Fzc2VydChUZXN0T2Jq
OjpDT05TVF9WQUxVRV8xNCA9PSAweDFhYmMsICJDT05TVF9WQUxVRV8xNCBpbiBUZXN0T2JqIGRv
ZXMKIHN0YXRpY19hc3NlcnQoVGVzdE9iajo6Q09OU1RfSU1QTCA9PSAxNSwgIkNPTlNUX0lNUEwg
aW4gVGVzdE9iaiBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogc3RhdGljX2Fzc2Vy
dChUZXN0T2JqOjpyZWFkb25seSA9PSAwLCAicmVhZG9ubHkgaW4gVGVzdE9iaiBkb2VzIG5vdCBt
YXRjaCB2YWx1ZSBmcm9tIElETCIpOwogCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3Rl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE9i
akRPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAg
QVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKQEAgLTE5NjUsMTUgKzE5NjUsMTUgQEAgdGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNv
bnN0cnUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpTQ19BTk5PVEFURV9IT1NUX0ZVTkNU
SU9OKEpTVGVzdE9iakNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KTsKK0pTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdE9iakRPTUNvbnN0
cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAot
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Qu
ZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0T2JqOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RPYmplY3QiX3MpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
CiAjZW5kaWYKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iakNvbnN0cnVjdG9yKSB9OwordGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE9iakRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KIApAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAgSlNPYmplY3QqIEpTVGVz
dE9iajo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IAogSlNWYWx1ZSBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0T2JqQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE9i
akRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE9iajo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCmluZGV4IDhk
YWE4ZmFmNDIyNDVlYmNiMTRmMGM0Zjk4ZGU5ZDU4OWVlZGZjMjguLjNlYmIwMTMwYzlmYzdmOGNj
MDFmODAxMDQ1MDM5MzM1Zjc4OTY3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNv
bmRpdGlvbmFsLmNwcApAQCAtOTIsMjIgKzkyLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxQcm90
b3R5cGUsIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsUHJvdG90eXBlOjpCYXNlKTsKIAotdXNp
bmcgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsPjsKK3VzaW5nIEpT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbD47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxE
T01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7
CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWw6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWxDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbERP
TUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAt
MTYzLDcgKzE2Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6cHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhCiAKIEpTVmFsdWUgSlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWw6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9p
ZCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBjN2Zk
M2FmYjE0MDQ3MTE3NzVmZjhkNWE0MjNiMDk4NThiYjg1OWNkLi44MWE2NThhMjNiMzUzZWQ4NzQz
ZTcyMzU3MDgzZTliYjdjODg5MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCkBAIC04NSwxMyArODUsMTMgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpCYXNlKTsK
IAotdXNpbmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjsKK3VzaW5nIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz47CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczEoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0RPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NF
UlQoY2FzdGVkVGhpcyk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGNv
bnZlcnQ8SURMQXJyYXlCdWZmZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiYXJyYXlCdWZmZXIiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsgfSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzMihKU0dsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gY29udmVydDxJRExBcnJheUJ1ZmZl
clZpZXc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAw
LCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0
ciwgIkFycmF5QnVmZmVyVmlldyIpOyB9KTsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMz
KEpTR2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CiAgICAgYXV0byBibG9iID0gY29udmVydDxJRExJbnRlcmZhY2U8QmxvYj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiYmxvYiIsICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJCbG9iIik7IH0pOwpAQCAtMTQ4LDcgKzE0
OCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczQoSlNHbG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29u
c3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlz
KTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0cmluZyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczUoSlNHbG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29u
c3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlz
KTsKICAgICBhdXRvIGxvbmdBcmdzID0gY29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAwKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczUoSlNHbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Zh
bHVlKTsKIH0KIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJ
QlVURVMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMDYsMjAgKzIwNiwyMCBAQCB0ZW1w
bGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQwogfQogSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwog
ICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KIApAQCAtMjY1LDcgKzI2NSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
CiAKIEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCmluZGV4IGJhMTdkYTk4M2I0
NDkzN2ZhYjVkZDYxNGQxMzU0ZTVlMTdmZTM4Y2EuLmRjYWI3YmRjNTk2ODk0Njg3ODAzNjBhMmJl
NDE0YTQ3NDAzNzIzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAgLTg0LDEzICs4NCwxMyBAQCBwcml2
YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+OwordXNpbmcg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
PjsKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUo
KSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkp
OwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHNlcXVlbmNlT2ZTdHJp
bmdzID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+Pjo6UmV0dXJuVHlwZXsgfSA6IGNvbnZlcnQ8SURMU2VxdWVuY2U8
SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsK
QEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKAogewogICAgIFZNJiB2
bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IqPihjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAg
ICAgYXV0byBzdHJpbmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UyKAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9CiAKLXRl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTQ1LDIwICsxNDUs
MjAgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1cKIH0KIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNU
SU9OKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvckNv
bnN0cnVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTIwNCw3ICsyMDQsNyBAQCBKU09iamVjdCogSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYQogCiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAK
aW5kZXggMzU3NmYxOTMzNWRjOTQ0ZTExMjU3NDRmOTA5ZjU5NzM3MzMxY2ZkNS4uNTNlNTNlYTAw
MDJmMzBjYTk4YTk2MzZmYzExMTFkNGJhYjdjMGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbklu
dGVyZmFjZS5jcHAKQEAgLTgwLDIyICs4MCwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSwg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+OwordXNpbmcgSlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RQbHVn
aW5JbnRlcmZhY2U+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UGx1Z2luSW50ZXJmYWNl
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlw
ZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdFBsdWdpbkludGVyZmFjZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdp
bkludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50ZXJmYWNl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RQbHVnaW5JbnRlcmZhY2VET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBm
b3IgcHJvdG90eXBlICovCiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBKU09iamVjdCogSlNUZXN0UGx1
Z2luSW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZQogCiBKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKIHZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAppbmRleCBiNjAz
Zjg4MGVmMGE2NDY5Y2JiNGM4ZTczOTliNWQzZmFmZmNlNDUwLi4xMzEzYmE2ZmY3ZmZiOTQzYjE3
NzU3YTQwYWEzMzRlYTExYTNlMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcApAQCAtMTY0LDEzICsxNjQsMTMgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRQ
cm90b3R5cGUsIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OwordXNpbmcgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudD47CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FU
VFJJQlVURVMgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I6OmNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMTg5LDIxICsxODksMjEgQEAgdGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q28KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpTQ19BTk5PVEFU
RV9IT1NUX0ZVTkNUSU9OKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
KTsKK0pTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVu
dERPTUNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01D
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFByb21p
c2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNFdmVudDo6Z2V0Q29uc3RydWN0b3Iodm0sICZn
bG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigyKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1Y3RvcikgfTsKIAogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI1MSw3ICsyNTEsNyBAQCBKU09iamVj
dCogSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYgogCiBKU1ZhbHVlIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudCogSURMQXR0cmlidXRlPEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudD46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKaW5k
ZXggY2U4YzA5OTQ2MDhjOTE5MTg0ZjNhMjY5OTU2ZDRjNzI1OWM3YzUyMi4uYmViZGVjNzI1Y2Nk
YWI3ODRlOTBlNzY0M2VmNzk0ZTkyZmE1NTEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFw
TGlrZS5jcHAKQEAgLTk1LDIyICs5NSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlYWRPbmx5TWFwTGlrZVByb3RvdHlwZSwgSlNU
ZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0UmVhZE9u
bHlNYXBMaWtlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RSZWFkT25seU1hcExpa2U+OwordXNpbmcgSlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9NQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RSZWFkT25s
eU1hcExpa2U+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RSZWFk
T25seU1hcExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RSZWFkT25seU1hcExpa2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdFJlYWRPbmx5TWFwTGlrZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAK
LXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0UmVhZE9ubHlNYXBMaWtlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RSZWFkT25seU1hcExpa2VD
b25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlYWRPbmx5
TWFwTGlrZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVhZE9ubHlNYXBMaWtlIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBKU09iamVjdCogSlNUZXN0UmVhZE9u
bHlNYXBMaWtlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZQogCiBKU1ZhbHVlIEpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHZvaWQgSlNUZXN0UmVhZE9ubHlNYXBMaWtlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFJlYWRPbmx5U2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAppbmRleCAyMDA0MzVmZGQwN2I4ZGYyMmVi
OTJmNWM0MmMxNWZjODkzMzQzYmIzLi4yNGJiOGRhMWVhNDk5MzI5MjUxZTViZDIwMTMyMDYwMTNh
OTdjNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcApAQCAtOTQsMjIgKzk0
LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0UmVhZE9ubHlTZXRMaWtlUHJvdG90eXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2VQcm90
b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFJlYWRPbmx5U2V0TGlrZT47
Cit1c2luZyBKU1Rlc3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFJlYWRPbmx5U2V0TGlrZT47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lk
IEpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFJlYWRPbmx5U2V0TGlr
ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UmVhZE9ubHlTZXRMaWtlIl9z
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RS
ZWFkT25seVNldExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVhZE9ubHlTZXRMaWtlRE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RSZWFkT25seVNldExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTYy
LDcgKzE2Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RSZWFkT25seVNldExpa2U6OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplCiAKIEpTVmFsdWUgSlNUZXN0UmVh
ZE9ubHlTZXRMaWtlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFJl
YWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RSZWFkT25seVNl
dExpa2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBv
cnRFeHRyYU1lbW9yeUNvc3QuY3BwCmluZGV4IDlkNmI0YTQ4ZDg1NTE5ZTUxZWNiOTQzODFkNDI0
MDVlNmI5MTY2MWUuLjRkMDkzYWJiZmQ5MWY2YjdmMDc5MDU5OGFjNGJlZmM3NzQ1NjU3YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwCkBAIC03OSwyMiAr
NzksMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RQcm90b3R5cGUsIEpTVGVzdFJlcG9ydEV4dHJh
TWVtb3J5Q29zdFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFJlcG9ydEV4dHJhTWVt
b3J5Q29zdENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PjsKK3VzaW5nIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdERPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0RE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3QiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0RE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDEsNyAr
MTQxLDcgQEAgSlNPYmplY3QqIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2IKIAogSlNWYWx1ZSBKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3Q6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2Fz
dDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKaW5kZXggNTJmYmNjYTFjZTgxY2M3ZDkzYmQ3ZGY3NjNjN2Y0NjU4ODQ5M2JhZC4uZmU5NGUx
MTJlMTBkMTBkYzdhNWMyYjM2NTMzNzljMDM3MDA5ZTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEwMywyMiAr
MTAzLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlLCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZT47Cit1c2luZyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ui
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yKSB9
OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTcxLDcgKzE3MSw3IEBA
IEpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqCiAKIEpTVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKaW5kZXggZTI1OTdlMTlj
MzBlOWEwMzYwNjc2OTY3MWJjMmRkZTdmNjEzMzIwNC4uY2ZhYzgwNTFiZWQ0Y2Y4YjFlZGYxZGMy
MmNkMTE2MmU2ZjNhMGQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcApAQCAtOTcsMjIgKzk3LDIyIEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
U2V0TGlrZVByb3RvdHlwZSwgSlNUZXN0U2V0TGlrZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5n
IEpTVGVzdFNldExpa2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdFNldExpa2U+OwordXNpbmcgSlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U2V0TGlrZT47CiAKLXRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3RTZXRMaWtlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTZXRMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExp
a2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU1Rlc3RTZXRMaWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3RTZXRMaWtlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0U2V0TGlrZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U2V0
TGlrZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KIApAQCAtMTY4LDcgKzE2OCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RTZXRMaWtl
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBK
U1ZhbHVlIEpTVGVzdFNldExpa2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RTZXRMaWtlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0U2V0TGlrZTo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAppbmRleCAxZmIxOWJkYTk4ZmNkZDA4OTY5N2E2NDg3
N2M4MDU4YmU3OTdlMmJmLi44MWYwZGJkMmZkMGY2M2EzNmE4NTg3MTRkZWMxZDMyN2EyMDE1OWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwCkBAIC05OSwyMiArOTksMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zUHJvdG90eXBlLCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zUHJv
dG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucz47Cit1c2luZyBKU1Rlc3RTZXRMaWtlV2l0
aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zPjsKIAot
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnND
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5m
dW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U2V0TGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMiX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXRMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXRMaWtl
V2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNPYmplY3QqIEpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2IKIAogSlNWYWx1ZSBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNldExpa2VXaXRoT3Zl
cnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2
b2lkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmRlc3Ryb3koSlNDOjpK
U0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyLmNwcAppbmRleCA4NTgwZTU5OGNmNGI2
MjlkNzQ5MWIwODEwM2ExZWY2NjI2ZGRiYzUwLi4wZGVmYTExMjBmNDdlNjljYjU4ZTE5NzIzNGEy
NmI5MjgzYzNhNzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKQEAgLTg1LDIyICs4NSwy
MiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllclByb3RvdHlwZTo6QmFz
ZSk7CiAKLXVzaW5nIEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllcj47Cit1c2luZyBKU1Rlc3RTdHJp
bmdpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0U3RyaW5naWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZp
ZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVT
RURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUo
KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dFN0cmluZ2lmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTdHJpbmdp
ZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RTdHJpbmdpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RTdHJpbmdpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAog
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBKU09i
amVjdCogSlNUZXN0U3RyaW5naWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXI6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJET01Db25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
IH0KIAogdm9pZCBKU1Rlc3RTdHJpbmdpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24u
Y3BwCmluZGV4IGIwZGNkODQ2MDU1OGE0YzczZjFlYjFkOWQwNGQyOTdlNGI1MDhkNmIuLjg5NmY4
ZmRiN2RlYTdiNzVkZDlkNDE0Y2Y0Y2JkZDQ2NWY0NzMxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcApAQCAtODUsMjIgKzg1
LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Qcm90b3R5cGUsIEpTVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPjsK
K3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb246OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNP
cGVyYXRpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RT
dHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRl
eCBkNjU1MmI1MjhjMzhhNjdmYzhiOTdmZGM1NDAxOGEwNmRjOTEwYmEwLi5kYTRmNjFiMzc1YjM0
ZTIyMjdkNmJjMmFiNmI5ZTgyMDdhMmZkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC04NiwyMiArODYsMjIgQEAgcHJpdmF0ZToK
IH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uUHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlv
bkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbj47Cit1c2luZyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25ET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24iX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uRE9NQ29uc3RydWN0
b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDksNyArMTQ5
LDcgQEAgSlNPYmplY3QqIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb246OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JgogCiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uSW1wbGVtZW50ZWRBcy5jcHAKaW5kZXggOWMzMGVmMjliOWRkNjM3ODU5MTNjMGVkNDBkZmZi
MWE2ZmI0OGZhYS4uZmJmMzJlMjFhY2VmMWZjMDM0MDI0Mzc0NDg3OGZmNzk4NmM5NzQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBcy5jcHAKQEAgLTg2LDIyICs4NiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVt
ZW50ZWRBc1Byb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM+OwordXNpbmcgSlNUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXM+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNE
T01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1w
bGVtZW50ZWRBcyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRB
c0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcikg
fTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAK
QEAgLTE0OSw3ICsxNDksNyBAQCBKU09iamVjdCogSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbAogCiBKU1ZhbHVlIEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXND
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmNwcAppbmRleCBlODc5ZjdmZTc2MTkxOTFlMGE5YmQ5NjY4YzlhZDNkZTIzNmNkNDEx
Li40ZGNmZjVhZTgxMzQyYjQ5ODExZDUzYjRhYjMzMTU1MDRkNGJhNWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nLmNw
cApAQCAtODUsMjIgKzg1LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nUHJv
dG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGU6
OkJhc2UpOwogCi11c2luZyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdD
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz47Cit1c2luZyBKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZz47CiAK
LXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmdDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8
PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmciLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNvbnN0
cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ3LDcg
KzE0Nyw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmc6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmc6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKaW5kZXggMWY1
YzY0MjdiMmE5MDg5NDQ1NGUwNDJiMjg3MzI5MTI5ZDk3ZTllNS4uN2FkYmQwMTExODRlODc3ZDVl
ZGQ2NjBmMDVhNDk4NDI2MDY4MGEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcApAQCAtODcsMjIgKzg3LDIyIEBAIHByaXZhdGU6
CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZVByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU+OwordXNpbmcgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZT47CiAKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Q
cm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9u
bHlBdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSB9
OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0
dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9y
KSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTUwLDcgKzE1MCw3
IEBAIEpTT2JqZWN0KiBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAogdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggNjAyYzA4Y2U4Y2Y2NTU1MWQ1NDQ1NmMwMmFl
NGQyMmE4NzEwYTgwYy4uYTRhN2Q3NmFhN2U2NTAwNzY4YjBlZGVmNGZmMjZkNmVhY2RiMDkzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUuY3BwCkBAIC04OCwyMiArODgsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZVBy
b3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVQcm90b3R5cGU6OkJh
c2UpOwogCi11c2luZyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJS
ZWFkV3JpdGVBdHRyaWJ1dGU+OwordXNpbmcgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0
dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9
CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1
dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3RydWN0b3IpIH07
CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNTEsNyArMTUxLDcgQEAg
SlNPYmplY3QqIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OwogfQogCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggMjM4M2UzODU4MmJl
ZjdmNzIxZTQ0MDFhYjgzN2VmMDA2NzAxYTE1ZC4uNjk2YjA0Yjc1NmVlODI2Yjg5ZGI0ZjBiYzY2
ZGQ5NzA5NGNhYTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAg
cHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZSwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OkJhc2UpOwogCi11c2lu
ZyBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RUeXBl
ZGVmcz47Cit1c2luZyBKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3RvcjxKU1Rlc3RUeXBlZGVmcz47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtMTU0LDExICsx
NTQsMTEgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0U3ViT2JqIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9iaiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKIH07CiAKLXRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TExfQVRUUklCVVRFUyBKU1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzRE9NQ29uc3Ry
dWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsK
ICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CkBAIC0x
ODAsMTUgKzE4MCwxNSBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExf
QVRUUklCVVRFUyBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjbwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VmFsdWUpOwogfQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsK
K0pTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3JD
b25zdHJ1Y3QsIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFR5cGVkZWZz
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0VHlwZWRlZnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdFR5cGVkZWZzIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CkBAIC0xOTYsNyArMTk2LDcgQEAg
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG8KICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdFR5cGVkZWZzOjppbmZvKCksIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgKnRoaXMpOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RUeXBlZGVm
c0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RUeXBlZGVmc0RPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0VHlwZWRlZnMiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzRE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0yNjMsNyAr
MjYzLDcgQEAgSlNPYmplY3QqIEpTVGVzdFR5cGVkZWZzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdFR5cGVkZWZzOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMTc5ODJkNGY0YzU0NWYxODRjN2Q5MzEy
YzE2NmVjMGQ1ZWI0ZDdjYS4uNGY2NDkxN2ZjYjY2MzRhM2RmNjIxMjFjNjQyOWU0M2M3ZjFmMDVl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydQogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtlckds
b2JhbFNjb3BlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTV29ya2VyR2xvYmFsU2NvcGVXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVj
dG9yKTsKIAotdXNpbmcgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNXb3JrZXJHbG9iYWxTY29wZT47Cit1c2luZyBKU1dv
cmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1dvcmtlckdsb2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC0x
MDMsMTkgKzEwMywxOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrZXJHbG9i
YWxTY29wZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dv
cmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDYsIDE1LCB0cnVlLCBKU1dvcmtlckdsb2JhbFNjb3Bl
OjppbmZvKCksIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1dvcmtl
ckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1
cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTV29ya2Vy
R2xvYmFsU2NvcGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiV29ya2VyR2xvYmFs
U2NvcGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
Ildvcmtlckdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjcsNyAr
MTY3LDcgQEAgSlNPYmplY3QqIEpTV29ya2VyR2xvYmFsU2NvcGU6OnByb3RvdHlwZShWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QKIAogSlNWYWx1ZSBKU1dvcmtlckdsb2Jh
bFNjb3BlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV29ya2VyR2xvYmFs
U2NvcGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXb3JrZXJHbG9i
YWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1dvcmtlckdsb2Jh
bFNjb3BlKiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9iYWxTY29wZT46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDI1MTA0MDMzNThlMDdlZGY1NzI5YjRh
ZDNlY2NlMTJiZjg0NDdhYzIuLjdjY2E4YjVkOTk2Y2IyYWRkMTY4MDdhYzc2YWY0Y2U2OWZmNGQw
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3IpOwogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1dvcmtsZXRHbG9iYWxTY29wZVdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNXb3JrbGV0R2xvYmFsU2NvcGVXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiAKLXVz
aW5nIEpTV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1dvcmtsZXRHbG9iYWxTY29wZT47Cit1c2luZyBKU1dvcmtsZXRHbG9i
YWxTY29wZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNXb3JrbGV0R2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTY3LDE5ICs2
NywxOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVU
YWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3JrbGV0R2xv
YmFsU2NvcGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8o
KSwgSlNXb3JrbGV0R2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNXb3JrbGV0R2xvYmFsU2NvcGVU
YWJsZUluZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTV29ya2xldEds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4g
SlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiB2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNXb3JrbGV0
R2xvYmFsU2NvcGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiV29ya2xldEdsb2Jh
bFNjb3BlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiV29ya2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSB9Owor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiV29ya2xldEdsb2JhbFNjb3BlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dvcmtsZXRHbG9iYWxTY29wZURP
TUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAt
MTMxLDcgKzEzMSw3IEBAIEpTT2JqZWN0KiBKU1dvcmtsZXRHbG9iYWxTY29wZTo6cHJvdG90eXBl
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjCiAKIEpTVmFsdWUgSlNXb3Jr
bGV0R2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNX
b3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNX
b3JrbGV0R2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dvcmtsZXRHbG9iYWxTY29wZT46OmNh
c3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkK
</data>
<flag name="commit-queue"
          id="426197"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410298</attachid>
            <date>2020-10-01 18:36:41 -0700</date>
            <delta_ts>2020-10-02 10:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217194-20201001183640.patch</filename>
            <type>text/plain</type>
            <size>285326</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZjMmYyZmRhNjE4ZTc5
NTBiYWQ3ZTBhMjk0Y2I4NTFkMzBiODRjYS4uZWU1ODMxNTJhNjQ0MDU0MGFjYjcxZmY5OGQ5Nzk0
ZjQ5NjZhMDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEwLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN0dWJzIGZvciBBdWRp
b1dvcmtsZXRQcm9jZXNzb3IgYW5kIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3R1YnMgZm9yIEF1ZGlv
V29ya2xldFByb2Nlc3NvciBhbmQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6CisgICAgICAgIC0g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1ZGlvLyNhdWRpb3dvcmtsZXRwcm9jZXNzb3IKKyAg
ICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI2F1ZGlvd29ya2xldGdsb2Jh
bHNjb3BlCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjdXJyZW50RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OmN1cnJlbnRUaW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpzYW1wbGVSYXRlIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Xb3JrbGV0UHJvY2Vzc29yOjpwb3J0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JD
b25zdHJ1Y3Rvci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaWRsLgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZCk6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlv
bkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcyk6CisKIDIwMjAtMTAtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIEF1ZGlvV29ya2xldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxOTQzODAyM2M0MzU4YjA2MDYxMDNjNjVjNDdkNTg5Zjdl
ZTVjMzRjLi41ZTk4ZTc3OTIyNjBjZDQ5MjFhMTUxNDUzZGZjNjRhOTYxMjRjMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDc3LDYgKzQ3Nyw4IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5pZGwK
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQmFzZUF1
ZGlvQ29udGV4dC5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJPcHRpb25zLmlkbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYThkY2Y5Njk4
MmE0MDgyOTk3NDU4MjU4MzRiNzE2MGI0NWQyN2Y1Zi4uNDUwZWE3NWJiZDVhZWJiZGVmZjE4YWUy
ODQ0YmExNzlkM2ZmMjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0zMzMsNiArMzMzLDggQEAgJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyT3B0aW9ucy5pZGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMzY3OTVlYTQxMzM4
ZWRkYTg0YWQyODM0ZjY4OGRlZDMyMDRkZTBkOC4uZTBjMDRmYzQyMGUxMTkzMzYyNjdkOGM3Y2Ji
ZWQ4NGRiNDgyYjQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTIxNCw2ICsyMTQsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXROb2RlLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXROb2RlLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3Jr
bGV0Tm9kZU9wdGlvbnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3Ry
dWN0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0Ns
aWVudElucHV0cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAyYzFjMTA4OWFkNWFiNmI3NTlmNTA2ZGMxYWU5MDNjZmYy
MDYwNmY2Li5hYTFjNWZmZmYyOWIzYzhkMWRlMjZkNzcxMTMwNGE3OTE3NzI5NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQxMCw2ICs0MTAsOCBAQCBKU19CSU5ESU5HX0lE
TFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZU9wdGlvbnMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0UHJvY2Vzc29yLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJPcHRpb25zLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGQ3ZmFkYjdlMDFlZDNkNzFlZDU0MmU3MDZiOTk0MGNhOTYyMTdlNmQuLjgxOGUyNGQx
ZTBiNjM5NzllOWMyNmYxMGJkZjk3YWZjYjM0NWUwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oIgogCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00Nyw2ICs0OCwxMiBAQCBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhyZWFk
JiB0aHJlYWQsIGNvbgogCiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6fkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKCkgPSBkZWZhdWx0OwogCit2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpy
ZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3I+JiYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFVO
VVNFRF9QQVJBTShuYW1lKTsKK30KKwogVGhyZWFkKiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6
dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGhyZWFkLT50aHJlYWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBlMTViZmE0Y2VjNmFmZGJmMmYzMmNlMzk2YTdkYmQy
MzNhZjkxNzBlLi4zYTQxMDYwYmM2MmQzY2IxNDJiZjIzNmZhZjc3NWI2MDc4NjY4MGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3I7CiBjbGFzcyBBdWRpb1dv
cmtsZXRUaHJlYWQ7CiAKIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVyczsKQEAgLTQ2LDYgKzQ3LDEx
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlKCk7CiAKKyAg
ICB2b2lkIHJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcj4mJik7CisgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIDA7IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiAwOyB9Cisg
ICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIDQ0MTAwOyB9CisKICAgICBUaHJl
YWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwKaW5kZXggN2YzMmZjOGVhYTJmODRiMzY2NTVhOWJlMDExNzBlZmE1MGZkNWMy
Zi4uM2I2ZmIyMmNmNzg0ZGZjMDU5ZGUzNTNjNzM1MDJjOGI5ZmIxZjY2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5pZGwKQEAgLTM1LDUgKzM1LDggQEAKICAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdE9uUHJvdG90eXBlLAogICAgIEdsb2JhbD0oV29ya2xldCxBdWRpb1dvcmtsZXQp
LAogXSBpbnRlcmZhY2UgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUgOiBXb3JrbGV0R2xvYmFsU2Nv
cGUgewotICAgIC8vIEltcGxlbWVudCBBUEkuCisgICAgdW5kZWZpbmVkIHJlZ2lzdGVyUHJvY2Vz
c29yKERPTVN0cmluZyBuYW1lLCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3RvciBwcm9j
ZXNzb3JDdG9yKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRGcmFtZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGN1cnJlbnRUaW1lOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBzYW1wbGVSYXRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNDc2YjIxZTZlNjhmYWNiNjhhY2VkOGUxY2YyMzdiZjBkMWJmMjgy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xl
dFByb2Nlc3NvcigpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTY0NzY4M2RkZDM0
NDM1Y2JlMzJiNWU3ZDYyOGU1NGVlZDRmODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lc3NhZ2VQb3J0OworCitj
bGFzcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmts
ZXRQcm9jZXNzb3I+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFByb2Nl
c3Nvcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
V29ya2xldFByb2Nlc3Nvcik7CisgICAgfQorCisgICAgTWVzc2FnZVBvcnQqIHBvcnQoKSB7IHJl
dHVybiBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNTEzZjcyNjNlMGIyMjY1M2E3MzE5
YTg1YTJjODMzMzU1NTVmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEV4cG9zZWQ9QXVkaW9Xb3JrbGV0LAorICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7
CisgICAgY29uc3RydWN0b3IoKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQg
cG9ydDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjljNjhmYmFiMTQzY2NkYzNkODMyMzgxZjBlYmYxZGEwZjhkMDQ5ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tS
ZXN1bHQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvV29ya2xldFByb2Nlc3NvcjsKKworY2xhc3MgQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yQ29uc3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rvcj4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmly
dHVhbCBDYWxsYmFja1Jlc3VsdDxSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gaGFuZGxl
RXZlbnQoSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gb3B0aW9ucykgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBjMTAzNDUyNTcx
OWJmZTk0NjFmZmI2ODU5YzdhNzFjNzFjYWFjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3Iu
aWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK11jYWxsYmFjayBBdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3RvciA9IEF1ZGlvV29ya2xldFByb2Nlc3NvciAob2Jq
ZWN0IG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjN2VjZmRkMTU1YzUyODBkNTg1NGJmYjUy
YmViZWEwMjg0YWRiN2EzLi5mMTAzNzIwM2ZkYzIzZjFkMjNlY2E2MGMwZDg5OTkzYjFjYTNlOTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjA4LDYgKzIwOCw3IEBAIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0LmNwcAogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAKIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFByb2Nlc3Nvci5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFk
LmNwcAogTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAogTW9kdWxlcy93ZWJh
dWRpby9CaXF1YWREU1BLZXJuZWwuY3BwCkBAIC0yNjg3LDYgKzI2ODgsOCBAQCBKU0F1ZGlvV29y
a2xldC5jcHAKIEpTQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiBKU0F1ZGlvV29ya2xldE5v
ZGUuY3BwCiBKU0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmNwcAorSlNBdWRpb1dvcmtsZXRQcm9j
ZXNzb3IuY3BwCitKU0F1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcCAKIEpTQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmNwcAogSlNBdXRoZW50aWNhdGlvbkV4
dGVuc2lvbnNDbGllbnRPdXRwdXRzLmNwcAogSlNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggY2EwMGY5ZTBhMjZiZjIxYThiY2M5ZmY1NTEwMjJmNzQ3OTgxMjBkZC4uMDgw
Y2M4NjU1YTg5MzNiMWY2ZWUyMmM0OTM4ZDU5ZjJlYjBlMWIzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ5NSw2ICsyNDk1
LDcgQEAKIAkJODM3MDU2OEUxRjUwOTE1NzAwRDkzNDI1IC8qIEpTRmlsZUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzcwNTY4QjFGNTA5
MTUwMDBEOTM0MjUgLyogSlNGaWxlQ2FsbGJhY2suaCAqLzsgfTsKIAkJODM3MDU2OTAxRjUwOTE1
QzAwRDkzNDI1IC8qIEpTRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzA1Njg5MUY1MDkxNTAwMEQ5MzQyNSAv
KiBKU0ZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmggKi87IH07CiAJCTgzNzFBQzNCMUY1MDlCRTQw
MEZCRjI4NCAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzcxQUMzOTFGNTA5QkREMDBGQkYyODQgLyogRXJyb3JDYWxsYmFj
ay5oICovOyB9OworCQk4MzcyNkVGQjI1MjY3OUM1MDBDNjExNEUgLyogQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzNzI2RUY4MjUyNjc5QjIwMEM2MTE0RSAvKiBBdWRpb1dvcmtsZXRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlh
Z25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzcyREIzMDFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xv
Z2dpbmdSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODM3NDVEMDIyNEQ4OTlEMzAwRkJEQ0M0IC8qIEdhaW5PcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc0NUNGRjI0RDg5
OUMyMDBGQkRDQzQgLyogR2Fpbk9wdGlvbnMuaCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAw
QzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudElu
aXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjUyOSw2ICsyNTMwLDcgQEAKIAkJODNCOTg3MEIyNTIyNUY3RDAwQTkzOUYxIC8qIEF1ZGlvV29y
a2xldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNC
OTg3MDEyNTIyNUYwQzAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldC5oICovOyB9OwogCQk4M0I5ODcw
QzI1MjI1RjgzMDBBOTM5RjEgLyogQXVkaW9QYXJhbU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTg2RkYyNTIyNUYwQjAwQTkzOUYxIC8qIEF1
ZGlvUGFyYW1NYXAuaCAqLzsgfTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0IC8qIEFsbERl
c2NlbmRhbnRzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5oICovOyB9OworCQk4M0JCOEI1RjI1MjY3NzY0MDBEODlGMEIgLyogQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0JCOEI1RDI1MjY3NzU1MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgg
Ki87IH07CiAJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQy
NDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVC
MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2
MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9Owog
CQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQz
MDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggKi87IH07CkBAIC0xMDY4NCw2ICsxMDY4
Niw4IEBACiAJCTgzNzFBQzM3MUY1MDlCREQwMEZCRjI4NCAvKiBFcnJvckNhbGxiYWNrLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFcnJvckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM3MUFDMzgxRjUwOUJERDAwRkJGMjg0IC8qIEZpbGVDYWxsYmFjay5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM3MUFDMzkxRjUwOUJERDAwRkJGMjg0IC8qIEVycm9yQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJyb3JDYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzcyNkVGODI1MjY3OUIyMDBDNjExNEUgLyog
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9X
b3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODM3MjZFRkEyNTI2NzlCMzAwQzYxMTRFIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0
cnVjdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzJEQjMwMUE2NzgwQTgwMEM2OTdDNSAvKiBE
aWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzNzQ1Q0ZGMjREODk5QzIwMEZCRENDNCAvKiBHYWluT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHYWluT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
Mzc0NUQwMTI0RDg5OUMyMDBGQkRDQzQgLyogR2Fpbk9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdhaW5PcHRp
b25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzUzLDYgKzEwNzU3LDkg
QEAKIAkJODNCOTg3MDcyNTIyNUYwRTAwQTkzOUYxIC8qIEF1ZGlvV29ya2xldE5vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXVkaW9Xb3JrbGV0Tm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0I5ODcwODI1MjI1RjBFMDBBOTM5RjEgLyogQXVkaW9QYXJhbU1hcC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QXVkaW9QYXJhbU1hcC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkI1Qzg3
MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkI4QjVCMjUyNjc3NTUwMEQ4OUYwQiAvKiBBdWRp
b1dvcmtsZXRQcm9jZXNzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCQjhCNUQyNTI2Nzc1
NTAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRp
b1dvcmtsZXRQcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCQjhC
NUUyNTI2Nzc1NjAwRDg5RjBCIC8qIEF1ZGlvV29ya2xldFByb2Nlc3Nvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNC
RDNDRUIyNDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyog
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0yOTg5NSw2ICsy
OTkwMiwxMSBAQAogCQkJCTgzQjk4NzA0MjUyMjVGMEQwMEE5MzlGMSAvKiBBdWRpb1dvcmtsZXRO
b2RlLmlkbCAqLywKIAkJCQk4M0I5ODcwMDI1MjI1RjBCMDBBOTM5RjEgLyogQXVkaW9Xb3JrbGV0
Tm9kZU9wdGlvbnMuaCAqLywKIAkJCQk4M0I5ODcwNTI1MjI1RjBEMDBBOTM5RjEgLyogQXVkaW9X
b3JrbGV0Tm9kZU9wdGlvbnMuaWRsICovLAorCQkJCTgzQkI4QjVCMjUyNjc3NTUwMEQ4OUYwQiAv
KiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwICovLAorCQkJCTgzQkI4QjVEMjUyNjc3NTUwMEQ4
OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNzb3IuaCAqLywKKwkJCQk4M0JCOEI1RTI1MjY3NzU2
MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmlkbCAqLywKKwkJCQk4MzcyNkVGODI1
MjY3OUIyMDBDNjExNEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCAqLywK
KwkJCQk4MzcyNkVGQTI1MjY3OUIzMDBDNjExNEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29u
c3RydWN0b3IuaWRsICovLAogCQkJCTgzRkM5OTRBMjUyNTU3RTgwMDE3NzYxOCAvKiBBdWRpb1dv
cmtsZXRUaHJlYWQuY3BwICovLAogCQkJCTgzRkM5OTQ5MjUyNTU3RTcwMDE3NzYxOCAvKiBBdWRp
b1dvcmtsZXRUaHJlYWQuaCAqLywKIAkJCQk4MzE5OEZCQjI0QTE2MEMxMDA0MjBCMDUgLyogQmFz
ZUF1ZGlvQ29udGV4dC5jcHAgKi8sCkBAIC0zMDUwNSw2ICszMDUxNyw4IEBACiAJCQkJODMzQkQ4
MUUyNTI0RDUzNDAwNkU3MkIzIC8qIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0I5ODcwOTI1MjI1RjcyMDBBOTM5RjEgLyogQXVkaW9Xb3JrbGV0Tm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MEEyNTIyNUY3NjAwQTkzOUYxIC8qIEF1ZGlv
V29ya2xldE5vZGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0JCOEI1RjI1MjY3NzY0
MDBEODlGMEIgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
MzcyNkVGQjI1MjY3OUM1MDBDNjExNEUgLyogQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkM5OTRCMjUyNTU3RUEwMDE3NzYxOCAvKiBBdWRp
b1dvcmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDYxMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0
RjcxM0EwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDU4ZmQxYTdhMjZmZGQxZGFjNGRiMmI3MGIxYzU0NTM3NWJj
ZDRmOWEuLmE0NDZiZDQ3NDFmY2E4OTRjMTUzM2VmNTFlOWM5YmM2NTg0ZWQyNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0zOTg5LDYgKzM5ODksOCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmdGb3JFeHBvc2VkCiAgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2Vk
IGVxICJXb3JrbGV0IikgewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1dvcmtsZXRHbG9iYWxTY29wZSgpIik7CisgICAgfSBlbHNpZiAoJGV4cG9z
ZWQgZXEgIkF1ZGlvV29ya2xldCIpIHsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImlzPEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlPihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGds
b2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIik7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgYXNzZXJ0KCJVbnJlY29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3Nl
ZCBleHRlbmRlZCBhdHRyaWJ1dGUgb24gJyIgLiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAg
fQpAQCAtNDc4Nyw3ICs0Nzg5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBp
ZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1ET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn0pIHsKQEAgLTY1NzQsNyAr
NjU3Niw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50CiAKICAg
ICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAg
ICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAie1xuIik7Ci0gICAgICAgIHB1c2goQCRjb250ZW50
UmVmLCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtc
biIpOworICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8JHtjbGFzc05hbWV9RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChAJGNvbnRl
bnRSZWYsICJ9XG5cbiIpOwogICAgIH0KIApAQCAtNjY3Niw3ICs2Njc4LDcgQEAgc3ViIEdlbmVy
YXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8gcmV0
dXJuVmFsdWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ2FsbGJhY2tS
ZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
JGNvbnRlbnRSZWYsICIgICAgcmV0dXJuIHJldHVyblZhbHVlO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1ZSkg
fTtcbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwg
In1cblxuIik7CkBAIC03Njc0LDcgKzc2NzYsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
Y2xhcmF0aW9uCiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkg
PSBAXzsKIAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsK
LSAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3Ii
OworICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1ET01Db25zdHJ1
Y3RvciI7CiAgICAgbXkgJHRlbXBsYXRlQ2xhc3NOYW1lID0gR2V0Q29uc3RydWN0b3JUZW1wbGF0
ZUNsYXNzTmFtZSgkaW50ZXJmYWNlKTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke3RlbXBs
YXRlQ2xhc3NOYW1lfS5oIik7CkBAIC03Njk4LDcgKzc3MDAsNyBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlZmluaXRpb25zCiAKICAgICAgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9uUHJl
Zml4ID0gImNvbnN0cnVjdCR7Y2xhc3NOYW1lfSI7CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVU
RVMgJHtjbGFzc05hbWV9Q29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpXG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMX0FUVFJJQlVURVMgJHtjbGFzc05hbWV9RE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpXG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwpAQCAtNzcyNSw3ICs3NzI3LDcgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgcmV0dXJuIGlmIEhhc0pTQnVp
bHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpOwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lOwotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRn
ZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uID8gIiR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOworICAgIG15ICRjb25zdHJ1
Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uID8gIiR7Y2xh
c3NOYW1lfUxlZ2FjeUZhY3RvcnlGdW5jdGlvbiIgOiAiJHtjbGFzc05hbWV9RE9NQ29uc3RydWN0
b3IiOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewogICAgICAgICBp
ZiAoSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkpIHsKQEAgLTc4NTUsNyArNzg1Nyw3
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogewogICAgIG15ICgkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsK
IAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uID8gIiR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3RvcnlGdW5jdGlvbiIgOiAiJHtjbGFz
c05hbWV9Q29uc3RydWN0b3IiOworICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5l
cmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uID8gIiR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbiIgOiAiJHtjbGFzc05hbWV9RE9NQ29uc3RydWN0b3IiOwogICAgIG15ICRsZWFzdENv
bnN0cnVjdG9yTGVuZ3RoID0gMDsKICAgICBpZiAoQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9
ID4gMCkgewogICAgICAgICAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDI1NTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
Y3BwCmluZGV4IDlkNjA0ZDlhZjVlOWI1NzFiZGFlZTkwYmU4NmNhOTg2MWYxYTg0ZDguLmQyNjM3
NjBhODVjMzdjOGRlMGZmMzNmMDU2M2U1YTRjNDAxZDEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcApAQCAt
ODksNyArODksNyBAQCBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTRE9NV2luZG93VGVz
dE9iamVjdENvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNET01XaW5k
b3dUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1
Y3Rvcik7CiAKLXVzaW5nIEpTRE9NV2luZG93Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZTxKU0RPTVdpbmRvdz47Cit1c2luZyBKU0RPTVdpbmRvd0RPTUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNET01XaW5kb3c+Owog
CiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTE1NCwxOSArMTU0LDE5IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU0RPTVdpbmRvd1RhYmxlID0geyAxMSwgMzEsIHRydWUsIEpTRE9NV2lu
ZG93OjppbmZvKCksIEpTRE9NV2luZG93VGFibGVWYWx1ZXMsIEpTRE9NV2luZG93VGFibGVJbmRl
eCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRE9NV2luZG93Q29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVj
dG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTRE9NV2luZG93
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU0RPTVdpbmRvd0RPTUNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJET01XaW5kb3ciX3Mp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU0RPTVdpbmRvd0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJET01XaW5kb3ciLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2lu
ZG93Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRv
d0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJET01XaW5kb3ciLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93RE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0yMTAsNyAr
MjEwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dpbmRv
d1Byb3h5KiBwcm94eSkKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0RPTVdpbmRvd0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU0RPTVdpbmRvd0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU0RPTVdpbmRvdyogSURMQXR0cmlidXRlPEpTRE9NV2luZG93Pjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGRlYjUxZjZl
ZjJlMzEyYmY1YjJlM2M3MmJjY2I2ZWFkYmRjZmZjMTQuLjJiZDczYzM5ZmI0ZjRlYzI4ODc4MTAy
OWYzY2Y5MTgwN2U4ZDEzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9yKTsKIAotdXNpbmcgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZT47Cit1c2luZyBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC02NywxOSArNjcsMTkgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJs
ZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlID0geyAxLCAxLCB0cnVlLCBKU0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOjppbmZvKCksIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZhbHVlcywg
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4gSlNW
YWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNXb3JrZXJHbG9i
YWxTY29wZTo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0
ZTw+IHZvaWQgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IHZvaWQgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25z
dHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpCiAKIEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdGVtcGxhdGU8
PiBpbmxpbmUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93LmNwcAppbmRleCA5MjNmYzcyNjc2N2FjMDljNmM0NzQwNjdmNTIw
ODkxY2U4ZGQ4ZGU3Li4wYTQ3ZTk2YjdmYTNmYmNkYjU2MzViODM3M2VjOTYzZWQ0MjJmODEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBv
c2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5jcHAKQEAgLTEyNiwxMyAr
MTI2LDEzIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dQcm90b3R5cGUsIEpTRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3c+OwordXNpbmcgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3I8SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c+OwogCi10ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU0V4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3dET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3dDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVj
dG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAg
ICAgYXV0byBvYmplY3QgPSBFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmNyZWF0ZSgpOwogICAg
IHN0YXRpY19hc3NlcnQoVHlwZU9yRXhjZXB0aW9uT3JVbmRlcmx5aW5nVHlwZTxkZWNsdHlwZShv
YmplY3QpPjo6aXNSZWYpOwpAQCAtMTQzLDIyICsxNDMsMjIgQEAgdGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5k
b3dDb24KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpTQ19BTk5PVEFURV9IT1NUX0ZVTkNU
SU9OKEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5OT1RB
VEVfSE9TVF9GVU5DVElPTihKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9y
Q29uc3RydWN0LCBKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0RPTUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTRXhwb3Nl
ZFRvV29ya2VyQW5kV2luZG93RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90
b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU0V4cG9zZWRUb1dvcmtlckFuZFdp
bmRvd0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Ojpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcikgfTsK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9N
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNFeHBvc2Vk
VG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBKU09iamVjdCogSlNFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3c6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YQogCiBKU1ZhbHVlIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHAKaW5kZXggYTE2NmVhNzJmZTcxZGY5Y2FkYTEyYjMwNTBmNDZmMTJlYTAwOWJjMy4uZWRhY2Qx
MmI3MTQ5NzI2ZjM1YTE1OGVkNzlkYjY0MTJmZDY4ZmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVQYWludFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0
b3IpOwogCi11c2luZyBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlPjsK
K3VzaW5nIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+OwogCiAv
KiBIYXNoIHRhYmxlICovCiAKQEAgLTY3LDE5ICs2NywxOSBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogfTsKIAog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFibGUgPSB7
IDEsIDEsIHRydWUsIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmluZm8oKSwgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlVGFi
bGVJbmRleCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IHJldHVybiBKU1dvcmtsZXRHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxP
YmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJQ
YWludFdvcmtsZXRHbG9iYWxTY29wZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rv
cikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTEyMSw3ICsxMjEs
NyBAQCB2b2lkIEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNQcm94eSogcHJveHkpCiAKIEpTVmFsdWUgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1BhaW50V29ya2xldEdsb2JhbFNj
b3BlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZSogSURMQXR0cmlidXRlPEpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+
OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApp
bmRleCA5YzgyZGZjNzRlMzI0MDA3YWIzNmQ3YWVmZDU3MjlkMTFiOTY2NzhjLi5jYTI3NmE5MzI5
OGEwM2VhOWEyODk0NjQ5ZDRhNDU0M2ZkODFjMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpOwogCi11c2luZyBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+OwordXNpbmcgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
PjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC02NywxOSArNjcsMTkgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9
CiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
VGFibGUgPSB7IDEsIDEsIHRydWUsIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCks
IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlVGFibGVJbmRleCB9OwotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcmV0dXJuIEpTV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9y
KHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTU2VydmljZVdvcmtlckds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb3h5KiBwcm94eSkKIAogSlNWYWx1ZSBKU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB0
ZW1wbGF0ZTw+IGlubGluZSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSogSURMQXR0cmlidXRl
PEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9ucy5jcHAKaW5kZXggZjUxOTIzYzAzZGQxNTlhODY4OWNiZWQxMjhjZDJkOGIwMWRkMjZlNy4u
MGE3ZDQ3ZTAzNmQ0ZTFiOTQ0MDYxOThiNTI2ZjE0NzgzNGRjMmE5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnMuY3BwCkBAIC0xMDQsMjIgKzEwNCwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlLCBK
U1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdENFUmVhY3Rp
b25zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RD
RVJlYWN0aW9ucz47Cit1c2luZyBKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q0VSZWFjdGlvbnM+OwogCi10ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENFUmVhY3Rpb25zRE9NQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBn
bG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RD
RVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENFUmVhY3Rpb25zOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDRVJlYWN0aW9ucyJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVhY3Rp
b25zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9ucyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENFUmVh
Y3Rpb25zRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9ucyIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q0VS
ZWFjdGlvbnNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCiAKQEAgLTE3Myw3ICsxNzMsNyBAQCBKU09iamVjdCogSlNUZXN0Q0VSZWFjdGlvbnM6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFs
dWUgSlNUZXN0Q0VSZWFjdGlvbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0Q0VSZWFjdGlvbnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RDRVJlYWN0aW9u
czo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRleCBjMDM2YWNlMjc2YTkzNTdiZTNkZjdjZGZkNTQyMTk4
N2M2OGQxMzMxLi45MDIyNDQ5ODE4YzcwNDQ0MWQ1NDYxNTU3OTQ1NTI4M2ZiMzYwNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC05MSwyMiAr
OTEsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlLCBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj47Cit1c2luZyBKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLwogCkBAIC0xNTUsNyArMTU1LDcgQEAgSlNPYmplY3QqIEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG8KIAogSlNW
YWx1ZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckRPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggODgyMzNjYWY2
YjY0ZmE2MzhhM2EwYmYyZWE4ZGExNjQ2MTI5ZjFhNS4uNmU0Y2RhODQzMWI2ZDEzMmU4ODc1N2M3
OTQ3MzFjYTVmNzM0YzVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZSwgSlNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZTo6QmFz
ZSk7CiAKLXVzaW5nIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENhbGxUcmFjZXI+OwordXNpbmcgSlNUZXN0Q2FsbFRy
YWNlckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0Q2FsbFRyYWNlcj47CiAKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKQEAg
LTEyMCwxMyArMTIwLDEzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDYWxs
VHJhY2VyQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIAogc3RhdGljX2Fzc2VydChUZXN0Q2Fs
bFRyYWNlcjo6dGVzdENvbnN0VmFsdWUgPT0gZmFsc2UsICJ0ZXN0Q29uc3RWYWx1ZSBpbiBUZXN0
Q2FsbFRyYWNlciBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogCi10ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxs
VHJhY2VyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsVHJhY2Vy
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0Q2FsbFRyYWNlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0Q2FsbFRyYWNlciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtMTM0LDcgKzEzNCw3
IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCBKU1Rlc3RDYWxsVHJhY2VyOjppbmZvKCksIEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvclRh
YmxlVmFsdWVzLCAqdGhpcyk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dENhbGxUcmFjZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxUcmFjZXIiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENh
bGxUcmFjZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dENhbGxUcmFjZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENhbGxUcmFjZXIiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dENhbGxUcmFjZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVjdCogSlNUZXN0Q2FsbFRyYWNlcjo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNW
YWx1ZSBKU1Rlc3RDYWxsVHJhY2VyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdENhbGxUcmFjZXI6
OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bi5jcHAKaW5kZXggNzk3NDgzNGU5MDZkNWZiYjQ3YTNjMTIxYmNjMmE4ODNjZmIwNDA1NS4uMGE1
NmFlYmQxYjNmNmJmYzUzYzhmMzA2ZGEyMWE1NTMwYzk4ZGJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtNzcsNyArNzcsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBl
bmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbgogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8gcmV0dXJuVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwganNSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ2Fs
bGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pOwotICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwogfQogCiBKU0M6OkpTVmFs
dWUgdG9KUyhUZXN0Q2FsbGJhY2tGdW5jdGlvbiYgaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0
aHJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCmluZGV4IDE3Y2JlMmU3ZjM5N2Q0YjM3YTEyYmQ0
OTMwZDY1OTQ0ZGJiZGEwZTYuLjRkMjc4ODU2ZmNjMjNkNzZmMzk5N2ViOTQyOWY5ZjNhNjVjZTgw
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcApA
QCAtODEsNyArODEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6Oklt
cGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbgogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwganNSZXN1bHQpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNl
cHRpb25UaHJvd24pOwotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICByZXR1cm4geyBXVEZN
b3ZlKHJldHVyblZhbHVlKSB9OwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tG
dW5jdGlvblJldGhyb3cmIGltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNw
cAppbmRleCA0ZTg4MzZhNmNlNGUyYzRlNjIyN2E3Yzk3MzUyZDIzOTY0OGY0NjkxLi41MjZkYTU5
OTUzZjRkNDE3ZTlhOWFlNjMzMTRjNWY1NTRhYTNmNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0ludGVyZmFjZS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZTo6fkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKCkKICNlbmRpZgogfQogCi11c2luZyBKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+OwordXNpbmcgSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPjsKIAogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0
b3IgKi8KIApAQCAtMTUxLDEzICsxNTEsMTMgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIHN0YXRp
Y19hc3NlcnQoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpDT05TVEFOVDEgPT0gMSwgIkNPTlNUQU5U
MSBpbiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJREwi
KTsKIHN0YXRpY19hc3NlcnQoVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpDT05TVEFOVDIgPT0gMiwg
IkNPTlNUQU5UMiBpbiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgZG9lcyBub3QgbWF0Y2ggdmFsdWUg
ZnJvbSBJREwiKTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90
eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VET01D
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CkBAIC0xNjUsMTEg
KzE2NSwxMSBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLAogICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgbnVsbHB0ciwgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAqdGhpcyk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDYWxsYmFja0ludGVy
ZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RDYWxsYmFja0ludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2VET01Db25z
dHJ1Y3RvcikgfTsKIAogSlNWYWx1ZSBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURP
TUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOwogfQogCiBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6Oklt
cGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aE5v
UGFyYW0oKQpAQCAtMzYxLDcgKzM2MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERP
TVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXR1
cm5WYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBqc1Jl
c3VsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDYWxsYmFja1Jlc3Vs
dFR5cGU6OkV4Y2VwdGlvblRocm93bik7Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJl
dHVybiB7IFdURk1vdmUocmV0dXJuVmFsdWUpIH07CiB9CiAKIENhbGxiYWNrUmVzdWx0PHR5cGVu
YW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZTo6Y2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zKHR5cGVuYW1lIElETEVudW1lcmF0
aW9uPFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT46OlBhcmFtZXRlclR5cGUgZW51bVBhcmFt
KQpAQCAtMzkyLDcgKzM5Miw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmlu
Zzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXR1cm5WYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBqc1Jlc3VsdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDYWxsYmFja1Jlc3VsdFR5cGU6
OkV4Y2VwdGlvblRocm93bik7Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiB7
IFdURk1vdmUocmV0dXJuVmFsdWUpIH07CiB9CiAKIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6
Y2FsbGJhY2tUaGF0U2tpcHNJbnZva2VDaGVjayh0eXBlbmFtZSBJRExEaWN0aW9uYXJ5PFRlc3RD
YWxsYmFja0ludGVyZmFjZTo6RGljdGlvbmFyeT46OlBhcmFtZXRlclR5cGUgZGljdGlvbmFyeVBh
cmFtKQpAQCAtNDE5LDcgKzQxOSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0
cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjCiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXR1cm5W
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBqc1Jlc3Vs
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBDYWxsYmFja1Jlc3VsdFR5
cGU6OkV4Y2VwdGlvblRocm93bik7Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVy
biB7IFdURk1vdmUocmV0dXJuVmFsdWUpIH07CiB9CiAKIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZTo6Y2FsbGJhY2tXaXRoVGhpc09iamVjdCh0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE5vZGU+
OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0T2Jq
Pjo6UGFyYW1ldGVyVHlwZSB0ZXN0T2JqUGFyYW0pCkBAIC00NDksNyArNDQ5LDcgQEAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVz
dENhbGxiYWNrSW50ZXJmYWMKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsKLSAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1ZSkgfTsKIH0K
IAogSlNDOjpKU1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrSW50ZXJmYWNlJiBpbXBsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5k
ZXggNjRlODAyNjI0YmU1ZjgzOWY0NjIxZTRmOTUzMjE5YjgxZTcyZGRjNy4uMzY5Y2Y2MDM3NDY3
ZTkyZmFiNDhkMGUzYTAwNzQ4N2NlYWNiZWJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC04MCwyNyArODAsMjcgQEAg
cHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSwgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yID0gSlNET01CdWlsdGluQ29uc3RydWN0
b3I8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I+OwordXNpbmcgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3RvciA9IEpTRE9NQnVpbHRpbkNv
bnN0cnVjdG9yPEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPjsKIAotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi10ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZt
KQordGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkK
IHsKICAgICByZXR1cm4gdGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9ySW5pdGlhbGl6
ZVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pOwogfQog
Ci10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07
Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0
b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDYsNyArMTQ2
LDcgQEAgSlNPYmplY3QqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpwcm90
b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bSwgKmpzQ2Fz
dDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENvbmRpdGlvbmFsSW5j
bHVkZXMuY3BwCmluZGV4IGVkMDczNmE0MmQwYTVmODNiNjFjODBmYTMzNjllZGFhYjZmMDhhMjQu
LmM3Y2QzMmY1Mjg2ZGNiNWE5YThkOTY3ZmZmNjgzYTFkMGQ2Yjc1N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbElu
Y2x1ZGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlcy5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRl
OgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENvbmRpdGlv
bmFsSW5jbHVkZXNQcm90b3R5cGUsIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNQcm90b3R5cGU6
OkJhc2UpOwogCi11c2luZyBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
PjsKK3VzaW5nIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM+Owog
CiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCkBAIC0xNzMsMTMgKzE3MywxMyBA
QCBzdGF0aWNfYXNzZXJ0KFRlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpDT05TVF9JTVBMID09IDIs
ICJDT05TVF9JTVBMIGluIFRlc3RDb25kaQogc3RhdGljX2Fzc2VydChUZXN0Q29uZGl0aW9uYWxJ
bmNsdWRlczo6UEFSVElBTF9NSVhJTl9DT05TVEFOVF9GUk9NX1BBUlRJQUwgPT0gNSwgIlBBUlRJ
QUxfTUlYSU5fQ09OU1RBTlRfRlJPTV9QQVJUSUFMIGluIFRlc3RDb25kaXRpb25hbEluY2x1ZGVz
IGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAjZW5kaWYKIAotdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0RPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENv
bmRpdGlvbmFsSW5jbHVkZXMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdgogI2VuZGlmCiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNDb25zdHJ1Y3Rv
cikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVk
ZXNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBm
b3IgcHJvdG90eXBlICovCiAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBKU09iamVjdCogSlNUZXN0Q29u
ZGl0aW9uYWxJbmNsdWRlczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbAogCiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXM6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlc0NvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxJbmNsdWRlczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlLmNwcAppbmRleCBkYTE3YmIwZGFhMDYyYzc3NGZiMjFjNGJlOGRiN2Y3Zjk5MmUxNWIwLi4w
YTYxMGI5MzVlN2M5MGMzZWRmZDFlNTBjNjQ2ZDkwNGZkODQ3OWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlUHJvdG90eXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q29uZGl0
aW9uYWxseVJlYWRXcml0ZT47Cit1c2luZyBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlPjsKIAogLyogSGFzaCB0YWJsZSAqLwogCkBAIC0xMzgsMjAgKzEz
OCwyMCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q29uZGl0aW9uYWxseVJl
YWRXcml0ZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlVGFibGUgPSB7IDIsIDcsIHRydWUsIEpTVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGU6OmluZm8oKSwgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZVRh
YmxlVmFsdWVzLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlVGFibGVJbmRleCB9OwotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwog
fQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZURP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUiX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDb25k
aXRpb25hbGx5UmVhZFdyaXRlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3Ip
IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdy
aXRlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0yNjAsNyArMjYwLDcgQEAgSlNPYmplY3QqIEpT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG8KIAogSlNWYWx1ZSBKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4
IGY3NzUzMGJkZmViYzRlNDY1NjA4NWE3MmQzMDY4MzE5MTVmNGVkYTQuLjllODM5ZGI0ZTM1Njdl
YTJiODI5ZTE3MmNmMzZjNjZhNDE4MWZkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC01MDIsMjEg
KzUwMiwyMSBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdERPTUpJVFByb3RvdHlwZSwgSlNUZXN0RE9NSklUUHJvdG90eXBlOjpCYXNlKTsK
IAotdXNpbmcgSlNUZXN0RE9NSklUQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RET01KSVQ+OwordXNpbmcgSlNUZXN0RE9NSklURE9NQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RET01KSVQ+OwogCi10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RE9NSklUQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RET01KSVRET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU05vZGU6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xv
YmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERPTUpJVENvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RE9NSklURE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
RE9NSklUOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RET01KSVQiX3MpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERPTUpJVCIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RE9N
SklUQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01K
SVRET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERPTUpJVCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RE9NSklURE9NQ29u
c3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC02MDIs
NyArNjAyLDcgQEAgSlNPYmplY3QqIEpTVGVzdERPTUpJVDo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RET01KSVQ6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9NSklUQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERPTUpJVERPTUNvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQog
CiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIElETEF0dHJpYnV0ZTxKU1Rlc3RET01K
SVQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAKaW5kZXggZGY2Y2Rk
MWMwMDVmZjkwZGY5YzM1YzA0Yjk0NjA5MjIzYTEzOTRlMS4uNWQ2NWIyOWE2ZTdlMGVhY2RkZTBm
MmEyZWIzYzgyNGViY2ExN2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OLmNwcApAQCAt
MTQyLDIyICsxNDIsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OUHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9K
U09OUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNP
Tj47Cit1c2luZyBKU1Rlc3REZWZhdWx0VG9KU09ORE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09OPjsKIAotdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05ET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0RGVmYXVsdFRvSlNPTkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT046OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1bHRUb0pTT04iX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RE
ZWZhdWx0VG9KU09OQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09OIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3REZWZhdWx0VG9KU09OQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1Rlc3REZWZhdWx0VG9KU09ORE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZh
dWx0VG9KU09OIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0yNDIsNyArMjQyLDcgQEAgSlNPYmplY3QqIEpT
VGVzdERlZmF1bHRUb0pTT046OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QKIAogSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT046OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQuY3BwCmluZGV4IDY1NjA0MmMwZmM4MmUwZDI2ZGRkMWU4NTZjMTc1MTEyZWQ1YmE2MzMuLjUz
NzcyY2UzZWNlOTNhODc4ODEyNzRmMjI5ZTEyYjBmMzk1NTVjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCkBAIC05MSwy
MiArOTEsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5n
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkPjsKK3VzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZERPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRE9NQ29uc3RydWN0b3Ip
IH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzMsNyArMTczLDcg
QEAgSlNPYmplY3QqIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmoKIAogSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZERPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6
ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCmluZGV4IDhjMjIxMjUzZDI2MzRh
MThkNzcyMzEzZWRjYzUyMWMzODk3N2IxNTQuLjNmZmE3NTBiOTc4M2JmMzk5ZjFlOGFhMjIzZTFk
YzZkZmMyNWUwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pT
T05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcApAQCAtNzgsMjEgKzc4LDIxIEBAIHByaXZhdGU6CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2VQcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlPjsKK3VzaW5n
IEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZT47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09O
SW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25z
dHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwogfQogCi10ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJp
dGFuY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAot
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5o
ZXJpdGFuY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05JbmRpcmVj
dEluaGVyaXRhbmNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVj
dG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0
YW5jZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
IApAQCAtMTM4LDcgKzEzOCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPCiAKIEpTVmFsdWUg
SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2U6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VD
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5jcHAKaW5kZXggZjcxMTg0NGRjMzJjNGIxNjg3NWE4NThhY2Y2MTZlZjZlMTY5Y2Y0NS4u
YmMwMzA5OGI1MDQ3NGQ3OGQ4MDhiMjRiZjc2YWQ1NmEwN2Q2ZjhkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCkBAIC0xMDcsMjEgKzEwNywyMSBAQCBwcml2
YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0UHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdFByb3Rv
dHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdD47Cit1c2luZyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXQ+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICByZXR1cm4gSlNUZXN0RGVmYXVsdFRvSlNPTjo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxP
YmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Il9zKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yKSB9Owor
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01D
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZh
dWx0VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBw
cm90b3R5cGUgKi8KIApAQCAtMTY5LDcgKzE2OSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdDo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
CiAKIEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRET01D
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXQqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdD46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNwcAppbmRl
eCA5NmE0ZTc4NmZhZDdkMTQ2N2U1YTc5MTliNTdhNjgyZGFlMWU3OWNiLi44MmNmNjk2ODA0OWE0
YmM5ZjIwNWMwN2FjZWE1OTM1ZmE1M2M5MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCkBAIC0xMDksMjEgKzEwOSwyMSBAQCBwcml2YXRl
OgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWxQcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWxQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZp
bmFsQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RE
ZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsPjsKK3VzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWxET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbERP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAK
LXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbCJfcyks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
RmluYWxDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWxET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxET01D
b25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE3
Miw3ICsxNzIsNyBAQCBKU09iamVjdCogSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmCiAKIEpTVmFsdWUgSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bCogSURMQXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAppbmRleCA5Y2M1MGNlZWQyODljNTEy
NDY1MTQ2OWEyZWY0ZjExZDRhMzg1ODc0Li45ZDNkY2UxODNkMjlhNDIxZTBkOWIyYzU0YWJhMTFi
YTUzNmM4MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKQEAgLTk0LDcgKzk0
LDcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3REb21haW5TZWN1cml0eVByb3RvdHlwZSwgSlNUZXN0RG9tYWluU2VjdXJpdHlQcm90b3R5
cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RG9tYWluU2VjdXJpdHk+OwordXNp
bmcgSlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERvbWFpblNlY3VyaXR5PjsKIAogLyogSGFzaCB0YWJsZSAq
LwogCkBAIC0xMTAsMjAgKzExMCwyMCBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0RG9tYWluU2VjdXJpdHlUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0RG9tYWluU2VjdXJpdHlUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwgSlNUZXN0RG9t
YWluU2VjdXJpdHk6OmluZm8oKSwgSlNUZXN0RG9tYWluU2VjdXJpdHlUYWJsZVZhbHVlcywgSlNU
ZXN0RG9tYWluU2VjdXJpdHlUYWJsZUluZGV4IH07Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdERvbWFpblNlY3VyaXR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVu
Y3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERvbWFpblNlY3Vy
aXR5Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REb21haW5TZWN1cml0
eURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3REb21haW5TZWN1cml0eSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERvbWFpblNlY3Vy
aXR5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REb21haW5TZWN1cml0eSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RG9tYWlu
U2VjdXJpdHlDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERvbWFpblNlY3VyaXR5RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REb21haW5TZWN1
cml0eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0RG9tYWluU2VjdXJpdHlET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBKU09iamVjdCogSlNUZXN0
RG9tYWluU2VjdXJpdHk6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplYwogCiBKU1ZhbHVlIEpTVGVzdERvbWFpblNlY3VyaXR5OjpnZXRDb25zdHJ1Y3RvcihW
TSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERvbWFpblNlY3VyaXR5RE9NQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKIHZvaWQgSlNUZXN0RG9tYWluU2VjdXJpdHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKaW5kZXggODZjMmNmN2UxMjYzOTI5
NjRlM2YwMDk1ZGQ5MjMyZjNlNjc4ZGZmNS4uOTI5M2NmMjE3NGM4ZjRhMGZjYzg1MDkzODk5M2Y2
NDQyYTJhZTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSwgSlNUZXN0RW5hYmxlZEJ5U2V0
dGluZ1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEVuYWJsZWRC
eVNldHRpbmc+OwordXNpbmcgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz47
CiAKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKQEAgLTExNSwxMyArMTE1LDEz
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29u
c3RydWN0b3JUYWJsZVZhbHVlc1tdID0KIAogc3RhdGljX2Fzc2VydChUZXN0RW5hYmxlZEJ5U2V0
dGluZzo6ZW5hYmxlZEJ5U2V0dGluZ0NvbnN0YW50ID09IDAsICJlbmFibGVkQnlTZXR0aW5nQ29u
c3RhbnQgaW4gVGVzdEVuYWJsZWRCeVNldHRpbmcgZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJ
REwiKTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwog
fQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdEVuYWJsZWRCeVNldHRpbmciX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKQEAgLTEzNSw3ICsxMzUsNyBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sCiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RFbmFibGVkQnlTZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpIH07Cit0
ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwog
CkBAIC0yNDQsNyArMjQ0LDcgQEAgSlNPYmplY3QqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmoKIAogSlNWYWx1ZSBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0RPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmc6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEZv
ckNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcAppbmRleCAzY2I0MTUyNzg1ODE3YjI3NmZiMTk4NGY0
MTQ1M2NkOGVjMmNhODdlLi5iZjNjMjc3OWFkYTlkNDQxNjNmNmZiN2VlNmI0ZTVjODA5MjZjNmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEZvckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29udGV4dC5jcHAKQEAgLTg1LDIyICs4NSwy
MiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdEVuYWJsZWRGb3JDb250ZXh0UHJvdG90eXBlLCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dFBy
b3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dD47Cit1c2luZyBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ+Owog
Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVuYWJsZWRGb3JDb250
ZXh0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0o
dm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAot
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dERPTUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdEVuYWJsZWRGb3JDb250ZXh0Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3RFbmFibGVkRm9yQ29udGV4dCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAK
LXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkRm9yQ29udGV4dCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RW5hYmxlZEZvckNv
bnRleHRDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVu
YWJsZWRGb3JDb250ZXh0RE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkRm9y
Q29udGV4dCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0RW5hYmxlZEZvckNvbnRleHRET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBKU09iamVjdCog
SlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYgogCiBKU1ZhbHVlIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0OjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0
RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggYTFjZGRjYTFjMmMyMjE1Y2U5YTU5YWI2MGVmOTY0M2ExNDFmZjEyZC4uOGY2YmY1MWY3MDJh
NGFkZTViMDVkYzhlZmIzNWM3MGQxNzY3ZDRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBl
LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yPjsKK3VzaW5nIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rv
ciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj47CiAKLXRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+
anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKQEAgLTE4OCwyMSArMTg4LDIxIEBAIHRl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9Ci1KU0NfQU5O
T1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JDb25z
dHJ1Y3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKK0pT
Q19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1
Y3RvckNvbnN0cnVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpjb25z
dHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJu
IEpTRXZlbnQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFdmVudENv
bnN0cnVjdG9yIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90
b3R5cGUgKi8KIApAQCAtMjU1LDcgKzI1NSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqCiAK
IEpTVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBj
b25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogSURMQXR0cmlidXRlPEpT
VGVzdEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cAppbmRleCA0MTNmYmYyY2Y2NDg4MmFlM2QwNjU3NTlkZTRjNGJkYjI3MzdjZjVhLi5kNjE4MjJj
Y2Q5OGI2NWM5ZWZjMzNhYzU4MmZiMzk1MTA1ZjFlOTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKQEAgLTg5LDIxICs4OSwyMSBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlLCBKU1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFdmVudFRhcmdl
dD47Cit1c2luZyBKU1Rlc3RFdmVudFRhcmdldERPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RXZlbnRUYXJnZXQ+OwogCi10ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0s
ICZnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0RE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdEV2ZW50VGFyZ2V0Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAot
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiVGVzdEV2ZW50VGFyZ2V0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKSB9
OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50VGFyZ2V0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudFRhcmdldERPTUNvbnN0
cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTUwLDcg
KzE1MCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RFdmVudFRhcmdldDo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNWYWx1ZSBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudFRhcmdl
dERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKaW5kZXggOTA5NzY3ODMzNGVkOTk3YmIzYTc5N2Y4MzA2MjJjZTU1ZDU4
ZWVkYy4uYWU1YTA0MDZhMjZhZjc3ZTQxNGRhODZiMGM0OTRmMGQ4MTkwZDA4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTgyLDIyICs4MiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSwgSlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0RXhjZXB0aW9uQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFeGNlcHRp
b24+OwordXNpbmcgSlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RFeGNlcHRpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5j
dGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXhjZXB0aW9uQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVz
dEV4Y2VwdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0RXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0RXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RFeGNlcHRpb25ET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBKU09iamVjdCog
SlNUZXN0RXhjZXB0aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNU
ZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCmluZGV4IDIxYTc4ZDIxMjgzZWMwNGJmNjFjODEyOGJi
YzBjZjc1YzBjZjBlY2EuLjYzY2FkMGU3MGU3NjNkZDM5MjM3MTQwYmIwNTUxNDYxMTNlOGFmZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTgyLDIyICs4
MiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlPjsKK3VzaW5nIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGU+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9u
UHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcikgfTsKK3Rl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVET01Db25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBKU09iamVjdCogSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbAogCiBK
U1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggZWU4ZDg0YmY3NTg3Yzhj
N2EyNmNkYjRlM2U3ZjdmMWZiMjNjNDg4Yy4uMGQ2OTc5NGRjYzlkNDBjNGUxNmUyYTE2ZTExMzhk
YTUxMDI4YmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTI5MCw3ICsyOTAs
NyBAQCBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZQogSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RUeXBlZGVmc0NvbnN0cnVjdG9y
KTsKIAotdXNpbmcgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OwordXNpbmcgSlNUZXN0R2xv
YmFsT2JqZWN0RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTY2MiwxMyAr
NjYyLDEzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RD
b25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogI2VuZGlmCiB9OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHbG9iYWxPYmpl
Y3RET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdEdsb2JhbE9iamVjdCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtNjc2LDcgKzY3Niw3IEBAIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPCiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rl
c3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JUYWJs
ZVZhbHVlcywgKnRoaXMpOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RH
bG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEdsb2JhbE9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUg
Zm9yIHByb3RvdHlwZSAqLwogCkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBKU1Rlc3RHbG9iYWxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmpl
Y3Q6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEdsb2JhbE9iamVj
dERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdDo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAppbmRleCAzZGY3OTczZTA2NTI2MjExOGEyNzJmNzc5OGFkNWUzNjBmYTNmYjVk
Li5jZTkyZDAzMTk5M2VlYWFkODQzZmRjYjM1YWQ3MWIzYjY5NjA1YTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC04MSwyMiArODEs
MjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj47Cit1c2luZyBKU1Rlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPjsKIAotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwog
CkBAIC0xNDIsNyArMTQyLDcgQEAgSlNPYmplY3QqIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JgogCiBKU1ZhbHVlIEpT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29u
c3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9N
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNmRmYTcxNTA1NzlkOTVhYjczOTY1
ZDc2NTQ4Y2Y1N2JlMjA3MWFlZC4uZjI4ZWM1YzY5NTMwYmU5Y2YyZGIzNmEwZmYzMDRkOTJmMDkw
NGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKQEAgLTgxLDIyICs4MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvblByb3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJv
dG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+OwordXNpbmcgSlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+OwogCi10ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlv
blByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25ET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iagogCiBKU1Zh
bHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25D
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCA1
ZTc3ZTZlMDkwM2ViZDA3YzA3ODVkYTUyN2U3NTgwMTlmNjE3NGVjLi5hOWE1OWU3NzA1NzJjMTA1
NGIzZjA2ZjEyOGM2Y2NiN2UwMTU3NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtODcsMjIgKzg3LDIyIEBAIHByaXZhdGU6
CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj47Cit1c2luZyBKU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIEpTT2JqZWN0KiBKU1Rl
c3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0CiAKIEpTVmFsdWUgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RJ
bmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDYzOWRiMDEzYjAwNDM0MGZkM2Q4NTVjOTdlZDZiODQz
ZTc1ZjYyY2EuLjBiYzEyYTg5OTE5MjA1M2Q1ZTg1M2Q5MTRhN2RiOWIyYzQ5YWU5MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgcHJpdmF0ZToKIH07CiBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUs
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2U+OwordXNpbmcg
SlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdElu
dGVyZmFjZT47CiAKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKQEAgLTI1OCwx
MSArMjU4LDExIEBAIHN0YXRpY19hc3NlcnQoVGVzdFN1cHBsZW1lbnRhbDo6U1VQUExFTUVOVEFM
Q09OU1RBTlQxID09IDEsICJTVVBQTEVNRU5UQUxDT05TVEFOCiBzdGF0aWNfYXNzZXJ0KFRlc3RT
dXBwbGVtZW50YWw6OkNPTlNUX0lNUEwgPT0gMiwgIkNPTlNUX0lNUEwgaW4gVGVzdFN1cHBsZW1l
bnRhbCBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETCIpOwogI2VuZGlmCiAKLXRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFj
ZURPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2Fz
dGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCkpOwpAQCAtMjg0LDE1ICsyODQsMTUgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmMKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1ZhbHVlKTsKIH0KLUpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KTsKK0pTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9OKEpTVGVzdEludGVyZmFjZURP
TUNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlRE9N
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwog
ICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RJbnRlcmZhY2UiX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbAogICAgIHJlaWZ5U3Rh
dGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCksIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRl
cmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0SW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRl
cmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEludGVyZmFjZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KIApAQCAtNDk4LDcgKzQ5OCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RJbnRl
cmZhY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAKIEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RJbnRlcmZh
Y2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAppbmRleCAzMDEyZmU0NTBiZTU3YjMwNTA3ZWIy
Y2IxYmQ4YWJkYmVkMzYyMDRjLi45YWE2ZDkzMGQ3NDRiY2Q5ZWFhNTA0NTU0MTRiM2EyNjgyY2Zh
ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZS5jcHAKQEAgLTgyLDIyICs4MiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90
eXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZTo6QmFzZSk7CiAK
LXVzaW5nIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZT47Cit1c2luZyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmU+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rv
cikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rvcikg
fTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0NCw3ICsxNDQsNyBA
QCBKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JgogCiBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHZvaWQgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAppbmRleCAyNGIyMzgwYTI5ZjJhM2IxOWJkNThl
ZGM0NjMwN2UzZTExY2Q5MzdjLi4zNGJiZDNhZmM0M2FlNGQ5M2VkMDFhZDJkNzk2Njk2MjU5NzI4
MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SXRlcmFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKQEAgLTkyLDIyICs5MiwyMiBAQCBwcml2YXRlOgog
fTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEl0ZXJhYmxlUHJv
dG90eXBlLCBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdEl0
ZXJhYmxlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rl
c3RJdGVyYWJsZT47Cit1c2luZyBKU1Rlc3RJdGVyYWJsZURPTUNvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0SXRlcmFibGU+OwogCi10ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Qu
ZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEl0ZXJhYmxl
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJdGVyYWJsZURPTUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdEl0ZXJhYmxlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3RJdGVyYWJsZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RJdGVyYWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RJdGVyYWJsZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0SXRlcmFibGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBKU09iamVjdCogSlNUZXN0
SXRlcmFibGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAKIEpTVmFsdWUgSlNUZXN0SXRlcmFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29u
c3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0SXRlcmFibGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RJdGVyYWJs
ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCmluZGV4IGM4ZDI2ZjQ5MDQxYmM1ZGY5OGRjZTAwYzE2NDA4Mzg0Njg3
MzJmZTEuLjYzZjQ1Yzc2Y2NhODRhMDE4ZDg0YzMyOTk5MzY1ZTY4NjA1MTg1MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtODUsMjcgKzg1LDI3IEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3RvciA9IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yPjsKK3VzaW5nIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUJ1aWx0aW5Db25zdHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj47CiAKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSkK
K3RlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplRXhlY3V0YWJsZShWTSYgdm0pCiB7CiAgICAgcmV0
dXJuIHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckluaXRpYWxpemVUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JDb2RlR2VuZXJhdG9yKHZtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9
OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JE
T01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KIApAQCAtMTUyLDcgKzE1Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhCiAKIEpTVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
KyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JE
T01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJv
eShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5jcHAKaW5kZXggNTI5MWU0MjJmYjMzMWM4YTQ1ZDAzODA1NzAwNTUwOTEzMzI2MmY3YS4u
MDI4YjQwZDYyMWM0MGIwYWQ2ZTIwNTMzNmQzMjUwYTAwODM4OWU3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAKQEAgLTgzLDIzICs4MywyMyBAQCBwcml2
YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJv
dG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24+OwordXNpbmcgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24+OwogdXNpbmcgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFj
dG9yeUZ1bmN0aW9uID0gSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVu
Y3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
Q29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0b3IpIH07CiAK
IHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Y29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKQEAgLTE5Myw3ICsxOTMsNyBAQCBKU09iamVjdCogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYgogCiBKU1ZhbHVl
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25z
dCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIEpTVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRMZWdhY3lGYWN0
b3J5RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCmluZGV4IDdmM2U5ODJjM2Zi
ODIzYTQxNTBiNGI3NDhjODk0NWZhMjk1ZmYwZDMuLmFkNDU1MTQ2NDNiNDE4NWNhMjM2MTI2MTFm
YmY5ZmM4YTZjNzEzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAKQEAgLTg5LDIyICs4OSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRf
SVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5
cGUsIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2UpOwogCi11c2lu
ZyBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKK3VzaW5n
IEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OwogCi10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7
CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucyJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25zdHJ1Y3Rv
cikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBKU09iamVjdCog
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsbwogCiBKU1ZhbHVlIEpTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWls
dEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJp
ZGVCdWlsdEluczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcApp
bmRleCA5ODY3NjMzNzBiNGMzMTExNjljNTY0OTQ3NDlhZTk1NWIwNmM0MWU5Li4yMDYzMTVjMjg3
ZWU4YzQyNWUyZjNmM2ZiNWFjMzRhMzM0ZDZiMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2UuY3BwCkBAIC05
OCwyMiArOTgsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RNYXBMaWtlUHJvdG90eXBlLCBKU1Rlc3RNYXBMaWtlUHJvdG90eXBlOjpC
YXNlKTsKIAotdXNpbmcgSlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TWFwTGlrZT47Cit1c2luZyBKU1Rlc3RNYXBMaWtlRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RNYXBM
aWtlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE1hcExpa2VDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE1hcExpa2VET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0
dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0TWFwTGlrZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TWFwTGlrZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE1hcExpa2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdE1hcExpa2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
fQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RNYXBMaWtlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3IpIH07Cit0ZW1w
bGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RNYXBMaWtlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RNYXBMaWtlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNPYmplY3Qq
IEpTVGVzdE1hcExpa2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0TWFwTGlrZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RNYXBMaWtlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdE1hcExpa2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RNYXBM
aWtlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCmluZGV4IDI1MTFmZWNiNDY1
NTFmZWEyNzhkZTE3M2Y2YTQ3YzcwNGMxOGE2YTEuLmMwZGZiYWY5ZWJiOTMxMWRkNDQ3NWEyNzZl
NjQ3YWU5NjllNDZiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKQEAgLTEwMCwyMiArMTAwLDIyIEBAIHByaXZhdGU6
CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TWFwTGlrZVdp
dGhPdmVycmlkZGVuT3BlcmF0aW9uc1Byb3RvdHlwZSwgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlk
ZGVuT3BlcmF0aW9uc1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE1hcExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OwordXNpbmcg
SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVu
T3BlcmF0aW9ucz47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJy
aWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVy
biBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01D
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRp
b25zIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25z
dCBDbGFzc0luZm8gSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RP
TUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9ucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9yKSB9
OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTcyLDcgKzE3Miw3IEBA
IEpTT2JqZWN0KiBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iCiAKIEpTVmFsdWUgSlNUZXN0TWFwTGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01D
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25z
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBkOWUzY2RmMmNk
ZGJkNTcwNzI2YzBlZWQ4MjExNWZkMTRlNjk4MWYyLi5jMzhjMWZmY2YzY2IxYmVmNDQ2OWRiMjg4
YWI2MzZmNGY3MmVkZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApAQCAtODIsMjIgKzgyLDIyIEBAIHByaXZh
dGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cj47Cit1c2luZyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9
CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQzLDcgKzE0Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAogdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA2NTE4MzE1YmFk
NjYyYTIyNjk2OTlmODY0NzFjMGU1M2I2YmNlNmRiLi4yNDYwOGUxOTkzOWZkMWZmNGQ5MzExNmNi
ZjYxZDBkMTU4MDQwMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTgyLDIyICs4Miwy
MiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlLCBKU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblByb3RvdHlwZTo6QmFzZSk7
CiAKLXVzaW5nIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj47Cit1c2luZyBKU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiJfcyksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKK3RlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb25ET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBl
ICovCiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NRwogCiBKU1Zh
bHVlIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKIHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBmNDM0ZTQ3ODRj
NWRhMzU1NGE2NGJlYjkwMDZiYzAwMjA4MzRhZWY5Li42ODFiMTRjMzRjMzJhYzM4OGUwMzFjZjg4
OTgzZWU2ZTRjODcxMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTg5LDIyICs4OSwyMiBAQCBw
cml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllcj47Cit1c2luZyBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVu
Y3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYgogCiBKU1ZhbHVl
IEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
Y3BwCmluZGV4IGFkNGYxYTA4OTQ3NDYzZTM3YTQxNTc1OTM0NTRlZTM1YjlmMzczNWUuLjNiZTRm
NjljYWRkYjE4OWFjZjExMjIyYmM3NmIwZGQzMDkxMTU1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC04MSwyMiArODEsMjIgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Ip
IH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8q
IEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDIsNyArMTQyLDcgQEAgSlNPYmpl
Y3QqIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGcKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZp
ZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCmlu
ZGV4IGUzYWY0MTk2ZDgwMGJjZTZlNjBiYTM5MjFlOWE2ZTRmZDI4NTFkNWUuLjIwOTY2MzAzYjM4
NDRmMGE2M2Q0MTU5OTUzYzZlODVlNjRhMmU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtODEsMjIgKzgxLDIyIEBA
IHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Qcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uPjsKK3VzaW5n
IEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3Bl
cnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIl9zKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90
b3R5cGUgKi8KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplCiAK
IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb246OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IGJl
ZGExYjY5ODg5N2VkMDEyOThmZWMxNTRlNDU5MmYyZDNjNTJjNTQuLmFlNmEyNmYxYzg1YWZlYWEz
ZWZiZTQ0ZjAwZDk5Y2Y2NjNjYzBhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtODYsMjIgKzg2LDIyIEBAIHByaXZhdGU6CiB9
OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllcj47CiAKLXRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVy
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIl9z
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRp
ZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
IApAQCAtMTQ4LDcgKzE0OCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmCiAKIEpTVmFsdWUg
SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXJET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
cjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDJjODNkZTQzOTFlODU4OTlj
NmQxMjIzMTJhYzdiYzY3NjQxY2VlZmQuLjhmZTEyYTFiMmRmMWEwYWFlN2FiODY2ZDJkYzYxODU0
YWFkMGVmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcApAQCAtODIsMjIgKzgyLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyUHJv
dG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0
ZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcj47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
IH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9y
KSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWREZWxldGVyV2l0aElu
ZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkRGVsZXRlcldp
dGhJbmRleGVkR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNvbnN0
cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQzLDcg
KzE0Myw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlcjo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRE
ZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJE
T01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
cjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoLmNwcAppbmRleCBjOGYwNzg5NmVkYjE5OTljMDJhOTkxMmZiMDliMTJmNDk0YmJh
MTVkLi41ODc0MzIyZjliNzJiNDllNzM4N2FmNmFiOGQ1YmJjY2EwY2UwMTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguY3BwCkBAIC04MSwyMiArODEsMjIgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1l
ZEdldHRlckNhbGxXaXRoUHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoUHJvdG90
eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRHZXR0ZXJDYWxs
V2l0aD47Cit1c2luZyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
PjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkR2V0
dGVyQ2FsbFdpdGhET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNF
RF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgiX3MpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdl
dHRlckNhbGxXaXRoQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlckNhbGxX
aXRoIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlckNhbGxXaXRoIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRo
RE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBA
IC0xNDIsNyArMTQyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWwKIAogSlNWYWx1ZSBKU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lk
IEpTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGg6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCAyZTA2
YWQ5MTIxZjFkZDFiNTliMmIyNmI4ZDRmNTNlYjllZjBhZGQ3Li4wMTQwYTUzNDA2NDNlZGU4ZWYy
MGQ1N2RmODU2ZDUwNTNkN2E4Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRl
ck5vSWRlbnRpZmllci5jcHAKQEAgLTgxLDIyICs4MSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllclByb3RvdHlwZTo6QmFz
ZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllcj47Cit1c2luZyBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRHZXR0ZXJOb0lk
ZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVu
Y3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJE
T01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6
OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbAogCiBKU1ZhbHVlIEpTVGVz
dE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXI6OmRlc3Ryb3koSlNDOjpK
U0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKaW5kZXggYmE5ZDA2YTA4YTJiYmFhZjc1NjI1MTYxYjdiNDlmZWYzMWVkYzM5Ny4u
NzYyYjRjNzgwZGMyOTNmNDYwZmZhMmU1OWQ4MjcyYmI2ODUxZjFlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtODYsMjIgKzg2LDIy
IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllclByb3RvdHlwZSwgSlNUZXN0TmFtZWRHZXR0ZXJX
aXRoSWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkR2V0dGVy
V2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI+OwordXNpbmcgSlNUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcj47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
IH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApA
QCAtMTQ4LDcgKzE0OCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlm
aWVyOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYKIAogSlNWYWx1ZSBKU1Rl
c3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXI6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyLmNwcAppbmRleCBlYjc4MjgxYzU2NTVhYThlN2Q5YjQ5Njc1ZWJjNTVjOWFkOTcz
MDM2Li45OTU1MzVmYjc2YWE5MzdhZGQzNmMzMDFhYjRmZDFkZWVkN2JkZjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTgxLDIyICs4MSwy
MiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllclByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcj47Cit1c2luZyBKU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllckRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAg
IHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciJfcyksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0
dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3Rl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyRE9N
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU09iamVjdCogSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbAogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVy
Tm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggMmZjODgzOGY2MjY2
NjViZWRjNWIwZjczODE3NjhkZmFkZjA3ZTZiYS4uNDVkMjczZTFkMjk2MzFiMjY3YTczNDlhNzA4
OGI1ZjE0Y2QwM2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcApAQCAtODEsMjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RB
VElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvblByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvblBy
b3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24+OwordXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVj
dGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj47CiAKLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVT
RURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUo
KTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRP
TUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
dm9pZCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCmluZGV4IDI4MmYyNmQzZmYxZWVlYTdlOGYwODg3ZjgyOTZiMWQyYWIwYTY4Y2EuLmMy
YTdjOTI0N2Q5NWVhNjFkNWFlMTViYmQyYzlmOWU0OTNlNGI0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTg2LDIyICs4NiwyMiBA
QCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXJQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI+OwogCi10ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9
CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJE
T01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAg
LTE0OCw3ICsxNDgsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmCiAKIEpTVmFsdWUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3I+KHZtLCAqanND
YXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDkxNDAzNzZmODdkOTZjMmI3N2FjM2QxYmQ3Mjcw
Y2E2OGJlZDM5ZWUuLmExNGFlZWUxMjU0NmI0YmQ0ODQ1ZTcxOWEyZjU0MzlhMzEyNmZjZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAKQEAgLTg5LDIyICs4OSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5
cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJQcm90b3R5cGU6OkJhc2UpOwog
Ci11c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3Ig
cHJvdG90eXBlICovCiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
YwogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyLmNwcAppbmRleCAzMTcwNzkzOWUxMjdmNTc4NjM4MWFmNTc0M2RiN2RhNTZmNjQ0
NDE3Li5jOTM2MzBmMjI2OTM4N2YxNTMzZTExODQyMThkOTEzMDQ4OThmMzJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJB
bmRTZXR0ZXIuY3BwCkBAIC04OSwyMiArODksMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyUHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVy
QW5kU2V0dGVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj47
Cit1c2luZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29u
c3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblBy
b3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0
b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLwogCkBAIC0xNTIsNyArMTUyLDcgQEAgSlNPYmplY3QqIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2wKIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOwogfQogCiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXgg
NmU5ZGNhNjNjZTdjOTNhY2VhYzQ0OTUyNjM0MmZmMjcyZDNmMjg2Ni4uNWE0NjA0ZWFlZGM2Nzli
NTI0ZDAwNjBhOGNjYzJkNTYwN2ZmZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcApAQCAtODEs
MjIgKzgxLDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlw
ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc1Byb3RvdHlwZTo6
QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnNDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+OwordXNpbmcgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yID0gSlNET01Db25z
dHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucz47CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElu
c0RPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3Zl
cnJpZGVCdWlsdElucyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RP
TUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAt
MTQyLDcgKzE0Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsCiAKIEpTVmFsdWUgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcAppbmRleCBiZmFjMDI5NTBm
NzJjM2QxZmFkYWRiNjQyMjRjNWEzYmMzOTNmNDY3Li4wYTVhYmU3NzU4YTRkZjRlYjBjNjg0YTFi
NTQ2OTgxMTUyNWFlM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcApAQCAtODgs
NyArODgsNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1Byb3Rv
dHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzUHJv
dG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+Owor
dXNpbmcgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM+OwogCiAvKiBIYXNoIHRhYmxl
ICovCiAKQEAgLTEwNywyMCArMTA3LDIwIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNUYWJsCiB9Owog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc1RhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3ROYW1lZFNldHRlcldp
dGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmluZm8oKSwgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc1RhYmxlSW5kZXggfTsKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzIl9zKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVj
dG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTY2LDcgKzE2Niw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnBy
b3RvdHlwZShWTSYgdm0sIEpTCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0NvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXggZTQ1NzhhMjliNmE2ZjM2ZTM0
ZGU2OTk4ZWY0NzQ3NzMzMzRiNDAwZC4uMzZmNTBiNzA3MzFhM2YyYzliMzZlZDg0OTRjMTM5YjY4
NTVkZDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcApAQCAtODgsNyArODgsNyBAQCBwcml2
YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNQcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNQcm90b3R5cGU6OkJhc2UpOwogCi11c2lu
ZyBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zPjsKK3VzaW5nIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNET01Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnM+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTEwNywyMCArMTA3LDIwIEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMCiB9OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNUYWJsZSA9IHsgMiwgMywgdHJ1ZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6aW5mbygpLCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zVGFibGVWYWx1ZXMsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNUYWJsZUluZGV4IH07Ci10
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnND
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNDb25z
dHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNE
T01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9y
Z2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnNE
T01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAg
LTE2Niw3ICsxNjYsNyBAQCBKU09iamVjdCogSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5m
b3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdAogCiBKU1ZhbHVlIEpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdEluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1
aWx0SW5zRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA5NGUxMzEwMGNhY2RhMzhmZTQ1NjZj
NjBjNDU1MWJjMWU1ZWE5NDc3Li45MzRhZjQyYzhhNzY4MmM3YTlkOTY3NDg4YTQ2MTMwNmZiZGQx
MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC0xMDYsMTMgKzEwNiwxMyBAQCBwcml2YXRlOgogfTsKIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUsIEpT
VGVzdE5vZGVQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3ROb2RlQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGU+OwordXNpbmcgSlNUZXN0Tm9kZURPTUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlPjsKIAotdGVtcGxhdGU8PiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0Tm9kZUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FU
VFJJQlVURVMgSlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZN
JiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxK
U1Rlc3ROb2RlQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1l
LT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgYXV0byBvYmplY3Qg
PSBUZXN0Tm9kZTo6Y3JlYXRlKCk7CiAgICAgc3RhdGljX2Fzc2VydChUeXBlT3JFeGNlcHRpb25P
clVuZGVybHlpbmdUeXBlPGRlY2x0eXBlKG9iamVjdCk+Ojppc1JlZik7CkBAIC0xMjMsMjEgKzEy
MywyMSBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRF
UyBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOwog
fQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0Tm9kZUNvbnN0cnVjdG9yQ29uc3Ry
dWN0LCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CitKU0NfQU5OT1RBVEVfSE9T
VF9GVU5DVElPTihKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdE5vZGVE
T01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5v
ZGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dE5vZGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU05v
ZGU6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5v
ZGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROb2RlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3ROb2RlIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Tm9kZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0Tm9kZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0Tm9kZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Tm9kZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Tm9k
ZURPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApA
QCAtMjUyLDcgKzI1Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdE5vZGU6
OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9kZUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5vZGUqIElETEF0dHJpYnV0ZTxKU1Rlc3ROb2RlPjo6
Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA3OTFmZDBkMjIxOWU3OWM2YWYxZTMwNmM4MGI1NWNj
OGIwZjNlZDg3Li4wMDNkNzE1OWZiNWUzYjMwYWVjOTEyYTFlZTg3NmY1NjdmYjc2OGExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMTgyNCw3ICsxODI0LDcgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RPYmpQcm90b3R5cGUsIEpTVGVzdE9ialByb3Rv
dHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE9iakNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPYmo+OwordXNpbmcgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yPEpTVGVzdE9iaj47CiAKIC8qIEhhc2ggdGFibGUgKi8KIApAQCAtMTkzNywxMSAr
MTkzNywxMSBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0ID09IDB4MWFi
YywgIkNPTlNUX1ZBTFVFXzE0IGluIFRlc3RPYmogZG9lcwogc3RhdGljX2Fzc2VydChUZXN0T2Jq
OjpDT05TVF9JTVBMID09IDE1LCAiQ09OU1RfSU1QTCBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNo
IHZhbHVlIGZyb20gSURMIik7CiBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OnJlYWRvbmx5ID09IDAs
ICJyZWFkb25seSBpbiBUZXN0T2JqIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMIik7CiAK
LXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVz
dE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iakRPTUNvbnN0cnVjdG9y
Kj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAg
aWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMTk2NSwx
NSArMTk2NSwxNSBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRU
UklCVVRFUyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydQogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFs
dWUpOwogfQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0T2JqQ29uc3RydWN0b3JD
b25zdHJ1Y3QsIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOworSlNDX0FOTk9UQVRF
X0hPU1RfRlVOQ1RJT04oSlNUZXN0T2JqRE9NQ29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdE9i
akRPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
T2JqQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3Qg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RPYmpET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPYmo6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE9iamVjdCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpAQCAtMTk5Nyw3ICsx
OTk3LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2IKICNlbmRpZgogfQogCi10ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE9i
amVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0T2JqQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RPYmpET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqRE9N
Q29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0y
NDU3LDcgKzI0NTcsNyBAQCBKU09iamVjdCogSlNUZXN0T2JqOjpwcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I+KHZtLCAqanND
YXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQg
SlNUZXN0T2JqOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
cGVyYXRpb25Db25kaXRpb25hbC5jcHAKaW5kZXggOGRhYThmYWY0MjI0NWViY2IxNGYwYzRmOThk
ZTlkNTg5ZWVkZmMyOC4uM2ViYjAxMzBjOWZjN2Y4Y2MwMWY4MDEwNDUwMzkzMzVmNzg5NjdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCkBAIC05MiwyMiAr
OTIsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbFByb3RvdHlwZSwgSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWxQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RPcGVyYXRpb25Db25kaXRp
b25hbENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0
T3BlcmF0aW9uQ29uZGl0aW9uYWw+OwordXNpbmcgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxE
T01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPcGVyYXRp
b25Db25kaXRpb25hbENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3Bl
cmF0aW9uQ29uZGl0aW9uYWxET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3BlcmF0aW9uQ29uZGl0
aW9uYWwiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjMsNyArMTYzLDcgQEAgSlNPYmplY3Qq
IEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmEKIAogSlNWYWx1ZSBKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbDo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25h
bENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPcGVyYXRpb25D
b25kaXRpb25hbERPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGM3ZmQzYWZiMTQwNDcxMTc3NWZmOGQ1YTQyM2Iw
OTg1OGJiODU5Y2QuLjgxYTY1OGEyM2IzNTNlZDg3NDNlNzIzNTcwODNlOWJiN2M4ODkzNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTg1LDEz
ICs4NSwxMyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUsIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+OwordXNpbmcgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
PjsKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzMShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3RydWN0b3IqPihj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gY29udmVydDxJRExBcnJheUJ1ZmZlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1
ZmZlciIsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJBcnJheUJ1ZmZl
ciIpOyB9KTsKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEpTR2xvYmFsT2JqZQogewog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsK
ICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byBhcnJheUJ1
ZmZlclZpZXcgPSBjb252ZXJ0PElETEFycmF5QnVmZmVyVmlldz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJheUJ1ZmZlclZpZXciLCAiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXJWaWV3Iik7IH0p
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMoSlNHbG9iYWxPYmplCiB7CiAgICAgVk0m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzRE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFT
U0VSVChjYXN0ZWRUaGlzKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIGJsb2IgPSBjb252ZXJ0
PElETEludGVyZmFjZTxCbG9iPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJibG9iIiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVs
bHB0ciwgIkJsb2IiKTsgfSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChKU0dsb2Jh
bE9iamUKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1
dG8gc3RyaW5nID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShKU0dsb2Jh
bE9iamUKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8gbG9uZ0FyZ3MgPSBj
b252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsICpj
YWxsRnJhbWUsIDApOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShKU0dsb2JhbE9iamUK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOwogfQogCi10ZW1wbGF0ZTw+IEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
RE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTIwNiwyMCArMjA2LDIwIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDCiB9CiBK
U0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5m
dW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0yNjUsNyAr
MjY1LDcgQEAgSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG8KIAogSlNWYWx1ZSBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0RPTUNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lk
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5jcHAKaW5kZXggYmExN2RhOTgzYjQ0OTM3ZmFiNWRkNjE0ZDEzNTRlNWUxN2Zl
MzhjYS4uZGNhYjdiZGM1OTY4OTQ2ODc4MDM2MGEyYmU0MTRhNDc0MDM3MjM2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlLmNwcApAQCAtODQsMTMgKzg0LDEzIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZVByb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVBy
b3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZT47Cit1c2luZyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U+OwogCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UxKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNv
bnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25z
dHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMp
OwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGF1dG8gc2VxdWVuY2VPZlN0cmluZ3MgPSBhcmd1bWVudDAudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+OjpSZXR1
cm5UeXBleyB9IDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZTIoCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlRE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VS
VChjYXN0ZWRUaGlzKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHN0cmluZyA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwpA
QCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKIH0KIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZURPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC0xNDUsMjAgKzE0NSwyMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzVwogfQogSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk7CiAKLXRlbXBs
YXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Qu
ZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSB9OwordGVt
cGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZURP
TUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAt
MjA0LDcgKzIwNCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhCiAKIEpTVmFsdWUgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFBsdWdpbkludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAppbmRleCAzNTc2ZjE5MzM1ZGM5NDRlMTEy
NTc0NGY5MDlmNTk3MzczMzFjZmQ1Li41M2U1M2VhMDAwMmYzMGNhOThhOTYzNmZjMTExMWQ0YmFi
N2MwZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmNwcApAQCAtODAsMjIgKzgw
LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90
b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFBsdWdpbkludGVyZmFjZT47
Cit1c2luZyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFBsdWdpbkludGVyZmFjZT47CiAKLXRlbXBsYXRl
PD4gSlNWYWx1ZSBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVj
dG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lk
IEpTVGVzdFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFBsdWdpbkludGVyZmFj
ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UGx1Z2luSW50ZXJmYWNlIl9z
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQ
bHVnaW5JbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwordGVtcGxh
dGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RQbHVnaW5JbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZURPTUNv
bnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQx
LDcgKzE0MSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplCiAKIEpTVmFsdWUgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFBs
dWdpbkludGVyZmFjZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3RQbHVnaW5JbnRlcmZhY2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQuY3BwCmluZGV4IGI2MDNmODgwZWYwYTY0NjljYmI0YzhlNzM5OWI1
ZDNmYWZmY2U0NTAuLjEzMTNiYTZmZjdmZmI5NDNiMTc3NTdhNDBhYTMzNGVhMTFhM2UyNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
cm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwCkBAIC0xNjQsMTMg
KzE2NCwxMyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFByb3RvdHlwZSwgSlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50UHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudD47Cit1c2luZyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50PjsKIAot
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit0ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRET01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwor
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50
RE9NQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0
ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CkBAIC0xODksMjEgKzE4OSwyMSBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTExfQVRUUklCVVRFUyBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDbwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVmFsdWUpOwogfQotSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3QsIEpTVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOworSlNDX0FOTk9UQVRFX0hPU1RfRlVO
Q1RJT04oSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3JDb25zdHJ1Y3Qs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOwog
Ci10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBKU0V2ZW50OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudERPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9NQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudERPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUg
Ki8KIApAQCAtMjUxLDcgKzI1MSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RQcm9taXNlUmVqZWN0aW9u
RXZlbnQ6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iCiAKIEpTVmFs
dWUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50KiBJ
RExBdHRyaWJ1dGU8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Y2FzdChKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJl
YWRPbmx5TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAppbmRleCBjZThjMDk5NDYwOGM5MTkxODRmM2Ey
Njk5NTZkNGM3MjU5YzdjNTIyLi5iZWJkZWM3MjVjY2RhYjc4NGU5MGU3NjQzZWY3OTRlOTJmYTU1
MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmNwcApAQCAtOTUsMjIgKzk1LDIy
IEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNU
ZXN0UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlLCBKU1Rlc3RSZWFkT25seU1hcExpa2VQcm90b3R5
cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFJlYWRPbmx5TWFwTGlrZT47Cit1
c2luZyBKU1Rlc3RSZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFJlYWRPbmx5TWFwTGlrZT47CiAKLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpT
VGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFJlYWRPbmx5TWFwTGlrZTo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UmVhZE9ubHlNYXBMaWtlIl9zKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RSZWFk
T25seU1hcExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0UmVhZE9ubHlNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RSZWFkT25seU1hcExpa2UiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0
cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTY0LDcg
KzE2NCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RSZWFkT25seU1hcExpa2U6OnByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplCiAKIEpTVmFsdWUgSlNUZXN0UmVhZE9u
bHlNYXBMaWtlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFJlYWRP
bmx5TWFwTGlrZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RS
ZWFkT25seU1hcExpa2VET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RSZWFkT25seU1hcExp
a2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExp
a2UuY3BwCmluZGV4IDIwMDQzNWZkZDA3YjhkZjIyZWI5MmY1YzQyYzE1ZmM4OTMzNDNiYjMuLjI0
YmI4ZGExZWE0OTkzMjkyNTFlNWJkMjAxMzIwNjAxM2E5N2M1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExpa2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RS
ZWFkT25seVNldExpa2UuY3BwCkBAIC05NCwyMiArOTQsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RSZWFkT25seVNldExpa2VQcm90
b3R5cGUsIEpTVGVzdFJlYWRPbmx5U2V0TGlrZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpT
VGVzdFJlYWRPbmx5U2V0TGlrZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0UmVhZE9ubHlTZXRMaWtlPjsKK3VzaW5nIEpTVGVzdFJlYWRPbmx5U2V0
TGlrZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0UmVhZE9ubHlTZXRMaWtlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFJlYWRPbmx5
U2V0TGlrZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0UmVhZE9ubHlTZXRMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Q
cm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFJlYWRPbmx5U2V0TGlrZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVhZE9ubHlTZXRMaWtlRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0UmVhZE9ubHlTZXRMaWtlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3RSZWFkT25seVNldExpa2UiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RSZWFkT25seVNldExp
a2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFJlYWRPbmx5U2V0TGlrZSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UmVhZE9u
bHlTZXRMaWtlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RSZWFkT25seVNldExpa2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFJlYWRPbmx5
U2V0TGlrZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0UmVhZE9ubHlTZXRMaWtlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2gg
dGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjIsNyArMTYyLDcgQEAgSlNPYmplY3QqIEpT
VGVzdFJlYWRPbmx5U2V0TGlrZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rlc3RSZWFkT25seVNldExpa2U6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOwogfQogCiB2b2lkIEpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAKaW5k
ZXggOWQ2YjRhNDhkODU1MTllNTFlY2I5NDM4MWQ0MjQwNWU2YjkxNjYxZS4uNGQwOTNhYmJmZDkx
ZjZiN2YwNzkwNTk4YWM0YmVmYzc3NDU2NTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5jcHAKQEAgLTc5LDIyICs3OSwyMiBAQCBwcml2YXRlOgogfTsKIFNU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdFByb3RvdHlwZSwgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0UHJvdG90eXBlOjpCYXNl
KTsKIAotdXNpbmcgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+
OwordXNpbmcgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0RE9NQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q+
OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RSZXBvcnRF
eHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlw
ZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNv
c3RET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Q6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3Rvcikg
fTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29z
dERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Iiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBKU09iamVjdCogSlNUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYgogCiBKU1ZhbHVlIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0RE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA1MmZiY2NhMWNlODFjYzdk
OTNiZDdkZjc2M2M3ZjQ2NTg4NDkzYmFkLi5mZTk0ZTExMmUxMGQxMGRjN2E1YzJiMzY1MzM3OWMw
MzcwMDllNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTAzLDIyICsxMDMsMjIgQEAgcHJpdmF0ZToKIH07CiBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjsKK3VzaW5nIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rv
ck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjsK
IAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3Qu
ZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlRE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwogCkBAIC0xNzEsNyArMTcxLDcgQEAgSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmoK
IAogSlNWYWx1ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXRMaWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXRMaWtlLmNwcAppbmRleCBlMjU5N2UxOWMzMGU5YTAzNjA2NzY5NjcxYmMyZGRlN2Y2
MTMzMjA0Li5jZmFjODA1MWJlZDRjZjhiMWVkZjFkYzIyY2QxMTYyZTZmM2EwZDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlr
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNldExpa2UuY3BwCkBAIC05NywyMiArOTcsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTZXRMaWtlUHJvdG90eXBlLCBKU1Rlc3RT
ZXRMaWtlUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0U2V0TGlrZUNvbnN0cnVjdG9y
ID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U2V0TGlrZT47Cit1c2lu
ZyBKU1Rlc3RTZXRMaWtlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3RTZXRMaWtlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNldExp
a2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dFNldExpa2VET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwog
fQogCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U2V0TGlrZUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNldExpa2U6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFNldExpa2UiX3MpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RT
ZXRMaWtlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXRMaWtlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXRMaWtlQ29u
c3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXRMaWtlRE9N
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXRMaWtlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXRMaWtlRE9NQ29uc3Ry
dWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNjgsNyAr
MTY4LDcgQEAgSlNPYmplY3QqIEpTVGVzdFNldExpa2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAKIEpTVmFsdWUgSlNUZXN0U2V0TGlrZTo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXRMaWtlQ29uc3RydWN0b3I+
KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNldExpa2VET01Db25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAogdm9pZCBKU1Rlc3RTZXRMaWtlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3Bw
CmluZGV4IDFmYjE5YmRhOThmY2RkMDg5Njk3YTY0ODc3YzgwNThiZTc5N2UyYmYuLjgxZjBkYmQy
ZmQwZjYzYTM2YTg1ODcxNGRlYzFkMzI3YTIwMTU5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5P
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKQEAgLTk5LDIyICs5
OSwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGUsIEpTVGVzdFNl
dExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNQcm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBK
U1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVy
YXRpb25zPjsKK3VzaW5nIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFNldExp
a2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0
aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAK
LXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAK
LXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRl
bk9wZXJhdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNDb25zdHJ1Y3Rv
cikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJp
ZGRlbk9wZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFNldExpa2VXaXRo
T3ZlcnJpZGRlbk9wZXJhdGlvbnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnNE
T01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKQEAg
LTE3MCw3ICsxNzAsNyBAQCBKU09iamVjdCogSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3Bl
cmF0aW9uczo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYgogCiBKU1ZhbHVlIEpTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0NvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0U2V0TGlrZVdpdGhPdmVy
cmlkZGVuT3BlcmF0aW9uczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXIuY3BwCmluZGV4IDg1ODBlNTk4Y2Y0YjYyOWQ3NDkxYjA4MTAzYTFlZjY2MjZkZGJj
NTAuLjBkZWZhMTEyMGY0N2U2OWNiNThlMTk3MjM0YTI2YjkyODNjM2E3NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0cmluZ2lmaWVyLmNwcApAQCAtODUsMjIgKzg1LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0U3RyaW5naWZpZXJQcm90b3R5cGUs
IEpTVGVzdFN0cmluZ2lmaWVyUHJvdG90eXBlOjpCYXNlKTsKIAotdXNpbmcgSlNUZXN0U3RyaW5n
aWZpZXJDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVz
dFN0cmluZ2lmaWVyPjsKK3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllcj47CiAKLXRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0U3RyaW5naWZpZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVz
dFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXI6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyIl9zKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3RyaW5n
aWZpZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdp
ZmllckNvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U3Ry
aW5naWZpZXJET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RT
dHJpbmdpZmllckRPTUNvbnN0cnVjdG9yKSB9OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5
cGUgKi8KIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RTdHJpbmdpZmllcjo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIAogSlNW
YWx1ZSBKU1Rlc3RTdHJpbmdpZmllcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFN0cmluZ2lm
aWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKaW5kZXggYjBkY2Q4NDYwNTU4YTRj
NzNmMWViMWQ5ZDA0ZDI5N2U0YjUwOGQ2Yi4uODk2ZjhmZGI3ZGVhN2I3NWRkOWQ0MTRjZjRjYmRk
NDY1ZjQ3MzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24uY3BwCkBAIC04NSwyMiArODUsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvblByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Q
cm90b3R5cGU6OkJhc2UpOwogCi11c2luZyBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0
U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24+OwordXNpbmcgSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uPjsKIAotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllckFub255bW91
c09wZXJhdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJBbm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3Ry
aW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0
b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllckFub255
bW91c09wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uRE9NQ29u
c3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDcs
NyArMTQ3LDcgQEAgSlNPYmplY3QqIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamUKIAogSlNWYWx1ZSBKU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bkRPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0
aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCmluZGV4IGQ2NTUyYjUyOGMzOGE2N2ZjOGI5N2Zk
YzU0MDE4YTA2ZGM5MTBiYTAuLmRhNGY2MWIzNzViMzRlMjIyN2Q2YmMyYWI2YjllODIwN2EyZmQz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5j
cHAKQEAgLTg2LDIyICs4NiwyMiBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGUs
IEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Qcm90b3R5cGU6OkJhc2UpOwogCi11c2lu
ZyBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uPjsK
K3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25ET01Db25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVy
YXRpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJh
dGlvbkNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1
bmN0aW9uUHJvdG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5n
aWZpZXJOYW1lZE9wZXJhdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAK
LXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24i
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25ET01Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmlu
Z2lmaWVyTmFtZWRPcGVyYXRpb25ET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBm
b3IgcHJvdG90eXBlICovCiAKQEAgLTE0OSw3ICsxNDksNyBAQCBKU09iamVjdCogSlNUZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbjo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9u
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcAppbmRl
eCA5YzMwZWYyOWI5ZGQ2Mzc4NTkxM2MwZWQ0MGRmZmIxYTZmYjQ4ZmFhLi5mYmYzMmUyMWFjZWYx
ZmMwMzQwMjQzNzQ0ODc4ZmY3OTg2Yzk3NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmNwcApAQCAtODYsMjIgKzg2
LDIyIEBAIHByaXZhdGU6CiB9OwogU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUo
SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzUHJvdG90eXBlLCBKU1Rlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNQcm90b3R5cGU6OkJhc2UpOwogCi11c2lu
ZyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9u
SW1wbGVtZW50ZWRBcz47Cit1c2luZyBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVu
dGVkQXNET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcz47CiAKLXRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJv
dG90eXBlKCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlv
bkltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzIl9zKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFN0cmluZ2lmaWVyT3Bl
cmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yKSB9OwordGVtcGxhdGU8PiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzRE9NQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yKSB9OwogCiAv
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXM6OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsCiAKIEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25J
bXBsZW1lbnRlZEFzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNET01D
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGU4NzlmN2Zl
NzYxOTE5MWUwYTliZDk2NjhjOWFkM2RlMjM2Y2Q0MTEuLjRkY2ZmNWFlODEzNDJiNDk4MTFkNTNi
NGFiMzMxNTUwNGQ0YmE1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC04NSwyMiArODUsMjIgQEAgcHJp
dmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJp
bmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdQcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZ1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFN0
cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3Ry
aW5nPjsKK3VzaW5nIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
IH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZ0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25OYW1lZFRvU3RyaW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmciX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZp
ZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNPYmplY3QqIEpTVGVz
dFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6cHJvdG90eXBlKFZNJiB2bSwgSlNE
T01HbG9iYWwKIAogSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmc6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZzo6ZGVzdHJv
eShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlLmNwcAppbmRleCAxZjVjNjQyN2IyYTkwODk0NDU0ZTA0MmIyODcz
MjkxMjlkOTdlOWU1Li43YWRiZDAxMTE4NGU4NzdkNWVkZDY2MGYwNWE0OTg0MjYwNjgwYTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUu
Y3BwCkBAIC04NywyMiArODcsMjIgQEAgcHJpdmF0ZToKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90
eXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlUHJvdG90eXBlOjpCYXNlKTsK
IAotdXNpbmcgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJSZWFkT25s
eUF0dHJpYnV0ZT47Cit1c2luZyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9N
Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlPjsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZURP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUi
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTdHJpbmdpZmll
clJlYWRPbmx5QXR0cmlidXRlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLwogCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNPYmplY3QqIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWMKIAogSlNWYWx1ZSBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcApp
bmRleCA2MDJjMDhjZThjZjY1NTUxZDU0NDU2YzAyYWU0ZDIyYTg3MTBhODBjLi5hNGE3ZDc2YWE3
ZTY1MDA3NjhiMGVkZWY0ZmYyNmQ2ZWFjZGIwOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKQEAgLTg4LDIyICs4OCwyMiBA
QCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlUHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZVByb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFN0cmlu
Z2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZT47Cit1c2lu
ZyBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yID0gSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVB
dHRyaWJ1dGU+OwogCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9i
YWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSJfcyksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFkV3Jp
dGVBdHRyaWJ1dGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJsZSBmb3IgcHJv
dG90eXBlICovCiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBKU09iamVjdCogSlNUZXN0U3RyaW5naWZp
ZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZQog
CiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFN0cmluZ2lm
aWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0U3RyaW5n
aWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcAppbmRleCAyMzgzZTM4NTgyYmVmN2Y3MjFlNDQwMWFiODM3ZWYwMDY3MDFh
MTVkLi42OTZiMDRiNzU2ZWU4MjZiODlkYjRmMGJjNjZkZDk3MDk0Y2FhMTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlLCBKU1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdFR5cGVkZWZzPjsKK3VzaW5nIEpTVGVzdFR5cGVk
ZWZzRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdFR5cGVkZWZzPjsKIAog
LyogSGFzaCB0YWJsZSAqLwogCkBAIC0xNTQsMTEgKzE1NCwxMSBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAg
IHsgIlRlc3RTdWJPYmoiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3Vi
T2JqKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAogfTsKIAotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
X0FUVFJJQlVURVMgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFR5cGVk
ZWZzRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKQEAgLTE4MCwxNSArMTgwLDE1IEBAIHRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTIEpTVGVzdFR5cGVkZWZz
Q29uc3RydWN0b3I6OmNvCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9Ci1KU0NfQU5OT1RBVEVf
SE9TVF9GVU5DVElPTihKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yQ29uc3RydWN0LCBKU1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOworSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJ
T04oSlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3RvckNvbnN0cnVjdCwgSlNUZXN0VHlwZWRlZnNE
T01Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0KTsKIAotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29u
c3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RUeXBlZGVmc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RUeXBl
ZGVmczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0VHlwZWRlZnMiX3MpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsbwog
ICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSwgSlNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiB9CiAKLXRlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IlRlc3RUeXBlZGVmcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RUeXBlZGVmcyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBKU09iamVjdCogSlNUZXN0
VHlwZWRlZnM6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAKIEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29u
c3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0VHlwZWRlZnNET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RUeXBlZGVm
czo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCAxNzk4MmQ0ZjRjNTQ1ZjE4NGM3ZDkzMTJjMTY2ZWMwZDVlYjRkN2NhLi40ZjY0OTE3
ZmNiNjYzNGEzZGY2MjEyMWM2NDI5ZTQzYzdmMWYwNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFs
U2NvcGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1CiBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzV29ya2VyR2xvYmFsU2NvcGVXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNXb3JrZXJHbG9i
YWxTY29wZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpOwogCi11c2luZyBKU1dvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1dvcmtlckdsb2JhbFNjb3BlPjsKK3VzaW5nIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTV29ya2VyR2xvYmFsU2Nv
cGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKQEAgLTEwMywxOSArMTAzLDE5IEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB9
OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsg
NiwgMTUsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQordGVtcGxhdGU8PiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25z
dHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1dvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3RlbXBsYXRlPD4gdm9pZCBKU1dvcmtlckds
b2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJXb3JrZXJHbG9iYWxTY29wZSJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2NvcGUiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpT
V29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiV29ya2VyR2xvYmFs
U2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3RvcikgfTsKIAogLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBKU09iamVjdCogSlNXb3Jr
ZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1dvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IHRlbXBsYXRlPD4gaW5saW5lIEpTV29ya2VyR2xvYmFsU2NvcGUqIElETEF0dHJpYnV0ZTxKU1dv
cmtlckdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAKaW5kZXggMjUxMDQwMzM1OGUwN2VkZjU3MjliNGFkM2VjY2UxMmJmODQ0N2FjMi4uN2NjYThi
NWQ5OTZjYjJhZGQxNjgwN2FjNzZhZjRjZTY5ZmY0ZDBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcik7CiBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzV29ya2xldEdsb2JhbFNjb3BlV29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3Ip
OwogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1dvcmtsZXRHbG9iYWxTY29wZVdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKTsKIAotdXNpbmcgSlNXb3JrbGV0R2xvYmFsU2NvcGVD
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTV29ya2xldEds
b2JhbFNjb3BlPjsKK3VzaW5nIEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IgPSBK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1dvcmtsZXRHbG9iYWxTY29wZT47CiAK
IC8qIEhhc2ggdGFibGUgKi8KIApAQCAtNjcsMTkgKzY3LDE5IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogfTsKIAogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlID0geyAxLCAxLCB0
cnVlLCBKU1dvcmtsZXRHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtsZXRHbG9iYWxTY29wZVRh
YmxlVmFsdWVzLCBKU1dvcmtsZXRHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1
Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBKU1dvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNXb3JrbGV0R2xv
YmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1dvcmtsZXRHbG9iYWxTY29wZTo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJXb3JrbGV0R2xvYmFsU2NvcGUiX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1dvcmtsZXRH
bG9iYWxTY29wZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV29y
a2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5m
byBKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJXb3JrbGV0
R2xvYmFsU2NvcGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTV29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3IpIH07CiAKIC8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCkBAIC0xMzEsNyArMTMxLDcgQEAgSlNPYmplY3Qq
IEpTV29ya2xldEdsb2JhbFNjb3BlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWMKIAogSlNWYWx1ZSBKU1dvcmtsZXRHbG9iYWxTY29wZTo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1dvcmtsZXRHbG9iYWxTY29wZSogSURMQXR0
cmlidXRlPEpTV29ya2xldEdsb2JhbFNjb3BlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQo=
</data>
<flag name="review"
          id="426199"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>