<?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>168018</bug_id>
          
          <creation_ts>2017-02-08 13:57:36 -0800</creation_ts>
          <short_desc>[Cocoa] Web Inspector: Inspector::fromProtocolString&lt;T&gt; should return std::optional&lt;T&gt;</short_desc>
          <delta_ts>2017-02-16 13:33:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1274548</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-08 13:57:36 -0800</bug_when>
    <thetext>Currently we assert if the enum value cannot be parsed, but this is untrusted data. We should handle it better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275438</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-10 11:29:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/30468779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275617</commentid>
    <comment_count>2</comment_count>
      <attachid>301210</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-10 16:12:25 -0800</bug_when>
    <thetext>Created attachment 301210
Proposed Fix

Must land manually with internal changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275672</commentid>
    <comment_count>3</comment_count>
      <attachid>301223</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-10 17:37:30 -0800</bug_when>
    <thetext>Created attachment 301223
Proposed Fix (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277275</commentid>
    <comment_count>4</comment_count>
      <attachid>301635</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-15 11:22:51 -0800</bug_when>
    <thetext>Created attachment 301635
Proposed Fix (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277276</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-15 11:24:02 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277398</commentid>
    <comment_count>6</comment_count>
      <attachid>301635</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-15 15:46:13 -0800</bug_when>
    <thetext>Comment on attachment 301635
Proposed Fix (rebased)

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

&gt; Source/JavaScriptCore/inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:927
&gt; +    std::optional&lt;TestProtocolDatabasePrimaryColors&gt; o_in_screenColor = fromProtocolString&lt;TestProtocolDatabasePrimaryColors&gt;(in_screenColor);
&gt; +    THROW_EXCEPTION_FOR_BAD_ENUM_VALUE(o_in_screenColor, @&quot;screenColor&quot;);
&gt;      NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors = objcStringArray(&amp;in_alternateColors);
&gt; -    TestProtocolDatabaseExecuteNoOptionalParametersPrintColor o_in_printColor = fromProtocolString&lt;TestProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt;(in_printColor);
&gt; +    std::optional&lt;TestProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt; o_in_printColor = fromProtocolString&lt;TestProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt;(in_printColor);
&gt; +    THROW_EXCEPTION_FOR_BAD_ENUM_VALUE(o_in_printColor, @&quot;printColor&quot;);

It does not make sense to throw an exception here.

This is the C++ code reading an incoming messages from the frontend to then dispatch an ObjC Backend Dispatcher. No client code is wrapping this, this is entirely WebKit receiving a frontend message. Nobody will catch the exception or handle it, it is our responsibility to do something here.

If this is bad input from the inspector, it should be rejected like any other bad protocol input. For example:

    if (!o_in_screenColor) {
        m_backendDispatcher-&gt;reportProtocolError(BackendDispatcher::InvalidParams, String::format(&quot;Some arguments of method &apos;%s&apos; can&apos;t be processed&quot;, &quot;Database.executeNoOptionalParameters&quot;));
        return;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277691</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 09:15:53 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 301635 [details]
&gt; Proposed Fix (rebased)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=301635&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:927
&gt; &gt; +    std::optional&lt;TestProtocolDatabasePrimaryColors&gt; o_in_screenColor = fromProtocolString&lt;TestProtocolDatabasePrimaryColors&gt;(in_screenColor);
&gt; &gt; +    THROW_EXCEPTION_FOR_BAD_ENUM_VALUE(o_in_screenColor, @&quot;screenColor&quot;);
&gt; &gt;      NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors = objcStringArray(&amp;in_alternateColors);
&gt; &gt; -    TestProtocolDatabaseExecuteNoOptionalParametersPrintColor o_in_printColor = fromProtocolString&lt;TestProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt;(in_printColor);
&gt; &gt; +    std::optional&lt;TestProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt; o_in_printColor = fromProtocolString&lt;TestProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt;(in_printColor);
&gt; &gt; +    THROW_EXCEPTION_FOR_BAD_ENUM_VALUE(o_in_printColor, @&quot;printColor&quot;);
&gt; 
&gt; It does not make sense to throw an exception here.
&gt; 
&gt; This is the C++ code reading an incoming messages from the frontend to then
&gt; dispatch an ObjC Backend Dispatcher. No client code is wrapping this, this
&gt; is entirely WebKit receiving a frontend message. Nobody will catch the
&gt; exception or handle it, it is our responsibility to do something here.
&gt; 
&gt; If this is bad input from the inspector, it should be rejected like any
&gt; other bad protocol input. For example:
&gt; 
&gt;     if (!o_in_screenColor) {
&gt;        
&gt; m_backendDispatcher-&gt;reportProtocolError(BackendDispatcher::InvalidParams,
&gt; String::format(&quot;Some arguments of method &apos;%s&apos; can&apos;t be processed&quot;,
&gt; &quot;Database.executeNoOptionalParameters&quot;));
&gt;         return;
&gt;     }

Right, I did not fully understand what this code was doing, but I think I have a much better picture now. Since this fails when handling an incoming request, the failure path should reply to the command and not call into ObjC alternate dispatcher at all. I think it would be more consistent to call errorCallback() directly and return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277721</commentid>
    <comment_count>8</comment_count>
      <attachid>301777</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 10:09:25 -0800</bug_when>
    <thetext>Created attachment 301777
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277737</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 10:30:43 -0800</bug_when>
    <thetext>To test:
 - Go to settings tabs
 - Toggle DebugUI in engineering build (Cmd-Shift-Opt + D)
 - Use the select to change layout direction value

Behavior:
 - Turning DebugUI on should make the setting appear immediately.
 - Turning DebugUI back off should make the setting disappear immediately.
 - Changing the value should cause the inspector frontend to reload immediately.
 - The reloaded UI should have the specified layout direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277738</commentid>
    <comment_count>10</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 10:31:00 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; To test:
&gt;  - Go to settings tabs
&gt;  - Toggle DebugUI in engineering build (Cmd-Shift-Opt + D)
&gt;  - Use the select to change layout direction value
&gt; 
&gt; Behavior:
&gt;  - Turning DebugUI on should make the setting appear immediately.
&gt;  - Turning DebugUI back off should make the setting disappear immediately.
&gt;  - Changing the value should cause the inspector frontend to reload
&gt; immediately.
&gt;  - The reloaded UI should have the specified layout direction.

Wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277746</commentid>
    <comment_count>11</comment_count>
      <attachid>301777</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-16 10:48:50 -0800</bug_when>
    <thetext>Comment on attachment 301777
Patch v2

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

r=me

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:202
&gt; +                # FIXME: we don&apos;t handle optional enum values in commands here because it isn&apos;t used anywhere yet.
&gt; +                # We&apos;d need to change the delegate&apos;s signature to take std::optional for optional enum values.

I don&apos;t think we&apos;d ever want the delegate to receive a std::optional. The delegate is an ObjC API and this would require it to be an ObjC++ and use of std::optional is unexpected for ObjC APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277756</commentid>
    <comment_count>12</comment_count>
      <attachid>301777</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 11:03:14 -0800</bug_when>
    <thetext>Comment on attachment 301777
Patch v2

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

&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:202
&gt;&gt; +                # We&apos;d need to change the delegate&apos;s signature to take std::optional for optional enum values.
&gt; 
&gt; I don&apos;t think we&apos;d ever want the delegate to receive a std::optional. The delegate is an ObjC API and this would require it to be an ObjC++ and use of std::optional is unexpected for ObjC APIs.

Er, good catch. In that case we&apos;d probably need to box it as a NSNumber and allow it to be nil. I&apos;ll just remove the second comment line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277758</commentid>
    <comment_count>13</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 11:03:56 -0800</bug_when>
    <thetext>WK1 failures do not look related, maybe fallout from import() patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277762</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-16 11:15:50 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; WK1 failures do not look related, maybe fallout from import() patch?

Correct, and Yusuke has landed some follow-ups for that. (Maybe not enough?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277861</commentid>
    <comment_count>15</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-16 13:33:00 -0800</bug_when>
    <thetext>Committed r212462: &lt;http://trac.webkit.org/changeset/212462&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301210</attachid>
            <date>2017-02-10 16:12:25 -0800</date>
            <delta_ts>2017-02-10 17:37:28 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-168018-20170210160957.patch</filename>
            <type>text/plain</type>
            <size>66860</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTFiZjBlYjA5YzVjOGQxYjJkZTdmMzQ1YzZhNGRjMzQzMDJhNGM5Li42ZGYxNWJlYzQwODk1YTVj
MGYyNDM1MzgwN2JmZjA4NTgxMjhlNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3MyBAQAogMjAxNy0wMi0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFQ+IHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxUPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MDE4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDQ2ODc3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHBhcnNlIHVudHJ1c3RlZCBzdHJpbmcgaW5wdXRzLCBzbyB0
aGV5IHNob3VsZCByZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZAorICAgICAgICBvZiBhc3NlcnRp
bmcgb3IgY3Jhc2hpbmcgd2hlbiB0aGUgaW5wdXQgaXMgbm90IHVzYWJsZS4KKworICAgICAgICBV
cGRhdGUgdmFyaW91cyBwaWVjZXMgb2YgZ2VuZXJhdGVkIGNvZGUgdG8gaGFuZGxlIHRoZSBlcnJv
ciBjYXNlIGdyYWNlZnVsbHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAg
ICAgICAoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVy
YXRlX2NvbnZlcnNpb25zX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbnZvY2F0aW9uX2Zvcl9jb21t
YW5kKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9iakMtZnJpZW5k
bHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAorICAgICAgICB3
aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNfRU5VTSB2YWx1
ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90IG9wdGlvbmFs
LCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdmFsdWUgaXMgbnVsbG9wdC4KKworICAg
ICAgICBUaGUgb3B0aW9uYWwgZW51bSBwYXJhbWV0ZXIgY2FzZSBpcyBub3QgaGFuZGxlZCBjb3Jy
ZWN0bHksIGJ1dCBubyBleGlzdGluZyBjb2RlIHJlcXVpcmVzIGl0LgorCisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVy
c2lvbnNfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVh
ZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKToKKyAgICAg
ICAgRml4IHNpZ25hdHVyZSBhbmQgcmVtb3ZlIGRlZmF1bHQgY2FzZSBBU1NFUlRfTk9UX1JFQUNI
RUQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
cHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9i
akNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV90eXBlX2ZhY3RvcnlfbWV0aG9kX2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgU2luY2UgdGhp
cyBjb2RlIGFzc3VtZXMgYWxsIGlucHV0cyB0byBiZSB2YWxpZCBhbmQgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBvdGhlcndpc2UsIHdlCisgICAgICAgIHRyeSB0byBjb252ZXJ0IHRoZSBlbnVtIGFuZCB0
aHJvdyBhbiBleGNlcHRpb24gaWYgaXQncyBudWxsb3B0LiBJZiBpdCdzIHZhbGlkLCB3cml0ZSB0
byBvdXRWYWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNQ
cm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2luaXRfbWV0aG9k
X2Zvcl9wYXlsb2FkKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9i
akMtZnJpZW5kbHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAor
ICAgICAgICB3aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNf
RU5VTSB2YWx1ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90
IG9wdGlvbmFsLCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdmFsdWUgaXMgbnVsbG9w
dC4gT3RoZXJ3aXNlLCBhbGxvdyBpdCB0byBiZSBlbXB0eS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJh
dG9yLnByb3RvY29sX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAgVW5j
b25kaXRpb25hbGx5IHVud3JhcCB0aGUgb3B0aW9uYWwuIFRoaXMgZXhwcmVzc2lvbiBpcyBvbmx5
IHVzZWQgaW5zaWRlIHRoZSB0eXBlY2hlY2tlZAorICAgICAgICBPYmpDIHByb3RvY29sIG9iamVj
dHMuIEluIHRoaXMgY2FzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGFscmVhZHkgaW5pdGlh
bGl6ZWQgdGhlIGVudW0gd2l0aCBhIHZhbGlkCisgICAgICAgIHZhbHVlLCBidXQgbXVzdCBzdG9y
ZSBpdCBhcyBhIHN0cmluZyBpbnNpZGUgYSB3cmFwcGVkIEluc3BlY3Rvck9iamVjdC4gVGhlIGdl
dHRlciBuZWVkcyB0bworICAgICAgICByZS1jb252ZXJ0IHRoZSBzdG9yZWQgc3RyaW5nIGludG8g
YW4gTlNfRU5VTSB2YWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICBVcGRhdGUgdHlwZSB0ZW1wbGF0
ZSBmb3IgZnJvbVByb3RvY29sU3RyaW5nPFQ+KCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMt
d2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2
ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJy
YXktdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4KKworMjAxNy0wMi0xMCAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IGNsZWFu
IHVwIG5hbWVzIG9mIG91dC12YXJzIGluIGdlbmVyYXRlZCBPYmpDIGJhY2tlbmQgZGlzcGF0Y2hl
ciBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjgxNDMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRp
b24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA1
MGMzNTQ5M2Q2Mzg5MjU4YTY3MjA1OTAzNGVmYTc1OTk3ZGU5YzBkLi44ZjE0ZWZkZjc3ZTA0ZjZl
ZDdjNDllYTRmNTcxODQ3Y2JjMGJhNThmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBs
ZW1lbnRhdGlvbi5weQpAQCAtMTY4LDEwICsxNjgsMTUgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNw
YXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgICAg
ICBpbl9wYXJhbV9uYW1lID0gJ2luXyVzJyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQogICAg
ICAgICAgICAgb3V0X3BhcmFtX25hbWUgPSAnb3V0XyVzJyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJf
bmFtZQogICAgICAgICAgICAgb2JqY190eXBlID0gc2VsZi5vYmpjX3R5cGVfZm9yX3BhcmFtKGRv
bWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFtZXRlciwgRmFsc2UpCisgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICAg
ICAgb2JqY190eXBlID0gJ3N0ZDo6b3B0aW9uYWw8JXM+JyAlIG9iamNfdHlwZQogICAgICAgICAg
ICAgcGFyYW1fZXhwcmVzc2lvbiA9IGluX3BhcmFtX2V4cHJlc3Npb24oaW5fcGFyYW1fbmFtZSwg
cGFyYW1ldGVyKQogICAgICAgICAgICAgaW1wb3J0X2V4cHJlc3Npb24gPSBzZWxmLm9iamNfcHJv
dG9jb2xfaW1wb3J0X2V4cHJlc3Npb25fZm9yX3BhcmFtZXRlcihwYXJhbV9leHByZXNzaW9uLCBk
b21haW4sIGNvbW1hbmQuY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpCiAgICAgICAgICAgICBpZiBu
b3QgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgICVzID0gJXM7JyAlIChqb2luX3R5cGVfYW5kX25hbWUob2JqY190eXBlLCBvdXRfcGFyYW1f
bmFtZSksIGltcG9ydF9leHByZXNzaW9uKSkKKworICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UocGFyYW1ldGVyLnR5cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRSglcywgQCIlcyIp
OycgJSAob3V0X3BhcmFtX25hbWUsIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCiAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICVzOycgJSBqb2lu
X3R5cGVfYW5kX25hbWUob2JqY190eXBlLCBvdXRfcGFyYW1fbmFtZSkpCiAgICAgICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKCVzKScgJSBpbl9wYXJhbV9uYW1lKQpAQCAtMTg5LDYg
KzE5NCwxMSBAQCBjbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAgICAgIGluX3BhcmFtX25hbWUgPSAnaW5fJXMn
ICUgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCiAgICAgICAgICAgICBvYmpjX2luX3BhcmFtX2V4
cHJlc3Npb24gPSAnb3V0XyVzJyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQogICAgICAgICAg
ICAgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICAjIEZJWE1F
OiB3ZSBkb24ndCBoYW5kbGUgb3B0aW9uYWwgZW51bSB2YWx1ZXMgaW4gY29tbWFuZHMgaGVyZSBi
ZWNhdXNlIGl0IGlzbid0IHVzZWQgYW55d2hlcmUgeWV0LgorICAgICAgICAgICAgICAgICMgV2Un
ZCBuZWVkIHRvIGNoYW5nZSB0aGUgZGVsZWdhdGUncyBzaWduYXR1cmUgdG8gdGFrZSBzdGQ6Om9w
dGlvbmFsIGZvciBvcHRpb25hbCBlbnVtIHZhbHVlcy4KKyAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICAgICAgICAgIG9i
amNfaW5fcGFyYW1fZXhwcmVzc2lvbiA9ICclcy52YWx1ZSgpJyAlIG9iamNfaW5fcGFyYW1fZXhw
cmVzc2lvbgorCiAgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKCclczolcycgJSAocGFyYW1l
dGVyLnBhcmFtZXRlcl9uYW1lLCBvYmpjX2luX3BhcmFtX2V4cHJlc3Npb24pKQogICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICBvcHRpb25hbF9leHByZXNzaW9uID0gJyglcyA/ICYl
cyA6IG5pbCknICUgKGluX3BhcmFtX25hbWUsIG9iamNfaW5fcGFyYW1fZXhwcmVzc2lvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CmluZGV4IGVmMjk3YjgwNDQxODgy
M2UxMjcxY2JiNDc2YTM3NjQwY2NjYTNkOWYuLmVhOWU2ZTJkNzc0MThiOTFiZDY4NGYwOTFiNTZl
YmE1Zjc3YzgwN2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19o
ZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQpA
QCAtMTU1LDEyICsxNTUsMTEgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVh
ZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgIGRlZiBfZ2VuZXJhdGVfZW51bV9mcm9t
X3Byb3RvY29sX3N0cmluZyhzZWxmLCBvYmpjX2VudW1fbmFtZSwgZW51bV92YWx1ZXMpOgogICAg
ICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZCgndGVtcGxhdGU8PicpCi0gICAg
ICAgIGxpbmVzLmFwcGVuZCgnaW5saW5lICVzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKScgJSBvYmpjX2VudW1fbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdpbmxp
bmUgc3RkOjpvcHRpb25hbDwlcz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpJyAlIG9iamNfZW51bV9uYW1lKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogICAgICAg
ICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3ZhbHVlczoKICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIGlmICh2YWx1ZSA9PSAiJXMiKScgJSBlbnVtX3ZhbHVlKQogICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiAlcyVzOycgJSAob2JqY19lbnVtX25hbWUsIEdlbmVy
YXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKLSAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7JykKLSAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgcmV0dXJuICVzJXM7JyAlIChvYmpjX2VudW1fbmFtZSwgR2VuZXJhdG9yLnN0
eWxpemVkX25hbWVfZm9yX2VudW1fdmFsdWUoZW51bV92YWx1ZXNbMF0pKSkKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsnKQogICAgICAgICBsaW5lcy5hcHBl
bmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGI1MWZmNTY1ZjQz
ZjJmOWFkOTQ1MzY5NjM4MGZjMzZlYTY3YTUyNTguLjQyOTNlM2JkODRjZjkzNzkzZjcxNWU4MmVi
MTZhMjU1NzMzZWE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9u
c19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNf
aW1wbGVtZW50YXRpb24ucHkKQEAgLTEyNSw3ICsxMjUsOSBAQCBjbGFzcyBPYmpDUHJvdG9jb2xU
eXBlQ29udmVyc2lvbnNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAg
ICAgICAgbGluZXMuYXBwZW5kKCd7JykKICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90
eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOycpCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3Rv
Y29sU3RyaW5nPCVzPihwYXlsb2FkKSk7JyAlIHNlbGYub2JqY19uYW1lX2Zvcl90eXBlKHJlc29s
dmVkX3R5cGUpKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwl
KHR5cGUpcz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8JSh0eXBlKXM+
KHBheWxvYWQpOycgJSB7J3R5cGUnOiBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShyZXNvbHZlZF90
eXBlKX0pCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCIlcyIpOycgJSBkZWNsYXJhdGlvbi50eXBlLnJhd19u
YW1lKCkpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFsdWUgPSBAKHJlc3Vs
dC52YWx1ZSgpKTsnKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzb2x2ZWRfdHlwZSwgKEFy
cmF5VHlwZSwgUHJpbWl0aXZlVHlwZSkpOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
VEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbJXMgY2xhc3NdKTsnICUgb2Jq
Y19jbGFzcykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICpvdXRWYWx1ZSA9ICglcyAq
KXBheWxvYWQ7JyAlIG9iamNfY2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVz
X2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5w
eQppbmRleCA0MjViYWFlNjBmZTMxMDhkNTY4NDE1ZjQ1NzdlMDRhMWQ2ZTQ2ZGE1Li5mZGRkYjNm
OTkzMjMyOWY3NWYyZWVjYmQ5Y2EzZGM5ZTc2YTM0MDc4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3Rv
Y29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkKQEAgLTMwLDcgKzMwLDcgQEAgaW1wb3J0IHN0cmluZwogZnJvbSBzdHJp
bmcgaW1wb3J0IFRlbXBsYXRlCiAKIGZyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIHVj
Zmlyc3QKLWZyb20gbW9kZWxzIGltcG9ydCBPYmplY3RUeXBlLCBGcmFtZXdvcmtzCitmcm9tIG1v
ZGVscyBpbXBvcnQgT2JqZWN0VHlwZSwgRW51bVR5cGUsIEZyYW1ld29ya3MKIGZyb20gb2JqY19n
ZW5lcmF0b3IgaW1wb3J0IE9iakNHZW5lcmF0b3IKIGZyb20gb2JqY19nZW5lcmF0b3JfdGVtcGxh
dGVzIGltcG9ydCBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKIApAQCAt
MTI5LDEzICsxMjksMjMgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihPYmpDR2VuZXJhdG9yKToKIAogICAgICAgICBmb3IgbWVtYmVyIGluIGRlY2xhcmF0
aW9uLnR5cGVfbWVtYmVyczoKICAgICAgICAgICAgIG1lbWJlcl9uYW1lID0gbWVtYmVyLm1lbWJl
cl9uYW1lCi0gICAgICAgICAgICBjb252ZXJzaW9uX2V4cHJlc3Npb24gPSBzZWxmLnBheWxvYWRf
dG9fb2JqY19leHByZXNzaW9uX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKIAogICAg
ICAgICAgICAgaWYgbm90IG1lbWJlci5pc19vcHRpb25hbDoKICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxv
YWRbQCIlcyJdLCBAIiVzIik7JyAlIChtZW1iZXJfbmFtZSwgbWVtYmVyX25hbWUpKQogCisgICAg
ICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9mb3JfbWVtYmVyKGRlY2xhcmF0aW9u
LCBtZW1iZXIpCiAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmll
cl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyX25hbWUpCi0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9u
KSkKKyAgICAgICAgICAgIGNvbnZlcnNpb25fZXhwcmVzc2lvbiA9IHNlbGYucGF5bG9hZF90b19v
YmpjX2V4cHJlc3Npb25fZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKQorICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShtZW1iZXIudHlwZSwgRW51bVR5cGUpOgorICAgICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzID0gJXM7JyAlIChvYmpjX3R5
cGUsIHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQorICAgICAgICAgICAgICAgIGlm
IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoJXMsIEAiJXMiKTsnICUg
KHZhcl9uYW1lLCBtZW1iZXJfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIHNlbGYuJXMgPSAlcy52YWx1ZSgpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICBpZiAoJXMpJyAlIHZhcl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgc2VsZi4lcyA9ICVzLnZhbHVlKCk7JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBzZWxm
LiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9uKSkKICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnJykKIAogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4g
c2VsZjsnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQppbmRleCAyYmU4NDVlNmJl
YTg2NGFhMGIyYWYzYzRkNWRhNzk4M2EyYTEzMTcyLi4yMWUxNzkxNDg3ZjQ4ZmU3ZGZkZjhiZTI1
NjRjNDRlYTg0MWQ5MmI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAt
NDQyLDggKzQ0Miw4IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
aWYgY2F0ZWdvcnkgaW4gW09iakNUeXBlQ2F0ZWdvcnkuU2ltcGxlLCBPYmpDVHlwZUNhdGVnb3J5
LlN0cmluZ106CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJlci50eXBlLCBFbnVtVHlw
ZSk6CiAgICAgICAgICAgICAgICAgaWYgbWVtYmVyLnR5cGUuaXNfYW5vbnltb3VzOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gJ2Zyb21Qcm90b2NvbFN0cmluZzwlcz4oJXMpJyAlIChzZWxm
Lm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZGVjbGFyYXRpb24sIG1l
bWJlciksIHN1Yl9leHByZXNzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3Rv
Y29sU3RyaW5nPCVzPiglcyknICUgKHNlbGYub2JqY19lbnVtX25hbWVfZm9yX25vbl9hbm9ueW1v
dXNfZW51bShtZW1iZXIudHlwZSksIHN1Yl9leHByZXNzaW9uKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gJ2Zyb21Qcm90b2NvbFN0cmluZzwlcz4oJXMpLnZhbHVlKCknICUgKHNlbGYub2Jq
Y19lbnVtX25hbWVfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVy
KSwgc3ViX2V4cHJlc3Npb24pCisgICAgICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9jb2xT
dHJpbmc8JXM+KCVzKS52YWx1ZSgpJyAlIChzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9ub25fYW5v
bnltb3VzX2VudW0obWVtYmVyLnR5cGUpLCBzdWJfZXhwcmVzc2lvbikKICAgICAgICAgICAgIHJl
dHVybiBzdWJfZXhwcmVzc2lvbgogICAgICAgICBpZiBjYXRlZ29yeSBpcyBPYmpDVHlwZUNhdGVn
b3J5Lk9iamVjdDoKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9y
X3R5cGUobWVtYmVyLnR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRv
cl90ZW1wbGF0ZXMucHkKaW5kZXggMjg5Nzk2NWZiYWM4NzIzM2EyZjMyODI4ZGRjMTY1MzFhNTc2
ZWI5OC4uMWMzMGM0MGQ0ODY1NDAxM2UyZDU3NjM0YjViNmNiNDk4NjlkNTkxYiAxMDA3NTUKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtNTUsNyAr
NTUsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsiIiIpCiAKICAgICBUeXBlQ29udmVyc2lvbnNI
ZWFkZXJTdGFuZGFyZCA9ICgKICAgICAiIiJ0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+
Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOyIi
IikKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJQcmVsdWRl
ID0gKAogICAgICIiIiR7aW5jbHVkZXN9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdAppbmRleCBkZjQwY2VhNWQ1NzUyYWEyM2M3NTM0ODUxZDZlMWUyOGMyZGNi
OWExLi4xNzBkNTdjMGFiZjUxZDIxYWYyYzhjZmI4ZmVlMzExOGI4ZDRjYjMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVj
dGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTEwMDYsNyArMTAwNiw3
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlw
ZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFs
PE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwog
CiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFs
dWUpCiB7CkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBU
ZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIp
CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEwMzMsOCArMTAz
Myw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9T
OwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
UGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4
IGMzYThkNGZjOGQ5ODAzZmNlNDkzNjgxNzFjNGRiZGJhZmVjNjZjNWQuLmNkZTY3YWVmODdlYzZl
NzBmNTM5Y2NhMjkyNjAzZDYyMGNjMTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
YXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0xNDI1LDcgKzE0MjUsNyBAQCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5
cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAt
MTQ0Miw3ICsxNDQyLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29s
UGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xNDUyLDggKzE0NTIsNyBAQCBpbmxp
bmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAo
dmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFj
T1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBs
YXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAtMTQ3MCw3ICsx
NDY5LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFy
eUNvbG9ycz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlID09ICJyZWQiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQ
cmltYXJ5Q29sb3JzUmVkOwpAQCAtMTQ3OCw4ICsxNDc3LDcgQEAgaW5saW5lIFRlc3RQcm90b2Nv
bERhdGFiYXNlUHJpbWFyeUNvbG9ycyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dy
ZWVuOwogICAgIGlmICh2YWx1ZSA9PSAiYmx1ZSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnNCbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3IgdmFsdWUpCkBAIC0xNDk3LDcgKzE0OTUsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJu
VgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3I+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lh
biIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbjsKQEAgLTE1MDcsOCArMTUwNSw3IEBAIGlu
bGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG9yIGZyb21Qcm90CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93OwogICAg
IGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrOwotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3IgdmFsdWUpCkBAIC0xNTI2LDcgKzE1MjMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
bgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FM
QXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvcj4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJj
eWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbjsKQEAgLTE1MzYsOCArMTUzMyw3IEBA
IGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzUHJpbnRDb2xvciBmcm9tUHJvCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvclllbGxvdzsK
ICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQmxhY2s7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbjsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3IgdmFsdWUpCkBA
IC0xNTU1LDcgKzE1NTEsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3IgdmFsdQogfQogCiB0ZW1wbGF0
ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3Ig
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvcj4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJj
eWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQ
cmludENvbG9yQ3lhbjsKQEAgLTE1NjUsOCArMTU2MSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJp
bnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yQmxhY2s7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTFN5bmNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlU1FMQXN5bmNQcmludENvbG9yIHZhbHVlKQpAQCAtMTU4NCw3ICsxNTc5LDcgQEAgaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFz
eW5jUHJpbnRDb2xvciB2YWwKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckN5YW47CkBAIC0xNTk0
LDggKzE1ODksNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQ
cmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdAogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yWWVsbG93OwogICAgIGlm
ICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMQXN5bmNQcmludENvbG9yQmxhY2s7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xv
ckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCkBAIC0xNjYxLDcgKzE2NTUsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
KyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3JzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5
bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5
bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KHBheWxv
YWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJQcmltYXJ5Q29sb3JzIik7CisgICAgKm91dFZhbHVlID0g
QChyZXN1bHQudmFsdWUoKSk7CiB9CiAKICsgKHZvaWQpX3BhcnNlQ29sb3JMaXN0OihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVy
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4t
cGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCAxODU2YzAxMjVlNDc1MjFhODA3ODBmMGJmZWIw
NDJlMDRhN2JiYzQ2Li5jM2M4ZDZkMmE0MDZmMmU2MzExNmRjY2YzMjA2OGI2YjgxOGFmNTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC04NzIsMTMgKzg3MiwxMyBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgcgogICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm91dF9z
cWxFcnJvcjsKICAgICBpZiAoaW5fc3FsRXJyb3IpCiAgICAgICAgIG91dF9zcWxFcnJvciA9IFtb
W1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
OmluX3NxbEVycm9yXSBhdXRvcmVsZWFzZV07Ci0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VQcmlt
YXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2Nv
bERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gb3V0X3NjcmVlbkNvbG9yOwogICAgIGlmIChpbl9zY3Jl
ZW5Db2xvcikKICAgICAgICAgb3V0X3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oKmluX3NjcmVlbkNvbG9yKTsKICAgICBO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm91dF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgaWYgKGluX2Fs
dGVybmF0ZUNvbG9ycykKICAgICAgICAgb3V0X2FsdGVybmF0ZUNvbG9ycyA9IG9iamNTdHJpbmdB
cnJheShpbl9hbHRlcm5hdGVDb2xvcnMpOwotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CisgICAgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yPiBvdXRfcHJpbnRDb2xvcjsKICAgICBpZiAoaW5fcHJpbnRDb2xvcikKICAg
ICAgICAgb3V0X3ByaW50Q29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4oKmluX3ByaW50Q29s
b3IpOwogCkBAIC05MjAsMTEgKzkyMCwxMyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZQogICAg
IFJXSVByb3RvY29sSlNPTk9iamVjdCAqb3V0X3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05P
YmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVs
ZWFzZV07CiAgICAgaW50IG91dF9kYXRhYmFzZUlkID0gaW5fZGF0YWJhc2VJZDsKICAgICBUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yICpvdXRfc3FsRXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fc3FsRXJyb3JdIGF1
dG9yZWxlYXNlXTsKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgb3V0X3Nj
cmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFy
eUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBvdXRfc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJp
bmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xvcik7Cisg
ICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShvdXRfc2NyZWVuQ29sb3IsIEAi
c2NyZWVuQ29sb3IiKTsKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm91dF9hbHRlcm5hdGVD
b2xvcnMgPSBvYmpjU3RyaW5nQXJyYXkoJmluX2FsdGVybmF0ZUNvbG9ycyk7Ci0gICAgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIG91dF9w
cmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4oaW5fcHJpbnRDb2xvcik7CisgICAgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3I+IG91dF9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4oaW5fcHJp
bnRDb2xvcik7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShvdXRfcHJp
bnRDb2xvciwgQCJwcmludENvbG9yIik7CiAKLSAgICBbbV9kZWxlZ2F0ZSBleGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjazpzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6b3V0X2NvbHVtbk5hbWVzIG5vdGVzOm91
dF9ub3RlcyB0aW1lc3RhbXA6b3V0X3RpbWVzdGFtcCB2YWx1ZXM6b3V0X3ZhbHVlcyBwYXlsb2Fk
Om91dF9wYXlsb2FkIGRhdGFiYXNlSWQ6b3V0X2RhdGFiYXNlSWQgc3FsRXJyb3I6b3V0X3NxbEVy
cm9yIHNjcmVlbkNvbG9yOm91dF9zY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6b3V0X2FsdGVy
bmF0ZUNvbG9ycyBwcmludENvbG9yOm91dF9wcmludENvbG9yXTsKKyAgICBbbV9kZWxlZ2F0ZSBl
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjazpzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6b3V0X2NvbHVtbk5h
bWVzIG5vdGVzOm91dF9ub3RlcyB0aW1lc3RhbXA6b3V0X3RpbWVzdGFtcCB2YWx1ZXM6b3V0X3Zh
bHVlcyBwYXlsb2FkOm91dF9wYXlsb2FkIGRhdGFiYXNlSWQ6b3V0X2RhdGFiYXNlSWQgc3FsRXJy
b3I6b3V0X3NxbEVycm9yIHNjcmVlbkNvbG9yOm91dF9zY3JlZW5Db2xvci52YWx1ZSgpIGFsdGVy
bmF0ZUNvbG9yczpvdXRfYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6b3V0X3ByaW50Q29sb3Iu
dmFsdWUoKV07CiB9CiAKIApAQCAtMTI4MCw3ICsxMjgyLDcgQEAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEyOTcsNyArMTI5
OSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9y
bSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTMwNyw4ICsxMzA5LDcgQEAgaW5saW5lIFRlc3RQcm90
b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJt
YWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKQEAgLTEzMjUsNyArMTMyNiw3IEBAIGlu
bGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFz
ZVByaW1hcnlDb2xvcnMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9
PSAicmVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
c1JlZDsKQEAgLTEzMzMsOCArMTMzNCw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVBy
aW1hcnlDb2xvcnMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjsKICAgICBp
ZiAodmFsdWUgPT0gImJsdWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQ
cmltYXJ5Q29sb3JzQmx1ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIHZhbHVlKQpAQCAt
MTM1Miw3ICsxMzUyLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1AKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CkBA
IC0xMzYyLDggKzEzNjIsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdAogICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JC
bGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3IgdmFsdWUpCkBAIC0xMzgxLDcgKzEzODAsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUAog
fQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yQ3lhbjsKQEAgLTEzOTEsOCArMTM5MCw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0
CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yQ3lhbjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQxMCw3ICsxNDA4LDcgQEAgaW5saW5lIFN0cmlu
ZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzUHIKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikK
ICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvckN5YW47CkBAIC0xNDIwLDggKzE0MTgsNyBAQCBpbmxpbmUgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Q
cm90b2NvbFN0cgogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxh
Y2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
UHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTE0MzksNyArMTQzNiw3IEBAIGlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVyc1ByCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAi
Y3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAtMTQ0OSw4ICsxNDQ2LDcgQEAgaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ciBmcm9tUHJvdG9jb2xTdHIKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUg
PT0gImJsYWNrIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtMTUxNiw3ICsxNTEyLDkgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlUHJpbWFyeUNvbG9yczooTlNOdW1iZXIgKiop
b3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1ZSA9
IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmlt
YXJ5Q29sb3JzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5n
PFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4ocGF5bG9hZCk7CisgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiUHJpbWFyeUNvbG9ycyIpOwor
ICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiArICh2b2lkKV9wYXJzZUNv
bG9yTGlzdDooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihp
ZClwYXlsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CmluZGV4IDZlZWJkZmYzMmQzN2ZmY2NhNzUzM2NhNWJkODJjMWQ3MjdiYWRlMmIuLmQ5
Y2VjOWM2MTJjODYyNTg5YWQ2ZDA0NTk4YzA0NTM0MWNkNjk5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03NDIsNyArNzQyLDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0pIHsKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1P
YmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3Rk
OjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBs
YXRmb3JtIHZhbHVlKQogewpAQCAtNzU5LDcgKzc1OSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8Pgot
aW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9
PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtNzY5
LDggKzc2OSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRm
b3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZh
aWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJl
c3VsdAppbmRleCBjM2ExNDNlZmExZDhkOWFlM2ZhNGJhOTUwZDMzMmE2ODBjYThlYjQ3Li4wYzRj
MzA0OTlmYTYyODczMjdlNjIzYTcxYjBhNGJmNGI4NmY5ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9k
b21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFi
aWxpdHkuanNvbi1yZXN1bHQKQEAgLTk5Niw3ICs5OTYsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlw
ZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3Ry
aW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC0x
MDEzLDcgKzEwMTMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQ
bGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBz
dGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEwMjMsOCArMTAyMyw3IEBAIGlubGlu
ZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2
YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNP
UzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxh
dGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5k
LXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uLXJlc3VsdAppbmRleCAxM2VhY2MzYjFhM2Y2NGU3NGY0NzJiMjllMDU4NzQ1MGI1
M2IxZmRhLi5lOWFmYzJhMThiZjY3ODlkYTg2ZjQ5ZjA1ZTBiNGNmY2FiMTRjYjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1
bHQKQEAgLTEyNTksNyArMTI1OSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQ
cm90b2NvbFBsYXRmb3JtKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEyNzYsNyArMTI3Niw3
IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2
YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTI4Niw4ICsxMjg2LDcgQEAgaW5saW5lIFRlc3RQcm90b2Nv
bFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNv
cyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFs
dWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggMTg0
ZmRhNjJmZGJlZjIwOGE2ZDIwNjc5NThhOGU1ZGI5NWMzNjVlYS4uZDJhMDFjODRlY2Y1OWFiMTcx
ZDdkMmEzMWI1YzYwZWRjYTVjM2UzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzksNyAr
MTAzOSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNF
bnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9w
dGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZv
cm0gdmFsdWUpCiB7CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
ImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEwNjYs
OCArMTA2Niw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRm
b3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogCkBAIC0xMDg2LDcgKzEwODUsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmco
VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFR5cGVEb21haW5F
bnVtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gInNoYXJlZCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUeXBlRG9tYWlu
RW51bVNoYXJlZDsKQEAgLTEwOTYsOCArMTA5NSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xUeXBl
RG9tYWluRW51bSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtR3JlZW47CiAgICAgaWYgKHZhbHVl
ID09ICJibHVlIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtQmx1
ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sVHlw
ZURvbWFpbkVudW1TaGFyZWQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xMTU0LDcgKzExNTIsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VUeXBlRG9tYWluRW51bTooTlNOdW1iZXIgKiopb3V0
VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1ZSA9IEAo
SW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+
KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVt
PiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUeXBl
RG9tYWluRW51bT4ocGF5bG9hZCk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9W
QUxVRShyZXN1bHQsIEAiVHlwZURvbWFpbkVudW0iKTsKKyAgICAqb3V0VmFsdWUgPSBAKHJlc3Vs
dC52YWx1ZSgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0
aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZWUxOWJmM2FiMzZjNTNhNmU1N2M5OTYzYTRj
YjNkOWVkYTY5MjhkZC4uMTM3ZDE4MjdlM2ViYzIyMGZlMDU3OGYxZTU5OTZmMWY4YjQzYTljYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVz
dWx0CkBAIC05OTIsNyArOTkyLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0Vu
dW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEwMDksNyArMTAwOSw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
UGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
QWxsOwpAQCAtMTAxOSw4ICsxMDE5LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0
aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0
aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCAzMzg4M2U3NDBhMjJlMmVkNTIxNmNl
ZjNhZDlkMmE0MDRiZmVkMjY4Li45ZWViMGIxYzliNzFiNTU3MjU2Y2Y3M2RmZmNlZDhkZThlMjJm
NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFy
ZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUt
Z3VhcmRzLmpzb24tcmVzdWx0CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTA1MCw3ICsx
MDUwLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRm
b3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMDYwLDggKzEwNjAsNyBAQCBpbmxpbmUgVGVzdFBy
b3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0g
Im1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxs
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2Ft
ZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUt
aWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRleCA2ZDMyMjdkM2MxMDQyNjMxNzI3
ZjIxNjc2ZDQxMzgzNThmYTJjY2Q2Li5kNjUxMjllYjgwZWVhMTc2NzI5ZGFkZTQ3MzdhZjNlZDEy
NDk3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29u
LXJlc3VsdApAQCAtNzUyLDcgKzc1Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRl
c3RQcm90b2NvbFBsYXRmb3JtKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTc2OSw3ICs3Njks
NyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0g
dmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTc3OSw4ICs3NzksNyBAQCBpbmxpbmUgVGVzdFByb3RvY29s
UGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29z
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQt
b3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDc1MWVmNzMxMGZhYjgxOWIyNWI1ZTc1
MGRmMTAxMjA0NmFmM2M3NDQuLmI3ZWZmMWIxNTc4NTUyYTQyYWEzZGZhNmZmMThjNjU3YTVhYjg4
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1y
ZXN1bHQKQEAgLTg4OSw3ICs4ODksNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVm
YXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpD
RW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRl
c3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtOTA2LDcgKzkwNiw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
UGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
QWxsOwpAQCAtOTE2LDggKzkxNiw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogCkBAIC05MzQsNyArOTMzLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSB2YWx1ZSkKIH0KIAogdGVt
cGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQ
cm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJudWxsIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZU51bGw7CkBAIC05NDIsOCArOTQxLDcgQEAgaW5s
aW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQ
YXRoVHlwZVN0cmluZzsKICAgICBpZiAodmFsdWUgPT0gImFycmF5IikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZUFycmF5OwotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVOdWxsOwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpA
QCAtMTA1Nyw3ICsxMDU1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICAgICAg
cmV0dXJuIG5pbDsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFko
cGF5bG9hZFtAInR5cGUiXSwgQCJ0eXBlIik7Ci0gICAgc2VsZi50eXBlID0gZnJvbVByb3RvY29s
U3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4ocGF5bG9hZFtAInR5cGUiXSk7
CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+IHR5cGUg
PSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPihwYXls
b2FkW0AidHlwZSJdKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHR5
cGUsIEAidHlwZSIpOworICAgIHNlbGYudHlwZSA9IHR5cGUudmFsdWUoKTsKIAogICAgIHNlbGYu
c3RyaW5nID0gcGF5bG9hZFtAInN0cmluZyJdOwogCkBAIC0xMDkwLDcgKzEwOTAsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5
cGUpdHlwZQogewotICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVu
dGltZUtleVBhdGhUeXBlPihbc3VwZXIgc3RyaW5nRm9yS2V5OkAidHlwZSJdKTsKKyAgICByZXR1
cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oW3N1
cGVyIHN0cmluZ0ZvcktleTpAInR5cGUiXSkudmFsdWUoKTsKIH0KIAogLSAodm9pZClzZXRTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggN2U5ODQzNDRmODcz
NjZmZjI5MTZkNTdjODk1MWQzMjY2NTk3MTMxOC4uNmVjZTQzZDljYzM1MTczMjA5ZGEwNGYxN2Y1
MDdjMjA5NWI3YTQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2Vk
LXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdApAQCAtNzQ3LDcgKzc0Nyw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0Vu
dW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0
aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9y
bSB2YWx1ZSkKIHsKQEAgLTc2NCw3ICs3NjQsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFs
bCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTc3NCw4ICs3
NzQsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlP
UzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRl
c3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDJm
ODExNjgzYzA4MDk3NzEwNmM3ZDMxYjM4ZDMyYjM4NzhhMzU0MDkuLmQyYTYyYzlmZjdjY2NmNjI2
OTJkZTdmM2EzODhiZGJmYjA5YzU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFy
cmF5LXR5cGUuanNvbi1yZXN1bHQKQEAgLTgzMCw3ICs4MzAsNyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbikgewogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9i
akNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBp
bmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUp
CiB7CkBAIC04NDcsNyArODQ3LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRl
c3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFBy
b3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC04NTcsOCArODU3LDcgQEAg
aW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAg
aWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9y
bU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9j
b2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKQEAgLTg3NSw3
ICs4NzQsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGVi
dWdnZXJSZWFzb24gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xE
ZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIkRpZWQi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25EaWVkOwpAQCAtODgz
LDggKzg4Miw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bERlYnVnZ2VyUmVhc29uRmFpbnRlZDsKICAgICBpZiAodmFsdWUgPT0gIkh1bmdyeSIpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkh1bmdyeTsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25EaWVk
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAtOTYwLDcgKzk1OCw5IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVJlYXNvbjooTlNOdW1iZXIg
Kiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJ
T05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1
ZSA9IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGVidWdnZXJS
ZWFzb24+KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERlYnVnZ2Vy
UmVhc29uPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xEZWJ1Z2dlclJlYXNvbj4ocGF5bG9hZCk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURf
RU5VTV9WQUxVRShyZXN1bHQsIEAiUmVhc29uIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQu
dmFsdWUoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
ZW51bS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUu
anNvbi1yZXN1bHQKaW5kZXggY2M1MTAzM2Q2NWQzMTgxYzJiMjk1YTliNzM4MWU4NDdjYjgyNjA4
NC4uYTFjZmNmNTRiYWY1NGQwM2RmMWUyZjE1NGRhNTZmMGJmZjY0ZThlZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAgLTg1OCw3ICs4NTgsNyBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2Vk
QW5pbWFscykgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9i
akNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmco
VGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC04NzUsNyArODc1LDcgQEAgaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQog
CiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9j
b2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZv
cm1BbGw7CkBAIC04ODUsOCArODg1LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiAKQEAgLTkwNSw3ICs5MDQsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzIHZhbHVlKQogfQogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVz
dFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIlBpZ3MiKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzUGlnczsKQEAgLTkxNSw4ICs5MTQsNyBAQCBp
bmxpbmUgVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUZh
cm1BbmltYWxzQ2F0czsKICAgICBpZiAodmFsdWUgPT0gIkhlbnMiKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzSGVuczsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzUGlnczsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgdmFsdWUpCkBAIC05MzQsNyAr
OTMyLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRp
bWVUd29MZWdnZWRBbmltYWxzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFBy
b3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lVHdv
TGVnZ2VkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlID09ICJEdWNrcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xS
dW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1Y2tzOwpAQCAtOTQ0LDggKzk0Miw3IEBAIGlubGluZSBU
ZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVn
Z2VkQW5pbWFsc0Nyb3dzOwogICAgIGlmICh2YWx1ZSA9PSAiRmxhbWluZ29zIikKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRmxhbWluZ29zOwotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdv
TGVnZ2VkQW5pbWFsc0R1Y2tzOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtMTAwMywxMyArMTAwMCwxNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VGYXJtQW5pbWFsczooTlNOdW1iZXIgKiopb3V0
VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1ZSA9IEAo
SW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZUZhcm1Bbmlt
YWxzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lRmFy
bUFuaW1hbHM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4ocGF5bG9hZCk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiRmFybUFuaW1hbHMiKTsKKyAgICAqb3V0VmFsdWUg
PSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogKyAodm9pZClfcGFyc2VUd29MZWdnZWRBbmltYWxz
OihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0g
ICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4ocGF5bG9hZCkpOworICAgIHN0ZDo6b3B0aW9uYWw8
VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPihw
YXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwg
QCJUd29MZWdnZWRBbmltYWxzIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5
cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24t
cmVzdWx0CmluZGV4IDViOGM3NmUzMDBiNzRjNmEyZGNmZjhhM2QzYzgwZGU4N2YxMGQxYmQuLjFi
MjNhYjJhOTc2YmIwZWRlYWEzMWU3NjExYWQ4MGVkNThiNTI1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApAQCAtMTI4Myw3ICsxMjgzLDcg
QEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBl
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8
T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAK
IGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1
ZSkKIHsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmlu
ZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRl
c3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikK
ICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTMxMCw4ICsxMzEw
LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7
CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQ
bGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0
UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IDhk
NDlkZTUwNGM3MjJmMWQ5Nzc3NGRiNTk1YzA3NGU5ZDEyODgzYjEuLjg5MzY5Mjk4Mjc0NTFjNTM2
M2FjZWZlY2UyOTJlZjRlMTViNjcwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVu
dGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtMTIxMiw3ICsxMjEyLDcgQEAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEyMjks
NyArMTIyOSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQ
bGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRm
b3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTIzOSw4ICsxMjM5LDcgQEAgaW5saW5lIFRl
c3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVl
ID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9y
bUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKQEAgLTEyNTksNyArMTI1OCw3
IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUZXN0VW5jYXN0
ZWRBbmltYWxzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sVGVz
dFVuY2FzdGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+IGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9
PSAiUGlncyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxz
UGlnczsKQEAgLTEyNjksOCArMTI2OCw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0
ZWRBbmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0NhdHM7CiAgICAgaWYgKHZh
bHVlID09ICJIZW5zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFu
aW1hbHNIZW5zOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJv
dG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzUGlnczsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHMgdmFsdWUpCkBAIC0xMjg4LDcgKzEyODYsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMgdmFsdWUpCiB9CiAKIHRl
bXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQ
cm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIkR1Y2tzIikKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3M7CkBAIC0xMjk4LDggKzEyOTYsNyBAQCBp
bmxpbmUgVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVk
QW5pbWFsc0Nyb3dzOwogICAgIGlmICh2YWx1ZSA9PSAiRmxhbWluZ29zIikKICAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRmxhbWluZ29zOwotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0R1
Y2tzOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpAQCAtMTM4MCwxMyArMTM3NywxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
KyAodm9pZClfcGFyc2VVbmNhc3RlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21Q
YXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShw
YXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+KHBheWxv
YWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+
IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RV
bmNhc3RlZEFuaW1hbHM+KHBheWxvYWQpOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VO
VU1fVkFMVUUocmVzdWx0LCBAIlVuY2FzdGVkQW5pbWFscyIpOworICAgICpvdXRWYWx1ZSA9IEAo
cmVzdWx0LnZhbHVlKCkpOwogfQogCiArICh2b2lkKV9wYXJzZUNhc3RlZEFuaW1hbHM6KE5TTnVt
YmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICAqb3V0
VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RD
YXN0ZWRBbmltYWxzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xU
ZXN0Q2FzdGVkQW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KHBheWxvYWQpOworICAgIFRIUk9XX0VYQ0VQ
VElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIkNhc3RlZEFuaW1hbHMiKTsKKyAgICAq
b3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogKyAodm9pZClfcGFyc2VSZWN1cnNp
dmVPYmplY3QxOihUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKilvdXRWYWx1ZSBm
cm9tUGF5bG9hZDooaWQpcGF5bG9hZApAQCAtMTQ2MSw3ICsxNDYyLDkgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKICAgICBzZWxmLm51bWJlciA9IFtwYXlsb2FkW0AibnVtYmVyIl0gaW50
ZWdlclZhbHVlXTsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFko
cGF5bG9hZFtAImFuaW1hbHMiXSwgQCJhbmltYWxzIik7Ci0gICAgc2VsZi5hbmltYWxzID0gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihwYXlsb2FkW0Ai
YW5pbWFscyJdKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzPiBhbmltYWxzID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRB
bmltYWxzPihwYXlsb2FkW0AiYW5pbWFscyJdKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9FTlVNX1ZBTFVFKGFuaW1hbHMsIEAiYW5pbWFscyIpOworICAgIHNlbGYuYW5pbWFscyA9IGFu
aW1hbHMudmFsdWUoKTsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVS
VFkocGF5bG9hZFtAImlkIl0sIEAiaWQiKTsKICAgICBzZWxmLmlkZW50aWZpZXIgPSBbcGF5bG9h
ZFtAImlkIl0gaW50ZWdlclZhbHVlXTsKQEAgLTE1MjMsNyArMTUyNiw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIC0gKFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1h
bHMKIHsKLSAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0
ZWRBbmltYWxzPihbc3VwZXIgc3RyaW5nRm9yS2V5OkAiYW5pbWFscyJdKTsKKyAgICByZXR1cm4g
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihbc3VwZXIg
c3RyaW5nRm9yS2V5OkAiYW5pbWFscyJdKS52YWx1ZSgpOwogfQogCiAtICh2b2lkKXNldElkZW50
aWZpZXI6KGludClpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVk
LWRvbWFpbnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNv
bi1yZXN1bHQKaW5kZXggZjlhNWRiNTFmMWU2MjM3YjkxNTBmNGQ1NzkyNWIyYTNkY2RhYjFjMS4u
YmI0ZGMyMjEzOWRhNGFkZTFiODhlMDNlNWU2MDExZjE0NmMxMGIwZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvd29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtl
ci1zdXBwb3J0ZWQtZG9tYWlucy5qc29uLXJlc3VsdApAQCAtOTk3LDcgKzk5Nyw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1U
eXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9u
YWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2
YWx1ZSkKIHsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0
cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxs
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTAyNCw4ICsx
MDI0LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1J
T1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0CmluZGV4IDZlZWJkZmYzMmQzN2ZmY2NhNzUzM2NhNWJkODJjMWQ3MjdiYWRl
MmIuLmQ5Y2VjOWM2MTJjODYyNTg5YWQ2ZDA0NTk4YzA0NTM0MWNkNjk5ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2lvcy9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzQyLDcgKzc0Miw3IEBA
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2Jq
Q0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6
b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0
Zm9ybSB2YWx1ZSkKIHsKQEAgLTc1OSw3ICs3NTksNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
ImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTc2OSw4
ICs3NjksNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9y
bUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRo
LW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQKaW5kZXggZGY0MGNlYTVkNTc1MmFhMjNjNzUzNDg1MWQ2ZTFlMjhjMmRj
YjlhMS4uMTcwZDU3YzBhYmY1MWQyMWFmMmM4Y2ZiOGZlZTMxMThiOGQ0Y2IzMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBl
Y3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC0xMDA2LDcgKzEwMDYs
NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5
cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25h
bDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsK
IAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZh
bHVlKQogewpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3Ry
aW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUg
VGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMDMzLDggKzEw
MzMsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlP
UzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRl
c3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301223</attachid>
            <date>2017-02-10 17:37:30 -0800</date>
            <delta_ts>2017-02-15 11:22:45 -0800</delta_ts>
            <desc>Proposed Fix (rebased)</desc>
            <filename>bug-168018-20170210173503.patch</filename>
            <type>text/plain</type>
            <size>55104</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NDNlNDJhZDA3YTMwMzc5MDhkNTRmNDc1YjAxN2EwODQ0MmIzN2U4Li42MTkzNjczODhkMGI3Yzc1
NTk1MTFkZDZmNTkwNGE5ZmFmNDZlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0wMi0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFQ+IHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxUPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MDE4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDQ2ODc3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHBhcnNlIHVudHJ1c3RlZCBzdHJpbmcgaW5wdXRzLCBzbyB0
aGV5IHNob3VsZCByZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZAorICAgICAgICBvZiBhc3NlcnRp
bmcgb3IgY3Jhc2hpbmcgd2hlbiB0aGUgaW5wdXQgaXMgbm90IHVzYWJsZS4KKworICAgICAgICBV
cGRhdGUgdmFyaW91cyBwaWVjZXMgb2YgZ2VuZXJhdGVkIGNvZGUgdG8gaGFuZGxlIHRoZSBlcnJv
ciBjYXNlIGdyYWNlZnVsbHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAg
ICAgICAoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVy
YXRlX2NvbnZlcnNpb25zX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbnZvY2F0aW9uX2Zvcl9jb21t
YW5kKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9iakMtZnJpZW5k
bHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAorICAgICAgICB3
aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNfRU5VTSB2YWx1
ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90IG9wdGlvbmFs
LCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdmFsdWUgaXMgbnVsbG9wdC4KKworICAg
ICAgICBUaGUgb3B0aW9uYWwgZW51bSBwYXJhbWV0ZXIgY2FzZSBpcyBub3QgaGFuZGxlZCBjb3Jy
ZWN0bHksIGJ1dCBubyBleGlzdGluZyBjb2RlIHJlcXVpcmVzIGl0LgorCisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVy
c2lvbnNfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVh
ZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKToKKyAgICAg
ICAgRml4IHNpZ25hdHVyZSBhbmQgcmVtb3ZlIGRlZmF1bHQgY2FzZSBBU1NFUlRfTk9UX1JFQUNI
RUQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
cHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9i
akNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV90eXBlX2ZhY3RvcnlfbWV0aG9kX2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgU2luY2UgdGhp
cyBjb2RlIGFzc3VtZXMgYWxsIGlucHV0cyB0byBiZSB2YWxpZCBhbmQgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBvdGhlcndpc2UsIHdlCisgICAgICAgIHRyeSB0byBjb252ZXJ0IHRoZSBlbnVtIGFuZCB0
aHJvdyBhbiBleGNlcHRpb24gaWYgaXQncyBudWxsb3B0LiBJZiBpdCdzIHZhbGlkLCB3cml0ZSB0
byBvdXRWYWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNQ
cm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2luaXRfbWV0aG9k
X2Zvcl9wYXlsb2FkKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9i
akMtZnJpZW5kbHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAor
ICAgICAgICB3aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNf
RU5VTSB2YWx1ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90
IG9wdGlvbmFsLCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdmFsdWUgaXMgbnVsbG9w
dC4gT3RoZXJ3aXNlLCBhbGxvdyBpdCB0byBiZSBlbXB0eS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJh
dG9yLnByb3RvY29sX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAgVW5j
b25kaXRpb25hbGx5IHVud3JhcCB0aGUgb3B0aW9uYWwuIFRoaXMgZXhwcmVzc2lvbiBpcyBvbmx5
IHVzZWQgaW5zaWRlIHRoZSB0eXBlY2hlY2tlZAorICAgICAgICBPYmpDIHByb3RvY29sIG9iamVj
dHMuIEluIHRoaXMgY2FzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGFscmVhZHkgaW5pdGlh
bGl6ZWQgdGhlIGVudW0gd2l0aCBhIHZhbGlkCisgICAgICAgIHZhbHVlLCBidXQgbXVzdCBzdG9y
ZSBpdCBhcyBhIHN0cmluZyBpbnNpZGUgYSB3cmFwcGVkIEluc3BlY3Rvck9iamVjdC4gVGhlIGdl
dHRlciBuZWVkcyB0bworICAgICAgICByZS1jb252ZXJ0IHRoZSBzdG9yZWQgc3RyaW5nIGludG8g
YW4gTlNfRU5VTSB2YWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICBVcGRhdGUgdHlwZSB0ZW1wbGF0
ZSBmb3IgZnJvbVByb3RvY29sU3RyaW5nPFQ+KCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMt
d2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2
ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJy
YXktdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4KKwogMjAxNy0wMi0wNyAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2lnaWxsQ3Jhc2hBbmFseXplcjo6YW5hbHl6
ZSgpIHNob3VsZCB1c2UgYSBkby13aGlsZSBsb29wIGluc3RlYWQgb2YgYSBsYW1iZGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDY5MzhjYTNlNzRhZGI0
ODY0YmNkYmVkMmIxMGU3ODZmZWQ2OGRjYTkuLjcwYTkwNjM1N2NiYjc2NjM1ZjEyNGJlMzMxZGNh
YmY4OTM4YmQwYjcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
CkBAIC0xNjgsMTAgKzE2OCwxNiBAQCBjbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAgICAgIGluX3BhcmFtX25h
bWUgPSAnaW5fJXMnICUgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCiAgICAgICAgICAgICBvYmpj
X2luX3BhcmFtX25hbWUgPSAnb18lcycgJSBpbl9wYXJhbV9uYW1lCiAgICAgICAgICAgICBvYmpj
X3R5cGUgPSBzZWxmLm9iamNfdHlwZV9mb3JfcGFyYW0oZG9tYWluLCBjb21tYW5kLmNvbW1hbmRf
bmFtZSwgcGFyYW1ldGVyLCBGYWxzZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1l
dGVyLnR5cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgICAgICBvYmpjX3R5cGUgPSAnc3RkOjpv
cHRpb25hbDwlcz4nICUgb2JqY190eXBlCiAgICAgICAgICAgICBwYXJhbV9leHByZXNzaW9uID0g
aW5fcGFyYW1fZXhwcmVzc2lvbihpbl9wYXJhbV9uYW1lLCBwYXJhbWV0ZXIpCiAgICAgICAgICAg
ICBpbXBvcnRfZXhwcmVzc2lvbiA9IHNlbGYub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lv
bl9mb3JfcGFyYW1ldGVyKHBhcmFtX2V4cHJlc3Npb24sIGRvbWFpbiwgY29tbWFuZC5jb21tYW5k
X25hbWUsIHBhcmFtZXRlcikKICAgICAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXIuaXNfb3B0aW9u
YWw6CiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgJXMgPSAlczsnICUgKGpvaW5f
dHlwZV9hbmRfbmFtZShvYmpjX3R5cGUsIG9iamNfaW5fcGFyYW1fbmFtZSksIGltcG9ydF9leHBy
ZXNzaW9uKSkKKworICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUs
IEVudW1UeXBlKToKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRSglcywgQCIlcyIpOycgJSAob2JqY19pbl9wYXJh
bV9uYW1lLCBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQorCiAgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICVzOycgJSBqb2luX3R5cGVfYW5kX25h
bWUob2JqY190eXBlLCBvYmpjX2luX3BhcmFtX25hbWUpKQogICAgICAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgIGlmICglcyknICUgaW5fcGFyYW1fbmFtZSkKQEAgLTE4NywxMCArMTkzLDE1
IEBAIGNsYXNzIE9iakNCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9i
akNHZW5lcmF0b3IpOgogICAgICAgICBwYWlycy5hcHBlbmQoJ3N1Y2Nlc3NDYWxsYmFjazpzdWNj
ZXNzQ2FsbGJhY2snKQogICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQuY2FsbF9wYXJh
bWV0ZXJzOgogICAgICAgICAgICAgaW5fcGFyYW1fbmFtZSA9ICdpbl8lcycgJSBwYXJhbWV0ZXIu
cGFyYW1ldGVyX25hbWUKLSAgICAgICAgICAgIG9iamNfaW5fcGFyYW1fbmFtZSA9ICdvXyVzJyAl
IGluX3BhcmFtX25hbWUKKyAgICAgICAgICAgIG9iamNfaW5fcGFyYW1fZXhwcmVzc2lvbiA9ICdv
XyVzJyAlIGluX3BhcmFtX25hbWUKICAgICAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXIuaXNfb3B0
aW9uYWw6Ci0gICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKCclczolcycgJSAocGFyYW1ldGVy
LnBhcmFtZXRlcl9uYW1lLCBvYmpjX2luX3BhcmFtX25hbWUpKQorICAgICAgICAgICAgICAgICMg
RklYTUU6IHdlIGRvbid0IGhhbmRsZSBvcHRpb25hbCBlbnVtIHZhbHVlcyBpbiBjb21tYW5kcyBo
ZXJlIGJlY2F1c2UgaXQgaXNuJ3QgdXNlZCBhbnl3aGVyZSB5ZXQuCisgICAgICAgICAgICAgICAg
IyBXZSdkIG5lZWQgdG8gY2hhbmdlIHRoZSBkZWxlZ2F0ZSdzIHNpZ25hdHVyZSB0byB0YWtlIHN0
ZDo6b3B0aW9uYWwgZm9yIG9wdGlvbmFsIGVudW0gdmFsdWVzLgorICAgICAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgICAgICAg
ICAgb2JqY19pbl9wYXJhbV9leHByZXNzaW9uID0gJyVzLnZhbHVlKCknICUgb2JqY19pbl9wYXJh
bV9leHByZXNzaW9uCisKKyAgICAgICAgICAgICAgICBwYWlycy5hcHBlbmQoJyVzOiVzJyAlIChw
YXJhbWV0ZXIucGFyYW1ldGVyX25hbWUsIG9iamNfaW5fcGFyYW1fZXhwcmVzc2lvbikpCiAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9wdGlvbmFsX2V4cHJlc3Npb24gPSAnKCVz
ID8gJiVzIDogbmlsKScgJSAoaW5fcGFyYW1fbmFtZSwgb2JqY19pbl9wYXJhbV9uYW1lKQorICAg
ICAgICAgICAgICAgIG9wdGlvbmFsX2V4cHJlc3Npb24gPSAnKCVzID8gJiVzIDogbmlsKScgJSAo
aW5fcGFyYW1fbmFtZSwgb2JqY19pbl9wYXJhbV9leHByZXNzaW9uKQogICAgICAgICAgICAgICAg
IHBhaXJzLmFwcGVuZCgnJXM6JXMnICUgKHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwgb3B0aW9u
YWxfZXhwcmVzc2lvbikpCiAgICAgICAgIHJldHVybiAnICAgIFttX2RlbGVnYXRlICVzJXNdOycg
JSAoY29tbWFuZC5jb21tYW5kX25hbWUsICcgJy5qb2luKHBhaXJzKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5
cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CmluZGV4IDk3ZmUwYTU5NGEyZDA1YmFlNTcwMTU3MmI5
ZTc4MjhjNzE1NGY2OGEuLmM5ODQxMmY3MzJmYzIyZWQzMjUxYTU3MjAzYzgzMmU1Mzg1N2JmN2Yg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQpAQCAtMTQ2LDEyICsx
NDYsMTEgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9y
KE9iakNHZW5lcmF0b3IpOgogICAgIGRlZiBfZ2VuZXJhdGVfZW51bV9mcm9tX3Byb3RvY29sX3N0
cmluZyhzZWxmLCBvYmpjX2VudW1fbmFtZSwgZW51bV92YWx1ZXMpOgogICAgICAgICBsaW5lcyA9
IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZCgndGVtcGxhdGU8PicpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnaW5saW5lICVzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKScg
JSBvYmpjX2VudW1fbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdpbmxpbmUgc3RkOjpvcHRp
b25hbDwlcz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpJyAlIG9iamNf
ZW51bV9uYW1lKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogICAgICAgICBmb3IgZW51bV92
YWx1ZSBpbiBlbnVtX3ZhbHVlczoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICh2
YWx1ZSA9PSAiJXMiKScgJSBlbnVtX3ZhbHVlKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgICAgIHJldHVybiAlcyVzOycgJSAob2JqY19lbnVtX25hbWUsIEdlbmVyYXRvci5zdHlsaXpl
ZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKLSAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
cmV0dXJuICVzJXM7JyAlIChvYmpjX2VudW1fbmFtZSwgR2VuZXJhdG9yLnN0eWxpemVkX25hbWVf
Zm9yX2VudW1fdmFsdWUoZW51bV92YWx1ZXNbMF0pKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAg
ICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90
eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2Nv
bnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGI1MWZmNTY1ZjQzZjJmOWFkOTQ1MzY5
NjM4MGZjMzZlYTY3YTUyNTguLjQyOTNlM2JkODRjZjkzNzkzZjcxNWU4MmViMTZhMjU1NzMzZWE5
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRh
dGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRp
b24ucHkKQEAgLTEyNSw3ICsxMjUsOSBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlQ29udmVyc2lv
bnNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd7JykKICAgICAgICAgaWYgaXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCBFbnVtVHlw
ZSk6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOycpCi0gICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPCVz
PihwYXlsb2FkKSk7JyAlIHNlbGYub2JqY19uYW1lX2Zvcl90eXBlKHJlc29sdmVkX3R5cGUpKQor
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlKHR5cGUpcz4gcmVz
dWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8JSh0eXBlKXM+KHBheWxvYWQpOycg
JSB7J3R5cGUnOiBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShyZXNvbHZlZF90eXBlKX0pCisgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZB
TFVFKHJlc3VsdCwgQCIlcyIpOycgJSBkZWNsYXJhdGlvbi50eXBlLnJhd19uYW1lKCkpCisgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsn
KQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzb2x2ZWRfdHlwZSwgKEFycmF5VHlwZSwgUHJp
bWl0aXZlVHlwZSkpOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbJXMgY2xhc3NdKTsnICUgb2JqY19jbGFzcykKICAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICpvdXRWYWx1ZSA9ICglcyAqKXBheWxvYWQ7JyAl
IG9iamNfY2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0
aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRleCBjZTlh
ZTM0OTlhMjY3MjY4MTM0ODA3NzVlNWZjZjUyNjg4NzgzMDdiLi5hMzE5Yzk0ZDdjMzNjOTFkNjAy
ZDFkM2Y0NTZmNDNmNzNiOWYzMTk1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24u
cHkKQEAgLTMwLDcgKzMwLDcgQEAgaW1wb3J0IHN0cmluZwogZnJvbSBzdHJpbmcgaW1wb3J0IFRl
bXBsYXRlCiAKIGZyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIHVjZmlyc3QKLWZyb20g
bW9kZWxzIGltcG9ydCBPYmplY3RUeXBlLCBGcmFtZXdvcmtzCitmcm9tIG1vZGVscyBpbXBvcnQg
T2JqZWN0VHlwZSwgRW51bVR5cGUsIEZyYW1ld29ya3MKIGZyb20gb2JqY19nZW5lcmF0b3IgaW1w
b3J0IE9iakNHZW5lcmF0b3IKIGZyb20gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9ydCBP
YmpDR2VuZXJhdG9yVGVtcGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKIApAQCAtMTI4LDExICsxMjgs
MjUgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpD
R2VuZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAgICAgICAgIGZvciBtZW1i
ZXIgaW4gZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzOgotICAgICAgICAgICAgdmFyX25hbWUgPSBP
YmpDR2VuZXJhdG9yLmlkZW50aWZpZXJfdG9fb2JqY19pZGVudGlmaWVyKG1lbWJlci5tZW1iZXJf
bmFtZSkKKyAgICAgICAgICAgIG1lbWJlcl9uYW1lID0gbWVtYmVyLm1lbWJlcl9uYW1lCisKICAg
ICAgICAgICAgIGlmIG5vdCBtZW1iZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXls
b2FkW0AiJXMiXSwgQCIlcyIpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKKyAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BF
UlRZKHBheWxvYWRbQCIlcyJdLCBAIiVzIik7JyAlIChtZW1iZXJfbmFtZSwgbWVtYmVyX25hbWUp
KQorCisgICAgICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9mb3JfbWVtYmVyKGRl
Y2xhcmF0aW9uLCBtZW1iZXIpCisgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3Iu
aWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyX25hbWUpCiAgICAgICAgICAgICBj
b252ZXJzaW9uX2V4cHJlc3Npb24gPSBzZWxmLnBheWxvYWRfdG9fb2JqY19leHByZXNzaW9uX2Zv
cl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIHNlbGYuJXMgPSAlczsnICUgKHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQor
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZW1iZXIudHlwZSwgRW51bVR5cGUpOgorICAgICAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzID0gJXM7JyAl
IChvYmpjX3R5cGUsIHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBtZW1iZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoJXMsIEAi
JXMiKTsnICUgKHZhcl9uYW1lLCBtZW1iZXJfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAlcy52YWx1ZSgpOycgJSAodmFyX25hbWUsIHZhcl9u
YW1lKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICBpZiAoJXMpJyAlIHZhcl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICAgICAgc2VsZi4lcyA9ICVzLnZhbHVlKCk7JyAlICh2YXJfbmFtZSwgdmFy
X25hbWUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9uKSkK
KwogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIHJldHVybiBzZWxmOycpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CmluZGV4
IDJiZTg0NWU2YmVhODY0YWEwYjJhZjNjNGQ1ZGE3OTgzYTJhMTMxNzIuLjIxZTE3OTE0ODdmNDhm
ZTdkZmRmOGJlMjU2NGM0NGVhODQxZDkyYjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yLnB5CkBAIC00NDIsOCArNDQyLDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3Ip
OgogICAgICAgICBpZiBjYXRlZ29yeSBpbiBbT2JqQ1R5cGVDYXRlZ29yeS5TaW1wbGUsIE9iakNU
eXBlQ2F0ZWdvcnkuU3RyaW5nXToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobWVtYmVyLnR5
cGUsIEVudW1UeXBlKToKICAgICAgICAgICAgICAgICBpZiBtZW1iZXIudHlwZS5pc19hbm9ueW1v
dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVzPigl
cyknICUgKHNlbGYub2JqY19lbnVtX25hbWVfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihkZWNs
YXJhdGlvbiwgbWVtYmVyKSwgc3ViX2V4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICdmcm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3Jf
bm9uX2Fub255bW91c19lbnVtKG1lbWJlci50eXBlKSwgc3ViX2V4cHJlc3Npb24pCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVzPiglcykudmFsdWUoKScg
JSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xhcmF0
aW9uLCBtZW1iZXIpLCBzdWJfZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2Zy
b21Qcm90b2NvbFN0cmluZzwlcz4oJXMpLnZhbHVlKCknICUgKHNlbGYub2JqY19lbnVtX25hbWVf
Zm9yX25vbl9hbm9ueW1vdXNfZW51bShtZW1iZXIudHlwZSksIHN1Yl9leHByZXNzaW9uKQogICAg
ICAgICAgICAgcmV0dXJuIHN1Yl9leHByZXNzaW9uCiAgICAgICAgIGlmIGNhdGVnb3J5IGlzIE9i
akNUeXBlQ2F0ZWdvcnkuT2JqZWN0OgogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2Jq
Y19jbGFzc19mb3JfdHlwZShtZW1iZXIudHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRl
cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29i
amNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCAyODk3OTY1ZmJhYzg3MjMzYTJmMzI4Mjhk
ZGMxNjUzMWE1NzZlYjk4Li4xYzMwYzQwZDQ4NjU0MDEzZTJkNTc2MzRiNWI2Y2I0OTg2OWQ1OTFi
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5
CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgeyIiIikKIAogICAgIFR5cGVD
b252ZXJzaW9uc0hlYWRlclN0YW5kYXJkID0gKAogICAgICIiInRlbXBsYXRlPHR5cGVuYW1lIE9i
akNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7IiIiKQorc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhl
YWRlclByZWx1ZGUgPSAoCiAgICAgIiIiJHtpbmNsdWRlc30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5p
dGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDY0NTgwZmNhMjc3NjgxMDdlMzEzNjUzN2Nl
ZjI5NmIyMTE4ODZmMTYuLmIxNDY3NzllMmRiNzIxMDUzMDNiMDdjMTRjNTM4YTlkYzBkODY3YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtOTk5
LDcgKzk5OSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9i
akNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6
Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRy
aWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5q
c29uLXJlc3VsdAppbmRleCBiOTYxNzViYmI0MTcwOWQ3NDljYzY4ZjFhZDU2ODc5NTMwZjUyMjEx
Li44NGFlZDUwYjg4ZTAyNzRiZWRlMzc4NDBmNzVmNTVhYWEwZjIxZDY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTQxOCw3ICsx
NDE4LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0Vu
dW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0
aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKQEAgLTE0MzQsNyArMTQzNCw3IEBAIGlubGluZSBTdHJp
bmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgdmFs
dWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAicmVkIikK
ICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc1JlZDsKQEAg
LTE0NDIsOCArMTQ0Miw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjsKICAgICBpZiAodmFsdWUg
PT0gImJsdWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29s
b3JzQmx1ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQ2
MSw3ICsxNDYwLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblYKIH0KIAogdGVtcGxhdGU8Pgot
aW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJp
bnRDb2xvckN5YW47CkBAIC0xNDcxLDggKzE0NzAsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9tUHJv
dAogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNr
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JCbGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQ5
MCw3ICsxNDg4LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm4KIH0KIAogdGVtcGxhdGU8Pgot
aW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
UHJpbnRDb2xvckN5YW47CkBAIC0xNTAwLDggKzE0OTgsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgZnJv
bVBybwogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNP
cHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJi
bGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIHZhbHVlKQpAQCAtMTUxOSw3ICsxNTE2LDcgQEAg
aW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTFN5bmNQcmludENvbG9yIHZhbHUKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW47CkBAIC0x
NTI5LDggKzE1MjYsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3lu
Y1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cgogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JZZWxsb3c7CiAgICAg
aWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xv
ckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xv
ciB2YWx1ZSkKQEAgLTE1NDgsNyArMTU0NCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0
cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgdmFsCiB9
CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3lu
Y1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50
Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JDeWFuOwpAQCAtMTU1OCw4ICsxNTU0LDcgQEAgaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3QKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTEFzeW5jUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikK
ICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRD
b2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JDeWFuOworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtMTYyNSw3ICsx
NjIwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlUHJpbWFy
eUNvbG9yczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsK
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFz
c10pOwotICAgICpvdXRWYWx1ZSA9IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IHJlc3VsdCA9IEluc3BlY3Rv
cjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4o
cGF5bG9hZCk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQs
IEAiUHJpbWFyeUNvbG9ycyIpOworICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwog
fQogCiArICh2b2lkKV9wYXJzZUNvbG9yTGlzdDooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKW91
dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKaW5kZXggMjUzNzgzNWEwNTgzNTE1Y2EzOTEwM2QxNzc5ZDkxNTZiZjc3ZTQ2ZS4uYmNiYTU3
NjUwYjk0NWJjNDUxODFiZGY1MGM2MTJhNjZhYjQyZWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5q
c29uLXJlc3VsdApAQCAtODcyLDEzICs4NzIsMTMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHIK
ICAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9yOwogICAgIGlmIChp
bl9zcWxFcnJvcikKICAgICAgICAgb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2NvbERhdGFi
YXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3NxbEVycm9yXSBhdXRv
cmVsZWFzZV07Ci0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIG9faW5fc2Ny
ZWVuQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnM+IG9faW5fc2NyZWVuQ29sb3I7CiAgICAgaWYgKGluX3NjcmVlbkNvbG9yKQogICAgICAg
ICBvX2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycz4oKmluX3NjcmVlbkNvbG9yKTsKICAgICBOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzOwogICAgIGlmIChpbl9hbHRlcm5hdGVDb2xvcnMp
CiAgICAgICAgIG9faW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0FycmF5KGluX2FsdGVy
bmF0ZUNvbG9ycyk7Ci0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciBvX2luX3ByaW50Q29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9y
PiBvX2luX3ByaW50Q29sb3I7CiAgICAgaWYgKGluX3ByaW50Q29sb3IpCiAgICAgICAgIG9faW5f
cHJpbnRDb2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPigqaW5fcHJpbnRDb2xvcik7CiAKQEAg
LTkyMCwxMSArOTIwLDEzIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlCiAgICAgUldJUHJvdG9j
b2xKU09OT2JqZWN0ICpvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxs
b2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAg
ICAgaW50IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNlSWQ7CiAgICAgVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvciAqb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9zcWxFcnJvcl0gYXV0b3JlbGVh
c2VdOwotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBvX2luX3NjcmVlbkNv
bG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cz4oaW5fc2NyZWVuQ29sb3IpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzPiBvX2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOworICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUob19pbl9zY3JlZW5Db2xvciwgQCJzY3Jl
ZW5Db2xvciIpOwogICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9hbHRlcm5hdGVDb2xv
cnMgPSBvYmpjU3RyaW5nQXJyYXkoJmluX2FsdGVybmF0ZUNvbG9ycyk7Ci0gICAgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIG9faW5fcHJp
bnRDb2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOworICAgIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQ
cmludENvbG9yPiBvX2luX3ByaW50Q29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPihpbl9wcmlu
dENvbG9yKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKG9faW5fcHJp
bnRDb2xvciwgQCJwcmludENvbG9yIik7CiAKLSAgICBbbV9kZWxlZ2F0ZSBleGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjazpzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6b19pbl9jb2x1bW5OYW1lcyBub3Rlczpv
X2luX25vdGVzIHRpbWVzdGFtcDpvX2luX3RpbWVzdGFtcCB2YWx1ZXM6b19pbl92YWx1ZXMgcGF5
bG9hZDpvX2luX3BheWxvYWQgZGF0YWJhc2VJZDpvX2luX2RhdGFiYXNlSWQgc3FsRXJyb3I6b19p
bl9zcWxFcnJvciBzY3JlZW5Db2xvcjpvX2luX3NjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczpv
X2luX2FsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOm9faW5fcHJpbnRDb2xvcl07CisgICAgW21f
ZGVsZWdhdGUgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6ZXJy
b3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6c3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOm9f
aW5fY29sdW1uTmFtZXMgbm90ZXM6b19pbl9ub3RlcyB0aW1lc3RhbXA6b19pbl90aW1lc3RhbXAg
dmFsdWVzOm9faW5fdmFsdWVzIHBheWxvYWQ6b19pbl9wYXlsb2FkIGRhdGFiYXNlSWQ6b19pbl9k
YXRhYmFzZUlkIHNxbEVycm9yOm9faW5fc3FsRXJyb3Igc2NyZWVuQ29sb3I6b19pbl9zY3JlZW5D
b2xvci52YWx1ZSgpIGFsdGVybmF0ZUNvbG9yczpvX2luX2FsdGVybmF0ZUNvbG9ycyBwcmludENv
bG9yOm9faW5fcHJpbnRDb2xvci52YWx1ZSgpXTsKIH0KIAogCkBAIC0xMjczLDcgKzEyNzUsNyBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUg
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxP
YmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAog
CiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VQcmlt
YXJ5Q29sb3JzIHZhbHVlKQpAQCAtMTI4OSw3ICsxMjkxLDcgQEAgaW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIH0K
IAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJyZWQiKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOwpAQCAtMTI5Nyw4
ICsxMjk5LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVuOwogICAgIGlmICh2YWx1ZSA9PSAiYmx1
ZSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNCbHVl
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnNSZWQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5s
aW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgdmFsdWUpCkBAIC0xMzE2LDcgKzEzMTcsNyBA
QCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUAogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTEzMjYsOCArMTMyNyw3
IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAg
IGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTEz
NDUsNyArMTM0NSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQCiB9CiAKIHRlbXBsYXRlPD4K
LWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQ
cmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAt
MTM1NSw4ICsxMzU1LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3QKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxh
Y2s7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Ig
dmFsdWUpCkBAIC0xMzc0LDcgKzEzNzMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcgogfQog
CiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9y
Q3lhbjsKQEAgLTEzODQsOCArMTM4Myw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3JCbGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yIHZhbHVlKQpAQCAtMTQwMyw3ICsxNDAxLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
UHIKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDb2xvckN5YW47CkBAIC0xNDEzLDggKzE0MTEsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0
cgogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yQmxhY2s7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCkBAIC0xNDgwLDcgKzE0NzcsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
KyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3JzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5
bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5
bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KHBheWxv
YWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJQcmltYXJ5Q29sb3JzIik7CisgICAgKm91dFZhbHVlID0g
QChyZXN1bHQudmFsdWUoKSk7CiB9CiAKICsgKHZvaWQpX3BhcnNlQ29sb3JMaXN0OihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggYWUw
OWU5NGMzNTZkMTc1ODEyOWNkYTE5NTNhOTgxMDU3ZjEzMDJjMy4uNmRmZTU0ZTA0ZDMzMjI3YzA4
Y2FiZTQxZTE3NmYxZDY1NTgzMTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTczNSw3ICs3MzUsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggZDc3MDczNTU3YmZiODIwNGQ4
ZTRhMzVmMjU1OGVmMjQzZmRjZTliYy4uYzQ2M2VlYmRjODliNDJmMzBmZGYxOGI5MjRiNGJjOTJj
NDlkZDFkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC05ODksNyAr
OTg5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51
bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5
aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWlu
Zy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IDVhZTdhZjg2NWEzYmVmOWExMTgyNTNm
ZGZhMWUxMjJlYWRiYzVlMDMuLmFlNDhmNTZjMTk0NTAxOGRmMTI2MzE2ZjYwNjUxMjgyOGM4N2Mz
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXpl
cy5qc29uLXJlc3VsdApAQCAtMTI1Miw3ICsxMjUyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51
bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggMThlNTljZjk5
Y2EyNWY5YjE1MWYwNDhiNTllNmVkNDliODg0NTgzNS4uMmIzYmY3N2Q1YTI1ZmRiYWRjZDFjY2Vl
NjNmMGQ1ZTc3MTc1NjQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzIsNyArMTAzMiw3
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlw
ZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFs
PE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwog
CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUeXBlRG9tYWlu
RW51bSB2YWx1ZSkKQEAgLTEwNTAsNyArMTA1MCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVHlw
ZURvbWFpbkVudW0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmICh2YWx1ZSA9PSAic2hhcmVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5
cGVEb21haW5FbnVtU2hhcmVkOwpAQCAtMTA2MCw4ICsxMDYwLDcgQEAgaW5saW5lIFRlc3RQcm90
b2NvbFR5cGVEb21haW5FbnVtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1HcmVlbjsKICAgICBp
ZiAodmFsdWUgPT0gImJsdWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFp
bkVudW1CbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJv
dG9jb2xUeXBlRG9tYWluRW51bVNoYXJlZDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTExMTgsNyArMTExNyw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVR5cGVEb21haW5FbnVtOihOU051bWJl
ciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQ
VElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgKm91dFZh
bHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUeXBlRG9t
YWluRW51bT4ocGF5bG9hZCkpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVHlwZURv
bWFpbkVudW0+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbFR5cGVEb21haW5FbnVtPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJUeXBlRG9tYWluRW51bSIpOworICAgICpvdXRWYWx1ZSA9
IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMt
d2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgt
b3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA5NjAyYTg2M2NlMDkxMmJiYWI0
NzA5NjFmNjY0MzVhYTZkYmQ4ZWFlLi5hOWM0ZGIzMDg0MjdhYzkxYTdhNzFkOGU4NTdkNjQ0MGRl
MzQzYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKQEAgLTk4NSw3ICs5ODUsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCAzYmQ0ZDE1
MDFmNmUzNWU1OGVhNTMwYmFjMTA2N2FkMzc0MDkzMDZmLi5hNmVlYmY1MGJhM2JiMTFiNmNkMDI4
ZWViMWMwNTQyNzFmZjQ5Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpD
RW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5k
ZXggNmU3YWQ4OGQ1NDc2Y2JlYzFjMWU4YjM3NzkxOGRkMmNkYWY1ZDk3ZS4uYjhlNmRhZTAxODlh
OTJmMWE1ODk0OTlhMDA0ODAxN2MxZGExYzczOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2FtZS10eXBl
LWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2FtZS10eXBlLWlk
LWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKQEAgLTc0NSw3ICs3NDUsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
c2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93
ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDRhOTU0YTQwZGQwZDMx
NDY0ZTNjMmE1MTk0NDU2MTg5YWQ5YzJmMjcuLmE0MGMwZTMwN2U0Zjk5MGNlMTE1M2IxZjBlYTgy
MWI2YWU4N2I2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0
dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRl
cnMuanNvbi1yZXN1bHQKQEAgLTg4Miw3ICs4ODIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlIHZhbHVlKQpAQCAtODk4LDcg
Kzg5OCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50
aW1lS2V5UGF0aFR5cGUgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9j
b2xSdW50aW1lS2V5UGF0aFR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA9PSAibnVsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5
cGVOdWxsOwpAQCAtOTA2LDggKzkwNiw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lS2V5
UGF0aFR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVTdHJpbmc7CiAgICAgaWYgKHZh
bHVlID09ICJhcnJheSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0
aFR5cGVBcnJheTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTEwMjEsNyArMTAyMCw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19F
WENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJ0eXBlIl0sIEAidHlwZSIp
OwotICAgIHNlbGYudHlwZSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1l
S2V5UGF0aFR5cGU+KHBheWxvYWRbQCJ0eXBlIl0pOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlPiB0eXBlID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQ
cm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4ocGF5bG9hZFtAInR5cGUiXSk7CisgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRSh0eXBlLCBAInR5cGUiKTsKKyAgICBzZWxmLnR5
cGUgPSB0eXBlLnZhbHVlKCk7CiAKICAgICBzZWxmLnN0cmluZyA9IHBheWxvYWRbQCJzdHJpbmci
XTsKIApAQCAtMTA1NCw3ICsxMDU1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
LSAoVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5cGUKIHsKLSAgICByZXR1cm4gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oW3N1cGVyIHN0
cmluZ0ZvcktleTpAInR5cGUiXSk7CisgICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0
UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJ0eXBlIl0p
LnZhbHVlKCk7CiB9CiAKIC0gKHZvaWQpc2V0U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBl
Lmpzb24tcmVzdWx0CmluZGV4IGJiNzc1OTVmNTY4ZDE5ODFhMzIxNTJiOTE4NTAxMDI2NmM3ZTQ3
NWUuLmE1OTJiNjg0YjU4ODA2OWNkYjc3MWY4YzkxMjRkNDdjOTM0YTJmNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNv
bi1yZXN1bHQKQEAgLTc0MCw3ICs3NDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4K
LU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7Citz
dGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJh
eS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpz
b24tcmVzdWx0CmluZGV4IDI4MmU0MmRiOTA4Mzk3ZmU1MWU3NTc4MGU5NGNhYTMxMjdiODIyNjku
LmU2NWI4ZGRmZmY5OTM5OGE2OTg4MjdhNmU5YTdjOWE4MzBlODZjNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKQEAgLTgyMyw3ICs4MjMsNyBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbikg
ewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogCiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJv
dG9jb2xEZWJ1Z2dlclJlYXNvbiB2YWx1ZSkKQEAgLTgzOSw3ICs4MzksNyBAQCBpbmxpbmUgU3Ry
aW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24gdmFsdWUpCiB9
CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRl
c3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIkRpZWQiKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sRGVidWdnZXJSZWFzb25EaWVkOwpAQCAtODQ3LDggKzg0Nyw3IEBAIGlubGluZSBU
ZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uRmFpbnRl
ZDsKICAgICBpZiAodmFsdWUgPT0gIkh1bmdyeSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xEZWJ1Z2dlclJlYXNvbkh1bmdyeTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25EaWVkOworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIApAQCAtOTI0LDcgKzkyMyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiArICh2b2lkKV9wYXJzZVJlYXNvbjooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxv
YWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxv
YWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1ZSA9IEAoSW5zcGVjdG9yOjpmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24+KHBheWxvYWQpKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPiByZXN1bHQgPSBJbnNw
ZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbj4ocGF5
bG9hZCk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAi
UmVhc29uIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggOGI2
NTJiNzRiNTc4NGEyNWZjYjljOGI2MzdhNjg1ODhjNDAxYTg2OC4uZjI5Yjk0YjEzNmI0OTE0M2U5
ZmQzNzE1YWIwNzFiMGFkZTY3OTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVt
LXR5cGUuanNvbi1yZXN1bHQKQEAgLTg1MSw3ICs4NTEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscykgewogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVt
VHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlv
bmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
OwogCiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1l
RmFybUFuaW1hbHMgdmFsdWUpCkBAIC04NjksNyArODY5LDcgQEAgaW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscyB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscyBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRl
c3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJQaWdzIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M7CkBAIC04NzksOCArODc5LDcgQEAg
aW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVG
YXJtQW5pbWFsc0NhdHM7CiAgICAgaWYgKHZhbHVlID09ICJIZW5zIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0hlbnM7Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3Ry
aW5nKFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzIHZhbHVlKQpAQCAtODk4LDcg
Kzg5Nyw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50
aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQ
cm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZVR3
b0xlZ2dlZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmICh2YWx1ZSA9PSAiRHVja3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
UnVudGltZVR3b0xlZ2dlZEFuaW1hbHNEdWNrczsKQEAgLTkwOCw4ICs5MDcsNyBAQCBpbmxpbmUg
VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xl
Z2dlZEFuaW1hbHNDcm93czsKICAgICBpZiAodmFsdWUgPT0gIkZsYW1pbmdvcyIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0ZsYW1pbmdvczsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3
b0xlZ2dlZEFuaW1hbHNEdWNrczsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTk2NywxMyArOTY1LDE3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZUZhcm1BbmltYWxzOihOU051bWJlciAqKilvdXRW
YWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgKm91dFZhbHVlID0gQChJ
bnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1h
bHM+KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJt
QW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sUnVudGltZUZhcm1BbmltYWxzPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJGYXJtQW5pbWFscyIpOworICAgICpvdXRWYWx1ZSA9
IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiArICh2b2lkKV9wYXJzZVR3b0xlZ2dlZEFuaW1hbHM6
KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAg
ICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2Nv
bFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpm
cm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHM+KHBh
eWxvYWQpOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBA
IlR3b0xlZ2dlZEFuaW1hbHMiKTsKKyAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlw
ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQKaW5kZXggMThkZmY3OGYxNThlOGEwYWVmNmI3OTE2OWZhMDU5YzU0OWY0YmIxYi4uMjU5
NzJkMWI0MDRiNmNlMmE0MzRkYmNhZDQ0Nzk3ZDBjODQ0OTRkMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0xMjc2LDcgKzEyNzYsNyBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUg
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxP
YmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0Cmlu
ZGV4IDU1ZmY5MzhiMjVhYTBkMWZjMDBhNWVmYzY3MmI0ODBkY2U3NjEwN2QuLjEyMDRiMjE1MzAx
ZDljMjJlZmI3ZTY0Yzg1ZjE3ZTI4NWMxY2Q5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVx
dWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJp
bmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtMTIwNSw3ICsxMjA1LDcgQEAgX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1U
eXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAogaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMg
dmFsdWUpCkBAIC0xMjIzLDcgKzEyMjMsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9j
b2xUZXN0VW5jYXN0ZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIlBpZ3MiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1BpZ3M7CkBAIC0xMjMzLDggKzEyMzMsNyBAQCBpbmxp
bmUgVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3Rl
ZEFuaW1hbHNDYXRzOwogICAgIGlmICh2YWx1ZSA9PSAiSGVucyIpCiAgICAgICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzSGVuczsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1BpZ3M7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3Ry
aW5nKFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzIHZhbHVlKQpAQCAtMTI1Miw3ICsxMjUx
LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RDYXN0
ZWRBbmltYWxzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sVGVz
dENhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJE
dWNrcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0R1Y2tz
OwpAQCAtMTI2Miw4ICsxMjYxLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNDcm93czsKICAgICBpZiAodmFsdWUgPT0g
IkZsYW1pbmdvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFs
c0ZsYW1pbmdvczsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFBy
b3RvY29sVGVzdENhc3RlZEFuaW1hbHNEdWNrczsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTEzNDQsMTMgKzEzNDIsMTcgQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlVW5jYXN0ZWRBbmltYWxzOihO
U051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAg
Km91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xU
ZXN0VW5jYXN0ZWRBbmltYWxzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJv
dG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2Nv
bFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPihwYXlsb2FkKTsKKyAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJVbmNhc3RlZEFuaW1h
bHMiKTsKKyAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogKyAodm9pZClf
cGFyc2VDYXN0ZWRBbmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQp
cGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05T
U3RyaW5nIGNsYXNzXSk7Ci0gICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2Nv
bFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4ocGF5bG9hZCkpOworICAgIHN0
ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihw
YXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwg
QCJDYXN0ZWRBbmltYWxzIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9
CiAKICsgKHZvaWQpX3BhcnNlUmVjdXJzaXZlT2JqZWN0MTooVGVzdFByb3RvY29sVGVzdFJlY3Vy
c2l2ZU9iamVjdDEgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKQEAgLTE0MjUs
OSArMTQyNywxMSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHNlbGYubnVtYmVy
ID0gW3BheWxvYWRbQCJudW1iZXIiXSBpbnRlZ2VyVmFsdWVdOwogCiAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiYW5pbWFscyJdLCBAImFuaW1hbHMi
KTsKLSAgICBzZWxmLmFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVz
dENhc3RlZEFuaW1hbHM+KHBheWxvYWRbQCJhbmltYWxzIl0pOworICAgIHN0ZDo6b3B0aW9uYWw8
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJp
bmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KHBheWxvYWRbQCJhbmltYWxzIl0pOwor
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoYW5pbWFscywgQCJhbmltYWxz
Iik7CisgICAgc2VsZi5hbmltYWxzID0gYW5pbWFscy52YWx1ZSgpOwogCi0gICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiaWRlbnRpZmllciJdLCBAImlk
ZW50aWZpZXIiKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBh
eWxvYWRbQCJpZCJdLCBAImlkIik7CiAgICAgc2VsZi5pZGVudGlmaWVyID0gW3BheWxvYWRbQCJp
ZCJdIGludGVnZXJWYWx1ZV07CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BS
T1BFUlRZKHBheWxvYWRbQCJ0cmVlIl0sIEAidHJlZSIpOwpAQCAtMTQ4Nyw3ICsxNDkxLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sVGVzdENhc3RlZEFu
aW1hbHMpYW5pbWFscwogewotICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sVGVzdENhc3RlZEFuaW1hbHM+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJhbmltYWxzIl0pOwor
ICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1h
bHM+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJhbmltYWxzIl0pLnZhbHVlKCk7CiB9CiAKIC0gKHZv
aWQpc2V0SWRlbnRpZmllcjooaW50KWlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtl
ci1zdXBwb3J0ZWQtZG9tYWlucy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtlci1zdXBwb3J0ZWQt
ZG9tYWlucy5qc29uLXJlc3VsdAppbmRleCAwNjBlYjkzMmEwZDMxMzc3ZTM3ZmE1Zjc5NDVhNmZm
ZGMzNDU2OGFhLi4xNGQ2YWRkNjMwYThlZjJjYzJiZGJhMzg1ZDdkMzk3Y2E0OGMxYjk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvd29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0CkBAIC05OTAsNyArOTkw
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5
cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CmluZGV4IGFlMDllOTRjMzU2ZDE3NTgxMjljZGExOTUzYTk4MTA1N2YxMzAyYzMuLjZk
ZmU1NGUwNGQzMzIyN2MwOGNhYmU0MWUxNzZmMWQ2NTU4MzE4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2lvcy9leHBlY3RlZC9kZWZpbml0aW9u
cy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzM1LDcgKzczNSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21h
Yy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRl
eCA2NDU4MGZjYTI3NzY4MTA3ZTMxMzY1MzdjZWYyOTZiMjExODg2ZjE2Li5iMTQ2Nzc5ZTJkYjcy
MTA1MzAzYjA3YzE0YzUzOGE5ZGMwZDg2N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMt
cGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTk5OSw3ICs5OTksNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301635</attachid>
            <date>2017-02-15 11:22:51 -0800</date>
            <delta_ts>2017-02-16 10:09:21 -0800</delta_ts>
            <desc>Proposed Fix (rebased)</desc>
            <filename>bug-168018-20170215112015.patch</filename>
            <type>text/plain</type>
            <size>67330</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MTNkMmVjNzI0N2NiMjUzNWFjY2I5YzdlYWRhZTFlNzdhOTM0MjJmLi5kNmJlZWM4ODlkZGMyYTZh
NTdkZDM1OTU4MDhiNDEyZjhjOThmZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0wMi0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFQ+IHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxUPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MDE4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDQ2ODc3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHBhcnNlIHVudHJ1c3RlZCBzdHJpbmcgaW5wdXRzLCBzbyB0
aGV5IHNob3VsZCByZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZAorICAgICAgICBvZiBhc3NlcnRp
bmcgb3IgY3Jhc2hpbmcgd2hlbiB0aGUgaW5wdXQgaXMgbm90IHVzYWJsZS4KKworICAgICAgICBV
cGRhdGUgdmFyaW91cyBwaWVjZXMgb2YgZ2VuZXJhdGVkIGNvZGUgdG8gaGFuZGxlIHRoZSBlcnJv
ciBjYXNlIGdyYWNlZnVsbHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAg
ICAgICAoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVy
YXRlX2NvbnZlcnNpb25zX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbnZvY2F0aW9uX2Zvcl9jb21t
YW5kKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9iakMtZnJpZW5k
bHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAorICAgICAgICB3
aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNfRU5VTSB2YWx1
ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90IG9wdGlvbmFs
LCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdmFsdWUgaXMgbnVsbG9wdC4KKworICAg
ICAgICBUaGUgb3B0aW9uYWwgZW51bSBwYXJhbWV0ZXIgY2FzZSBpcyBub3QgaGFuZGxlZCBjb3Jy
ZWN0bHksIGJ1dCBubyBleGlzdGluZyBjb2RlIHJlcXVpcmVzIGl0LgorCisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVy
c2lvbnNfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVh
ZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKToKKyAgICAg
ICAgRml4IHNpZ25hdHVyZSBhbmQgcmVtb3ZlIGRlZmF1bHQgY2FzZSBBU1NFUlRfTk9UX1JFQUNI
RUQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
cHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9i
akNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0
ZV90eXBlX2ZhY3RvcnlfbWV0aG9kX2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgU2luY2UgdGhp
cyBjb2RlIGFzc3VtZXMgYWxsIGlucHV0cyB0byBiZSB2YWxpZCBhbmQgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBvdGhlcndpc2UsIHdlCisgICAgICAgIHRyeSB0byBjb252ZXJ0IHRoZSBlbnVtIGFuZCB0
aHJvdyBhbiBleGNlcHRpb24gaWYgaXQncyBudWxsb3B0LiBJZiBpdCdzIHZhbGlkLCB3cml0ZSB0
byBvdXRWYWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNQ
cm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2luaXRfbWV0aG9k
X2Zvcl9wYXlsb2FkKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9i
akMtZnJpZW5kbHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAor
ICAgICAgICB3aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNf
RU5VTSB2YWx1ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90
IG9wdGlvbmFsLCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdmFsdWUgaXMgbnVsbG9w
dC4gT3RoZXJ3aXNlLCBhbGxvdyBpdCB0byBiZSBlbXB0eS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJh
dG9yLnByb3RvY29sX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAgVW5j
b25kaXRpb25hbGx5IHVud3JhcCB0aGUgb3B0aW9uYWwuIFRoaXMgZXhwcmVzc2lvbiBpcyBvbmx5
IHVzZWQgaW5zaWRlIHRoZSB0eXBlY2hlY2tlZAorICAgICAgICBPYmpDIHByb3RvY29sIG9iamVj
dHMuIEluIHRoaXMgY2FzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGFscmVhZHkgaW5pdGlh
bGl6ZWQgdGhlIGVudW0gd2l0aCBhIHZhbGlkCisgICAgICAgIHZhbHVlLCBidXQgbXVzdCBzdG9y
ZSBpdCBhcyBhIHN0cmluZyBpbnNpZGUgYSB3cmFwcGVkIEluc3BlY3Rvck9iamVjdC4gVGhlIGdl
dHRlciBuZWVkcyB0bworICAgICAgICByZS1jb252ZXJ0IHRoZSBzdG9yZWQgc3RyaW5nIGludG8g
YW4gTlNfRU5VTSB2YWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICBVcGRhdGUgdHlwZSB0ZW1wbGF0
ZSBmb3IgZnJvbVByb3RvY29sU3RyaW5nPFQ+KCkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMt
d2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2
ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJy
YXktdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4KKwogMjAxNy0wMi0xNSAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtNYWNdW2NtYWtlXSBVbnJldmll
d2VkIHRyaXZpYWwgYnVpbGRmaXggYWZ0ZXIgcjIxMjE2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFj
a2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggNjkzOGNhM2U3NGFkYjQ4NjRiY2RiZWQyYjEwZTc4
NmZlZDY4ZGNhOS4uNzBhOTA2MzU3Y2JiNzY2MzVmMTI0YmUzMzFkY2FiZjg5MzhiZDBiNyAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTE2OCwxMCArMTY4
LDE2IEBAIGNsYXNzIE9iakNCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KE9iakNHZW5lcmF0b3IpOgogICAgICAgICAgICAgaW5fcGFyYW1fbmFtZSA9ICdpbl8lcycgJSBw
YXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKICAgICAgICAgICAgIG9iamNfaW5fcGFyYW1fbmFtZSA9
ICdvXyVzJyAlIGluX3BhcmFtX25hbWUKICAgICAgICAgICAgIG9iamNfdHlwZSA9IHNlbGYub2Jq
Y190eXBlX2Zvcl9wYXJhbShkb21haW4sIGNvbW1hbmQuY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIs
IEZhbHNlKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJhbWV0ZXIudHlwZSwgRW51bVR5
cGUpOgorICAgICAgICAgICAgICAgIG9iamNfdHlwZSA9ICdzdGQ6Om9wdGlvbmFsPCVzPicgJSBv
YmpjX3R5cGUKICAgICAgICAgICAgIHBhcmFtX2V4cHJlc3Npb24gPSBpbl9wYXJhbV9leHByZXNz
aW9uKGluX3BhcmFtX25hbWUsIHBhcmFtZXRlcikKICAgICAgICAgICAgIGltcG9ydF9leHByZXNz
aW9uID0gc2VsZi5vYmpjX3Byb3RvY29sX2ltcG9ydF9leHByZXNzaW9uX2Zvcl9wYXJhbWV0ZXIo
cGFyYW1fZXhwcmVzc2lvbiwgZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVy
KQogICAgICAgICAgICAgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbDoKICAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAlcyA9ICVzOycgJSAoam9pbl90eXBlX2FuZF9uYW1lKG9i
amNfdHlwZSwgb2JqY19pbl9wYXJhbV9uYW1lKSwgaW1wb3J0X2V4cHJlc3Npb24pKQorCisgICAg
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJhbWV0ZXIudHlwZSwgRW51bVR5cGUpOgorICAg
ICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9FTlVNX1ZBTFVFKCVzLCBAIiVzIik7JyAlIChvYmpjX2luX3BhcmFtX25hbWUsIHBhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSkpCisKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgJXM7JyAlIGpvaW5fdHlwZV9hbmRfbmFtZShvYmpjX3R5cGUsIG9i
amNfaW5fcGFyYW1fbmFtZSkpCiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYg
KCVzKScgJSBpbl9wYXJhbV9uYW1lKQpAQCAtMTg3LDEwICsxOTMsMTUgQEAgY2xhc3MgT2JqQ0Jh
Y2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAg
ICAgICAgIHBhaXJzLmFwcGVuZCgnc3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjaycpCiAg
ICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5jYWxsX3BhcmFtZXRlcnM6CiAgICAgICAg
ICAgICBpbl9wYXJhbV9uYW1lID0gJ2luXyVzJyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQot
ICAgICAgICAgICAgb2JqY19pbl9wYXJhbV9uYW1lID0gJ29fJXMnICUgaW5fcGFyYW1fbmFtZQor
ICAgICAgICAgICAgb2JqY19pbl9wYXJhbV9leHByZXNzaW9uID0gJ29fJXMnICUgaW5fcGFyYW1f
bmFtZQogICAgICAgICAgICAgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbDoKLSAgICAgICAg
ICAgICAgICBwYWlycy5hcHBlbmQoJyVzOiVzJyAlIChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUs
IG9iamNfaW5fcGFyYW1fbmFtZSkpCisgICAgICAgICAgICAgICAgIyBGSVhNRTogd2UgZG9uJ3Qg
aGFuZGxlIG9wdGlvbmFsIGVudW0gdmFsdWVzIGluIGNvbW1hbmRzIGhlcmUgYmVjYXVzZSBpdCBp
c24ndCB1c2VkIGFueXdoZXJlIHlldC4KKyAgICAgICAgICAgICAgICAjIFdlJ2QgbmVlZCB0byBj
aGFuZ2UgdGhlIGRlbGVnYXRlJ3Mgc2lnbmF0dXJlIHRvIHRha2Ugc3RkOjpvcHRpb25hbCBmb3Ig
b3B0aW9uYWwgZW51bSB2YWx1ZXMuCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJh
bWV0ZXIudHlwZSwgRW51bVR5cGUpOgorICAgICAgICAgICAgICAgICAgICBvYmpjX2luX3BhcmFt
X2V4cHJlc3Npb24gPSAnJXMudmFsdWUoKScgJSBvYmpjX2luX3BhcmFtX2V4cHJlc3Npb24KKwor
ICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgnJXM6JXMnICUgKHBhcmFtZXRlci5wYXJhbWV0
ZXJfbmFtZSwgb2JqY19pbl9wYXJhbV9leHByZXNzaW9uKSkKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgb3B0aW9uYWxfZXhwcmVzc2lvbiA9ICcoJXMgPyAmJXMgOiBuaWwpJyAl
IChpbl9wYXJhbV9uYW1lLCBvYmpjX2luX3BhcmFtX25hbWUpCisgICAgICAgICAgICAgICAgb3B0
aW9uYWxfZXhwcmVzc2lvbiA9ICcoJXMgPyAmJXMgOiBuaWwpJyAlIChpbl9wYXJhbV9uYW1lLCBv
YmpjX2luX3BhcmFtX2V4cHJlc3Npb24pCiAgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKCcl
czolcycgJSAocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lLCBvcHRpb25hbF9leHByZXNzaW9uKSkK
ICAgICAgICAgcmV0dXJuICcgICAgW21fZGVsZWdhdGUgJXMlc107JyAlIChjb21tYW5kLmNvbW1h
bmRfbmFtZSwgJyAnLmpvaW4ocGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBl
X2NvbnZlcnNpb25zX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19o
ZWFkZXIucHkKaW5kZXggZWYyOTdiODA0NDE4ODIzZTEyNzFjYmI0NzZhMzc2NDBjY2NhM2Q5Zi4u
ZWE5ZTZlMmQ3NzQxOGI5MWJkNjg0ZjA5MWI1NmViYTVmNzdjODA3YiAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CkBAIC0xNTUsMTIgKzE1NSwxMSBAQCBjbGFzcyBP
YmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNIZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6
CiAgICAgZGVmIF9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKHNlbGYsIG9iamNf
ZW51bV9uYW1lLCBlbnVtX3ZhbHVlcyk6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGlu
ZXMuYXBwZW5kKCd0ZW1wbGF0ZTw+JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCdpbmxpbmUgJXMg
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpJyAlIG9iamNfZW51bV9uYW1l
KQorICAgICAgICBsaW5lcy5hcHBlbmQoJ2lubGluZSBzdGQ6Om9wdGlvbmFsPCVzPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSknICUgb2JqY19lbnVtX25hbWUpCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgneycpCiAgICAgICAgIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fdmFs
dWVzOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYgKHZhbHVlID09ICIlcyIpJyAl
IGVudW1fdmFsdWUpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgcmV0dXJuICVz
JXM7JyAlIChvYmpjX2VudW1fbmFtZSwgR2VuZXJhdG9yLnN0eWxpemVkX25hbWVfZm9yX2VudW1f
dmFsdWUoZW51bV92YWx1ZSkpKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4gJXMlczsnICUg
KG9iamNfZW51bV9uYW1lLCBHZW5lcmF0b3Iuc3R5bGl6ZWRfbmFtZV9mb3JfZW51bV92YWx1ZShl
bnVtX3ZhbHVlc1swXSkpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJldHVybiAnXG4n
LmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNf
aW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVt
ZW50YXRpb24ucHkKaW5kZXggYjUxZmY1NjVmNDNmMmY5YWQ5NDUzNjk2MzgwZmMzNmVhNjdhNTI1
OC4uNDI5M2UzYmQ4NGNmOTM3OTNmNzE1ZTgyZWIxNmEyNTU3MzNlYTlmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtMTI1LDcg
KzEyNSw5IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0ltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogICAg
ICAgICBpZiBpc2luc3RhbmNlKHJlc29sdmVkX3R5cGUsIEVudW1UeXBlKToKICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwg
W05TU3RyaW5nIGNsYXNzXSk7JykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICpvdXRW
YWx1ZSA9IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8JXM+KHBheWxvYWQpKTsnICUg
c2VsZi5vYmpjX25hbWVfZm9yX3R5cGUocmVzb2x2ZWRfdHlwZSkpCisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCUodHlwZSlzPiByZXN1bHQgPSBJbnNwZWN0b3I6
OmZyb21Qcm90b2NvbFN0cmluZzwlKHR5cGUpcz4ocGF5bG9hZCk7JyAlIHsndHlwZSc6IHNlbGYu
b2JqY19uYW1lX2Zvcl90eXBlKHJlc29sdmVkX3R5cGUpfSkKKyAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIiVz
Iik7JyAlIGRlY2xhcmF0aW9uLnR5cGUucmF3X25hbWUoKSkKKyAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOycpCiAgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShyZXNvbHZlZF90eXBlLCAoQXJyYXlUeXBlLCBQcmltaXRpdmVUeXBlKSk6CiAg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBF
KHBheWxvYWQsIFslcyBjbGFzc10pOycgJSBvYmpjX2NsYXNzKQogICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgKm91dFZhbHVlID0gKCVzICopcGF5bG9hZDsnICUgb2JqY19jbGFzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDQyNWJhYWU2MGZlMzEwOGQ1Njg0
MTVmNDU3N2UwNGExZDZlNDZkYTUuLmEzMTljOTRkN2MzM2M5MWQ2MDJkMWQzZjQ1NmY0M2Y3M2I5
ZjMxOTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtMzAsNyArMzAs
NyBAQCBpbXBvcnQgc3RyaW5nCiBmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKIAogZnJvbSBn
ZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvciwgdWNmaXJzdAotZnJvbSBtb2RlbHMgaW1wb3J0IE9i
amVjdFR5cGUsIEZyYW1ld29ya3MKK2Zyb20gbW9kZWxzIGltcG9ydCBPYmplY3RUeXBlLCBFbnVt
VHlwZSwgRnJhbWV3b3JrcwogZnJvbSBvYmpjX2dlbmVyYXRvciBpbXBvcnQgT2JqQ0dlbmVyYXRv
cgogZnJvbSBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IE9iakNHZW5lcmF0b3JUZW1w
bGF0ZXMgYXMgT2JqQ1RlbXBsYXRlcwogCkBAIC0xMjksMTMgKzEyOSwyNCBAQCBjbGFzcyBPYmpD
UHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogCiAg
ICAgICAgIGZvciBtZW1iZXIgaW4gZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzOgogICAgICAgICAg
ICAgbWVtYmVyX25hbWUgPSBtZW1iZXIubWVtYmVyX25hbWUKLSAgICAgICAgICAgIGNvbnZlcnNp
b25fZXhwcmVzc2lvbiA9IHNlbGYucGF5bG9hZF90b19vYmpjX2V4cHJlc3Npb25fZm9yX21lbWJl
cihkZWNsYXJhdGlvbiwgbWVtYmVyKQogCiAgICAgICAgICAgICBpZiBub3QgbWVtYmVyLmlzX29w
dGlvbmFsOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElP
Tl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAIiVzIl0sIEAiJXMiKTsnICUgKG1lbWJl
cl9uYW1lLCBtZW1iZXJfbmFtZSkpCiAKKyAgICAgICAgICAgIG9iamNfdHlwZSA9IHNlbGYub2Jq
Y190eXBlX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKICAgICAgICAgICAgIHZhcl9u
YW1lID0gT2JqQ0dlbmVyYXRvci5pZGVudGlmaWVyX3RvX29iamNfaWRlbnRpZmllcihtZW1iZXJf
bmFtZSkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAlczsnICUgKHZh
cl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQorICAgICAgICAgICAgY29udmVyc2lvbl9l
eHByZXNzaW9uID0gc2VsZi5wYXlsb2FkX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKGRl
Y2xhcmF0aW9uLCBtZW1iZXIpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJlci50eXBl
LCBFbnVtVHlwZSk6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc3RkOjpvcHRp
b25hbDwlcz4gJXMgPSAlczsnICUgKG9iamNfdHlwZSwgdmFyX25hbWUsIGNvbnZlcnNpb25fZXhw
cmVzc2lvbikpCisgICAgICAgICAgICAgICAgaWYgbm90IG1lbWJlci5pc19vcHRpb25hbDoKKyAg
ICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9C
QURfRU5VTV9WQUxVRSglcywgQCIlcyIpOycgJSAodmFyX25hbWUsIG1lbWJlcl9uYW1lKSkKKyAg
ICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc2VsZi4lcyA9ICVzLnZhbHVlKCk7
JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICglcyknICUgdmFyX25hbWUpCisgICAg
ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBzZWxmLiVzID0gJXMudmFsdWUo
KTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAlczsnICUgKHZhcl9uYW1lLCBjb252
ZXJzaW9uX2V4cHJlc3Npb24pKQorCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAKICAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIHNlbGY7JykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9y
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3IucHkKaW5kZXggMmJlODQ1ZTZiZWE4NjRhYTBiMmFmM2M0ZDVkYTc5ODNhMmEx
MzE3Mi4uMjFlMTc5MTQ4N2Y0OGZlN2RmZGY4YmUyNTY0YzQ0ZWE4NDFkOTJiNiAxMDA3NTUKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19n
ZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKQEAgLTQ0Miw4ICs0NDIsOCBAQCBjbGFzcyBPYmpD
R2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGNhdGVnb3J5IGluIFtPYmpDVHlwZUNh
dGVnb3J5LlNpbXBsZSwgT2JqQ1R5cGVDYXRlZ29yeS5TdHJpbmddOgogICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShtZW1iZXIudHlwZSwgRW51bVR5cGUpOgogICAgICAgICAgICAgICAgIGlmIG1l
bWJlci50eXBlLmlzX2Fub255bW91czoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmcm9t
UHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnlt
b3VzX2VudW1fbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpLCBzdWJfZXhwcmVzc2lvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gJ2Zyb21Qcm90b2NvbFN0cmluZzwlcz4oJXMpJyAlIChzZWxm
Lm9iamNfZW51bV9uYW1lX2Zvcl9ub25fYW5vbnltb3VzX2VudW0obWVtYmVyLnR5cGUpLCBzdWJf
ZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9jb2xTdHJp
bmc8JXM+KCVzKS52YWx1ZSgpJyAlIChzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNf
ZW51bV9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlciksIHN1Yl9leHByZXNzaW9uKQorICAgICAg
ICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVzPiglcykudmFsdWUoKScgJSAo
c2VsZi5vYmpjX2VudW1fbmFtZV9mb3Jfbm9uX2Fub255bW91c19lbnVtKG1lbWJlci50eXBlKSwg
c3ViX2V4cHJlc3Npb24pCiAgICAgICAgICAgICByZXR1cm4gc3ViX2V4cHJlc3Npb24KICAgICAg
ICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5PYmplY3Q6CiAgICAgICAgICAgICBv
YmpjX2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zvcl90eXBlKG1lbWJlci50eXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDI4OTc5
NjVmYmFjODcyMzNhMmYzMjgyOGRkYzE2NTMxYTU3NmViOTguLjFjMzBjNDBkNDg2NTQwMTNlMmQ1
NzYzNGI1YjZjYjQ5ODY5ZDU5MWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7IiIiKQogCiAgICAgVHlwZUNvbnZlcnNpb25zSGVhZGVyU3RhbmRhcmQgPSAoCiAgICAgIiIi
dGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsiIiIpCitzdGQ6Om9wdGlvbmFsPE9iakNFbnVt
VHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOyIiIikKIAogICAg
IEJhY2tlbmREaXNwYXRjaGVySGVhZGVyUHJlbHVkZSA9ICgKICAgICAiIiIke2luY2x1ZGVzfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggZGY0MGNl
YTVkNTc1MmFhMjNjNzUzNDg1MWQ2ZTFlMjhjMmRjYjlhMS4uMTcwZDU3YzBhYmY1MWQyMWFmMmM4
Y2ZiOGZlZTMxMThiOGQ0Y2IzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29s
U3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTAyMyw3ICsxMDIzLDcg
QEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZh
bHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUGxhdGZvcm1BbGw7CkBAIC0xMDMzLDggKzEwMzMsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29s
UGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29z
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFz
eW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCBmMGFiMDhkZTJjNTRmNDBjZTdmZWY1MDE3
YWM5Y2FkYjc5MDJkNDE5Li5lZjlhMjQ4OGRiNWJlOWM4YmJhZmNmNDI1M2NjY2M3MzkxOGRiZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3Vs
dApAQCAtMTQyNSw3ICsxNDI1LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0Vu
dW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTE0NDIsNyArMTQ0Miw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
UGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
QWxsOwpAQCAtMTQ1Miw4ICsxNDUyLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiAKQEAgLTE0NzAsNyArMTQ2OSw3IEBAIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgdmFsdWUpCiB9
CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMg
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAicmVkIikKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc1JlZDsKQEAgLTE0Nzgs
OCArMTQ3Nyw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjsKICAgICBpZiAodmFsdWUgPT0gImJs
dWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzQmx1
ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzUmVkOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlu
bGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQ5Nyw3ICsx
NDk1LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblYKIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1By
aW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xv
ckN5YW47CkBAIC0xNTA3LDggKzE1MDUsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9tUHJvdAogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAg
ICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc1ByaW50Q29sb3JCbGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5s
aW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNR
TEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIHZhbHVlKQpAQCAtMTUyNiw3ICsx
NTIzLDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm4KIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQ
cmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRD
b2xvckN5YW47CkBAIC0xNTM2LDggKzE1MzMsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgZnJvbVBybwog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIp
CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTFN5bmNQcmludENvbG9yIHZhbHVlKQpAQCAtMTU1NSw3ICsxNTUxLDcgQEAgaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5
bmNQcmludENvbG9yIHZhbHUKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW47CkBAIC0xNTY1LDgg
KzE1NjEsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50
Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cgogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZh
bHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVTUUxTeW5jUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW47
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29s
U3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciB2YWx1
ZSkKQEAgLTE1ODQsNyArMTU3OSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgdmFsCiB9CiAKIHRl
bXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50
Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3I+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxBc3luY1ByaW50Q29sb3JDeWFuOwpAQCAtMTU5NCw4ICsxNTg5LDcgQEAgaW5saW5lIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3QKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNR
TEFzeW5jUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckJs
YWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JDeWFuOworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtMTY2MSw3ICsxNjU1LDkg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlUHJpbWFyeUNvbG9y
czooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwot
ICAgICpvdXRWYWx1ZSA9IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4ocGF5bG9h
ZCk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiUHJp
bWFyeUNvbG9ycyIpOworICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiAr
ICh2b2lkKV9wYXJzZUNvbG9yTGlzdDooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKW91dFZhbHVl
IGZyb21QYXlsb2FkOihpZClwYXlsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5k
ZXggYzg5ZTUwNGFiZDcwMzg4N2Y1N2NmZmExMjhlMGRhNjdkZGFlNDIzMS4uYTNiMjQzMWEzODc5
MWRiYWYxMmM4ZjJjMjM3Y2VlMWNiZTFjYTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdApAQCAtODcyLDEzICs4NzIsMTMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHIKICAgICBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9yOwogICAgIGlmIChpbl9zcWxF
cnJvcikKICAgICAgICAgb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3NxbEVycm9yXSBhdXRvcmVsZWFz
ZV07Ci0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIG9faW5fc2NyZWVuQ29s
b3I7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+
IG9faW5fc2NyZWVuQ29sb3I7CiAgICAgaWYgKGluX3NjcmVlbkNvbG9yKQogICAgICAgICBvX2lu
X3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9ycz4oKmluX3NjcmVlbkNvbG9yKTsKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
Km9faW5fYWx0ZXJuYXRlQ29sb3JzOwogICAgIGlmIChpbl9hbHRlcm5hdGVDb2xvcnMpCiAgICAg
ICAgIG9faW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0FycmF5KGluX2FsdGVybmF0ZUNv
bG9ycyk7Ci0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvciBvX2luX3ByaW50Q29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBvX2lu
X3ByaW50Q29sb3I7CiAgICAgaWYgKGluX3ByaW50Q29sb3IpCiAgICAgICAgIG9faW5fcHJpbnRD
b2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPigqaW5fcHJpbnRDb2xvcik7CiAKQEAgLTkyMCwx
MSArOTIwLDEzIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlCiAgICAgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICpvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAgaW50
IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNlSWQ7CiAgICAgVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxs
b2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9zcWxFcnJvcl0gYXV0b3JlbGVhc2VdOwot
ICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBvX2luX3NjcmVlbkNvbG9yID0g
ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oaW5f
c2NyZWVuQ29sb3IpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmlt
YXJ5Q29sb3JzPiBvX2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOworICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUob19pbl9zY3JlZW5Db2xvciwgQCJzY3JlZW5Db2xv
ciIpOwogICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9hbHRlcm5hdGVDb2xvcnMgPSBv
YmpjU3RyaW5nQXJyYXkoJmluX2FsdGVybmF0ZUNvbG9ycyk7Ci0gICAgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIG9faW5fcHJpbnRDb2xv
ciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOworICAgIHN0ZDo6b3B0aW9u
YWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yPiBvX2luX3ByaW50Q29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPihpbl9wcmludENvbG9y
KTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKG9faW5fcHJpbnRDb2xv
ciwgQCJwcmludENvbG9yIik7CiAKLSAgICBbbV9kZWxlZ2F0ZSBleGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazpz
dWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6b19pbl9jb2x1bW5OYW1lcyBub3RlczpvX2luX25v
dGVzIHRpbWVzdGFtcDpvX2luX3RpbWVzdGFtcCB2YWx1ZXM6b19pbl92YWx1ZXMgcGF5bG9hZDpv
X2luX3BheWxvYWQgZGF0YWJhc2VJZDpvX2luX2RhdGFiYXNlSWQgc3FsRXJyb3I6b19pbl9zcWxF
cnJvciBzY3JlZW5Db2xvcjpvX2luX3NjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczpvX2luX2Fs
dGVybmF0ZUNvbG9ycyBwcmludENvbG9yOm9faW5fcHJpbnRDb2xvcl07CisgICAgW21fZGVsZWdh
dGUgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6ZXJyb3JDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2s6c3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOm9faW5fY29s
dW1uTmFtZXMgbm90ZXM6b19pbl9ub3RlcyB0aW1lc3RhbXA6b19pbl90aW1lc3RhbXAgdmFsdWVz
Om9faW5fdmFsdWVzIHBheWxvYWQ6b19pbl9wYXlsb2FkIGRhdGFiYXNlSWQ6b19pbl9kYXRhYmFz
ZUlkIHNxbEVycm9yOm9faW5fc3FsRXJyb3Igc2NyZWVuQ29sb3I6b19pbl9zY3JlZW5Db2xvci52
YWx1ZSgpIGFsdGVybmF0ZUNvbG9yczpvX2luX2FsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOm9f
aW5fcHJpbnRDb2xvci52YWx1ZSgpXTsKIH0KIAogCkBAIC0xMjgwLDcgKzEyODIsNyBAQCBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51
bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpA
QCAtMTI5Nyw3ICsxMjk5LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3Rv
Y29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMzA3LDggKzEzMDksNyBAQCBp
bmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBp
ZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
TWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAtMTMyNSw3
ICsxMzI2LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQ
cm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9ycz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJyZWQiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzUmVkOwpAQCAtMTMzMyw4ICsxMzM0LDcgQEAgaW5saW5lIFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
c0dyZWVuOwogICAgIGlmICh2YWx1ZSA9PSAiYmx1ZSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNCbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3IgdmFsdWUpCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUAog
fQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yQ3lhbjsKQEAgLTEzNjIsOCArMTM2Miw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0
CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yQ3lhbjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTEzODEsNyArMTM4MCw3IEBAIGlubGluZSBTdHJp
bmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25h
bFBhcmFtZXRlcnNQCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFu
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAtMTM5MSw4ICsxMzkwLDcgQEAgaW5saW5lIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Ig
ZnJvbVByb3RvY29sU3QKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09
ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlu
bGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgdmFsdWUpCkBAIC0xNDEwLDcgKzE0MDgsNyBA
QCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9y
PiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKQEAgLTE0MjAsOCArMTQxOCw3IEBA
IGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1By
aW50Q29sb3IgZnJvbVByb3RvY29sU3RyCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYg
KHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQzOSw3ICsx
NDM2LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHIKIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9w
dGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDb2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CkBAIC0xNDQ5LDggKzE0
NDYsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cgogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93Owog
ICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xNTE2LDcgKzE1MTIsOSBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogKyAodm9pZClfcGFyc2VQcmltYXJ5Q29sb3Jz
OihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0g
ICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRl
c3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihwYXlsb2Fk
KTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJQcmlt
YXJ5Q29sb3JzIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CiAKICsg
KHZvaWQpX3BhcnNlQ29sb3JMaXN0OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopb3V0VmFsdWUg
ZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMt
cGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggNmVlYmRmZjMyZDM3ZmZjY2E3NTMzY2E1YmQ4MmMx
ZDcyN2JhZGUyYi4uZDljZWM5YzYxMmM4NjI1ODlhZDZkMDQ1OThjMDQ1MzQxY2Q2OTk4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAg
LTc0Miw3ICs3NDIsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQ
bGF0Zm9ybSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9i
akNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmco
VGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC03NTksNyArNzU5LDcgQEAgaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQog
CiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9j
b2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZv
cm1BbGw7CkBAIC03NjksOCArNzY5LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxh
YmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IGMzYTE0M2VmYTFkOGQ5YWUzZmE0YmE5NTBkMzMyYTY4
MGNhOGViNDcuLjBjNGMzMDQ5OWZhNjI4NzMyN2U2MjNhNzFiMGE0YmY0Yjg2ZjlmNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtOTk2LDcgKzk5Niw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1U
eXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9u
YWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2
YWx1ZSkKIHsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0
cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxs
IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTAyMyw4ICsx
MDIzLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1J
T1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12
YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IDEzZWFjYzNiMWEzZjY0ZTc0ZjQ3
MmIyOWUwNTg3NDUwYjUzYjFmZGEuLmU5YWZjMmExOGJmNjc4OWRhODZmNDlmMDVlMGI0Y2ZjYWIx
NGNiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6
ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uLXJlc3VsdApAQCAtMTI1OSw3ICsxMjU5LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0pIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5
cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAt
MTI3Niw3ICsxMjc2LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29s
UGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMjg2LDggKzEyODYsNyBAQCBpbmxp
bmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAo
dmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFj
T1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBs
YXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJl
c3VsdAppbmRleCAxODRmZGE2MmZkYmVmMjA4YTZkMjA2Nzk1OGE4ZTVkYjk1YzM2NWVhLi5kMmEw
MWM4NGVjZjU5YWIxNzFkN2QyYTMxYjVjNjBlZGNhNWMzZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9l
bnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3Vs
dApAQCAtMTAzOSw3ICsxMDM5LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0Vu
dW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEwNTYsNyArMTA1Niw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
UGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
QWxsOwpAQCAtMTA2Niw4ICsxMDY2LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiAKQEAgLTEwODYsNyArMTA4NSw3IEBAIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bSB2YWx1ZSkKIH0KIAogdGVt
cGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3Rv
Y29sVHlwZURvbWFpbkVudW0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogewogICAgIGlmICh2YWx1ZSA9PSAic2hhcmVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkOwpAQCAtMTA5Niw4ICsxMDk1LDcgQEAgaW5saW5lIFRl
c3RQcm90b2NvbFR5cGVEb21haW5FbnVtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1HcmVlbjsK
ICAgICBpZiAodmFsdWUgPT0gImJsdWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlw
ZURvbWFpbkVudW1CbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bVNoYXJlZDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTExNTQsNyArMTE1Miw5IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVR5cGVEb21haW5FbnVtOihO
U051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAg
Km91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xU
eXBlRG9tYWluRW51bT4ocGF5bG9hZCkpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
VHlwZURvbWFpbkVudW0+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbFR5cGVEb21haW5FbnVtPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJUeXBlRG9tYWluRW51bSIpOworICAgICpvdXRW
YWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRz
LXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBlZTE5YmYzYWIzNmM1
M2E2ZTU3Yzk5NjNhNGNiM2Q5ZWRhNjkyOGRkLi4xMzdkMTgyN2UzZWJjMjIwZmUwNTc4ZjFlNTk5
NmYxZjhiNDNhOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTk5Miw3ICs5OTIsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTAwOSw3ICsxMDA5
LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3Jt
IHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMDE5LDggKzEwMTksNyBAQCBpbmxpbmUgVGVzdFByb3Rv
Y29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1h
Y29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDMzODgzZTc0
MGEyMmUyZWQ1MjE2Y2VmM2FkOWQyYTQwNGJmZWQyNjguLjllZWIwYjFjOWI3MWI1NTcyNTZjZjcz
ZGZmY2VkOGRlOGUyMmY2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0
aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5z
LXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTEwMzMsNyArMTAzMyw3IEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNF
bnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxp
bmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7
CkBAIC0xMDUwLDcgKzEwNTAsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJv
dG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEwNjAsOCArMTA2MCw3IEBA
IGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAg
IGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZv
cm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CmluZGV4IDZkMzIy
N2QzYzEwNDI2MzE3MjdmMjE2NzZkNDEzODM1OGZhMmNjZDYuLmQ2NTEyOWViODBlZWExNzY3Mjlk
YWRlNDczN2FmM2VkMTI0OTdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZm
ZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJl
bnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC03NTIsNyArNzUyLDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0pIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51
bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpA
QCAtNzY5LDcgKzc2OSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJv
dG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2Nv
bFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtNzc5LDggKzc3OSw3IEBAIGlubGlu
ZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2
YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNP
UzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxh
dGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9z
aGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggNzUxZWY3MzEw
ZmFiODE5YjI1YjVlNzUwZGYxMDEyMDQ2YWYzYzc0NC4uYjdlZmYxYjE1Nzg1NTJhNDJhYTNkZmE2
ZmYxOGM2NTdhNWFiODg5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlw
ZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUt
c2V0dGVycy5qc29uLXJlc3VsdApAQCAtODg5LDcgKzg4OSw3IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC05MDYsNyArOTA2
LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3Jt
IHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUGxhdGZvcm1BbGw7CkBAIC05MTYsOCArOTE2LDcgQEAgaW5saW5lIFRlc3RQcm90b2Nv
bFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNv
cyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKQEAgLTkzNCw3ICs5MzMsNyBAQCBpbmxpbmUg
U3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlIHZh
bHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhU
eXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIm51bGwiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDsKQEAgLTk0Miw4
ICs5NDEsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUnVudGltZUtleVBhdGhUeXBlU3RyaW5nOwogICAgIGlmICh2YWx1ZSA9PSAiYXJyYXkiKQog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlQXJyYXk7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQ
YXRoVHlwZU51bGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCkBAIC0xMDU3LDcgKzEwNTUsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFV
SVJFRF9QUk9QRVJUWShwYXlsb2FkW0AidHlwZSJdLCBAInR5cGUiKTsKLSAgICBzZWxmLnR5cGUg
PSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPihwYXls
b2FkW0AidHlwZSJdKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQ
YXRoVHlwZT4gdHlwZSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lS2V5
UGF0aFR5cGU+KHBheWxvYWRbQCJ0eXBlIl0pOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFE
X0VOVU1fVkFMVUUodHlwZSwgQCJ0eXBlIik7CisgICAgc2VsZi50eXBlID0gdHlwZS52YWx1ZSgp
OwogCiAgICAgc2VsZi5zdHJpbmcgPSBwYXlsb2FkW0Aic3RyaW5nIl07CiAKQEAgLTEwOTAsNyAr
MTA5MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKFRlc3RQcm90b2NvbFJ1
bnRpbWVLZXlQYXRoVHlwZSl0eXBlCiB7Ci0gICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxU
ZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJ0eXBl
Il0pOworICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZUtl
eVBhdGhUeXBlPihbc3VwZXIgc3RyaW5nRm9yS2V5OkAidHlwZSJdKS52YWx1ZSgpOwogfQogCiAt
ICh2b2lkKXNldFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAppbmRl
eCA3ZTk4NDM0NGY4NzM2NmZmMjkxNmQ1N2M4OTUxZDMyNjY1OTcxMzE4Li42ZWNlNDNkOWNjMzUx
NzMyMDlkYTA0ZjE3ZjUwN2MyMDk1YjdhNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC03NDcs
NyArNzQ3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZv
cm0pIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51
bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtNzY0LDcgKzc2NCw3IEBAIGlubGluZSBTdHJp
bmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVt
cGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxh
dGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
ICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxs
OwpAQCAtNzc0LDggKzc3NCw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5
cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1y
ZXN1bHQKaW5kZXggMmY4MTE2ODNjMDgwOTc3MTA2YzdkMzFiMzhkMzJiMzg3OGEzNTQwOS4uZDJh
NjJjOWZmN2NjY2Y2MjY5MmRlN2YzYTM4OGJkYmZiMDljNTgwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtODMwLDcgKzgzMCw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uKSB7CiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgot
T2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0
ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQ
bGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTg0Nyw3ICs4NDcsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4K
LWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUg
PT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTg1
Nyw4ICs4NTcsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0
Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIApAQCAtODc1LDcgKzg3NCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5l
IFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGVidWdnZXJSZWFz
b24+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSAiRGllZCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNv
bkRpZWQ7CkBAIC04ODMsOCArODgyLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVh
c29uIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25GYWludGVkOwogICAgIGlmICh2YWx1ZSA9PSAi
SHVuZ3J5IikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uSHVuZ3J5
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1
Z2dlclJlYXNvbkRpZWQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCkBAIC05NjAs
NyArOTU4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlUmVh
c29uOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7
Ci0gICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xEZWJ1Z2dlclJlYXNvbj4ocGF5bG9hZCkpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sRGVidWdnZXJSZWFzb24+IHJlc3VsdCA9IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJSZWFzb24iKTsKKyAgICAqb3V0VmFs
dWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCBjYzUxMDMzZDY1ZDMxODFjMmIyOTVhOWI3
MzgxZTg0N2NiODI2MDg0Li5hMWNmY2Y1NGJhZjU0ZDAzZGYxZTJmMTU0ZGE1NmYwYmZmNjRlOGVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAt
ODU4LDcgKzg1OCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFJ1
bnRpbWVUd29MZWdnZWRBbmltYWxzKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTg3NSw3ICs4
NzUsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZv
cm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTg4NSw4ICs4ODUsNyBAQCBpbmxpbmUgVGVzdFByb3Rv
Y29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1h
Y29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAtOTA1LDcgKzkwNCw3IEBAIGlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMg
dmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFu
aW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHM+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiUGlncyIpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNQaWdzOwpAQCAtOTE1
LDggKzkxNCw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMgZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xSdW50aW1lRmFybUFuaW1hbHNDYXRzOwogICAgIGlmICh2YWx1ZSA9PSAiSGVucyIpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNIZW5zOwotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFu
aW1hbHNQaWdzOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1
ZSkKQEAgLTkzNCw3ICs5MzIsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4K
LWlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90
b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIkR1Y2tzIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRHVja3M7CkBAIC05NDQsOCArOTQy
LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHUKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzQ3Jvd3M7CiAgICAgaWYgKHZhbHVlID09ICJGbGFtaW5n
b3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNG
bGFtaW5nb3M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90
b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRHVja3M7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xMDAzLDEzICsxMDAwLDE3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZUZhcm1BbmltYWxzOihO
U051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAg
Km91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xS
dW50aW1lRmFybUFuaW1hbHM+KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xT
dHJpbmc8VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzPihwYXlsb2FkKTsKKyAgICBUSFJP
V19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJGYXJtQW5pbWFscyIpOwor
ICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiArICh2b2lkKV9wYXJzZVR3
b0xlZ2dlZEFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJp
bmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPihwYXlsb2FkKSk7CisgICAg
c3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4gcmVzdWx0
ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZVR3b0xl
Z2dlZEFuaW1hbHM+KHBheWxvYWQpOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1f
VkFMVUUocmVzdWx0LCBAIlR3b0xlZ2dlZEFuaW1hbHMiKTsKKyAgICAqb3V0VmFsdWUgPSBAKHJl
c3VsdC52YWx1ZSgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2Jq
ZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNWI4Yzc2ZTMwMGI3NGM2YTJkY2ZmOGEzZDNjODBk
ZTg3ZjEwZDFiZC4uMWIyM2FiMmE5NzZiYjBlZGVhYTMxZTc2MTFhZDgwZWQ1OGI1MjVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0x
MjgzLDcgKzEyODMsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+
Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
c3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJp
bmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2Nv
bFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgaW5saW5lIFN0cmluZyB0
b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0
ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9y
bT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBA
IC0xMzEwLDggKzEzMTAsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQKaW5kZXggOGQ0OWRlNTA0YzcyMmYxZDk3Nzc0ZGI1OTVjMDc0ZTlkMTI4ODNiMS4uODkz
NjkyOTgyNzQ1MWM1MzYzYWNlZmVjZTI5MmVmNGUxNWI2NzBjZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
dHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC0xMjEyLDcgKzEyMTIsNyBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUg
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxP
YmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAog
aW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVl
KQogewpAQCAtMTIyOSw3ICsxMjI5LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVz
dFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
CitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMjM5LDggKzEyMzks
NyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsK
ICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBs
YXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQ
cm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAt
MTI1OSw3ICsxMjU4LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBU
ZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFVuY2Fz
dGVkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJQaWdzIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RV
bmNhc3RlZEFuaW1hbHNQaWdzOwpAQCAtMTI2OSw4ICsxMjY4LDcgQEAgaW5saW5lIFRlc3RQcm90
b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ2F0
czsKICAgICBpZiAodmFsdWUgPT0gIkhlbnMiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
VGVzdFVuY2FzdGVkQW5pbWFsc0hlbnM7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNQaWdzOworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJv
dG9jb2xUZXN0Q2FzdGVkQW5pbWFscyB2YWx1ZSkKQEAgLTEyODgsNyArMTI4Niw3IEBAIGlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyB2
YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiRHVja3MiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNEdWNrczsKQEAgLTEyOTgs
OCArMTI5Niw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFRlc3RDYXN0ZWRBbmltYWxzQ3Jvd3M7CiAgICAgaWYgKHZhbHVlID09ICJGbGFtaW5nb3Mi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNGbGFtaW5nb3M7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RD
YXN0ZWRBbmltYWxzRHVja3M7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xMzgwLDEzICsxMzc3LDE3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVVuY2FzdGVkQW5pbWFsczooTlNOdW1iZXIgKiop
b3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1ZSA9
IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdFVuY2FzdGVk
QW5pbWFscz4ocGF5bG9hZCkpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFVu
Y2FzdGVkQW5pbWFscz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscz4ocGF5bG9hZCk7CisgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiVW5jYXN0ZWRBbmltYWxzIik7CisgICAg
Km91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CiAKICsgKHZvaWQpX3BhcnNlQ2FzdGVk
QW5pbWFsczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKIHsK
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFz
c10pOwotICAgICpvdXRWYWx1ZSA9IEAoSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4ocGF5bG9hZCk7Cisg
ICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiQ2FzdGVkQW5p
bWFscyIpOworICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiArICh2b2lk
KV9wYXJzZVJlY3Vyc2l2ZU9iamVjdDE6KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3Qx
ICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCkBAIC0xNDYxLDcgKzE0NjIsOSBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHNlbGYubnVtYmVyID0gW3BheWxvYWRb
QCJudW1iZXIiXSBpbnRlZ2VyVmFsdWVdOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFV
SVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiYW5pbWFscyJdLCBAImFuaW1hbHMiKTsKLSAgICBzZWxm
LmFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1h
bHM+KHBheWxvYWRbQCJhbmltYWxzIl0pOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
VGVzdENhc3RlZEFuaW1hbHM+IGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3Rv
Y29sVGVzdENhc3RlZEFuaW1hbHM+KHBheWxvYWRbQCJhbmltYWxzIl0pOworICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoYW5pbWFscywgQCJhbmltYWxzIik7CisgICAgc2Vs
Zi5hbmltYWxzID0gYW5pbWFscy52YWx1ZSgpOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9S
RVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiaWQiXSwgQCJpZCIpOwogICAgIHNlbGYuaWRlbnRp
ZmllciA9IFtwYXlsb2FkW0AiaWQiXSBpbnRlZ2VyVmFsdWVdOwpAQCAtMTUyMyw3ICsxNTI2LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHMpYW5pbWFscwogewotICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFBy
b3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJhbmltYWxzIl0p
OworICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFu
aW1hbHM+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJhbmltYWxzIl0pLnZhbHVlKCk7CiB9CiAKIC0g
KHZvaWQpc2V0SWRlbnRpZmllcjooaW50KWlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dv
cmtlci1zdXBwb3J0ZWQtZG9tYWlucy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtlci1zdXBwb3J0
ZWQtZG9tYWlucy5qc29uLXJlc3VsdAppbmRleCBmOWE1ZGI1MWYxZTYyMzdiOTE1MGY0ZDU3OTI1
YjJhM2RjZGFiMWMxLi5iYjRkYzIyMTM5ZGE0YWRlMWI4OGUwM2U1ZTYwMTFmMTQ2YzEwYjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvd29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0CkBAIC05OTcsNyAr
OTk3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0p
IHsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5
cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
Oworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgaW5saW5lIFN0cmlu
ZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1w
bGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0
Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7
CkBAIC0xMDI0LDggKzEwMjQsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2lvcy9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggNmVlYmRmZjMyZDM3ZmZjY2E3NTMzY2E1
YmQ4MmMxZDcyN2JhZGUyYi4uZDljZWM5YzYxMmM4NjI1ODlhZDZkMDQ1OThjMDQ1MzQxY2Q2OTk4
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2lvcy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9z
L2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03
NDIsNyArNzQyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxh
dGZvcm0pIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpD
RW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRl
c3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtNzU5LDcgKzc1OSw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
UGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
QWxsOwpAQCAtNzY5LDggKzc2OSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13
aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBkZjQwY2VhNWQ1NzUyYWEyM2M3NTM0
ODUxZDZlMWUyOGMyZGNiOWExLi4xNzBkNTdjMGFiZjUxZDIxYWYyYzhjZmI4ZmVlMzExOGI4ZDRj
YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9t
YWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAg
LTEwMDYsNyArMTAwNiw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBs
YXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRm
b3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsK
QEAgLTEwMzMsOCArMTAzMyw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301777</attachid>
            <date>2017-02-16 10:09:25 -0800</date>
            <delta_ts>2017-02-16 10:48:50 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-168018-20170216100648.patch</filename>
            <type>text/plain</type>
            <size>68031</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWQ1MDE5NzgwNjhiNDM4YTEwYmFlOGU4MWNhNDAxOGE1NDJlZTMwLi4zZjdlOTk1M2M2N2VkMDgx
YzQ4MjMxMDE0MzNmM2E1ZTAyOWJmOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0wMi0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFQ+IHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxUPgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MDE4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDQ2ODc3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHBhcnNlIHVudHJ1c3RlZCBzdHJpbmcgaW5wdXRzLCBzbyB0
aGV5IHNob3VsZCByZXR1cm4gYW4gb3B0aW9uYWwgaW5zdGVhZAorICAgICAgICBvZiBhc3NlcnRp
bmcgb3IgY3Jhc2hpbmcgd2hlbiB0aGUgaW5wdXQgaXMgbm90IHVzYWJsZS4KKworICAgICAgICBV
cGRhdGUgdmFyaW91cyBwaWVjZXMgb2YgZ2VuZXJhdGVkIGNvZGUgdG8gaGFuZGxlIHRoZSBlcnJv
ciBjYXNlIGdyYWNlZnVsbHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAg
ICAgICAoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVy
YXRlX2NvbnZlcnNpb25zX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbnZvY2F0aW9uX2Zvcl9jb21t
YW5kKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIE9iakMtZnJpZW5k
bHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEgc3RkOjpvcHRpb25hbAorICAgICAgICB3
aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3RyaW5nIGludG8gYW4gTlNfRU5VTSB2YWx1
ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIKKyAgICAgICAgaXMgbm90IG9wdGlvbmFs
LCB0aGVuIHNlbmQgYSByZXNwb25zZSB3aXRoIGEgY29tbWFuZCBmYWlsdXJlIG1lc3NhZ2UgYW5k
IHJldHVybi4KKworICAgICAgICBUaGUgb3B0aW9uYWwgZW51bSBwYXJhbWV0ZXIgY2FzZSBpcyBu
b3QgaGFuZGxlZCBjb3JyZWN0bHksIGJ1dCBubyBleGlzdGluZyBjb2RlIHJlcXVpcmVzIGl0Lgor
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3Rv
Y29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlw
ZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xf
c3RyaW5nKToKKyAgICAgICAgRml4IHNpZ25hdHVyZSBhbmQgcmVtb3ZlIGRlZmF1bHQgY2FzZSBB
U1NFUlRfTk9UX1JFQUNIRUQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5w
eToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0ltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV90eXBlX2ZhY3RvcnlfbWV0aG9kX2ltcGxlbWVudGF0aW9uKToKKyAg
ICAgICAgU2luY2UgdGhpcyBjb2RlIGFzc3VtZXMgYWxsIGlucHV0cyB0byBiZSB2YWxpZCBhbmQg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBvdGhlcndpc2UsIHdlCisgICAgICAgIHRyeSB0byBjb252ZXJ0
IHRoZSBlbnVtIGFuZCB0aHJvdyBhbiBleGNlcHRpb24gaWYgaXQncyBudWxsb3B0LiBJZiBpdCdz
IHZhbGlkLCB3cml0ZSB0byBvdXRWYWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToK
KyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVy
YXRlX2luaXRfbWV0aG9kX2Zvcl9wYXlsb2FkKToKKyAgICAgICAgVGhlIGxvY2FsIHZhcmlhYmxl
IGhvbGRpbmcgdGhlIE9iakMtZnJpZW5kbHkgY29udmVydGVkIHZhbHVlIHNob3VsZCB0YWtlIGEg
c3RkOjpvcHRpb25hbAorICAgICAgICB3aGVuIGNvbnZlcnRpbmcgYW4gZW51bSBmcm9tIGEgc3Ry
aW5nIGludG8gYW4gTlNfRU5VTSB2YWx1ZS4gSWYgdGhlIGVudW0gY29tbWFuZCBwYXJhbWV0ZXIK
KyAgICAgICAgaXMgbm90IG9wdGlvbmFsLCB0aGVuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUg
dmFsdWUgaXMgbnVsbG9wdC4gT3RoZXJ3aXNlLCBhbGxvdyBpdCB0byBiZSBlbXB0eS4KKworICAg
ICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAg
ICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVy
KToKKyAgICAgICAgVW5jb25kaXRpb25hbGx5IHVud3JhcCB0aGUgb3B0aW9uYWwuIFRoaXMgZXhw
cmVzc2lvbiBpcyBvbmx5IHVzZWQgaW5zaWRlIHRoZSB0eXBlY2hlY2tlZAorICAgICAgICBPYmpD
IHByb3RvY29sIG9iamVjdHMuIEluIHRoaXMgY2FzZSB3ZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZl
IGFscmVhZHkgaW5pdGlhbGl6ZWQgdGhlIGVudW0gd2l0aCBhIHZhbGlkCisgICAgICAgIHZhbHVl
LCBidXQgbXVzdCBzdG9yZSBpdCBhcyBhIHN0cmluZyBpbnNpZGUgYSB3cmFwcGVkIEluc3BlY3Rv
ck9iamVjdC4gVGhlIGdldHRlciBuZWVkcyB0bworICAgICAgICByZS1jb252ZXJ0IHRoZSBzdG9y
ZWQgc3RyaW5nIGludG8gYW4gTlNfRU5VTSB2YWx1ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICBVcGRh
dGUgdHlwZSB0ZW1wbGF0ZSBmb3IgZnJvbVByb3RvY29sU3RyaW5nPFQ+KCkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlm
ZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBl
Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0cy4KKwogMjAxNy0wMi0x
NiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBhbGxvdyBpbXBvcnQoKSBpbnNpZGUgdGhlIGluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tl
bmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA2OTM4Y2EzZTc0YWRiNDg2NGJj
ZGJlZDJiMTBlNzg2ZmVkNjhkY2E5Li4wYjEwNTVkMjRhNGJiZTRlYTZiNDJhNTk0MDU0NzNkZDAx
YjJlNjJjIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlv
bi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAt
MTY4LDEwICsxNjgsMTkgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgICAgICBpbl9wYXJhbV9uYW1lID0g
J2luXyVzJyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQogICAgICAgICAgICAgb2JqY19pbl9w
YXJhbV9uYW1lID0gJ29fJXMnICUgaW5fcGFyYW1fbmFtZQogICAgICAgICAgICAgb2JqY190eXBl
ID0gc2VsZi5vYmpjX3R5cGVfZm9yX3BhcmFtKGRvbWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUs
IHBhcmFtZXRlciwgRmFsc2UpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlci50
eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICAgICAgb2JqY190eXBlID0gJ3N0ZDo6b3B0aW9u
YWw8JXM+JyAlIG9iamNfdHlwZQogICAgICAgICAgICAgcGFyYW1fZXhwcmVzc2lvbiA9IGluX3Bh
cmFtX2V4cHJlc3Npb24oaW5fcGFyYW1fbmFtZSwgcGFyYW1ldGVyKQogICAgICAgICAgICAgaW1w
b3J0X2V4cHJlc3Npb24gPSBzZWxmLm9iamNfcHJvdG9jb2xfaW1wb3J0X2V4cHJlc3Npb25fZm9y
X3BhcmFtZXRlcihwYXJhbV9leHByZXNzaW9uLCBkb21haW4sIGNvbW1hbmQuY29tbWFuZF9uYW1l
LCBwYXJhbWV0ZXIpCiAgICAgICAgICAgICBpZiBub3QgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgog
ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICVzID0gJXM7JyAlIChqb2luX3R5cGVf
YW5kX25hbWUob2JqY190eXBlLCBvYmpjX2luX3BhcmFtX25hbWUpLCBpbXBvcnRfZXhwcmVzc2lv
bikpCisKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVt
VHlwZSk6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghJXMpIHsn
ICUgb2JqY19pbl9wYXJhbV9uYW1lKQorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciBcJyUl
c1wnIG9mIG1ldGhvZCBcJyUlc1wnIGNhbm5vdCBiZSBwcm9jZXNzZWQiLCAiJXMiLCAiJXMuJXMi
KSk7JyAlIChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUsIGRvbWFpbi5kb21haW5fbmFtZSwgY29t
bWFuZC5jb21tYW5kX25hbWUpKQorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuOycpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH0n
KQorCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
ICVzOycgJSBqb2luX3R5cGVfYW5kX25hbWUob2JqY190eXBlLCBvYmpjX2luX3BhcmFtX25hbWUp
KQogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICglcyknICUgaW5fcGFyYW1f
bmFtZSkKQEAgLTE4NywxMCArMTk2LDE1IEBAIGNsYXNzIE9iakNCYWNrZW5kRGlzcGF0Y2hlcklt
cGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICBwYWlycy5hcHBl
bmQoJ3N1Y2Nlc3NDYWxsYmFjazpzdWNjZXNzQ2FsbGJhY2snKQogICAgICAgICBmb3IgcGFyYW1l
dGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgaW5fcGFyYW1fbmFt
ZSA9ICdpbl8lcycgJSBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKLSAgICAgICAgICAgIG9iamNf
aW5fcGFyYW1fbmFtZSA9ICdvXyVzJyAlIGluX3BhcmFtX25hbWUKKyAgICAgICAgICAgIG9iamNf
aW5fcGFyYW1fZXhwcmVzc2lvbiA9ICdvXyVzJyAlIGluX3BhcmFtX25hbWUKICAgICAgICAgICAg
IGlmIG5vdCBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcGFpcnMuYXBw
ZW5kKCclczolcycgJSAocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lLCBvYmpjX2luX3BhcmFtX25h
bWUpKQorICAgICAgICAgICAgICAgICMgRklYTUU6IHdlIGRvbid0IGhhbmRsZSBvcHRpb25hbCBl
bnVtIHZhbHVlcyBpbiBjb21tYW5kcyBoZXJlIGJlY2F1c2UgaXQgaXNuJ3QgdXNlZCBhbnl3aGVy
ZSB5ZXQuCisgICAgICAgICAgICAgICAgIyBXZSdkIG5lZWQgdG8gY2hhbmdlIHRoZSBkZWxlZ2F0
ZSdzIHNpZ25hdHVyZSB0byB0YWtlIHN0ZDo6b3B0aW9uYWwgZm9yIG9wdGlvbmFsIGVudW0gdmFs
dWVzLgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUsIEVudW1U
eXBlKToKKyAgICAgICAgICAgICAgICAgICAgb2JqY19pbl9wYXJhbV9leHByZXNzaW9uID0gJyVz
LnZhbHVlKCknICUgb2JqY19pbl9wYXJhbV9leHByZXNzaW9uCisKKyAgICAgICAgICAgICAgICBw
YWlycy5hcHBlbmQoJyVzOiVzJyAlIChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUsIG9iamNfaW5f
cGFyYW1fZXhwcmVzc2lvbikpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9w
dGlvbmFsX2V4cHJlc3Npb24gPSAnKCVzID8gJiVzIDogbmlsKScgJSAoaW5fcGFyYW1fbmFtZSwg
b2JqY19pbl9wYXJhbV9uYW1lKQorICAgICAgICAgICAgICAgIG9wdGlvbmFsX2V4cHJlc3Npb24g
PSAnKCVzID8gJiVzIDogbmlsKScgJSAoaW5fcGFyYW1fbmFtZSwgb2JqY19pbl9wYXJhbV9leHBy
ZXNzaW9uKQogICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgnJXM6JXMnICUgKHBhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSwgb3B0aW9uYWxfZXhwcmVzc2lvbikpCiAgICAgICAgIHJldHVybiAn
ICAgIFttX2RlbGVnYXRlICVzJXNdOycgJSAoY29tbWFuZC5jb21tYW5kX25hbWUsICcgJy5qb2lu
KHBhaXJzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFk
ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CmluZGV4IGVm
Mjk3YjgwNDQxODgyM2UxMjcxY2JiNDc2YTM3NjQwY2NjYTNkOWYuLmVhOWU2ZTJkNzc0MThiOTFi
ZDY4NGYwOTFiNTZlYmE1Zjc3YzgwN2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9j
b252ZXJzaW9uc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25z
X2hlYWRlci5weQpAQCAtMTU1LDEyICsxNTUsMTEgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZUNv
bnZlcnNpb25zSGVhZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgIGRlZiBfZ2VuZXJh
dGVfZW51bV9mcm9tX3Byb3RvY29sX3N0cmluZyhzZWxmLCBvYmpjX2VudW1fbmFtZSwgZW51bV92
YWx1ZXMpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZCgndGVtcGxh
dGU8PicpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnaW5saW5lICVzIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKScgJSBvYmpjX2VudW1fbmFtZSkKKyAgICAgICAgbGluZXMu
YXBwZW5kKCdpbmxpbmUgc3RkOjpvcHRpb25hbDwlcz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpJyAlIG9iamNfZW51bV9uYW1lKQogICAgICAgICBsaW5lcy5hcHBlbmQo
J3snKQogICAgICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3ZhbHVlczoKICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIGlmICh2YWx1ZSA9PSAiJXMiKScgJSBlbnVtX3ZhbHVlKQogICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiAlcyVzOycgJSAob2JqY19lbnVt
X25hbWUsIEdlbmVyYXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUp
KSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7JykKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuICVzJXM7JyAlIChvYmpjX2VudW1fbmFtZSwg
R2VuZXJhdG9yLnN0eWxpemVkX25hbWVfZm9yX2VudW1fdmFsdWUoZW51bV92YWx1ZXNbMF0pKSkK
KyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsnKQogICAgICAg
ICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4
IGI1MWZmNTY1ZjQzZjJmOWFkOTQ1MzY5NjM4MGZjMzZlYTY3YTUyNTguLjQyOTNlM2JkODRjZjkz
NzkzZjcxNWU4MmViMTZhMjU1NzMzZWE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlw
ZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVf
Y29udmVyc2lvbnNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEyNSw3ICsxMjUsOSBAQCBjbGFzcyBP
YmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2Vu
ZXJhdG9yKToKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKICAgICAgICAgaWYgaXNpbnN0YW5j
ZShyZXNvbHZlZF90eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFKHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10p
OycpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rv
cjo6ZnJvbVByb3RvY29sU3RyaW5nPCVzPihwYXlsb2FkKSk7JyAlIHNlbGYub2JqY19uYW1lX2Zv
cl90eXBlKHJlc29sdmVkX3R5cGUpKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc3Rk
OjpvcHRpb25hbDwlKHR5cGUpcz4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9tUHJvdG9jb2xTdHJp
bmc8JSh0eXBlKXM+KHBheWxvYWQpOycgJSB7J3R5cGUnOiBzZWxmLm9iamNfbmFtZV9mb3JfdHlw
ZShyZXNvbHZlZF90eXBlKX0pCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19F
WENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCIlcyIpOycgJSBkZWNsYXJhdGlv
bi50eXBlLnJhd19uYW1lKCkpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAqb3V0VmFs
dWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsnKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzb2x2
ZWRfdHlwZSwgKEFycmF5VHlwZSwgUHJpbWl0aXZlVHlwZSkpOgogICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbJXMgY2xh
c3NdKTsnICUgb2JqY19jbGFzcykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICpvdXRW
YWx1ZSA9ICglcyAqKXBheWxvYWQ7JyAlIG9iamNfY2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weQppbmRleCA0MjViYWFlNjBmZTMxMDhkNTY4NDE1ZjQ1NzdlMDRhMWQ2ZTQ2
ZGE1Li5hMzE5Yzk0ZDdjMzNjOTFkNjAyZDFkM2Y0NTZmNDNmNzNiOWYzMTk1IDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTMwLDcgKzMwLDcgQEAgaW1wb3J0IHN0cmlu
ZwogZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCiAKIGZyb20gZ2VuZXJhdG9yIGltcG9ydCBH
ZW5lcmF0b3IsIHVjZmlyc3QKLWZyb20gbW9kZWxzIGltcG9ydCBPYmplY3RUeXBlLCBGcmFtZXdv
cmtzCitmcm9tIG1vZGVscyBpbXBvcnQgT2JqZWN0VHlwZSwgRW51bVR5cGUsIEZyYW1ld29ya3MK
IGZyb20gb2JqY19nZW5lcmF0b3IgaW1wb3J0IE9iakNHZW5lcmF0b3IKIGZyb20gb2JqY19nZW5l
cmF0b3JfdGVtcGxhdGVzIGltcG9ydCBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzIGFzIE9iakNUZW1w
bGF0ZXMKIApAQCAtMTI5LDEzICsxMjksMjQgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKIAogICAgICAgICBmb3IgbWVtYmVy
IGluIGRlY2xhcmF0aW9uLnR5cGVfbWVtYmVyczoKICAgICAgICAgICAgIG1lbWJlcl9uYW1lID0g
bWVtYmVyLm1lbWJlcl9uYW1lCi0gICAgICAgICAgICBjb252ZXJzaW9uX2V4cHJlc3Npb24gPSBz
ZWxmLnBheWxvYWRfdG9fb2JqY19leHByZXNzaW9uX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1l
bWJlcikKIAogICAgICAgICAgICAgaWYgbm90IG1lbWJlci5pc19vcHRpb25hbDoKICAgICAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BS
T1BFUlRZKHBheWxvYWRbQCIlcyJdLCBAIiVzIik7JyAlIChtZW1iZXJfbmFtZSwgbWVtYmVyX25h
bWUpKQogCisgICAgICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9mb3JfbWVtYmVy
KGRlY2xhcmF0aW9uLCBtZW1iZXIpCiAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0
b3IuaWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyX25hbWUpCi0gICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lv
bl9leHByZXNzaW9uKSkKKyAgICAgICAgICAgIGNvbnZlcnNpb25fZXhwcmVzc2lvbiA9IHNlbGYu
cGF5bG9hZF90b19vYmpjX2V4cHJlc3Npb25fZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVy
KQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtZW1iZXIudHlwZSwgRW51bVR5cGUpOgorICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzID0gJXM7
JyAlIChvYmpjX3R5cGUsIHZhcl9uYW1lLCBjb252ZXJzaW9uX2V4cHJlc3Npb24pKQorICAgICAg
ICAgICAgICAgIGlmIG5vdCBtZW1iZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUoJXMs
IEAiJXMiKTsnICUgKHZhcl9uYW1lLCBtZW1iZXJfbmFtZSkpCisgICAgICAgICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIHNlbGYuJXMgPSAlcy52YWx1ZSgpOycgJSAodmFyX25hbWUsIHZh
cl9uYW1lKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBpZiAoJXMpJyAlIHZhcl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICAgICAgc2VsZi4lcyA9ICVzLnZhbHVlKCk7JyAlICh2YXJfbmFtZSwg
dmFyX25hbWUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9u
KSkKKwogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIHJldHVybiBzZWxmOycpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5Cmlu
ZGV4IDJiZTg0NWU2YmVhODY0YWEwYjJhZjNjNGQ1ZGE3OTgzYTJhMTMxNzIuLjIxZTE3OTE0ODdm
NDhmZTdkZmRmOGJlMjU2NGM0NGVhODQxZDkyYjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2Vu
ZXJhdG9yLnB5CkBAIC00NDIsOCArNDQyLDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICBpZiBjYXRlZ29yeSBpbiBbT2JqQ1R5cGVDYXRlZ29yeS5TaW1wbGUsIE9i
akNUeXBlQ2F0ZWdvcnkuU3RyaW5nXToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobWVtYmVy
LnR5cGUsIEVudW1UeXBlKToKICAgICAgICAgICAgICAgICBpZiBtZW1iZXIudHlwZS5pc19hbm9u
eW1vdXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVz
PiglcyknICUgKHNlbGYub2JqY19lbnVtX25hbWVfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihk
ZWNsYXJhdGlvbiwgbWVtYmVyKSwgc3ViX2V4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgcmV0
dXJuICdmcm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9m
b3Jfbm9uX2Fub255bW91c19lbnVtKG1lbWJlci50eXBlKSwgc3ViX2V4cHJlc3Npb24pCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVzPiglcykudmFsdWUo
KScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xh
cmF0aW9uLCBtZW1iZXIpLCBzdWJfZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4g
J2Zyb21Qcm90b2NvbFN0cmluZzwlcz4oJXMpLnZhbHVlKCknICUgKHNlbGYub2JqY19lbnVtX25h
bWVfZm9yX25vbl9hbm9ueW1vdXNfZW51bShtZW1iZXIudHlwZSksIHN1Yl9leHByZXNzaW9uKQog
ICAgICAgICAgICAgcmV0dXJuIHN1Yl9leHByZXNzaW9uCiAgICAgICAgIGlmIGNhdGVnb3J5IGlz
IE9iakNUeXBlQ2F0ZWdvcnkuT2JqZWN0OgogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYu
b2JqY19jbGFzc19mb3JfdHlwZShtZW1iZXIudHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCAyODk3OTY1ZmJhYzg3MjMzYTJmMzI4
MjhkZGMxNjUzMWE1NzZlYjk4Li4xYzMwYzQwZDQ4NjU0MDEzZTJkNTc2MzRiNWI2Y2I0OTg2OWQ1
OTFiIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVz
LnB5CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgeyIiIikKIAogICAgIFR5
cGVDb252ZXJzaW9uc0hlYWRlclN0YW5kYXJkID0gKAogICAgICIiInRlbXBsYXRlPHR5cGVuYW1l
IE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7IiIiKQorc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hl
ckhlYWRlclByZWx1ZGUgPSAoCiAgICAgIiIiJHtpbmNsdWRlc30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IGRmNDBjZWE1ZDU3NTJhYTIzYzc1MzQ4
NTFkNmUxZTI4YzJkY2I5YTEuLjE3MGQ1N2MwYWJmNTFkMjFhZjJjOGNmYjhmZWUzMTE4YjhkNGNi
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2Fs
bC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAt
MTAwNiw3ICsxMDA2LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkp
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBl
PgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsK
K3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9j
b2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxh
dGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZv
cm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpA
QCAtMTAzMyw4ICsxMDMzLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNv
bi1yZXN1bHQKaW5kZXggZjBhYjA4ZGUyYzU0ZjQwY2U3ZmVmNTAxN2FjOWNhZGI3OTAyZDQxOS4u
ZWY5YTI0ODhkYjViZTljOGJiYWZjZjQyNTNjY2NjNzM5MThkYmZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTE0MjUsNyArMTQy
NSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVt
VHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlv
bmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUp
OwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0g
dmFsdWUpCiB7CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFs
bCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTE0NTIsOCAr
MTQ1Miw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
SU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
CkBAIC0xNDcwLDcgKzE0NjksNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1p
bmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gInJlZCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CkBAIC0xNDc4LDggKzE0NzcsNyBAQCBpbmxp
bmUgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQ
cmltYXJ5Q29sb3JzR3JlZW47CiAgICAgaWYgKHZhbHVlID09ICJibHVlIikKICAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0JsdWU7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
c1JlZDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTE0OTcsNyArMTQ5NSw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRD
b2xvcj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlID09ICJjeWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuOwpAQCAtMTUwNyw4
ICsxNTA1LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgZnJvbVByb3QKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29s
b3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENv
bG9yQmxhY2s7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JD
eWFuOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTE1MjYsNyArMTUyMyw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmlu
dENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuOwpAQCAtMTUz
Niw4ICsxNTMzLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIGZyb21Qcm8KICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmlu
dENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1By
aW50Q29sb3JCbGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3JDeWFuOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRD
b2xvciB2YWx1ZSkKQEAgLTE1NTUsNyArMTU1MSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciB2YWx1
CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxT
eW5jUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmlu
dENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY1ByaW50Q29sb3JDeWFuOwpAQCAtMTU2NSw4ICsxNTYxLDcgQEAgaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHIKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTFN5bmNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29s
b3JCbGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JDeWFuOworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgdmFsdWUpCkBAIC0xNTg0LDcgKzE1
NzksNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yIHZhbAogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUg
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yIGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9y
Q3lhbjsKQEAgLTE1OTQsOCArMTU4OSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0CiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JZ
ZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JCbGFjazsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FM
QXN5bmNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTE2NjEsNyArMTY1NSw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiArICh2b2lkKV9wYXJzZVByaW1hcnlDb2xvcnM6KE5TTnVtYmVyICoqKW91
dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJpbmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBA
KEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFy
eUNvbG9ycz4ocGF5bG9hZCkpOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KHBheWxvYWQpOworICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIlByaW1hcnlDb2xvcnMiKTsKKyAg
ICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogKyAodm9pZClfcGFyc2VDb2xv
ckxpc3Q6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQp
cGF5bG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJl
dHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGM4OWU1MDRhYmQ3MDM4
ODdmNTdjZmZhMTI4ZTBkYTY3ZGRhZTQyMzEuLjRjOWU0MjYxODVhMmRhMjU2MGM1NTNlMWYzNWUy
MDQzMjNmOTY2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTg3MiwxMyAr
ODcyLDEzIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyByCiAgICAgVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciAqb19pbl9zcWxFcnJvcjsKICAgICBpZiAoaW5fc3FsRXJyb3IpCiAgICAgICAgIG9f
aW5fc3FsRXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0
aEluc3BlY3Rvck9iamVjdDppbl9zcWxFcnJvcl0gYXV0b3JlbGVhc2VdOwotICAgIFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBvX2luX3NjcmVlbkNvbG9yOworICAgIHN0ZDo6b3B0
aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBvX2luX3NjcmVlbkNvbG9y
OwogICAgIGlmIChpbl9zY3JlZW5Db2xvcikKICAgICAgICAgb19pbl9zY3JlZW5Db2xvciA9IGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KCppbl9z
Y3JlZW5Db2xvcik7CiAgICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2FsdGVybmF0ZUNv
bG9yczsKICAgICBpZiAoaW5fYWx0ZXJuYXRlQ29sb3JzKQogICAgICAgICBvX2luX2FsdGVybmF0
ZUNvbG9ycyA9IG9iamNTdHJpbmdBcnJheShpbl9hbHRlcm5hdGVDb2xvcnMpOwotICAgIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Igb19p
bl9wcmludENvbG9yOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gb19pbl9wcmludENvbG9yOwogICAg
IGlmIChpbl9wcmludENvbG9yKQogICAgICAgICBvX2luX3ByaW50Q29sb3IgPSBmcm9tUHJvdG9j
b2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJz
UHJpbnRDb2xvcj4oKmluX3ByaW50Q29sb3IpOwogCkBAIC05MjAsMTEgKzkyMCwxOSBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMobG9uZyByZQogICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXls
b2FkID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9i
amVjdDomaW5fcGF5bG9hZF0gYXV0b3JlbGVhc2VdOwogICAgIGludCBvX2luX2RhdGFiYXNlSWQg
PSBpbl9kYXRhYmFzZUlkOwogICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3Fs
RXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3Bl
Y3Rvck9iamVjdDomaW5fc3FsRXJyb3JdIGF1dG9yZWxlYXNlXTsKLSAgICBUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnMgb19pbl9zY3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gb19pbl9z
Y3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKKyAgICBpZiAoIW9faW5fc2NyZWVuQ29sb3IpIHsK
KyAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgU3RyaW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnJXMn
IG9mIG1ldGhvZCAnJXMnIGNhbm5vdCBiZSBwcm9jZXNzZWQiLCAic2NyZWVuQ29sb3IiLCAiRGF0
YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9hbHRlcm5hdGVDb2xvcnMgPSBv
YmpjU3RyaW5nQXJyYXkoJmluX2FsdGVybmF0ZUNvbG9ycyk7Ci0gICAgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIG9faW5fcHJpbnRDb2xv
ciA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOworICAgIHN0ZDo6b3B0aW9u
YWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yPiBvX2luX3ByaW50Q29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPihpbl9wcmludENvbG9y
KTsKKyAgICBpZiAoIW9faW5fcHJpbnRDb2xvcikgeworICAgICAgICBiYWNrZW5kRGlzcGF0Y2hl
cigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1z
LCBTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICclcycgb2YgbWV0aG9kICclcycgY2Fubm90IGJl
IHByb2Nlc3NlZCIsICJwcmludENvbG9yIiwgIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVycyIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFttX2RlbGVnYXRlIGV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOmVycm9yQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczpvX2luX2NvbHVtbk5h
bWVzIG5vdGVzOm9faW5fbm90ZXMgdGltZXN0YW1wOm9faW5fdGltZXN0YW1wIHZhbHVlczpvX2lu
X3ZhbHVlcyBwYXlsb2FkOm9faW5fcGF5bG9hZCBkYXRhYmFzZUlkOm9faW5fZGF0YWJhc2VJZCBz
cWxFcnJvcjpvX2luX3NxbEVycm9yIHNjcmVlbkNvbG9yOm9faW5fc2NyZWVuQ29sb3IgYWx0ZXJu
YXRlQ29sb3JzOm9faW5fYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6b19pbl9wcmludENvbG9y
XTsKKyAgICBbbV9kZWxlZ2F0ZSBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JD
YWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazpzdWNjZXNzQ2FsbGJhY2sgY29s
dW1uTmFtZXM6b19pbl9jb2x1bW5OYW1lcyBub3RlczpvX2luX25vdGVzIHRpbWVzdGFtcDpvX2lu
X3RpbWVzdGFtcCB2YWx1ZXM6b19pbl92YWx1ZXMgcGF5bG9hZDpvX2luX3BheWxvYWQgZGF0YWJh
c2VJZDpvX2luX2RhdGFiYXNlSWQgc3FsRXJyb3I6b19pbl9zcWxFcnJvciBzY3JlZW5Db2xvcjpv
X2luX3NjcmVlbkNvbG9yLnZhbHVlKCkgYWx0ZXJuYXRlQ29sb3JzOm9faW5fYWx0ZXJuYXRlQ29s
b3JzIHByaW50Q29sb3I6b19pbl9wcmludENvbG9yLnZhbHVlKCldOwogfQogCiAKQEAgLTEyODAs
NyArMTI4OCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9i
akNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6
Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxh
dGZvcm0gdmFsdWUpCiB7CkBAIC0xMjk3LDcgKzEzMDUsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4K
LWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUg
PT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEz
MDcsOCArMTMxNSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBs
YXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogCkBAIC0xMzI1LDcgKzEzMzIsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHZhbHVlKQogfQogCiB0ZW1wbGF0
ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gInJlZCIpCiAgICAgICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CkBAIC0xMzMzLDggKzEzNDAsNyBA
QCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW47CiAgICAgaWYgKHZhbHVlID09ICJibHVlIikKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0JsdWU7Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFy
eUNvbG9yc1JlZDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTEzNTIsNyArMTM1OCw3IEBAIGlubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnNQCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJj
eWFuIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAtMTM2Miw4ICsxMzY4LDcgQEAgaW5saW5l
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3IgZnJvbVByb3RvY29sU3QKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVl
ID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIHZhbHVlKQpAQCAtMTM4MSw3ICsxMzg2
LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1AKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Ig
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CkBAIC0xMzkxLDggKzEz
OTYsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdAogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdzsK
ICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKQEAg
LTE0MTAsNyArMTQxNCw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByCiB9CiAKIHRlbXBsYXRl
PD4KLWlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3I+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOwpAQCAt
MTQyMCw4ICsxNDI0LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHIKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
clllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNr
OwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgdmFs
dWUpCkBAIC0xNDM5LDcgKzE0NDIsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmco
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcgogfQogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImN5YW4iKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lh
bjsKQEAgLTE0NDksOCArMTQ1Miw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1By
aW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3JCbGFjazsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAg
LTE1MTYsNyArMTUxOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiArICh2b2lkKV9w
YXJzZVByaW1hcnlDb2xvcnM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClw
YXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNT
dHJpbmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29s
U3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4ocGF5bG9hZCkpOworICAg
IHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiByZXN1bHQg
PSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnM+KHBheWxvYWQpOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFM
VUUocmVzdWx0LCBAIlByaW1hcnlDb2xvcnMiKTsKKyAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52
YWx1ZSgpKTsKIH0KIAogKyAodm9pZClfcGFyc2VDb2xvckxpc3Q6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA2ZWViZGZmMzJkMzdm
ZmNjYTc1MzNjYTViZDgyYzFkNzI3YmFkZTJiLi5kOWNlYzljNjEyYzg2MjU4OWFkNmQwNDU5OGMw
NDUzNDFjZDY5OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdApAQCAtNzQyLDcgKzc0Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTc1OSw3
ICs3NTksNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxh
dGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9y
bSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9w
dGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTc2OSw4ICs3NjksNyBAQCBpbmxpbmUgVGVzdFBy
b3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0g
Im1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxs
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggYzNhMTQzZWZhMWQ4ZDlh
ZTNmYTRiYTk1MGQzMzJhNjgwY2E4ZWI0Ny4uMGM0YzMwNDk5ZmE2Mjg3MzI3ZTYyM2E3MWIwYTRi
ZjRiODZmOWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC05OTYs
NyArOTk2LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZv
cm0pIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51
bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQ
bGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1B
bGw7CkBAIC0xMDIzLDggKzEwMjMsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggMTNl
YWNjM2IxYTNmNjRlNzRmNDcyYjI5ZTA1ODc0NTBiNTNiMWZkYS4uZTlhZmMyYTE4YmY2Nzg5ZGE4
NmY0OWYwNWUwYjRjZmNhYjE0Y2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZh
cnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgt
dmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0xMjU5LDcgKzEyNTksNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNF
bnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9w
dGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZv
cm0gdmFsdWUpCiB7CkBAIC0xMjc2LDcgKzEyNzYsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
ImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEyODYs
OCArMTI4Niw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRm
b3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IDE4NGZkYTYyZmRiZWYyMDhhNmQyMDY3OTU4YThl
NWRiOTVjMzY1ZWEuLmQyYTAxYzg0ZWNmNTlhYjE3MWQ3ZDJhMzFiNWM2MGVkY2E1YzNlM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0CkBAIC0xMDM5LDcgKzEwMzksNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtMTA1Niw3ICsx
MDU2LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRm
b3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC0xMDY2LDggKzEwNjYsNyBAQCBpbmxpbmUgVGVzdFBy
b3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBpZiAodmFsdWUgPT0g
Im1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtTWFjT1M7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxs
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAtMTA4Niw3ICsxMDg1LDcgQEAg
aW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVt
IHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sVHlwZURvbWFpbkVu
dW0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpv
cHRpb25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJzaGFyZWQiKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1TaGFyZWQ7CkBAIC0xMDk2LDggKzEw
OTUsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUeXBl
RG9tYWluRW51bUdyZWVuOwogICAgIGlmICh2YWx1ZSA9PSAiYmx1ZSIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bUJsdWU7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtMTE1
NCw3ICsxMTUyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNl
VHlwZURvbWFpbkVudW06KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJp
bmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpmcm9t
UHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0+KHBheWxvYWQpOworICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIlR5cGVEb21haW5F
bnVtIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IGVlMTliZjNhYjM2YzUzYTZlNTdjOTk2M2E0Y2IzZDllZGE2OTI4ZGQuLjEzN2QxODI3ZTNl
YmMyMjBmZTA1NzhmMWU1OTk2ZjFmOGI0M2E5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13
aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdp
dGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtOTkyLDcgKzk5Miw3IEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNF
bnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxp
bmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7
CkBAIC0xMDA5LDcgKzEwMDksNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJv
dG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEwMTksOCArMTAxOSw3IEBA
IGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAg
IGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZv
cm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1
bHQKaW5kZXggMzM4ODNlNzQwYTIyZTJlZDUyMTZjZWYzYWQ5ZDJhNDA0YmZlZDI2OC4uOWVlYjBi
MWM5YjcxYjU1NzI1NmNmNzNkZmZjZWQ4ZGU4ZTIyZjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtMTAz
Myw3ICsxMDMzLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgot
T2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0
ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQ
bGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEwNTAsNyArMTA1MCw3IEBAIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAt
MTA2MCw4ICsxMDYwLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
UGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWlu
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1y
ZXN1bHQKaW5kZXggNmQzMjI3ZDNjMTA0MjYzMTcyN2YyMTY3NmQ0MTM4MzU4ZmEyY2NkNi4uZDY1
MTI5ZWI4MGVlYTE3NjcyOWRhZGU0NzM3YWYzZWQxMjQ5N2NhNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
c2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2Ft
ZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKQEAgLTc1Miw3ICs3NTIsNyBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9i
akNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6
Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxh
dGZvcm0gdmFsdWUpCiB7CkBAIC03NjksNyArNzY5LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1p
bmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09
ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC03Nzks
OCArNzc5LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZv
cm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3Vs
dAppbmRleCA3NTFlZjczMTBmYWI4MTliMjViNWU3NTBkZjEwMTIwNDZhZjNjNzQ0Li5iN2VmZjFi
MTU3ODU1MmE0MmFhM2RmYTZmZjE4YzY1N2E1YWI4ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFk
b3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93
ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC04ODksNyArODg5LDcgQEAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZy
b21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2Jq
Q0VudW1UeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlu
bGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkK
IHsKQEAgLTkwNiw3ICs5MDYsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJv
dG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lu
bGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTkxNiw4ICs5MTYsNyBAQCBp
bmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUlPUzsKICAgICBp
ZiAodmFsdWUgPT0gIm1hY29zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3Jt
TWFjT1M7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFBsYXRmb3JtQWxsOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApAQCAtOTM0LDcg
KzkzMyw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50
aW1lS2V5UGF0aFR5cGUgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9j
b2xSdW50aW1lS2V5UGF0aFR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA9PSAibnVsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5
cGVOdWxsOwpAQCAtOTQyLDggKzk0MSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lS2V5
UGF0aFR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVTdHJpbmc7CiAgICAgaWYgKHZh
bHVlID09ICJhcnJheSIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0
aFR5cGVBcnJheTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTEwNTcsNyArMTA1NSw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19F
WENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJ0eXBlIl0sIEAidHlwZSIp
OwotICAgIHNlbGYudHlwZSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1l
S2V5UGF0aFR5cGU+KHBheWxvYWRbQCJ0eXBlIl0pOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlPiB0eXBlID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQ
cm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4ocGF5bG9hZFtAInR5cGUiXSk7CisgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRSh0eXBlLCBAInR5cGUiKTsKKyAgICBzZWxmLnR5
cGUgPSB0eXBlLnZhbHVlKCk7CiAKICAgICBzZWxmLnN0cmluZyA9IHBheWxvYWRbQCJzdHJpbmci
XTsKIApAQCAtMTA5MCw3ICsxMDkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
LSAoVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5cGUKIHsKLSAgICByZXR1cm4gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oW3N1cGVyIHN0
cmluZ0ZvcktleTpAInR5cGUiXSk7CisgICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0
UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJ0eXBlIl0p
LnZhbHVlKCk7CiB9CiAKIC0gKHZvaWQpc2V0U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBl
Lmpzb24tcmVzdWx0CmluZGV4IDdlOTg0MzQ0Zjg3MzY2ZmYyOTE2ZDU3Yzg5NTFkMzI2NjU5NzEz
MTguLjZlY2U0M2Q5Y2MzNTE3MzIwOWRhMDRmMTdmNTA3YzIwOTViN2E0NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNv
bi1yZXN1bHQKQEAgLTc0Nyw3ICs3NDcsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBU
ZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJv
dG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC03NjQsNyArNzY0
LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3Jt
IHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUGxhdGZvcm1BbGw7CkBAIC03NzQsOCArNzc0LDcgQEAgaW5saW5lIFRlc3RQcm90b2Nv
bFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNv
cyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YXJyYXktdHlwZS5qc29uLXJlc3VsdAppbmRleCAyZjgxMTY4M2MwODA5NzcxMDZjN2QzMWIzOGQz
MmIzODc4YTM1NDA5Li5kMmE2MmM5ZmY3Y2NjZjYyNjkyZGU3ZjNhMzg4YmRiZmIwOWM1ODAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC04
MzAsNyArODMwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGVi
dWdnZXJSZWFzb24pIHsKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxPYmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3Ry
aW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVlKQogewpAQCAtODQ3LDcgKzg0Nyw3IEBAIGlu
bGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkK
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFBy
b3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBs
YXRmb3JtQWxsOwpAQCAtODU3LDggKzg1Nyw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9y
bSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogCkBAIC04NzUsNyArODc0LDcgQEAgaW5saW5lIFN0cmluZyB0
b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uIHZhbHVlKQogfQogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJv
dG9jb2xEZWJ1Z2dlclJlYXNvbj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJEaWVkIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbERlYnVnZ2VyUmVhc29uRGllZDsKQEAgLTg4Myw4ICs4ODIsNyBAQCBpbmxpbmUgVGVzdFBy
b3RvY29sRGVidWdnZXJSZWFzb24gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkZhaW50ZWQ7CiAg
ICAgaWYgKHZhbHVlID09ICJIdW5ncnkiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGVi
dWdnZXJSZWFzb25IdW5ncnk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uRGllZDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiAKQEAgLTk2MCw3ICs5NTgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
KyAodm9pZClfcGFyc2VSZWFzb246KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihp
ZClwYXlsb2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBb
TlNTdHJpbmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3Rv
Y29sU3RyaW5nPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPihwYXlsb2FkKSk7CisgICAgc3Rk
OjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbj4gcmVzdWx0ID0gSW5zcGVjdG9y
Ojpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24+KHBheWxvYWQp
OworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBAIlJlYXNv
biIpOworICAgICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGNjNTEwMzNk
NjVkMzE4MWMyYjI5NWE5YjczODFlODQ3Y2I4MjYwODQuLmExY2ZjZjU0YmFmNTRkMDNkZjFlMmYx
NTRkYTU2ZjBiZmY2NGU4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51
bS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBl
Lmpzb24tcmVzdWx0CkBAIC04NTgsNyArODU4LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMpIHsKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUg
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOworc3RkOjpvcHRpb25hbDxP
YmpDRW51bVR5cGU+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAog
aW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRmb3JtIHZhbHVl
KQogewpAQCAtODc1LDcgKzg3NSw3IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQ
cm90b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAg
ICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtQWxsOwpAQCAtODg1LDggKzg4NSw3IEBA
IGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAg
IGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZv
cm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCkBAIC05MDUs
NyArOTA0LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1
bnRpbWVGYXJtQW5pbWFscyB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFs
cz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlID09ICJQaWdzIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5p
bWFsc1BpZ3M7CkBAIC05MTUsOCArOTE0LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVG
YXJtQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0NhdHM7CiAgICAgaWYgKHZh
bHVlID09ICJIZW5zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5p
bWFsc0hlbnM7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRpbWVUd29M
ZWdnZWRBbmltYWxzIHZhbHVlKQpAQCAtOTM0LDcgKzkzMiw3IEBAIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkK
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmlt
YWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHM+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiRHVja3Mi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNEdWNr
czsKQEAgLTk0NCw4ICs5NDIsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dl
ZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdQogICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNDcm93czsKICAgICBpZiAo
dmFsdWUgPT0gIkZsYW1pbmdvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1l
VHdvTGVnZ2VkQW5pbWFsc0ZsYW1pbmdvczsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNEdWNrczsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTEw
MDMsMTMgKzEwMDAsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3Bh
cnNlRmFybUFuaW1hbHM6KE5TTnVtYmVyICoqKW91dFZhbHVlIGZyb21QYXlsb2FkOihpZClwYXls
b2FkCiB7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRShwYXlsb2FkLCBbTlNTdHJp
bmcgY2xhc3NdKTsKLSAgICAqb3V0VmFsdWUgPSBAKEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4ocGF5bG9hZCkpOworICAgIHN0ZDo6
b3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0
b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHM+KHBh
eWxvYWQpOworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFMVUUocmVzdWx0LCBA
IkZhcm1BbmltYWxzIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUoKSk7CiB9CiAK
ICsgKHZvaWQpX3BhcnNlVHdvTGVnZ2VkQW5pbWFsczooTlNOdW1iZXIgKiopb3V0VmFsdWUgZnJv
bVBheWxvYWQ6KGlkKXBheWxvYWQKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBF
KHBheWxvYWQsIFtOU1N0cmluZyBjbGFzc10pOwotICAgICpvdXRWYWx1ZSA9IEAoSW5zcGVjdG9y
Ojpmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHM+
KHBheWxvYWQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdn
ZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscz4ocGF5bG9hZCk7CisgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9CQURfRU5VTV9WQUxVRShyZXN1bHQsIEAiVHdvTGVnZ2VkQW5pbWFscyIpOworICAg
ICpvdXRWYWx1ZSA9IEAocmVzdWx0LnZhbHVlKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA1YjhjNzZlMzAwYjc0
YzZhMmRjZmY4YTNkM2M4MGRlODdmMTBkMWJkLi4xYjIzYWIyYTk3NmJiMGVkZWFhMzFlNzYxMWFk
ODBlZDU4YjUyNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10
eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbi1yZXN1bHQKQEAgLTEyODMsNyArMTI4Myw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC0xMzAwLDcgKzEzMDAsNyBA
QCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFs
dWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRl
c3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xQbGF0Zm9ybUFsbDsKQEAgLTEzMTAsOCArMTMxMCw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQ
bGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3Mi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVu
dGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCA4ZDQ5ZGU1MDRjNzIyZjFkOTc3NzRkYjU5NWMw
NzRlOWQxMjg4M2IxLi44OTM2OTI5ODI3NDUxYzUzNjNhY2VmZWNlMjkyZWY0ZTE1YjY3MGNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAg
LTEyMTIsNyArMTIxMiw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC0xMjI5LDcgKzEyMjksNyBAQCBpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB9CiAKIHRlbXBs
YXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbFBsYXRm
b3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsK
QEAgLTEyMzksOCArMTIzOSw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFjb3MiKQogICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogCkBAIC0xMjU5LDcgKzEyNTgsNyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyB2YWx1ZSkKIH0KIAogdGVt
cGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0
UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIlBpZ3MiKQogICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1BpZ3M7CkBAIC0xMjY5LDggKzEyNjgsNyBA
QCBpbmxpbmUgVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RV
bmNhc3RlZEFuaW1hbHNDYXRzOwogICAgIGlmICh2YWx1ZSA9PSAiSGVucyIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzSGVuczsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1Bp
Z3M7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzIHZhbHVlKQpAQCAtMTI4OCw3
ICsxMjg2LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRl
c3RDYXN0ZWRBbmltYWxzIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3Rv
Y29sVGVzdENhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
ID09ICJEdWNrcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFs
c0R1Y2tzOwpAQCAtMTI5OCw4ICsxMjk2LDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFRlc3RDYXN0
ZWRBbmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNDcm93czsKICAgICBpZiAodmFs
dWUgPT0gIkZsYW1pbmdvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVk
QW5pbWFsc0ZsYW1pbmdvczsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNEdWNrczsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTEzODAsMTMgKzEzNzcsMTcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICsgKHZvaWQpX3BhcnNlVW5jYXN0ZWRBbmlt
YWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9hZDooaWQpcGF5bG9hZAogewogICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9hZCwgW05TU3RyaW5nIGNsYXNzXSk7
Ci0gICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPihwYXlsb2FkKSk7CisgICAgc3RkOjpvcHRpb25hbDxU
ZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPiByZXN1bHQgPSBJbnNwZWN0b3I6OmZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzPihwYXlsb2FkKTsK
KyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJlc3VsdCwgQCJVbmNhc3Rl
ZEFuaW1hbHMiKTsKKyAgICAqb3V0VmFsdWUgPSBAKHJlc3VsdC52YWx1ZSgpKTsKIH0KIAogKyAo
dm9pZClfcGFyc2VDYXN0ZWRBbmltYWxzOihOU051bWJlciAqKilvdXRWYWx1ZSBmcm9tUGF5bG9h
ZDooaWQpcGF5bG9hZAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEUocGF5bG9h
ZCwgW05TU3RyaW5nIGNsYXNzXSk7Ci0gICAgKm91dFZhbHVlID0gQChJbnNwZWN0b3I6OmZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4ocGF5bG9hZCkpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+IHJlc3VsdCA9
IEluc3BlY3Rvcjo6ZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzPihwYXlsb2FkKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHJl
c3VsdCwgQCJDYXN0ZWRBbmltYWxzIik7CisgICAgKm91dFZhbHVlID0gQChyZXN1bHQudmFsdWUo
KSk7CiB9CiAKICsgKHZvaWQpX3BhcnNlUmVjdXJzaXZlT2JqZWN0MTooVGVzdFByb3RvY29sVGVz
dFJlY3Vyc2l2ZU9iamVjdDEgKiopb3V0VmFsdWUgZnJvbVBheWxvYWQ6KGlkKXBheWxvYWQKQEAg
LTE0NjEsNyArMTQ2Miw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgc2VsZi5u
dW1iZXIgPSBbcGF5bG9hZFtAIm51bWJlciJdIGludGVnZXJWYWx1ZV07CiAKICAgICBUSFJPV19F
WENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJhbmltYWxzIl0sIEAiYW5p
bWFscyIpOwotICAgIHNlbGYuYW5pbWFscyA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9j
b2xUZXN0Q2FzdGVkQW5pbWFscz4ocGF5bG9hZFtAImFuaW1hbHMiXSk7CisgICAgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gYW5pbWFscyA9IGZyb21Qcm90b2Nv
bFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4ocGF5bG9hZFtAImFuaW1hbHMi
XSk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShhbmltYWxzLCBAImFu
aW1hbHMiKTsKKyAgICBzZWxmLmFuaW1hbHMgPSBhbmltYWxzLnZhbHVlKCk7CiAKICAgICBUSFJP
V19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJpZCJdLCBAImlkIik7
CiAgICAgc2VsZi5pZGVudGlmaWVyID0gW3BheWxvYWRbQCJpZCJdIGludGVnZXJWYWx1ZV07CkBA
IC0xNTIzLDcgKzE1MjYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChUZXN0
UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscylhbmltYWxzCiB7Ci0gICAgcmV0dXJuIGZyb21Qcm90
b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4oW3N1cGVyIHN0cmluZ0Zv
cktleTpAImFuaW1hbHMiXSk7CisgICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4oW3N1cGVyIHN0cmluZ0ZvcktleTpAImFuaW1hbHMiXSku
dmFsdWUoKTsKIH0KIAogLSAodm9pZClzZXRJZGVudGlmaWVyOihpbnQpaWRlbnRpZmllcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvd29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvd29ya2VyLXN1cHBvcnRlZC1kb21haW5zLmpzb24tcmVzdWx0CmluZGV4IGY5YTVkYjUxZjFl
NjIzN2I5MTUwZjRkNTc5MjViMmEzZGNkYWIxYzEuLmJiNGRjMjIxMzlkYTRhZGUxYjg4ZTAzZTVl
NjAxMWYxNDZjMTBiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3dvcmtlci1zdXBwb3J0ZWQtZG9tYWlu
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC93b3JrZXItc3VwcG9ydGVkLWRvbWFpbnMuanNvbi1y
ZXN1bHQKQEAgLTk5Nyw3ICs5OTcsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0
UHJvdG9jb2xQbGF0Zm9ybSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9j
b2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC0xMDE0LDcgKzEwMTQs
NyBAQCBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0g
dmFsdWUpCiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xQbGF0Zm9ybSBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PFRlc3RQcm90b2NvbFBsYXRmb3JtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gImFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xQbGF0Zm9ybUFsbDsKQEAgLTEwMjQsOCArMTAyNCw3IEBAIGlubGluZSBUZXN0UHJvdG9j
b2xQbGF0Zm9ybSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbFBsYXRmb3JtSU9TOwogICAgIGlmICh2YWx1ZSA9PSAibWFj
b3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1NYWNPUzsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1BbGw7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
aW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2lvcy9leHBlY3Rl
ZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA2ZWViZGZm
MzJkMzdmZmNjYTc1MzNjYTViZDgyYzFkNzI3YmFkZTJiLi5kOWNlYzljNjEyYzg2MjU4OWFkNmQw
NDU5OGMwNDUzNDFjZDY5OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBs
YXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0u
anNvbi1yZXN1bHQKQEAgLTc0Miw3ICs3NDIsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CitzdGQ6Om9wdGlvbmFsPE9iakNFbnVtVHlwZT4gZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiBpbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUGxhdGZvcm0gdmFsdWUpCiB7CkBAIC03NTksNyAr
NzU5LDcgQEAgaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFBsYXRm
b3JtIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUGxhdGZvcm0g
ZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRp
b25hbDxUZXN0UHJvdG9jb2xQbGF0Zm9ybT4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJhbGwiKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUGxhdGZvcm1BbGw7CkBAIC03NjksOCArNzY5LDcgQEAgaW5saW5lIFRlc3RQcm90
b2NvbFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJt
YWNvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVj
dGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IGRmNDBj
ZWE1ZDU3NTJhYTIzYzc1MzQ4NTFkNmUxZTI4YzJkY2I5YTEuLjE3MGQ1N2MwYWJmNTFkMjFhZjJj
OGNmYjhmZWUzMTE4YjhkNGNiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMt
cGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdApAQCAtMTAwNiw3ICsxMDA2LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKK3N0ZDo6b3B0aW9uYWw8T2JqQ0VudW1UeXBlPiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2YWx1ZSkKIHsKQEAgLTEwMjMsNyArMTAyMyw3
IEBAIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xQbGF0Zm9ybSB2
YWx1ZSkKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFBsYXRmb3JtIGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
VGVzdFByb3RvY29sUGxhdGZvcm0+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiYWxsIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFBsYXRmb3JtQWxsOwpAQCAtMTAzMyw4ICsxMDMzLDcgQEAgaW5saW5lIFRlc3RQcm90b2Nv
bFBsYXRmb3JtIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sUGxhdGZvcm1JT1M7CiAgICAgaWYgKHZhbHVlID09ICJtYWNv
cyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybU1hY09TOwotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xQbGF0Zm9ybUFsbDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAK
</data>
<flag name="review"
          id="323537"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>