<?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>183487</bug_id>
          
          <creation_ts>2018-03-08 17:01:57 -0800</creation_ts>
          <short_desc>[DRT] TestOptions should not be ObjC.</short_desc>
          <delta_ts>2018-03-12 18:30:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>179299</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>pvollan</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1404988</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-08 17:01:57 -0800</bug_when>
    <thetext>[DRT] TestOptions should not be ObjC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404992</commentid>
    <comment_count>1</comment_count>
      <attachid>335368</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-08 17:07:06 -0800</bug_when>
    <thetext>Created attachment 335368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405034</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-08 19:09:59 -0800</bug_when>
    <thetext>Attachment 335368 did not pass style-queue:


ERROR: Tools/DumpRenderTree/TestOptions.cpp:29:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405035</commentid>
    <comment_count>3</comment_count>
      <attachid>335382</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-08 19:10:34 -0800</bug_when>
    <thetext>Created attachment 335382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405036</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-08 19:13:06 -0800</bug_when>
    <thetext>Attachment 335382 did not pass style-queue:


ERROR: Tools/DumpRenderTree/TestOptions.cpp:29:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405471</commentid>
    <comment_count>5</comment_count>
      <attachid>335382</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-10 07:49:54 -0800</bug_when>
    <thetext>Comment on attachment 335382
Patch

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

&gt; Tools/DumpRenderTree/TestOptions.h:45
&gt; +    TestOptions(const std::string&amp;, const std::string&amp;);

Would it make sense to only have one path parameter, instead of two?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405501</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-10 13:55:18 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #5)
&gt; Comment on attachment 335382 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335382&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/TestOptions.h:45
&gt; &gt; +    TestOptions(const std::string&amp;, const std::string&amp;);
&gt; 
&gt; Would it make sense to only have one path parameter, instead of two?

I thought about doing so, but ended up aligning with the signature of the method that this logic was originally copied from:
https://github.com/WebKit/webkit/blob/master/Tools/WebKitTestRunner/TestController.cpp#L1010

Would you prefer I go the other way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405802</commentid>
    <comment_count>7</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-12 11:18:08 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #6)
&gt; (In reply to Per Arne Vollan from comment #5)
&gt; &gt; Comment on attachment 335382 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=335382&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/TestOptions.h:45
&gt; &gt; &gt; +    TestOptions(const std::string&amp;, const std::string&amp;);
&gt; &gt; 
&gt; &gt; Would it make sense to only have one path parameter, instead of two?
&gt; 
&gt; I thought about doing so, but ended up aligning with the signature of the
&gt; method that this logic was originally copied from:
&gt; https://github.com/WebKit/webkit/blob/master/Tools/WebKitTestRunner/
&gt; TestController.cpp#L1010
&gt; 
&gt; Would you prefer I go the other way?

I see. I think keeping it as is, is fine then. Perhaps you could add the parameter names in the header file for readability?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405804</commentid>
    <comment_count>8</comment_count>
      <attachid>335610</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 11:26:39 -0700</bug_when>
    <thetext>Created attachment 335610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405805</commentid>
    <comment_count>9</comment_count>
      <attachid>335610</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-12 11:34:12 -0700</bug_when>
    <thetext>Comment on attachment 335610
Patch

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

&gt; Tools/DumpRenderTree/TestOptions.cpp:1
&gt; +/*

Was this file moved from Tools/DumpRenderTree/TestOptions.mm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405815</commentid>
    <comment_count>10</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 11:50:45 -0700</bug_when>
    <thetext>Correct. Looks like this file was modified, so I&apos;ll need to rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405817</commentid>
    <comment_count>11</comment_count>
      <attachid>335615</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 11:55:05 -0700</bug_when>
    <thetext>Created attachment 335615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405818</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-12 11:57:49 -0700</bug_when>
    <thetext>Attachment 335615 did not pass style-queue:


ERROR: Tools/DumpRenderTree/TestOptions.cpp:29:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405839</commentid>
    <comment_count>13</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 12:31:00 -0700</bug_when>
    <thetext>Interestingly, in my local git diff, I have:

&gt; --- a/Tools/DumpRenderTree/TestOptions.mm
&gt; +++ b/Tools/DumpRenderTree/TestOptions.cpp

But `webkit-patch upload` turns this into:

&gt; --- /dev/null
&gt; +++ b/Tools/DumpRenderTree/TestOptions.cpp

&gt; --- a/Tools/DumpRenderTree/TestOptions.mm
&gt; +++ /dev/null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405843</commentid>
    <comment_count>14</comment_count>
      <attachid>335625</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 12:35:41 -0700</bug_when>
    <thetext>Created attachment 335625
Patch (manual)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405844</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-12 12:38:15 -0700</bug_when>
    <thetext>Attachment 335625 did not pass style-queue:


ERROR: Tools/DumpRenderTree/TestOptions.cpp:29:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405861</commentid>
    <comment_count>16</comment_count>
      <attachid>335625</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-12 13:16:58 -0700</bug_when>
    <thetext>Comment on attachment 335625
Patch (manual)

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

&gt; Tools/DumpRenderTree/TestOptions.h:47
&gt; +    bool webViewIsCompatibleWithOptions(const TestOptions&amp; other) const;

I think we can leave this method as is, since the added parameter name is generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405883</commentid>
    <comment_count>17</comment_count>
      <attachid>335635</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 13:54:01 -0700</bug_when>
    <thetext>Created attachment 335635
Patch (manual)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405886</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-12 13:57:25 -0700</bug_when>
    <thetext>Attachment 335635 did not pass style-queue:


ERROR: Tools/DumpRenderTree/TestOptions.cpp:29:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405889</commentid>
    <comment_count>19</comment_count>
      <attachid>335637</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 14:01:54 -0700</bug_when>
    <thetext>Created attachment 335637
Patch (manual)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405892</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-12 14:03:44 -0700</bug_when>
    <thetext>Attachment 335637 did not pass style-queue:


ERROR: Tools/DumpRenderTree/TestOptions.cpp:29:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405900</commentid>
    <comment_count>21</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 14:18:12 -0700</bug_when>
    <thetext>I don&apos;t know why this style error won&apos;t go away. You can see from the diff that I&apos;m no longer touching any lines related to the ifstream...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405962</commentid>
    <comment_count>22</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 16:15:40 -0700</bug_when>
    <thetext>Anyway, if anyone is concerned about the style violation, it goes back to the first iteration of the style checker (https://bugs.webkit.org/show_bug.cgi?id=25884). The rule comes from Google&apos;s style guide (https://google.github.io/styleguide/cppguide.html#Streams), which contains the quote:

&gt; Use streams only when they are the best tool for the job. This is typically the case when the I/O is ad-hoc, local, human-readable, and targeted at other developers rather than end-users.

So I think we&apos;re probably okay here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405963</commentid>
    <comment_count>23</comment_count>
      <attachid>335637</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-12 16:19:47 -0700</bug_when>
    <thetext>Comment on attachment 335637
Patch (manual)

R=me. Please make sure the bots are green before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406018</commentid>
    <comment_count>24</comment_count>
      <attachid>335637</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-12 18:03:16 -0700</bug_when>
    <thetext>Comment on attachment 335637
Patch (manual)

Note: The WinCairo failure here is a fluke; there&apos;s no behavioral change here from the previous patch attempt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406022</commentid>
    <comment_count>25</comment_count>
      <attachid>335637</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 18:29:50 -0700</bug_when>
    <thetext>Comment on attachment 335637
Patch (manual)

Clearing flags on attachment: 335637

Committed r229565: &lt;https://trac.webkit.org/changeset/229565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406023</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 18:29:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406025</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-12 18:30:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/38400275&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335368</attachid>
            <date>2018-03-08 17:07:06 -0800</date>
            <delta_ts>2018-03-08 19:10:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183487-20180308170714.patch</filename>
            <type>text/plain</type>
            <size>25241</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRlNzBkNGY4ZmE1ODhkMWUxN2RmZmU5YTQ2YTZmZjE4
YTY2ZWVmZi4uMjZiNzlmNDAzMThjMDM0ZWMzOWQ5NWUxMmZjNjBlNmQ0MzEwYzhhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE4LTAzLTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBbRFJUXSBUZXN0T3B0aW9ucyBzaG91bGQgbm90IGJlIE9iakMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgIE1vdmUgVGVzdE9wdGlvbnMgdG8gcGxhdGZvcm0tYWdu
b3N0aWMgc291cmNlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOiBSZW5hbWVkIGZyb20g
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0uCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICBSZW1vdmUgTlNVUkwgZGVwZW5k
ZW5jeSBhbmQgYWxpZ24gd2l0aCBXS1IgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIENvbnN1bWUg
VGVzdE9wdGlvbnMgKHJlY29nbml6aW5nIGp1c3QgdGhlIG9uZXMgdGhhdCBoYXZlIFdlYlByZWZl
cmVuY2VzIGRlZmluZWQgZm9yIG5vdykuCisKIDIwMTgtMDMtMDggIE1zMmdlciAgPE1zMmdlckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFVwZGF0ZSBleHBlY3RhdGlvbnMgZm9yIEFQSSB0
ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhMzRiYTBhNDRkMTJkMzQy
MDE2YjJmZTJmMGJkMzlmOWY2YzI5ZmQzLi5iYjQ2ZjI0Yjc0MjQxMGVkM2M1M2JjNGYyZDZkNzg5
NWM3MDAwMjA2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dApAQCAtMTMsNiArMTMs
NyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfU09VUkNFUwogICAgIEdDQ29udHJvbGxlci5jcHAKICAg
ICBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAogICAgIFBpeGVsRHVtcFN1cHBvcnQuY3BwCisgICAg
VGVzdE9wdGlvbnMuY3BwCiAgICAgVGVzdFJ1bm5lci5jcHAKICAgICBXb3JrUXVldWUuY3BwCiAg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRl
eHQuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YWU3YTNiNTI1YTNiY2I4NzY1
ZGJhZTI1YTJjNzFiNDYyNWRhNzlhLi5kYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0
YzhiYTYwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMSw3ICsxMDEsNiBAQAog
CQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYg
aW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAqLzsg
fTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAu
dHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYg
Ki87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVy
OTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAu
dHRmICovOyB9OwotCQk3Q0JCQzMyMzFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JCQzMyMTFE
REZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0gKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4
RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcw
MDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJ
ODQ2NUUyQzcwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NUUyQzYwRkZBOERGMjAw
M0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk5ODMwRjMxRjE1QzgxMTgx
MDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVDb21tb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTgzMEYzMUUxNUM4MTE4MTAwNUFCMjA2IC8qIER1
bXBSZW5kZXJUcmVlQ29tbW9uLmNwcCAqLzsgfTsKQEAgLTEwOSw2ICsxMDgsNyBAQAogCQlBMTE1
OEQ1OTE4OTI3NDM2MDA4OEMxN0IgLyogUGl4ZWxEdW1wU3VwcG9ydElPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTU4RDU3MTg5MjczRUIwMDg4
QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tICovOyB9OwogCQlBMTM0RTUzMTE4OEZDMjcw
MDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzNEU1MkYxODhGQzI3MDAwOTAxRDA2IC8qIER1bXBS
ZW5kZXJUcmVlTWFpbi5tbSAqLzsgfTsKIAkJQTEzNEU1MzYxODkwNUVGRjAwOTAxRDA2IC8qIEFj
Y2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbSAqLzsgfTsKKwkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
MEEyMUY3MjA1MUQ4OTYwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgKi87IH07CiAJCUE4Qjkx
QURBMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFENzBDRjNCMzJG
MDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlBOEI5MUFE
QzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFEOTBDRjNCMzJGMDA4Rjkx
RkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gKi87IH07CiAJCUE4RDc5Q0VCMEZDMjhCMkMw
MDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThENzlDRTkwRkMyOEIyQzAwNEFD
OEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi87IH07CkBAIC0zMTUs
NyArMzE1LDYgQEAKIAkJNTNDQkI4MzAxMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFu
Y3lDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDeWNsaWNS
ZWR1bmRhbmN5Q2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NCQjgz
MTEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1REU4QUU0MzEzQTJDMTU4MDBENkEzN0QgLyogbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTdD
QkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGggPSBtYWMvQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzYs
NiArMzM1LDcgQEAKIAkJQTE2Q0QyMEQxODkwN0E3RDAwOTIzNjNFIC8qIEJhc2VUYXJnZXQueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBuYW1lID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25m
aWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTkzMTdGQzE4OTI4NTVGMDAxQzUyQjEgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBuYW1l
ID0gSW5mby5wbGlzdDsgcGF0aCA9IGlvcy9JbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTkzMTdGRDE4OTI4NzM4MDAxQzUyQjEgLyogRHVtcFJlbmRlclRyZWVBcHAu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gRHVtcFJlbmRlclRyZWVBcHAueGNjb25maWc7IHBhdGgg
PSBtYWMvQ29uZmlndXJhdGlvbnMvRHVtcFJlbmRlclRyZWVBcHAueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMEEyMUY3MjA1MUQ4OTYwMDA4RkY0MiAvKiBUZXN0T3B0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0T3B0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MDNGRjc0MDlDQUFEMDgwMDlC
MkEzNyAvKiBEdW1wUmVuZGVyVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gRHVtcFJlbmRlclRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxNzA5
MDMwOEIxNjREMzAwQ0NCOUZCIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQlBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRl
PiI7IH07CkBAIC00NzIsNyArNDcyLDcgQEAKIAkJCQlBODAzRkY3NDA5Q0FBRDA4MDA5QjJBMzcg
LyogRHVtcFJlbmRlclRyZWUuaCAqLywKIAkJCQlCQ0ExOEM0NjBDOUI1Qjk0MDAxMTQzNjkgLyog
RHVtcFJlbmRlclRyZWUubW0gKi8sCiAJCQkJQTEzNEU1MkYxODhGQzI3MDAwOTAxRDA2IC8qIER1
bXBSZW5kZXJUcmVlTWFpbi5tbSAqLywKLQkJCQk3Q0JCQzMyMTFEREZDRjlBMDA3ODZCOUQgLyog
VGVzdE9wdGlvbnMubW0gKi8sCisJCQkJQTMwQTIxRjcyMDUxRDg5NjAwMDhGRjQyIC8qIFRlc3RP
cHRpb25zLmNwcCAqLywKIAkJCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlv
bnMuaCAqLywKIAkJCQlCQzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVh
ZGluZy5oICovLAogCQkJCUJDQTE4QzBBMEM5QjU5RUYwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZU1hYy5oICovLApAQCAtMTEwNSw3ICsxMTA1LDcgQEAKIAkJCQlCQ0IyODRENjBDRkE4M0QxMDA3
RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4
QjY2MEM5QjA4QzIwMDExNDM2OSAvKiBQb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDQTE4QjY4MEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAotCQkJCTdDQkJDMzIzMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9u
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMEEyMUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0
T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAxMzFEQTBDOTc3MjAxMDA4NzMxN0Qg
LyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIyNDBDOUIwMTRCMDAx
MTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDQyMzYxMURE
NTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMWQwMWE0ODMyNjUzMjgy
OGFiZGYzZTliNDNiNjkwYzhkYjQzMjU1Yi4uNWQ2YTM5OTQ0ZjIwMzM5NTIwNTBlM2Q5ZDBmZjU1
NjE2YjMyZGJhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTY4
LDggKzY4LDYgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfQ3BwX1NPVVJDRVMKICkKIAog
bGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfT2JqQ3BwX1NPVVJDRVMKLSAgICBUZXN0T3B0aW9u
cy5tbQotCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KICAgICBtYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KICAgICBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Y2NlYjkyZWRkODg4NzI0ZjM0NWJhYzQxN2RmMzcwODVkMzNmZjRkCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBAIC0wLDAgKzEsMTA5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RPcHRpb25z
LmgiCisKKyNpbmNsdWRlIDxmc3RyZWFtPgorCitzdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0
SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9
PSAidHJ1ZSIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSAiZmFsc2Ui
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMT0dfRVJST1IoIkZvdW5kIHVuZXhwZWN0
ZWQgdmFsdWUgJyVzJyBmb3IgYm9vbGVhbiBvcHRpb24uIEV4cGVjdGVkICd0cnVlJyBvciAnZmFs
c2UnLiIsIHZhbHVlLmNfc3RyKCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworVGVzdE9wdGlv
bnM6OlRlc3RPcHRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBhYnNvbHV0ZVBhdGgpCit7CisgICAgY29uc3QgYXV0byYgZmlsZW5hbWUgPSBhYnNv
bHV0ZVBhdGguZW1wdHkoKSA/IHBhdGhPclVSTCA6IGFic29sdXRlUGF0aDsKKyAgICBpZiAoZmls
ZW5hbWUuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpzdHJpbmcgb3B0aW9u
czsKKyAgICBzdGQ6Omlmc3RyZWFtIHRlc3RGaWxlKGZpbGVuYW1lLmRhdGEoKSk7CisgICAgaWYg
KCF0ZXN0RmlsZS5nb29kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBnZXRsaW5lKHRlc3RGaWxl
LCBvcHRpb25zKTsKKyAgICBzdGQ6OnN0cmluZyBiZWdpblN0cmluZygid2Via2l0LXRlc3QtcnVu
bmVyIFsgIik7CisgICAgc3RkOjpzdHJpbmcgZW5kU3RyaW5nKCIgXSIpOworICAgIHNpemVfdCBi
ZWdpbkxvY2F0aW9uID0gb3B0aW9ucy5maW5kKGJlZ2luU3RyaW5nKTsKKyAgICBpZiAoYmVnaW5M
b2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgcmV0dXJuOworICAgIHNpemVf
dCBlbmRMb2NhdGlvbiA9IG9wdGlvbnMuZmluZChlbmRTdHJpbmcsIGJlZ2luTG9jYXRpb24pOwor
ICAgIGlmIChlbmRMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBmaW5kIGVuZCBvZiB0ZXN0IGhlYWRlciBpbiAlcyIsIGZpbGVuYW1l
LmNfc3RyKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6c3RyaW5nIHBhaXJT
dHJpbmcgPSBvcHRpb25zLnN1YnN0cihiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgp
LCBlbmRMb2NhdGlvbiAtIChiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgpKSk7Cisg
ICAgc2l6ZV90IHBhaXJTdGFydCA9IDA7CisgICAgd2hpbGUgKHBhaXJTdGFydCA8IHBhaXJTdHJp
bmcuc2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBwYWlyRW5kID0gcGFpclN0cmluZy5maW5kKCIg
IiwgcGFpclN0YXJ0KTsKKyAgICAgICAgaWYgKHBhaXJFbmQgPT0gc3RkOjpzdHJpbmc6Om5wb3Mp
CisgICAgICAgICAgICBwYWlyRW5kID0gcGFpclN0cmluZy5zaXplKCk7CisgICAgICAgIHNpemVf
dCBlcXVhbHNMb2NhdGlvbiA9IHBhaXJTdHJpbmcuZmluZCgiPSIsIHBhaXJTdGFydCk7CisgICAg
ICAgIGlmIChlcXVhbHNMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3Qg
ZmluZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIGZpbGVuYW1lLmNfc3RyKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBrZXkgPSBwYWlyU3RyaW5nLnN1YnN0
cihwYWlyU3RhcnQsIGVxdWFsc0xvY2F0aW9uIC0gcGFpclN0YXJ0KTsKKyAgICAgICAgYXV0byB2
YWx1ZSA9IHBhaXJTdHJpbmcuc3Vic3RyKGVxdWFsc0xvY2F0aW9uICsgMSwgcGFpckVuZCAtIChl
cXVhbHNMb2NhdGlvbiArIDEpKTsKKyAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlQXR0YWNobWVu
dEVsZW1lbnQiKQorICAgICAgICAgICAgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBpZiAoa2V5ID09ICJ1c2VBY2Nl
bGVyYXRlZERyYXdpbmciKQorICAgICAgICAgICAgdXNlQWNjZWxlcmF0ZWREcmF3aW5nID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09
ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciIpCisgICAgICAgICAgICBlbmFibGVJbnRlcnNl
Y3Rpb25PYnNlcnZlciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTWVudUl0ZW1FbGVtZW50IikKKyAgICAgICAgICAg
IGVuYWJsZU1lbnVJdGVtRWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyIp
CisgICAgICAgICAgICBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQb2lu
dGVyTG9jayIpCisgICAgICAgICAgICBlbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlV2Vi
QXV0aGVudGljYXRpb24iKQorICAgICAgICAgICAgZW5hYmxlV2ViQXV0aGVudGljYXRpb24gPSBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBlbHNlIGlmIChrZXkg
PT0gImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiKQorICAgICAgICAgICAgZW5hYmxl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2
YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAibGF5ZXJCYWNrZWRXZWJWaWV3IikKKyAg
ICAgICAgICAgIGxheWVyQmFja2VkV2ViVmlldyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlSXNTZWN1cmVDb250ZXh0
QXR0cmlidXRlIikKKyAgICAgICAgICAgIGVuYWJsZUlzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZSA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtl
eSA9PSAiZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zIikKKyAgICAgICAgICAgIGVuYWJsZUluc3Bl
Y3RvckFkZGl0aW9ucyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIikKKyAgICAgICAg
ICAgIGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiYWxsb3dDcm9zc09yaWdpblN1YnJl
c291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiKQorICAgICAgICAgICAgYWxsb3dDcm9zc09yaWdp
blN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVy
VmFsdWUodmFsdWUpOworICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKKyAgICB9Cit9
CisKK2Jvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25z
dCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG90aGVyLmxheWVyQmFj
a2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXc7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuaAppbmRleCA1ZDRjYTk1MWUwMGFlNGZhZDRmNDAzNDI1MTY0YjNkODc0MTNjNWE0Li5k
NGY4MzA5NjQ0NTFlMTQ2MTE5MWUxOTY1ZmFiMjIwY2RiNGQxZWUzIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RPcHRpb25zLmgKQEAgLTI0LDkgKzI0LDggQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNp
bmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogCi1AY2xhc3MgTlNVUkw7CisjaW5jbHVkZSA8c3Ry
aW5nPgogCiBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgZW5hYmxlQXR0YWNobWVudEVs
ZW1lbnQgeyBmYWxzZSB9OwpAQCAtNDMsNiArNDIsNiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewog
ICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKICAgICBib29sIGFs
bG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsK
IAotICAgIFRlc3RPcHRpb25zKE5TVVJMKiwgY29uc3QgVGVzdENvbW1hbmQmKTsKKyAgICBUZXN0
T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJik7CiAgICAgYm9v
bCB3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmKSBjb25z
dDsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyYmUzYzJkNDhhZGJjZTEwNGYwYjZkYmE2ZWI2ZTQwMDI0ZmJhOTgzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIK
LQotI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPGZzdHJlYW0+
Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi1zdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVy
VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSA9PSAidHJ1
ZSIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICh2YWx1ZSA9PSAiZmFsc2UiKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU0xvZyhAIkZvdW5kIHVuZXhwZWN0ZWQgdmFsdWUg
JyVzJyBmb3IgYm9vbGVhbiBvcHRpb24uIEV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnLiIsIHZh
bHVlLmNfc3RyKCkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVGVzdE9wdGlvbnM6OlRlc3RP
cHRpb25zKE5TVVJMICp0ZXN0VVJMLCBjb25zdCBUZXN0Q29tbWFuZCYgY29tbWFuZCkKLXsKLSAg
ICBzdGQ6OnN0cmluZyBwYXRoID0gY29tbWFuZC5hYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKHBhdGgu
ZW1wdHkoKSkgewotICAgICAgICBwYXRoID0gW3Rlc3RVUkwgaXNGaWxlVVJMXSA/IFt0ZXN0VVJM
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBjb21tYW5kLnBhdGhPclVSTDsKLSAgICAgICAg
aWYgKHBhdGguZW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdGQ6
OnN0cmluZyBvcHRpb25zOwotICAgIHN0ZDo6aWZzdHJlYW0gdGVzdEZpbGUocGF0aC5kYXRhKCkp
OwotICAgIGlmICghdGVzdEZpbGUuZ29vZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZ2V0bGlu
ZSh0ZXN0RmlsZSwgb3B0aW9ucyk7Ci0gICAgc3RkOjpzdHJpbmcgYmVnaW5TdHJpbmcoIndlYmtp
dC10ZXN0LXJ1bm5lciBbICIpOwotICAgIHN0ZDo6c3RyaW5nIGVuZFN0cmluZygiIF0iKTsKLSAg
ICBzaXplX3QgYmVnaW5Mb2NhdGlvbiA9IG9wdGlvbnMuZmluZChiZWdpblN0cmluZyk7Ci0gICAg
aWYgKGJlZ2luTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAgIHJldHVybjsK
LSAgICBzaXplX3QgZW5kTG9jYXRpb24gPSBvcHRpb25zLmZpbmQoZW5kU3RyaW5nLCBiZWdpbkxv
Y2F0aW9uKTsKLSAgICBpZiAoZW5kTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAg
ICAgICAgTlNMb2coQCJDb3VsZCBub3QgZmluZCBlbmQgb2YgdGVzdCBoZWFkZXIgaW4gJXMiLCBw
YXRoLmNfc3RyKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6c3RyaW5nIHBh
aXJTdHJpbmcgPSBvcHRpb25zLnN1YnN0cihiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6
ZSgpLCBlbmRMb2NhdGlvbiAtIChiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgpKSk7
Ci0gICAgc2l6ZV90IHBhaXJTdGFydCA9IDA7Ci0gICAgd2hpbGUgKHBhaXJTdGFydCA8IHBhaXJT
dHJpbmcuc2l6ZSgpKSB7Ci0gICAgICAgIHNpemVfdCBwYWlyRW5kID0gcGFpclN0cmluZy5maW5k
KCIgIiwgcGFpclN0YXJ0KTsKLSAgICAgICAgaWYgKHBhaXJFbmQgPT0gc3RkOjpzdHJpbmc6Om5w
b3MpCi0gICAgICAgICAgICBwYWlyRW5kID0gcGFpclN0cmluZy5zaXplKCk7Ci0gICAgICAgIHNp
emVfdCBlcXVhbHNMb2NhdGlvbiA9IHBhaXJTdHJpbmcuZmluZCgiPSIsIHBhaXJTdGFydCk7Ci0g
ICAgICAgIGlmIChlcXVhbHNMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAg
ICAgICAgTlNMb2coQCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3Qg
ZmluZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIHBhdGguY19zdHIoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3RyKHBh
aXJTdGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQpOwotICAgICAgICBhdXRvIHZhbHVl
ID0gcGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVxdWFs
c0xvY2F0aW9uICsgMSkpOwotICAgICAgICBpZiAoa2V5ID09ICJlbmFibGVBdHRhY2htZW50RWxl
bWVudCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZUFj
Y2VsZXJhdGVkRHJhd2luZyIpCi0gICAgICAgICAgICB0aGlzLT51c2VBY2NlbGVyYXRlZERyYXdp
bmcgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBlbHNlIGlm
IChrZXkgPT0gImVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIikKLSAgICAgICAgICAgIHRoaXMt
PmVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNZW51SXRlbUVsZW1lbnQi
KQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlTWVudUl0ZW1FbGVtZW50ID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVN
b2Rlcm5NZWRpYUNvbnRyb2xzIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZU1vZGVybk1lZGlh
Q29udHJvbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBl
bHNlIGlmIChrZXkgPT0gImVuYWJsZVBvaW50ZXJMb2NrIikKLSAgICAgICAgICAgIHRoaXMtPmVu
YWJsZVBvaW50ZXJMb2NrID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVXZWJBdXRoZW50aWNhdGlvbiIpCi0gICAgICAg
ICAgICB0aGlzLT5lbmFibGVXZWJBdXRoZW50aWNhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RIZWFk
ZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJsYXllckJhY2tlZFdlYlZpZXciKQotICAgICAgICAgICAgdGhp
cy0+bGF5ZXJCYWNrZWRXZWJWaWV3ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVl
KTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1
dGUiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlID0g
cGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5
ID09ICJlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiKQotICAg
ICAgICAgICAgdGhpcy0+ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJhbGxvd0Nyb3Nz
T3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIpCi0gICAgICAgICAgICB0aGlz
LT5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIHBhaXJTdGFydCA9IHBhaXJF
bmQgKyAxOwotICAgIH0KLX0KLQotYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJs
ZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gb3RoZXIubGF5ZXJCYWNrZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldzsKLX0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAyZWQzOGQ2Zjg2
NzE2ZDQzMGJkOGJjMzQ3YTU3YzIwZTc2ZGViYjk2Li5kYWFiNzJmMWI2N2MxNTQ4MWRlMDA4ZDI4
YTJjOGE4YjEzNWFlNjQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCkBAIC0xOTA3LDcgKzE5MDcsOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0
cmluZyYgaW5wdXRMaW5lKQogICAgIE5TU3RyaW5nICppbmZvcm1hdGlvblN0cmluZyA9IFtAIkNS
QVNISU5HIFRFU1Q6ICIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGVzdFBhdGhdOwogICAgIFdl
YktpdDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oKENGU3Ry
aW5nUmVmKWluZm9ybWF0aW9uU3RyaW5nKTsKIAotICAgIFRlc3RPcHRpb25zIG9wdGlvbnModXJs
LCBjb21tYW5kKTsKKyAgICBUZXN0T3B0aW9ucyBvcHRpb25zIHsgW3VybCBpc0ZpbGVVUkxdID8g
W3VybCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dIDogcGF0aE9yVVJMLCBjb21tYW5kLmFic29s
dXRlUGF0aCB9OworCiAgICAgaWYgKCFtYWluRnJhbWVUZXN0T3B0aW9ucyB8fCAhb3B0aW9ucy53
ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMobWFpbkZyYW1lVGVzdE9wdGlvbnMudmFsdWUo
KSkpIHsKICAgICAgICAgaWYgKG1haW5GcmFtZSkKICAgICAgICAgICAgIGRlc3Ryb3lXZWJWaWV3
QW5kT2Zmc2NyZWVuV2luZG93KFttYWluRnJhbWUgd2ViVmlld10pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMDZjZDk5MGJlZWE4OWE4MzEzNTQ5
Y2NmN2QxNzc4YWRiYzllNGVlZS4uMTE0ZWVmZDI5OTZhNWI0ODExNTA5MGI3OTQ4N2ZiMGNkNWYx
OGQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUg
IlBvbGljeURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKyNp
bmNsdWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKICNpbmNsdWRl
ICJVSURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCkBAIC03ODcs
NyArNzg4LDYgQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoSVdlYlBy
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKICAgICBwcmVmc1ByaXZhdGUtPnNldFdlYkFuaW1hdGlv
bnNFbmFibGVkKFRSVUUpOwogICAgIC8vIEZJWE1FOiBXZWJHTDIKICAgICAvLyBGSVhNRTogV2Vi
UlRDCi0gICAgcHJlZnNQcml2YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVk
KFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCkBAIC04ODEsMTYgKzg4MSwyMSBA
QCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKElXZWJQ
cmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRGZXRjaEFQSUVu
YWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRTaGFkb3dET01FbmFibGVkKFRSVUUp
OwogICAgIHByZWZzUHJpdmF0ZS0+c2V0Q3VzdG9tRWxlbWVudHNFbmFibGVkKFRSVUUpOwotICAg
IHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoRkFMU0UpOwogICAg
IHByZWZzUHJpdmF0ZS0+c2V0UmVzb3VyY2VUaW1pbmdFbmFibGVkKFRSVUUpOwogICAgIHByZWZz
UHJpdmF0ZS0+c2V0VXNlclRpbWluZ0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5z
ZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRJ
bnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+Y2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbigpOwogCiAgICAgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhmYWxz
ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoSVdl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcywgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgcHJlZnNQcml2YXRlLT5zZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZChvcHRpb25z
LmVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0SXNTZWN1
cmVDb250ZXh0QXR0cmlidXRlRW5hYmxlZChvcHRpb25zLmVuYWJsZUlzU2VjdXJlQ29udGV4dEF0
dHJpYnV0ZSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVk
KG9wdGlvbnMuZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zKTsKK30KKwogc3RhdGljIFN0cmluZyBh
cHBsaWNhdGlvbklkKCkKIHsKICAgICBEV09SRCBwcm9jZXNzSWQgPSA6OkdldEN1cnJlbnRQcm9j
ZXNzSWQoKTsKQEAgLTkzNyw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29u
c2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCitzdGF0aWMgdm9pZCByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwogICAgIGlmIChGQUlM
RUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkgCkBAIC05ODMsOCArOTg4LDEwIEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiAgICAg
fQogCiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7Ci0gICAgaWYgKFNV
Q0NFRURFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkKKyAgICBpZiAoU1VD
Q0VFREVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKSB7CiAgICAgICAgIHJl
c2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMocHJlZmVyZW5jZXMuZ2V0KCkpOwor
ICAgICAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKHByZWZlcmVuY2VzLmdldCgp
LCBvcHRpb25zKTsKKyAgICB9CiAKICAgICBUZXN0UnVubmVyOjpzZXRTZXJpYWxpemVIVFRQTG9h
ZHMoZmFsc2UpOwogCkBAIC0xMTU1LDcgKzExNjIsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNv
bnN0IHN0cmluZyYgaW5wdXRMaW5lKQogCiAgICAgQ0ZSZWxlYXNlKHVybCk7CiAKLSAgICByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKKyAgICBUZXN0T3B0aW9u
cyBvcHRpb25zIHsgY29tbWFuZC5wYXRoT3JVUkwsIGNvbW1hbmQuYWJzb2x1dGVQYXRoIH07CisK
KyAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmcob3B0aW9ucyk7
CiAKICAgICA6OmdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKHRlc3RVUkwuZGF0YSgp
LCBjb21tYW5kLmV4cGVjdGVkUGl4ZWxIYXNoKTsKICAgICA6OmdUZXN0UnVubmVyLT5zZXRDdXN0
b21UaW1lb3V0KGNvbW1hbmQudGltZW91dCk7CkBAIC0xMjYxLDcgKzEyNzAsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CisgICAg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKG9wdGlvbnMpOwogCiAg
ICAgLy8gTG9hZGluZyBhbiBlbXB0eSByZXF1ZXN0IHN5bmNocm9ub3VzbHkgcmVwbGFjZXMgdGhl
IGRvY3VtZW50IHdpdGggYSBibGFuayBvbmUsIHdoaWNoIGlzIG5lY2Vzc2FyeQogICAgIC8vIHRv
IHN0b3AgdGltZXJzLCBXZWJTb2NrZXRzIGFuZCBvdGhlciBhY3Rpdml0eSB0aGF0IGNvdWxkIG90
aGVyd2lzZSBzcGlsbCBvdXRwdXQgaW50byBuZXh0IHRlc3QncyByZXN1bHRzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335382</attachid>
            <date>2018-03-08 19:10:34 -0800</date>
            <delta_ts>2018-03-12 11:26:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183487-20180308191039.patch</filename>
            <type>text/plain</type>
            <size>25321</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRlNzBkNGY4ZmE1ODhkMWUxN2RmZmU5YTQ2YTZmZjE4
YTY2ZWVmZi4uMjZiNzlmNDAzMThjMDM0ZWMzOWQ5NWUxMmZjNjBlNmQ0MzEwYzhhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE4LTAzLTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBbRFJUXSBUZXN0T3B0aW9ucyBzaG91bGQgbm90IGJlIE9iakMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgIE1vdmUgVGVzdE9wdGlvbnMgdG8gcGxhdGZvcm0tYWdu
b3N0aWMgc291cmNlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOiBSZW5hbWVkIGZyb20g
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0uCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICBSZW1vdmUgTlNVUkwgZGVwZW5k
ZW5jeSBhbmQgYWxpZ24gd2l0aCBXS1IgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIENvbnN1bWUg
VGVzdE9wdGlvbnMgKHJlY29nbml6aW5nIGp1c3QgdGhlIG9uZXMgdGhhdCBoYXZlIFdlYlByZWZl
cmVuY2VzIGRlZmluZWQgZm9yIG5vdykuCisKIDIwMTgtMDMtMDggIE1zMmdlciAgPE1zMmdlckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFVwZGF0ZSBleHBlY3RhdGlvbnMgZm9yIEFQSSB0
ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhMzRiYTBhNDRkMTJkMzQy
MDE2YjJmZTJmMGJkMzlmOWY2YzI5ZmQzLi5iYjQ2ZjI0Yjc0MjQxMGVkM2M1M2JjNGYyZDZkNzg5
NWM3MDAwMjA2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dApAQCAtMTMsNiArMTMs
NyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfU09VUkNFUwogICAgIEdDQ29udHJvbGxlci5jcHAKICAg
ICBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAogICAgIFBpeGVsRHVtcFN1cHBvcnQuY3BwCisgICAg
VGVzdE9wdGlvbnMuY3BwCiAgICAgVGVzdFJ1bm5lci5jcHAKICAgICBXb3JrUXVldWUuY3BwCiAg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRl
eHQuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YWU3YTNiNTI1YTNiY2I4NzY1
ZGJhZTI1YTJjNzFiNDYyNWRhNzlhLi5kYzliOWZiOGI4NzMyMWY2NDM0ZTQ2NmY0NDBiMTdkNTY0
YzhiYTYwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMSw3ICsxMDEsNiBAQAog
CQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYg
aW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAqLzsg
fTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAu
dHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYg
Ki87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVy
OTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAu
dHRmICovOyB9OwotCQk3Q0JCQzMyMzFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JCQzMyMTFE
REZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0gKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4
RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcw
MDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJ
ODQ2NUUyQzcwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NUUyQzYwRkZBOERGMjAw
M0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk5ODMwRjMxRjE1QzgxMTgx
MDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVDb21tb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTgzMEYzMUUxNUM4MTE4MTAwNUFCMjA2IC8qIER1
bXBSZW5kZXJUcmVlQ29tbW9uLmNwcCAqLzsgfTsKQEAgLTEwOSw2ICsxMDgsNyBAQAogCQlBMTE1
OEQ1OTE4OTI3NDM2MDA4OEMxN0IgLyogUGl4ZWxEdW1wU3VwcG9ydElPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTU4RDU3MTg5MjczRUIwMDg4
QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tICovOyB9OwogCQlBMTM0RTUzMTE4OEZDMjcw
MDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzNEU1MkYxODhGQzI3MDAwOTAxRDA2IC8qIER1bXBS
ZW5kZXJUcmVlTWFpbi5tbSAqLzsgfTsKIAkJQTEzNEU1MzYxODkwNUVGRjAwOTAxRDA2IC8qIEFj
Y2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbSAqLzsgfTsKKwkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
MEEyMUY3MjA1MUQ4OTYwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgKi87IH07CiAJCUE4Qjkx
QURBMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFENzBDRjNCMzJG
MDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlBOEI5MUFE
QzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5MUFEOTBDRjNCMzJGMDA4Rjkx
RkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gKi87IH07CiAJCUE4RDc5Q0VCMEZDMjhCMkMw
MDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThENzlDRTkwRkMyOEIyQzAwNEFD
OEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi87IH07CkBAIC0zMTUs
NyArMzE1LDYgQEAKIAkJNTNDQkI4MzAxMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFu
Y3lDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDeWNsaWNS
ZWR1bmRhbmN5Q2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0NCQjgz
MTEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1REU4QUU0MzEzQTJDMTU4MDBENkEzN0QgLyogbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTdD
QkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGggPSBtYWMvQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzYs
NiArMzM1LDcgQEAKIAkJQTE2Q0QyMEQxODkwN0E3RDAwOTIzNjNFIC8qIEJhc2VUYXJnZXQueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBuYW1lID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25m
aWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTkzMTdGQzE4OTI4NTVGMDAxQzUyQjEgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBuYW1l
ID0gSW5mby5wbGlzdDsgcGF0aCA9IGlvcy9JbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTkzMTdGRDE4OTI4NzM4MDAxQzUyQjEgLyogRHVtcFJlbmRlclRyZWVBcHAu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gRHVtcFJlbmRlclRyZWVBcHAueGNjb25maWc7IHBhdGgg
PSBtYWMvQ29uZmlndXJhdGlvbnMvRHVtcFJlbmRlclRyZWVBcHAueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMEEyMUY3MjA1MUQ4OTYwMDA4RkY0MiAvKiBUZXN0T3B0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0T3B0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MDNGRjc0MDlDQUFEMDgwMDlC
MkEzNyAvKiBEdW1wUmVuZGVyVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gRHVtcFJlbmRlclRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxNzA5
MDMwOEIxNjREMzAwQ0NCOUZCIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQlBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRl
PiI7IH07CkBAIC00NzIsNyArNDcyLDcgQEAKIAkJCQlBODAzRkY3NDA5Q0FBRDA4MDA5QjJBMzcg
LyogRHVtcFJlbmRlclRyZWUuaCAqLywKIAkJCQlCQ0ExOEM0NjBDOUI1Qjk0MDAxMTQzNjkgLyog
RHVtcFJlbmRlclRyZWUubW0gKi8sCiAJCQkJQTEzNEU1MkYxODhGQzI3MDAwOTAxRDA2IC8qIER1
bXBSZW5kZXJUcmVlTWFpbi5tbSAqLywKLQkJCQk3Q0JCQzMyMTFEREZDRjlBMDA3ODZCOUQgLyog
VGVzdE9wdGlvbnMubW0gKi8sCisJCQkJQTMwQTIxRjcyMDUxRDg5NjAwMDhGRjQyIC8qIFRlc3RP
cHRpb25zLmNwcCAqLywKIAkJCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlv
bnMuaCAqLywKIAkJCQlCQzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVh
ZGluZy5oICovLAogCQkJCUJDQTE4QzBBMEM5QjU5RUYwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZU1hYy5oICovLApAQCAtMTEwNSw3ICsxMTA1LDcgQEAKIAkJCQlCQ0IyODRENjBDRkE4M0QxMDA3
RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4
QjY2MEM5QjA4QzIwMDExNDM2OSAvKiBQb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDQTE4QjY4MEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAotCQkJCTdDQkJDMzIzMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9u
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMEEyMUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0
T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAxMzFEQTBDOTc3MjAxMDA4NzMxN0Qg
LyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIyNDBDOUIwMTRCMDAx
MTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDQyMzYxMURE
NTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMWQwMWE0ODMyNjUzMjgy
OGFiZGYzZTliNDNiNjkwYzhkYjQzMjU1Yi4uNWQ2YTM5OTQ0ZjIwMzM5NTIwNTBlM2Q5ZDBmZjU1
NjE2YjMyZGJhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTY4
LDggKzY4LDYgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfQ3BwX1NPVVJDRVMKICkKIAog
bGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfT2JqQ3BwX1NPVVJDRVMKLSAgICBUZXN0T3B0aW9u
cy5tbQotCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KICAgICBtYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KICAgICBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Y2NlYjkyZWRkODg4NzI0ZjM0NWJhYzQxN2RmMzcwODVkMzNmZjRkCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBAIC0wLDAgKzEsMTA5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RPcHRpb25z
LmgiCisKKyNpbmNsdWRlIDxmc3RyZWFtPgorCitzdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0
SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9
PSAidHJ1ZSIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh2YWx1ZSA9PSAiZmFsc2Ui
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMT0dfRVJST1IoIkZvdW5kIHVuZXhwZWN0
ZWQgdmFsdWUgJyVzJyBmb3IgYm9vbGVhbiBvcHRpb24uIEV4cGVjdGVkICd0cnVlJyBvciAnZmFs
c2UnLiIsIHZhbHVlLmNfc3RyKCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworVGVzdE9wdGlv
bnM6OlRlc3RPcHRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBhYnNvbHV0ZVBhdGgpCit7CisgICAgY29uc3QgYXV0byYgZmlsZW5hbWUgPSBhYnNv
bHV0ZVBhdGguZW1wdHkoKSA/IHBhdGhPclVSTCA6IGFic29sdXRlUGF0aDsKKyAgICBpZiAoZmls
ZW5hbWUuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpzdHJpbmcgb3B0aW9u
czsKKyAgICBzdGQ6Omlmc3RyZWFtIHRlc3RGaWxlKGZpbGVuYW1lLmRhdGEoKSk7CisgICAgaWYg
KCF0ZXN0RmlsZS5nb29kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBnZXRsaW5lKHRlc3RGaWxl
LCBvcHRpb25zKTsKKyAgICBzdGQ6OnN0cmluZyBiZWdpblN0cmluZygid2Via2l0LXRlc3QtcnVu
bmVyIFsgIik7CisgICAgc3RkOjpzdHJpbmcgZW5kU3RyaW5nKCIgXSIpOworICAgIHNpemVfdCBi
ZWdpbkxvY2F0aW9uID0gb3B0aW9ucy5maW5kKGJlZ2luU3RyaW5nKTsKKyAgICBpZiAoYmVnaW5M
b2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgcmV0dXJuOworICAgIHNpemVf
dCBlbmRMb2NhdGlvbiA9IG9wdGlvbnMuZmluZChlbmRTdHJpbmcsIGJlZ2luTG9jYXRpb24pOwor
ICAgIGlmIChlbmRMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBmaW5kIGVuZCBvZiB0ZXN0IGhlYWRlciBpbiAlcyIsIGZpbGVuYW1l
LmNfc3RyKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0ZDo6c3RyaW5nIHBhaXJT
dHJpbmcgPSBvcHRpb25zLnN1YnN0cihiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgp
LCBlbmRMb2NhdGlvbiAtIChiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgpKSk7Cisg
ICAgc2l6ZV90IHBhaXJTdGFydCA9IDA7CisgICAgd2hpbGUgKHBhaXJTdGFydCA8IHBhaXJTdHJp
bmcuc2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBwYWlyRW5kID0gcGFpclN0cmluZy5maW5kKCIg
IiwgcGFpclN0YXJ0KTsKKyAgICAgICAgaWYgKHBhaXJFbmQgPT0gc3RkOjpzdHJpbmc6Om5wb3Mp
CisgICAgICAgICAgICBwYWlyRW5kID0gcGFpclN0cmluZy5zaXplKCk7CisgICAgICAgIHNpemVf
dCBlcXVhbHNMb2NhdGlvbiA9IHBhaXJTdHJpbmcuZmluZCgiPSIsIHBhaXJTdGFydCk7CisgICAg
ICAgIGlmIChlcXVhbHNMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3Qg
ZmluZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIGZpbGVuYW1lLmNfc3RyKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBrZXkgPSBwYWlyU3RyaW5nLnN1YnN0
cihwYWlyU3RhcnQsIGVxdWFsc0xvY2F0aW9uIC0gcGFpclN0YXJ0KTsKKyAgICAgICAgYXV0byB2
YWx1ZSA9IHBhaXJTdHJpbmcuc3Vic3RyKGVxdWFsc0xvY2F0aW9uICsgMSwgcGFpckVuZCAtIChl
cXVhbHNMb2NhdGlvbiArIDEpKTsKKyAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlQXR0YWNobWVu
dEVsZW1lbnQiKQorICAgICAgICAgICAgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBpZiAoa2V5ID09ICJ1c2VBY2Nl
bGVyYXRlZERyYXdpbmciKQorICAgICAgICAgICAgdXNlQWNjZWxlcmF0ZWREcmF3aW5nID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09
ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciIpCisgICAgICAgICAgICBlbmFibGVJbnRlcnNl
Y3Rpb25PYnNlcnZlciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTWVudUl0ZW1FbGVtZW50IikKKyAgICAgICAgICAg
IGVuYWJsZU1lbnVJdGVtRWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyIp
CisgICAgICAgICAgICBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQb2lu
dGVyTG9jayIpCisgICAgICAgICAgICBlbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlV2Vi
QXV0aGVudGljYXRpb24iKQorICAgICAgICAgICAgZW5hYmxlV2ViQXV0aGVudGljYXRpb24gPSBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBlbHNlIGlmIChrZXkg
PT0gImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiKQorICAgICAgICAgICAgZW5hYmxl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2
YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAibGF5ZXJCYWNrZWRXZWJWaWV3IikKKyAg
ICAgICAgICAgIGxheWVyQmFja2VkV2ViVmlldyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlSXNTZWN1cmVDb250ZXh0
QXR0cmlidXRlIikKKyAgICAgICAgICAgIGVuYWJsZUlzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZSA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtl
eSA9PSAiZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zIikKKyAgICAgICAgICAgIGVuYWJsZUluc3Bl
Y3RvckFkZGl0aW9ucyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIikKKyAgICAgICAg
ICAgIGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiYWxsb3dDcm9zc09yaWdpblN1YnJl
c291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiKQorICAgICAgICAgICAgYWxsb3dDcm9zc09yaWdp
blN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVy
VmFsdWUodmFsdWUpOworICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKKyAgICB9Cit9
CisKK2Jvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25z
dCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG90aGVyLmxheWVyQmFj
a2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXc7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuaAppbmRleCA1ZDRjYTk1MWUwMGFlNGZhZDRmNDAzNDI1MTY0YjNkODc0MTNjNWE0Li5k
NGY4MzA5NjQ0NTFlMTQ2MTE5MWUxOTY1ZmFiMjIwY2RiNGQxZWUzIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RPcHRpb25zLmgKQEAgLTI0LDkgKzI0LDggQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNp
bmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogCi1AY2xhc3MgTlNVUkw7CisjaW5jbHVkZSA8c3Ry
aW5nPgogCiBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgZW5hYmxlQXR0YWNobWVudEVs
ZW1lbnQgeyBmYWxzZSB9OwpAQCAtNDMsNiArNDIsNiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewog
ICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKICAgICBib29sIGFs
bG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsK
IAotICAgIFRlc3RPcHRpb25zKE5TVVJMKiwgY29uc3QgVGVzdENvbW1hbmQmKTsKKyAgICBUZXN0
T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJik7CiAgICAgYm9v
bCB3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmKSBjb25z
dDsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyYmUzYzJkNDhhZGJjZTEwNGYwYjZkYmE2ZWI2ZTQwMDI0ZmJhOTgzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIK
LQotI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPGZzdHJlYW0+
Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi1zdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVy
VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSA9PSAidHJ1
ZSIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICh2YWx1ZSA9PSAiZmFsc2UiKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU0xvZyhAIkZvdW5kIHVuZXhwZWN0ZWQgdmFsdWUg
JyVzJyBmb3IgYm9vbGVhbiBvcHRpb24uIEV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnLiIsIHZh
bHVlLmNfc3RyKCkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVGVzdE9wdGlvbnM6OlRlc3RP
cHRpb25zKE5TVVJMICp0ZXN0VVJMLCBjb25zdCBUZXN0Q29tbWFuZCYgY29tbWFuZCkKLXsKLSAg
ICBzdGQ6OnN0cmluZyBwYXRoID0gY29tbWFuZC5hYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKHBhdGgu
ZW1wdHkoKSkgewotICAgICAgICBwYXRoID0gW3Rlc3RVUkwgaXNGaWxlVVJMXSA/IFt0ZXN0VVJM
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBjb21tYW5kLnBhdGhPclVSTDsKLSAgICAgICAg
aWYgKHBhdGguZW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdGQ6
OnN0cmluZyBvcHRpb25zOwotICAgIHN0ZDo6aWZzdHJlYW0gdGVzdEZpbGUocGF0aC5kYXRhKCkp
OwotICAgIGlmICghdGVzdEZpbGUuZ29vZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZ2V0bGlu
ZSh0ZXN0RmlsZSwgb3B0aW9ucyk7Ci0gICAgc3RkOjpzdHJpbmcgYmVnaW5TdHJpbmcoIndlYmtp
dC10ZXN0LXJ1bm5lciBbICIpOwotICAgIHN0ZDo6c3RyaW5nIGVuZFN0cmluZygiIF0iKTsKLSAg
ICBzaXplX3QgYmVnaW5Mb2NhdGlvbiA9IG9wdGlvbnMuZmluZChiZWdpblN0cmluZyk7Ci0gICAg
aWYgKGJlZ2luTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAgIHJldHVybjsK
LSAgICBzaXplX3QgZW5kTG9jYXRpb24gPSBvcHRpb25zLmZpbmQoZW5kU3RyaW5nLCBiZWdpbkxv
Y2F0aW9uKTsKLSAgICBpZiAoZW5kTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAg
ICAgICAgTlNMb2coQCJDb3VsZCBub3QgZmluZCBlbmQgb2YgdGVzdCBoZWFkZXIgaW4gJXMiLCBw
YXRoLmNfc3RyKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6c3RyaW5nIHBh
aXJTdHJpbmcgPSBvcHRpb25zLnN1YnN0cihiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6
ZSgpLCBlbmRMb2NhdGlvbiAtIChiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgpKSk7
Ci0gICAgc2l6ZV90IHBhaXJTdGFydCA9IDA7Ci0gICAgd2hpbGUgKHBhaXJTdGFydCA8IHBhaXJT
dHJpbmcuc2l6ZSgpKSB7Ci0gICAgICAgIHNpemVfdCBwYWlyRW5kID0gcGFpclN0cmluZy5maW5k
KCIgIiwgcGFpclN0YXJ0KTsKLSAgICAgICAgaWYgKHBhaXJFbmQgPT0gc3RkOjpzdHJpbmc6Om5w
b3MpCi0gICAgICAgICAgICBwYWlyRW5kID0gcGFpclN0cmluZy5zaXplKCk7Ci0gICAgICAgIHNp
emVfdCBlcXVhbHNMb2NhdGlvbiA9IHBhaXJTdHJpbmcuZmluZCgiPSIsIHBhaXJTdGFydCk7Ci0g
ICAgICAgIGlmIChlcXVhbHNMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAg
ICAgICAgTlNMb2coQCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3Qg
ZmluZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIHBhdGguY19zdHIoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3RyKHBh
aXJTdGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQpOwotICAgICAgICBhdXRvIHZhbHVl
ID0gcGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVxdWFs
c0xvY2F0aW9uICsgMSkpOwotICAgICAgICBpZiAoa2V5ID09ICJlbmFibGVBdHRhY2htZW50RWxl
bWVudCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZUFj
Y2VsZXJhdGVkRHJhd2luZyIpCi0gICAgICAgICAgICB0aGlzLT51c2VBY2NlbGVyYXRlZERyYXdp
bmcgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBlbHNlIGlm
IChrZXkgPT0gImVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIikKLSAgICAgICAgICAgIHRoaXMt
PmVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNZW51SXRlbUVsZW1lbnQi
KQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlTWVudUl0ZW1FbGVtZW50ID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVN
b2Rlcm5NZWRpYUNvbnRyb2xzIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZU1vZGVybk1lZGlh
Q29udHJvbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBl
bHNlIGlmIChrZXkgPT0gImVuYWJsZVBvaW50ZXJMb2NrIikKLSAgICAgICAgICAgIHRoaXMtPmVu
YWJsZVBvaW50ZXJMb2NrID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVXZWJBdXRoZW50aWNhdGlvbiIpCi0gICAgICAg
ICAgICB0aGlzLT5lbmFibGVXZWJBdXRoZW50aWNhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RIZWFk
ZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJsYXllckJhY2tlZFdlYlZpZXciKQotICAgICAgICAgICAgdGhp
cy0+bGF5ZXJCYWNrZWRXZWJWaWV3ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVl
KTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1
dGUiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlID0g
cGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5
ID09ICJlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiKQotICAg
ICAgICAgICAgdGhpcy0+ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJhbGxvd0Nyb3Nz
T3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIpCi0gICAgICAgICAgICB0aGlz
LT5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIHBhaXJTdGFydCA9IHBhaXJF
bmQgKyAxOwotICAgIH0KLX0KLQotYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJs
ZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gb3RoZXIubGF5ZXJCYWNrZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldzsKLX0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAyZWQzOGQ2Zjg2
NzE2ZDQzMGJkOGJjMzQ3YTU3YzIwZTc2ZGViYjk2Li5kYWFiNzJmMWI2N2MxNTQ4MWRlMDA4ZDI4
YTJjOGE4YjEzNWFlNjQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCkBAIC0xOTA3LDcgKzE5MDcsOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0
cmluZyYgaW5wdXRMaW5lKQogICAgIE5TU3RyaW5nICppbmZvcm1hdGlvblN0cmluZyA9IFtAIkNS
QVNISU5HIFRFU1Q6ICIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGVzdFBhdGhdOwogICAgIFdl
YktpdDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oKENGU3Ry
aW5nUmVmKWluZm9ybWF0aW9uU3RyaW5nKTsKIAotICAgIFRlc3RPcHRpb25zIG9wdGlvbnModXJs
LCBjb21tYW5kKTsKKyAgICBUZXN0T3B0aW9ucyBvcHRpb25zIHsgW3VybCBpc0ZpbGVVUkxdID8g
W3VybCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dIDogcGF0aE9yVVJMLCBjb21tYW5kLmFic29s
dXRlUGF0aCB9OworCiAgICAgaWYgKCFtYWluRnJhbWVUZXN0T3B0aW9ucyB8fCAhb3B0aW9ucy53
ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMobWFpbkZyYW1lVGVzdE9wdGlvbnMudmFsdWUo
KSkpIHsKICAgICAgICAgaWYgKG1haW5GcmFtZSkKICAgICAgICAgICAgIGRlc3Ryb3lXZWJWaWV3
QW5kT2Zmc2NyZWVuV2luZG93KFttYWluRnJhbWUgd2ViVmlld10pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMDZjZDk5MGJlZWE4OWE4MzEzNTQ5
Y2NmN2QxNzc4YWRiYzllNGVlZS4uZTc5ZTcwNzU0MGE3NDAyMWFlZjdjMjQ0OGFmMmViOTJjZWRl
NGJhZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUg
IlBvbGljeURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKyNp
bmNsdWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKICNpbmNsdWRl
ICJVSURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCkBAIC03ODcs
NyArNzg4LDYgQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoSVdlYlBy
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKICAgICBwcmVmc1ByaXZhdGUtPnNldFdlYkFuaW1hdGlv
bnNFbmFibGVkKFRSVUUpOwogICAgIC8vIEZJWE1FOiBXZWJHTDIKICAgICAvLyBGSVhNRTogV2Vi
UlRDCi0gICAgcHJlZnNQcml2YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVk
KFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCkBAIC04ODEsMTYgKzg4MSwyMyBA
QCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKElXZWJQ
cmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRGZXRjaEFQSUVu
YWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRTaGFkb3dET01FbmFibGVkKFRSVUUp
OwogICAgIHByZWZzUHJpdmF0ZS0+c2V0Q3VzdG9tRWxlbWVudHNFbmFibGVkKFRSVUUpOwotICAg
IHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoRkFMU0UpOwogICAg
IHByZWZzUHJpdmF0ZS0+c2V0UmVzb3VyY2VUaW1pbmdFbmFibGVkKFRSVUUpOwogICAgIHByZWZz
UHJpdmF0ZS0+c2V0VXNlclRpbWluZ0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5z
ZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRJ
bnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+Y2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbigpOwogCiAgICAgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhmYWxz
ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoSVdl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcywgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU2PiBwcmVmc1ByaXZhdGUgeyBRdWVy
eSwgcHJlZmVyZW5jZXMgfTsKKyAgICAKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7CisgICAg
cHJlZnNQcml2YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVkKG9wdGlvbnMu
ZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldElu
c3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMp
OworfQorCiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQogewogICAgIERXT1JEIHByb2Nl
c3NJZCA9IDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpOwpAQCAtOTM3LDcgKzk0NCw3IEBAIHN0YXRp
YyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAjZW5kaWYK
IH0KIAotc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0
aW5nKCkKK3N0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+
IHdlYlZpZXc7CiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKSAKQEAg
LTk4Myw4ICs5OTAsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3Rh
dGVCZWZvcmVUZXN0aW5nKCkKICAgICB9CiAKICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBw
cmVmZXJlbmNlczsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVm
ZXJlbmNlcykpKQorICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZl
cmVuY2VzKSkpIHsKICAgICAgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyhwcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMocHJlZmVyZW5jZXMuZ2V0KCksIG9wdGlvbnMpOworICAgIH0KIAogICAgIFRlc3RSdW5u
ZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CiAKQEAgLTExNTUsNyArMTE2NCw5IEBA
IHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAKICAgICBDRlJl
bGVhc2UodXJsKTsKIAotICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZygpOworICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgeyBjb21tYW5kLnBhdGhPclVSTCwgY29t
bWFuZC5hYnNvbHV0ZVBhdGggfTsKKworICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZyhvcHRpb25zKTsKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVy
OjpjcmVhdGUodGVzdFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAg
IDo6Z1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0KTsKQEAgLTEy
NjEsNyArMTI3Miw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExp
bmUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0
ZUJlZm9yZVRlc3RpbmcoKTsKKyAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3Rpbmcob3B0aW9ucyk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qgc3lu
Y2hyb25vdXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hpY2gg
aXMgbmVjZXNzYXJ5CiAgICAgLy8gdG8gc3RvcCB0aW1lcnMsIFdlYlNvY2tldHMgYW5kIG90aGVy
IGFjdGl2aXR5IHRoYXQgY291bGQgb3RoZXJ3aXNlIHNwaWxsIG91dHB1dCBpbnRvIG5leHQgdGVz
dCdzIHJlc3VsdHMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335610</attachid>
            <date>2018-03-12 11:26:39 -0700</date>
            <delta_ts>2018-03-12 11:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183487-20180312112647.patch</filename>
            <type>text/plain</type>
            <size>25485</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NDY2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWNmMzMwZTBlMDhiZjA1ZDFiOTYzNzAwNGIzYWNmYTBm
OGRkZTBlOS4uMmI3ZTlhMzBhMzE2ODlhZGVhMTgyMzA1MzUwYzlkNTFjNTk0ODEwOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE4LTAzLTEyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBbRFJUXSBUZXN0T3B0aW9ucyBzaG91bGQgbm90IGJlIE9iakMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgIE1vdmUgVGVzdE9wdGlvbnMgdG8gcGxhdGZvcm0tYWdu
b3N0aWMgc291cmNlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOiBSZW5hbWVkIGZyb20g
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0uCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICBSZW1vdmUgTlNVUkwgZGVwZW5k
ZW5jeSBhbmQgYWxpZ24gd2l0aCBXVFIgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIENvbnN1bWUg
VGVzdE9wdGlvbnMgKHJlY29nbml6aW5nIGp1c3QgdGhlIG9uZXMgdGhhdCBoYXZlIFdlYlByZWZl
cmVuY2VzIGRlZmluZWQgZm9yIG5vdykuCisKIDIwMTgtMDMtMDkgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERvIG5vdCB1c2UgV2Vi
S2l0RE9NSFRNTEZvcm1FbGVtZW50IGFzIGFyZ3VtZW50IG9mIHNpZ25hbCBXZWJLaXRXZWJQYWdl
Ojp3aWxsLXN1Ym1pdC1mb3JtCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CmluZGV4IGEz
NGJhMGE0NGQxMmQzNDIwMTZiMmZlMmYwYmQzOWY5ZjZjMjlmZDMuLmJiNDZmMjRiNzQyNDEwZWQz
YzUzYmM0ZjJkNmQ3ODk1YzcwMDAyMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0
CkBAIC0xMyw2ICsxMyw3IEBAIHNldChEdW1wUmVuZGVyVHJlZV9TT1VSQ0VTCiAgICAgR0NDb250
cm9sbGVyLmNwcAogICAgIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwCiAgICAgUGl4ZWxEdW1wU3Vw
cG9ydC5jcHAKKyAgICBUZXN0T3B0aW9ucy5jcHAKICAgICBUZXN0UnVubmVyLmNwcAogICAgIFdv
cmtRdWV1ZS5jcHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX1VJU0NSSVBUQ09OVEVYVF9ESVJ9
L1VJU2NyaXB0Q29udGV4dC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhZTdh
M2I1MjVhM2JjYjg3NjVkYmFlMjVhMmM3MWI0NjI1ZGE3OWEuLmRjOWI5ZmI4Yjg3MzIxZjY0MzRl
NDY2ZjQ0MGIxN2Q1NjRjOGJhNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAx
LDcgKzEwMSw2IEBACiAJCTVEQjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNo
ZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktp
dFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjkwMC50dGYgKi87IH07Ci0JCTdDQkJDMzIzMURERkNGOUEwMDc4NkI5RCAvKiBU
ZXN0T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSAqLzsgfTsKIAkJ
ODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAw
NDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Lm1tICovOyB9OwogCQk4NDY1RTJDNzBGRkE4REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9y
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDY1
RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTk4
MzBGMzFGMTVDODExODEwMDVBQjIwNiAvKiBEdW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODMwRjMxRTE1QzgxMTgx
MDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVDb21tb24uY3BwICovOyB9OwpAQCAtMTA5LDYgKzEw
OCw3IEBACiAJCUExMTU4RDU5MTg5Mjc0MzYwMDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNThE
NTcxODkyNzNFQjAwODhDMTdCIC8qIFBpeGVsRHVtcFN1cHBvcnRJT1MubW0gKi87IH07CiAJCUEx
MzRFNTMxMTg4RkMyNzAwMDkwMUQwNiAvKiBEdW1wUmVuZGVyVHJlZU1haW4ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTM0RTUyRjE4OEZDMjcwMDA5
MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tICovOyB9OwogCQlBMTM0RTUzNjE4OTA1RUZG
MDA5MDFEMDYgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBB
Y2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovOyB9OworCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZG
NDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTMwQTIxRjcyMDUxRDg5NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAq
LzsgfTsKIAkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gKi87
IH07CiAJCUE4QjkxQURDMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ5
MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSAqLzsgfTsKIAkJQThE
NzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNl
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ3OUNF
OTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAq
LzsgfTsKQEAgLTMxNSw3ICszMTUsNiBAQAogCQk1M0NCQjgzMDEzNEU0MkYzMDAxQ0U2QTQgLyog
Q3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzQ0JCODMxMTM0RTQyRjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVERThBRTQzMTNBMkMxNTgwMEQ2QTM3
RCAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKLQkJN0NCQkMzMjExRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdE9wdGlvbnMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBU
ZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MDA0NUFFQjE0NzcxOEU3MDA4Mjkw
QTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgcGF0
aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbTsgcGF0aCA9IG1hYy9B
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMzNiw2ICszMzUsNyBAQAogCQlBMTZDRDIwRDE4OTA3QTdEMDA5MjM2M0UgLyog
QmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBw
YXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0Jhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExOTMxN0ZDMTg5Mjg1NUYwMDFDNTJCMSAvKiBJbmZvLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdC54bWw7IG5hbWUgPSBJbmZvLnBsaXN0OyBwYXRoID0gaW9zL0luZm8ucGxpc3Q7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOTMxN0ZEMTg5Mjg3MzgwMDFDNTJCMSAvKiBEdW1w
UmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZUFwcC54
Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9EdW1wUmVuZGVyVHJlZUFwcC54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMwQTIxRjcyMDUxRDg5NjAwMDhG
RjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwM0ZG
NzQwOUNBQUQwODAwOUIyQTM3IC8qIER1bXBSZW5kZXJUcmVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNv
ZGluZyA9IDQ7IHBhdGggPSBEdW1wUmVuZGVyVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODE3MDkwMzA4QjE2NEQzMDBDQ0I5RkIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUE4NEY2MDg5MDhCMTM2REEwMEU5NzQ1RiAv
KiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0
aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJl
ZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTQ3Miw3ICs0NzIsNyBAQAogCQkJCUE4MDNGRjc0MDlD
QUFEMDgwMDlCMkEzNyAvKiBEdW1wUmVuZGVyVHJlZS5oICovLAogCQkJCUJDQTE4QzQ2MEM5QjVC
OTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZS5tbSAqLywKIAkJCQlBMTM0RTUyRjE4OEZDMjcw
MDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tICovLAotCQkJCTdDQkJDMzIxMURERkNG
OUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSAqLywKKwkJCQlBMzBBMjFGNzIwNTFEODk2MDAw
OEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwICovLAogCQkJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5
RCAvKiBUZXN0T3B0aW9ucy5oICovLAogCQkJCUJDNDc0MTI5MEQwMzhBNEMwMDcyQjAwNiAvKiBK
YXZhU2NyaXB0VGhyZWFkaW5nLmggKi8sCiAJCQkJQkNBMThDMEEwQzlCNTlFRjAwMTE0MzY5IC8q
IER1bXBSZW5kZXJUcmVlTWFjLmggKi8sCkBAIC0xMTA1LDcgKzExMDUsNyBAQAogCQkJCUJDQjI4
NEQ2MENGQTgzRDEwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNBMThCNjYwQzlCMDhDMjAwMTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjgwQzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9h
ZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJN0NCQkMzMjMxRERGQ0Y5QTAwNzg2QjlE
IC8qIFRlc3RPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTMwQTIxRjgyMDUxRDhDNDAw
MDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDEzMURBMEM5
NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4
QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4MjkwIC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1N
YWMuY21ha2UgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAx
ZDAxYTQ4MzI2NTMyODI4YWJkZjNlOWI0M2I2OTBjOGRiNDMyNTViLi41ZDZhMzk5NDRmMjAzMzk1
MjA1MGUzZDlkMGZmNTU2MTZiMzJkYmExIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtNjgsOCArNjgsNiBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9DcHBf
U09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9PYmpDcHBfU09VUkNFUwot
ICAgIFRlc3RPcHRpb25zLm1tCi0KICAgICBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQog
ICAgIG1hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQogICAgIG1hYy9BY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFjY2ViOTJlZGQ4ODg3MjRmMzQ1YmFjNDE3ZGYzNzA4NWQzM2ZmNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdE9wdGlvbnMuaCIKKworI2luY2x1ZGUgPGZzdHJlYW0+CisKK3N0YXRpYyBib29sIHBh
cnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlID09ICJ0cnVlIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHZh
bHVlID09ICJmYWxzZSIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExPR19FUlJPUigi
Rm91bmQgdW5leHBlY3RlZCB2YWx1ZSAnJXMnIGZvciBib29sZWFuIG9wdGlvbi4gRXhwZWN0ZWQg
J3RydWUnIG9yICdmYWxzZScuIiwgdmFsdWUuY19zdHIoKSk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVS
TCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCkKK3sKKyAgICBjb25zdCBhdXRvJiBm
aWxlbmFtZSA9IGFic29sdXRlUGF0aC5lbXB0eSgpID8gcGF0aE9yVVJMIDogYWJzb2x1dGVQYXRo
OworICAgIGlmIChmaWxlbmFtZS5lbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6
OnN0cmluZyBvcHRpb25zOworICAgIHN0ZDo6aWZzdHJlYW0gdGVzdEZpbGUoZmlsZW5hbWUuZGF0
YSgpKTsKKyAgICBpZiAoIXRlc3RGaWxlLmdvb2QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGdl
dGxpbmUodGVzdEZpbGUsIG9wdGlvbnMpOworICAgIHN0ZDo6c3RyaW5nIGJlZ2luU3RyaW5nKCJ3
ZWJraXQtdGVzdC1ydW5uZXIgWyAiKTsKKyAgICBzdGQ6OnN0cmluZyBlbmRTdHJpbmcoIiBdIik7
CisgICAgc2l6ZV90IGJlZ2luTG9jYXRpb24gPSBvcHRpb25zLmZpbmQoYmVnaW5TdHJpbmcpOwor
ICAgIGlmIChiZWdpbkxvY2F0aW9uID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICByZXR1
cm47CisgICAgc2l6ZV90IGVuZExvY2F0aW9uID0gb3B0aW9ucy5maW5kKGVuZFN0cmluZywgYmVn
aW5Mb2NhdGlvbik7CisgICAgaWYgKGVuZExvY2F0aW9uID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7
CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGZpbmQgZW5kIG9mIHRlc3QgaGVhZGVyIGlu
ICVzIiwgZmlsZW5hbWUuY19zdHIoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3Rk
OjpzdHJpbmcgcGFpclN0cmluZyA9IG9wdGlvbnMuc3Vic3RyKGJlZ2luTG9jYXRpb24gKyBiZWdp
blN0cmluZy5zaXplKCksIGVuZExvY2F0aW9uIC0gKGJlZ2luTG9jYXRpb24gKyBiZWdpblN0cmlu
Zy5zaXplKCkpKTsKKyAgICBzaXplX3QgcGFpclN0YXJ0ID0gMDsKKyAgICB3aGlsZSAocGFpclN0
YXJ0IDwgcGFpclN0cmluZy5zaXplKCkpIHsKKyAgICAgICAgc2l6ZV90IHBhaXJFbmQgPSBwYWly
U3RyaW5nLmZpbmQoIiAiLCBwYWlyU3RhcnQpOworICAgICAgICBpZiAocGFpckVuZCA9PSBzdGQ6
OnN0cmluZzo6bnBvcykKKyAgICAgICAgICAgIHBhaXJFbmQgPSBwYWlyU3RyaW5nLnNpemUoKTsK
KyAgICAgICAgc2l6ZV90IGVxdWFsc0xvY2F0aW9uID0gcGFpclN0cmluZy5maW5kKCI9IiwgcGFp
clN0YXJ0KTsKKyAgICAgICAgaWYgKGVxdWFsc0xvY2F0aW9uID09IHN0ZDo6c3RyaW5nOjpucG9z
KSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIk1hbGZvcm1lZCBvcHRpb24gaW4gdGVzdCBoZWFk
ZXIgKGNvdWxkIG5vdCBmaW5kICc9JyBjaGFyYWN0ZXIpIGluICVzIiwgZmlsZW5hbWUuY19zdHIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGtleSA9IHBh
aXJTdHJpbmcuc3Vic3RyKHBhaXJTdGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQpOwor
ICAgICAgICBhdXRvIHZhbHVlID0gcGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24gKyAx
LCBwYWlyRW5kIC0gKGVxdWFsc0xvY2F0aW9uICsgMSkpOworICAgICAgICBpZiAoa2V5ID09ICJl
bmFibGVBdHRhY2htZW50RWxlbWVudCIpCisgICAgICAgICAgICBlbmFibGVBdHRhY2htZW50RWxl
bWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGlmIChr
ZXkgPT0gInVzZUFjY2VsZXJhdGVkRHJhd2luZyIpCisgICAgICAgICAgICB1c2VBY2NlbGVyYXRl
ZERyYXdpbmcgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBl
bHNlIGlmIChrZXkgPT0gImVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIikKKyAgICAgICAgICAg
IGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNZW51SXRlbUVsZW1lbnQi
KQorICAgICAgICAgICAgZW5hYmxlTWVudUl0ZW1FbGVtZW50ID0gcGFyc2VCb29sZWFuVGVzdEhl
YWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNb2Rlcm5N
ZWRpYUNvbnRyb2xzIikKKyAgICAgICAgICAgIGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMgPSBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBlbHNlIGlmIChrZXkg
PT0gImVuYWJsZVBvaW50ZXJMb2NrIikKKyAgICAgICAgICAgIGVuYWJsZVBvaW50ZXJMb2NrID0g
cGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5
ID09ICJlbmFibGVXZWJBdXRoZW50aWNhdGlvbiIpCisgICAgICAgICAgICBlbmFibGVXZWJBdXRo
ZW50aWNhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAg
IGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIpCisgICAg
ICAgICAgICBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJsYXllckJhY2tl
ZFdlYlZpZXciKQorICAgICAgICAgICAgbGF5ZXJCYWNrZWRXZWJWaWV3ID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJ
c1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUiKQorICAgICAgICAgICAgZW5hYmxlSXNTZWN1cmVDb250
ZXh0QXR0cmlidXRlID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMiKQorICAgICAgICAg
ICAgZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIiKQorICAgICAgICAgICAgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJhbGxvd0Ny
b3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIpCisgICAgICAgICAgICBh
bGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIHBhaXJTdGFydCA9IHBhaXJFbmQg
KyAxOworICAgIH0KK30KKworYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJsZVdp
dGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
b3RoZXIubGF5ZXJCYWNrZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldzsKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0T3B0aW9ucy5oCmluZGV4IDVkNGNhOTUxZTAwYWU0ZmFkNGY0MDM0MjUxNjRi
M2Q4NzQxM2M1YTQuLmY5OWNmNTYxZjgxOWFiYmQ3NzQ2YWQ3Nzk2MjU3NGEzNjhkZDFlZmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaApAQCAtMjQsOSArMjQsOCBAQAogICovCiAKICNw
cmFnbWEgb25jZQotI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAKLUBjbGFzcyBOU1VSTDsK
KyNpbmNsdWRlIDxzdHJpbmc+CiAKIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgYm9vbCBlbmFi
bGVBdHRhY2htZW50RWxlbWVudCB7IGZhbHNlIH07CkBAIC00Myw2ICs0Miw2IEBAIHN0cnVjdCBU
ZXN0T3B0aW9ucyB7CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgeyBmYWxzZSB9
OwogICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlh
bHMgeyBmYWxzZSB9OwogCi0gICAgVGVzdE9wdGlvbnMoTlNVUkwqLCBjb25zdCBUZXN0Q29tbWFu
ZCYpOwotICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RP
cHRpb25zJikgY29uc3Q7CisgICAgVGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhP
clVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCk7CisgICAgYm9vbCB3ZWJWaWV3
SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdDsK
IH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyYmUzYzJkNDhhZGJjZTEwNGYwYjZkYmE2ZWI2ZTQwMDI0ZmJhOTgzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKLQot
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPGZzdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotCi1zdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFs
dWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSA9PSAidHJ1ZSIp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICh2YWx1ZSA9PSAiZmFsc2UiKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOU0xvZyhAIkZvdW5kIHVuZXhwZWN0ZWQgdmFsdWUgJyVz
JyBmb3IgYm9vbGVhbiBvcHRpb24uIEV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnLiIsIHZhbHVl
LmNfc3RyKCkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVGVzdE9wdGlvbnM6OlRlc3RPcHRp
b25zKE5TVVJMICp0ZXN0VVJMLCBjb25zdCBUZXN0Q29tbWFuZCYgY29tbWFuZCkKLXsKLSAgICBz
dGQ6OnN0cmluZyBwYXRoID0gY29tbWFuZC5hYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKHBhdGguZW1w
dHkoKSkgewotICAgICAgICBwYXRoID0gW3Rlc3RVUkwgaXNGaWxlVVJMXSA/IFt0ZXN0VVJMIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBjb21tYW5kLnBhdGhPclVSTDsKLSAgICAgICAgaWYg
KHBhdGguZW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0
cmluZyBvcHRpb25zOwotICAgIHN0ZDo6aWZzdHJlYW0gdGVzdEZpbGUocGF0aC5kYXRhKCkpOwot
ICAgIGlmICghdGVzdEZpbGUuZ29vZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZ2V0bGluZSh0
ZXN0RmlsZSwgb3B0aW9ucyk7Ci0gICAgc3RkOjpzdHJpbmcgYmVnaW5TdHJpbmcoIndlYmtpdC10
ZXN0LXJ1bm5lciBbICIpOwotICAgIHN0ZDo6c3RyaW5nIGVuZFN0cmluZygiIF0iKTsKLSAgICBz
aXplX3QgYmVnaW5Mb2NhdGlvbiA9IG9wdGlvbnMuZmluZChiZWdpblN0cmluZyk7Ci0gICAgaWYg
KGJlZ2luTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAgIHJldHVybjsKLSAg
ICBzaXplX3QgZW5kTG9jYXRpb24gPSBvcHRpb25zLmZpbmQoZW5kU3RyaW5nLCBiZWdpbkxvY2F0
aW9uKTsKLSAgICBpZiAoZW5kTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAg
ICAgTlNMb2coQCJDb3VsZCBub3QgZmluZCBlbmQgb2YgdGVzdCBoZWFkZXIgaW4gJXMiLCBwYXRo
LmNfc3RyKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6c3RyaW5nIHBhaXJT
dHJpbmcgPSBvcHRpb25zLnN1YnN0cihiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgp
LCBlbmRMb2NhdGlvbiAtIChiZWdpbkxvY2F0aW9uICsgYmVnaW5TdHJpbmcuc2l6ZSgpKSk7Ci0g
ICAgc2l6ZV90IHBhaXJTdGFydCA9IDA7Ci0gICAgd2hpbGUgKHBhaXJTdGFydCA8IHBhaXJTdHJp
bmcuc2l6ZSgpKSB7Ci0gICAgICAgIHNpemVfdCBwYWlyRW5kID0gcGFpclN0cmluZy5maW5kKCIg
IiwgcGFpclN0YXJ0KTsKLSAgICAgICAgaWYgKHBhaXJFbmQgPT0gc3RkOjpzdHJpbmc6Om5wb3Mp
Ci0gICAgICAgICAgICBwYWlyRW5kID0gcGFpclN0cmluZy5zaXplKCk7Ci0gICAgICAgIHNpemVf
dCBlcXVhbHNMb2NhdGlvbiA9IHBhaXJTdHJpbmcuZmluZCgiPSIsIHBhaXJTdGFydCk7Ci0gICAg
ICAgIGlmIChlcXVhbHNMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgICAg
ICAgTlNMb2coQCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3QgZmlu
ZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIHBhdGguY19zdHIoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3RyKHBhaXJT
dGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQpOwotICAgICAgICBhdXRvIHZhbHVlID0g
cGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVxdWFsc0xv
Y2F0aW9uICsgMSkpOwotICAgICAgICBpZiAoa2V5ID09ICJlbmFibGVBdHRhY2htZW50RWxlbWVu
dCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZUFjY2Vs
ZXJhdGVkRHJhd2luZyIpCi0gICAgICAgICAgICB0aGlzLT51c2VBY2NlbGVyYXRlZERyYXdpbmcg
PSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBlbHNlIGlmIChr
ZXkgPT0gImVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIikKLSAgICAgICAgICAgIHRoaXMtPmVu
YWJsZUludGVyc2VjdGlvbk9ic2VydmVyID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNZW51SXRlbUVsZW1lbnQiKQot
ICAgICAgICAgICAgdGhpcy0+ZW5hYmxlTWVudUl0ZW1FbGVtZW50ID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNb2Rl
cm5NZWRpYUNvbnRyb2xzIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZU1vZGVybk1lZGlhQ29u
dHJvbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBlbHNl
IGlmIChrZXkgPT0gImVuYWJsZVBvaW50ZXJMb2NrIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJs
ZVBvaW50ZXJMb2NrID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVXZWJBdXRoZW50aWNhdGlvbiIpCi0gICAgICAgICAg
ICB0aGlzLT5lbmFibGVXZWJBdXRoZW50aWNhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJW
YWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAg
ZWxzZSBpZiAoa2V5ID09ICJsYXllckJhY2tlZFdlYlZpZXciKQotICAgICAgICAgICAgdGhpcy0+
bGF5ZXJCYWNrZWRXZWJWaWV3ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUi
KQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09
ICJlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlSW5z
cGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiKQotICAgICAg
ICAgICAgdGhpcy0+ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFyc2VCb29sZWFuVGVzdEhl
YWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIpCi0gICAgICAgICAgICB0aGlzLT5h
bGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIHBhaXJTdGFydCA9IHBhaXJFbmQg
KyAxOwotICAgIH0KLX0KLQotYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJsZVdp
dGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
b3RoZXIubGF5ZXJCYWNrZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldzsKLX0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAyZWQzOGQ2Zjg2NzE2
ZDQzMGJkOGJjMzQ3YTU3YzIwZTc2ZGViYjk2Li5kYWFiNzJmMWI2N2MxNTQ4MWRlMDA4ZDI4YTJj
OGE4YjEzNWFlNjQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCkBAIC0xOTA3LDcgKzE5MDcsOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmlu
ZyYgaW5wdXRMaW5lKQogICAgIE5TU3RyaW5nICppbmZvcm1hdGlvblN0cmluZyA9IFtAIkNSQVNI
SU5HIFRFU1Q6ICIgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6dGVzdFBhdGhdOwogICAgIFdlYktp
dDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oKENGU3RyaW5n
UmVmKWluZm9ybWF0aW9uU3RyaW5nKTsKIAotICAgIFRlc3RPcHRpb25zIG9wdGlvbnModXJsLCBj
b21tYW5kKTsKKyAgICBUZXN0T3B0aW9ucyBvcHRpb25zIHsgW3VybCBpc0ZpbGVVUkxdID8gW3Vy
bCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dIDogcGF0aE9yVVJMLCBjb21tYW5kLmFic29sdXRl
UGF0aCB9OworCiAgICAgaWYgKCFtYWluRnJhbWVUZXN0T3B0aW9ucyB8fCAhb3B0aW9ucy53ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMobWFpbkZyYW1lVGVzdE9wdGlvbnMudmFsdWUoKSkp
IHsKICAgICAgICAgaWYgKG1haW5GcmFtZSkKICAgICAgICAgICAgIGRlc3Ryb3lXZWJWaWV3QW5k
T2Zmc2NyZWVuV2luZG93KFttYWluRnJhbWUgd2ViVmlld10pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMDZjZDk5MGJlZWE4OWE4MzEzNTQ5Y2Nm
N2QxNzc4YWRiYzllNGVlZS4uOTE2OGM0MjZlM2ExMjQwY2FkZDU4YTE1OTdlMGQ5YTk5NDUyMjM4
OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUgIlBv
bGljeURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKKyNpbmNs
dWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJV
SURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCkBAIC03ODcsNyAr
Nzg4LDYgQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoSVdlYlByZWZl
cmVuY2VzKiBwcmVmZXJlbmNlcykKICAgICBwcmVmc1ByaXZhdGUtPnNldFdlYkFuaW1hdGlvbnNF
bmFibGVkKFRSVUUpOwogICAgIC8vIEZJWE1FOiBXZWJHTDIKICAgICAvLyBGSVhNRTogV2ViUlRD
Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVkKFRS
VUUpOwogfQogCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCkBAIC04ODEsMTYgKzg4MSwyMyBAQCBz
dGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKElXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRGZXRjaEFQSUVuYWJs
ZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRTaGFkb3dET01FbmFibGVkKFRSVUUpOwog
ICAgIHByZWZzUHJpdmF0ZS0+c2V0Q3VzdG9tRWxlbWVudHNFbmFibGVkKFRSVUUpOwotICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoRkFMU0UpOwogICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0UmVzb3VyY2VUaW1pbmdFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJp
dmF0ZS0+c2V0VXNlclRpbWluZ0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRE
YXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRJbnNw
ZWN0b3JBZGRpdGlvbnNFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+Y2xlYXJOZXR3
b3JrTG9hZGVyU2Vzc2lvbigpOwogCiAgICAgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhmYWxzZSk7
CiB9CiAKK3N0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoSVdlYlBy
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlcywgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit7Cisg
ICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU2PiBwcmVmc1ByaXZhdGUgeyBRdWVyeSwg
cHJlZmVyZW5jZXMgfTsKKworICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9s
c0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzKTsKKyAgICBwcmVmc1By
aXZhdGUtPnNldElzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZUVuYWJsZWQob3B0aW9ucy5lbmFibGVJ
c1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0SW5zcGVjdG9y
QWRkaXRpb25zRW5hYmxlZChvcHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyk7Cit9CisK
IHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25JZCgpCiB7CiAgICAgRFdPUkQgcHJvY2Vzc0lkID0g
OjpHZXRDdXJyZW50UHJvY2Vzc0lkKCk7CkBAIC05MzcsNyArOTQ0LDcgQEAgc3RhdGljIHZvaWQg
c2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICNlbmRpZgogfQogCi1z
dGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQor
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmll
dzsKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpIApAQCAtOTgzLDgg
Kzk5MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3RpbmcoKQogICAgIH0KIAogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVu
Y2VzOwotICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2Vz
KSkpCisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMp
KSkgewogICAgICAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKHByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICAgICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhw
cmVmZXJlbmNlcy5nZXQoKSwgb3B0aW9ucyk7CisgICAgfQogCiAgICAgVGVzdFJ1bm5lcjo6c2V0
U2VyaWFsaXplSFRUUExvYWRzKGZhbHNlKTsKIApAQCAtMTE1NSw3ICsxMTY0LDkgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKIAogICAgIENGUmVsZWFzZSh1
cmwpOwogCi0gICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7
CisgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyB7IGNvbW1hbmQucGF0aE9yVVJMLCBjb21tYW5kLmFi
c29sdXRlUGF0aCB9OworCisgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVU
ZXN0aW5nKG9wdGlvbnMpOwogCiAgICAgOjpnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0
ZSh0ZXN0VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgOjpnVGVz
dFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQpOwpAQCAtMTI2MSw3ICsx
MjcyLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZygpOworICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
ZyhvcHRpb25zKTsKIAogICAgIC8vIExvYWRpbmcgYW4gZW1wdHkgcmVxdWVzdCBzeW5jaHJvbm91
c2x5IHJlcGxhY2VzIHRoZSBkb2N1bWVudCB3aXRoIGEgYmxhbmsgb25lLCB3aGljaCBpcyBuZWNl
c3NhcnkKICAgICAvLyB0byBzdG9wIHRpbWVycywgV2ViU29ja2V0cyBhbmQgb3RoZXIgYWN0aXZp
dHkgdGhhdCBjb3VsZCBvdGhlcndpc2Ugc3BpbGwgb3V0cHV0IGludG8gbmV4dCB0ZXN0J3MgcmVz
dWx0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335615</attachid>
            <date>2018-03-12 11:55:05 -0700</date>
            <delta_ts>2018-03-12 12:36:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183487-20180312115513.patch</filename>
            <type>text/plain</type>
            <size>25828</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjUxN2ExMDVjZTE3MGYxMzI1ZjE4NDNiNjQ3NzI5YmYz
MTc4NTA1Ny4uNTc4N2YxMzQzYmY1ZGZkOTYzOTYzNWI2MzBhYWM5YjI4NTA5MzJmMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE4LTAzLTEyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBbRFJUXSBUZXN0T3B0aW9ucyBzaG91bGQgbm90IGJlIE9iakMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgIE1vdmUgVGVzdE9wdGlvbnMgdG8gcGxhdGZvcm0tYWdu
b3N0aWMgc291cmNlcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOiBSZW5hbWVkIGZyb20g
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0uCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICBSZW1vdmUgTlNVUkwgZGVwZW5k
ZW5jeSBhbmQgYWxpZ24gd2l0aCBXVFIgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIENvbnN1bWUg
VGVzdE9wdGlvbnMgKHJlY29nbml6aW5nIGp1c3QgdGhlIG9uZXMgdGhhdCBoYXZlIFdlYlByZWZl
cmVuY2VzIGRlZmluZWQgZm9yIG5vdykuCisKIDIwMTgtMDMtMTIgIEJhc3VrZSBTdXp1a2kgIDxC
YXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFt3ZWJraXRweV0gUmVtb3ZlIG9wZW5z
c2wgY29tbWFuZCBkZXBlbmRlbmN5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Q01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBhMzRiYTBhNDRkMTJkMzQyMDE2YjJmZTJmMGJkMzlmOWY2YzI5ZmQzLi5iYjQ2ZjI0Yjc0MjQx
MGVkM2M1M2JjNGYyZDZkNzg5NWM3MDAwMjA2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTMsNiArMTMsNyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfU09VUkNFUwogICAgIEdD
Q29udHJvbGxlci5jcHAKICAgICBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAogICAgIFBpeGVsRHVt
cFN1cHBvcnQuY3BwCisgICAgVGVzdE9wdGlvbnMuY3BwCiAgICAgVGVzdFJ1bm5lci5jcHAKICAg
ICBXb3JrUXVldWUuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRf
RElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
YWU3YTNiNTI1YTNiY2I4NzY1ZGJhZTI1YTJjNzFiNDYyNWRhNzlhLi5kYzliOWZiOGI4NzMyMWY2
NDM0ZTQ2NmY0NDBiMTdkNTY0YzhiYTYwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwMSw3ICsxMDEsNiBAQAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjcwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyNzAwLnR0ZiAqLzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktp
dFdlaWdodFdhdGNoZXI4MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjgwMC50dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBX
ZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktp
dFdlaWdodFdhdGNoZXI5MDAudHRmICovOyB9OwotCQk3Q0JCQzMyMzFEREZDRjlBMDA3ODZCOUQg
LyogVGVzdE9wdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0JCQzMyMTFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0gKi87IH07
CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbSAqLzsgfTsKIAkJODQ2NUUyQzcwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1
cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODQ2NUUyQzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovOyB9Owog
CQk5ODMwRjMxRjE1QzgxMTgxMDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVDb21tb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTgzMEYzMUUxNUM4
MTE4MTAwNUFCMjA2IC8qIER1bXBSZW5kZXJUcmVlQ29tbW9uLmNwcCAqLzsgfTsKQEAgLTEwOSw2
ICsxMDgsNyBAQAogCQlBMTE1OEQ1OTE4OTI3NDM2MDA4OEMxN0IgLyogUGl4ZWxEdW1wU3VwcG9y
dElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MTU4RDU3MTg5MjczRUIwMDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tICovOyB9Owog
CQlBMTM0RTUzMTE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWluLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEzNEU1MkYxODhGQzI3
MDAwOTAxRDA2IC8qIER1bXBSZW5kZXJUcmVlTWFpbi5tbSAqLzsgfTsKIAkJQTEzNEU1MzYxODkw
NUVGRjAwOTAxRDA2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMg
LyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAqLzsgfTsKKwkJQTMwQTIxRjgyMDUxRDhDNDAw
MDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzMEEyMUY3MjA1MUQ4OTYwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5j
cHAgKi87IH07CiAJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVBh
c3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1t
ICovOyB9OwogCQlBOEI5MUFEQzBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5k
b3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEI5
MUFEOTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gKi87IH07CiAJ
CUE4RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1Nv
dXJjZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThE
NzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNl
Lm0gKi87IH07CkBAIC0zMTUsNyArMzE1LDYgQEAKIAkJNTNDQkI4MzAxMzRFNDJGMzAwMUNFNkE0
IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0NCQjgzMTEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNo
ZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lD
aGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REU4QUU0MzEzQTJDMTU4MDBE
NkEzN0QgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBh
dGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07Ci0JCTdDQkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQg
LyogVGVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUIxNDc3MThFNzAw
ODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7
IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBt
YWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMzYsNiArMzM1LDcgQEAKIAkJQTE2Q0QyMEQxODkwN0E3RDAwOTIzNjNF
IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gQmFzZVRhcmdldC54Y2NvbmZp
ZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9CYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTkzMTdGQzE4OTI4NTVGMDAxQzUyQjEgLyogSW5mby5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3QueG1sOyBuYW1lID0gSW5mby5wbGlzdDsgcGF0aCA9IGlvcy9JbmZvLnBsaXN0OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTkzMTdGRDE4OTI4NzM4MDAxQzUyQjEgLyog
RHVtcFJlbmRlclRyZWVBcHAueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gRHVtcFJlbmRlclRyZWVB
cHAueGNjb25maWc7IHBhdGggPSBtYWMvQ29uZmlndXJhdGlvbnMvRHVtcFJlbmRlclRyZWVBcHAu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMEEyMUY3MjA1MUQ4OTYw
MDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXN0T3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
MDNGRjc0MDlDQUFEMDgwMDlCMkEzNyAvKiBEdW1wUmVuZGVyVHJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBmaWxl
RW5jb2RpbmcgPSA0OyBwYXRoID0gRHVtcFJlbmRlclRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTgxNzA5MDMwOEIxNjREMzAwQ0NCOUZCIC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlBODRGNjA4OTA4QjEzNkRBMDBFOTc0
NUYgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7
IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CkBAIC00NzIsNyArNDcyLDcgQEAKIAkJCQlBODAzRkY3
NDA5Q0FBRDA4MDA5QjJBMzcgLyogRHVtcFJlbmRlclRyZWUuaCAqLywKIAkJCQlCQ0ExOEM0NjBD
OUI1Qjk0MDAxMTQzNjkgLyogRHVtcFJlbmRlclRyZWUubW0gKi8sCiAJCQkJQTEzNEU1MkYxODhG
QzI3MDAwOTAxRDA2IC8qIER1bXBSZW5kZXJUcmVlTWFpbi5tbSAqLywKLQkJCQk3Q0JCQzMyMTFE
REZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0gKi8sCisJCQkJQTMwQTIxRjcyMDUxRDg5
NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLywKIAkJCQk3Q0JCQzMyMjFEREZDRjlBMDA3
ODZCOUQgLyogVGVzdE9wdGlvbnMuaCAqLywKIAkJCQlCQzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYg
LyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovLAogCQkJCUJDQTE4QzBBMEM5QjU5RUYwMDExNDM2
OSAvKiBEdW1wUmVuZGVyVHJlZU1hYy5oICovLApAQCAtMTEwNSw3ICsxMTA1LDcgQEAKIAkJCQlC
Q0IyODRENjBDRkE4M0QxMDA3RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjY2MEM5QjA4QzIwMDExNDM2OSAvKiBQb2xpY3lEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjY4MEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDQkJDMzIzMURERkNGOUEwMDc4
NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzMEEyMUY4MjA1MUQ4
QzQwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAxMzFE
QTBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0ExOEIyNDBDOUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY0RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9T
Lm0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UKaW5k
ZXggMWQwMWE0ODMyNjUzMjgyOGFiZGYzZTliNDNiNjkwYzhkYjQzMjU1Yi4uNWQ2YTM5OTQ0ZjIw
MzM5NTIwNTBlM2Q5ZDBmZjU1NjE2YjMyZGJhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTY4LDggKzY4LDYgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVf
Q3BwX1NPVVJDRVMKICkKIAogbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfT2JqQ3BwX1NPVVJD
RVMKLSAgICBUZXN0T3B0aW9ucy5tbQotCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMu
bW0KICAgICBtYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KICAgICBtYWMvQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MzdmYmVjYjQyMzdiMzY5ODY2ZDU0ZGYwOTU3MWE1ZDVjOGFhZTNi
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3Bw
CkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRlc3RPcHRpb25zLmgiCisKKyNpbmNsdWRlIDxmc3RyZWFtPgorCitzdGF0aWMgYm9v
bCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQor
eworICAgIGlmICh2YWx1ZSA9PSAidHJ1ZSIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
ICh2YWx1ZSA9PSAiZmFsc2UiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMT0dfRVJS
T1IoIkZvdW5kIHVuZXhwZWN0ZWQgdmFsdWUgJyVzJyBmb3IgYm9vbGVhbiBvcHRpb24uIEV4cGVj
dGVkICd0cnVlJyBvciAnZmFsc2UnLiIsIHZhbHVlLmNfc3RyKCkpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworVGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRo
T3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNvbHV0ZVBhdGgpCit7CisgICAgY29uc3QgYXV0
byYgZmlsZW5hbWUgPSBhYnNvbHV0ZVBhdGguZW1wdHkoKSA/IHBhdGhPclVSTCA6IGFic29sdXRl
UGF0aDsKKyAgICBpZiAoZmlsZW5hbWUuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3RkOjpzdHJpbmcgb3B0aW9uczsKKyAgICBzdGQ6Omlmc3RyZWFtIHRlc3RGaWxlKGZpbGVuYW1l
LmRhdGEoKSk7CisgICAgaWYgKCF0ZXN0RmlsZS5nb29kKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBnZXRsaW5lKHRlc3RGaWxlLCBvcHRpb25zKTsKKyAgICBzdGQ6OnN0cmluZyBiZWdpblN0cmlu
Zygid2Via2l0LXRlc3QtcnVubmVyIFsgIik7CisgICAgc3RkOjpzdHJpbmcgZW5kU3RyaW5nKCIg
XSIpOworICAgIHNpemVfdCBiZWdpbkxvY2F0aW9uID0gb3B0aW9ucy5maW5kKGJlZ2luU3RyaW5n
KTsKKyAgICBpZiAoYmVnaW5Mb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAg
cmV0dXJuOworICAgIHNpemVfdCBlbmRMb2NhdGlvbiA9IG9wdGlvbnMuZmluZChlbmRTdHJpbmcs
IGJlZ2luTG9jYXRpb24pOworICAgIGlmIChlbmRMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBv
cykgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBmaW5kIGVuZCBvZiB0ZXN0IGhlYWRl
ciBpbiAlcyIsIGZpbGVuYW1lLmNfc3RyKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHN0ZDo6c3RyaW5nIHBhaXJTdHJpbmcgPSBvcHRpb25zLnN1YnN0cihiZWdpbkxvY2F0aW9uICsg
YmVnaW5TdHJpbmcuc2l6ZSgpLCBlbmRMb2NhdGlvbiAtIChiZWdpbkxvY2F0aW9uICsgYmVnaW5T
dHJpbmcuc2l6ZSgpKSk7CisgICAgc2l6ZV90IHBhaXJTdGFydCA9IDA7CisgICAgd2hpbGUgKHBh
aXJTdGFydCA8IHBhaXJTdHJpbmcuc2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBwYWlyRW5kID0g
cGFpclN0cmluZy5maW5kKCIgIiwgcGFpclN0YXJ0KTsKKyAgICAgICAgaWYgKHBhaXJFbmQgPT0g
c3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAgICAgICBwYWlyRW5kID0gcGFpclN0cmluZy5zaXpl
KCk7CisgICAgICAgIHNpemVfdCBlcXVhbHNMb2NhdGlvbiA9IHBhaXJTdHJpbmcuZmluZCgiPSIs
IHBhaXJTdGFydCk7CisgICAgICAgIGlmIChlcXVhbHNMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6
bnBvcykgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3Qg
aGVhZGVyIChjb3VsZCBub3QgZmluZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIGZpbGVuYW1lLmNf
c3RyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYXV0byBrZXkg
PSBwYWlyU3RyaW5nLnN1YnN0cihwYWlyU3RhcnQsIGVxdWFsc0xvY2F0aW9uIC0gcGFpclN0YXJ0
KTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHBhaXJTdHJpbmcuc3Vic3RyKGVxdWFsc0xvY2F0aW9u
ICsgMSwgcGFpckVuZCAtIChlcXVhbHNMb2NhdGlvbiArIDEpKTsKKyAgICAgICAgaWYgKGtleSA9
PSAiZW5hYmxlQXR0YWNobWVudEVsZW1lbnQiKQorICAgICAgICAgICAgZW5hYmxlQXR0YWNobWVu
dEVsZW1lbnQgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBp
ZiAoa2V5ID09ICJ1c2VBY2NlbGVyYXRlZERyYXdpbmciKQorICAgICAgICAgICAgdXNlQWNjZWxl
cmF0ZWREcmF3aW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciIpCisgICAgICAg
ICAgICBlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJW
YWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTWVudUl0ZW1FbGVt
ZW50IikKKyAgICAgICAgICAgIGVuYWJsZU1lbnVJdGVtRWxlbWVudCA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTW9k
ZXJuTWVkaWFDb250cm9scyIpCisgICAgICAgICAgICBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xz
ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAo
a2V5ID09ICJlbmFibGVQb2ludGVyTG9jayIpCisgICAgICAgICAgICBlbmFibGVQb2ludGVyTG9j
ayA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYg
KGtleSA9PSAiZW5hYmxlV2ViQXV0aGVudGljYXRpb24iKQorICAgICAgICAgICAgZW5hYmxlV2Vi
QXV0aGVudGljYXRpb24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAg
ICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiKQor
ICAgICAgICAgICAgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IHBhcnNlQm9vbGVh
blRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAibGF5ZXJC
YWNrZWRXZWJWaWV3IikKKyAgICAgICAgICAgIGxheWVyQmFja2VkV2ViVmlldyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5h
YmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlIikKKyAgICAgICAgICAgIGVuYWJsZUlzU2VjdXJl
Q29udGV4dEF0dHJpYnV0ZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zIikKKyAgICAg
ICAgICAgIGVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJW
YWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIikKKyAgICAgICAgICAgIGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiYWxs
b3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiKQorICAgICAgICAg
ICAgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBwYXJz
ZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICBlbHNlIGlmIChrZXkgPT0g
ImVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9u
cyIpCisgICAgICAgICAgICBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNr
ZWRCeVdlYkFuaW1hdGlvbnMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwor
ICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKKyAgICB9Cit9CisKK2Jvb2wgVGVzdE9w
dGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYg
b3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG90aGVyLmxheWVyQmFja2VkV2ViVmlldyA9PSBs
YXllckJhY2tlZFdlYlZpZXc7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0T3B0aW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAppbmRleCBk
ZjkyZGVlZTJkYWVmNzg4ZDgzZjM0NWFjZGNjMTRhMDZmOWQ1YmY2Li43ZTNmMGE4MzVmNGMwN2Q0
MWE5YTA5YTgwYWZjMDUzODYzNTY2ZTMzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgK
QEAgLTI0LDkgKzI0LDggQEAKICAqLwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZS5oIgogCi1AY2xhc3MgTlNVUkw7CisjaW5jbHVkZSA8c3RyaW5nPgogCiBzdHJ1Y3Qg
VGVzdE9wdGlvbnMgewogICAgIGJvb2wgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgeyBmYWxzZSB9
OwpAQCAtNDQsNiArNDMsNiBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgZHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW5T
dWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKIAotICAgIFRlc3RPcHRp
b25zKE5TVVJMKiwgY29uc3QgVGVzdENvbW1hbmQmKTsKLSAgICBib29sIHdlYlZpZXdJc0NvbXBh
dGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OworICAgIFRlc3RPcHRp
b25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNv
bHV0ZVBhdGgpOworICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0
IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9u
cy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdhNDgwMjJmOTc1M2YwYTlhODBh
NWEwMTMwOWVmZjliZGRkYTk1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCi0KLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDxmc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLQotc3RhdGljIGJv
b2wgcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkK
LXsKLSAgICBpZiAodmFsdWUgPT0gInRydWUiKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAodmFsdWUgPT0gImZhbHNlIikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTlNMb2co
QCJGb3VuZCB1bmV4cGVjdGVkIHZhbHVlICclcycgZm9yIGJvb2xlYW4gb3B0aW9uLiBFeHBlY3Rl
ZCAndHJ1ZScgb3IgJ2ZhbHNlJy4iLCB2YWx1ZS5jX3N0cigpKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhOU1VSTCAqdGVzdFVSTCwgY29uc3QgVGVz
dENvbW1hbmQmIGNvbW1hbmQpCi17Ci0gICAgc3RkOjpzdHJpbmcgcGF0aCA9IGNvbW1hbmQuYWJz
b2x1dGVQYXRoOwotICAgIGlmIChwYXRoLmVtcHR5KCkpIHsKLSAgICAgICAgcGF0aCA9IFt0ZXN0
VVJMIGlzRmlsZVVSTF0gPyBbdGVzdFVSTCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dIDogY29t
bWFuZC5wYXRoT3JVUkw7Ci0gICAgICAgIGlmIChwYXRoLmVtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgb3B0aW9uczsKLSAgICBzdGQ6Omlmc3Ry
ZWFtIHRlc3RGaWxlKHBhdGguZGF0YSgpKTsKLSAgICBpZiAoIXRlc3RGaWxlLmdvb2QoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGdldGxpbmUodGVzdEZpbGUsIG9wdGlvbnMpOwotICAgIHN0ZDo6
c3RyaW5nIGJlZ2luU3RyaW5nKCJ3ZWJraXQtdGVzdC1ydW5uZXIgWyAiKTsKLSAgICBzdGQ6OnN0
cmluZyBlbmRTdHJpbmcoIiBdIik7Ci0gICAgc2l6ZV90IGJlZ2luTG9jYXRpb24gPSBvcHRpb25z
LmZpbmQoYmVnaW5TdHJpbmcpOwotICAgIGlmIChiZWdpbkxvY2F0aW9uID09IHN0ZDo6c3RyaW5n
OjpucG9zKQotICAgICAgICByZXR1cm47Ci0gICAgc2l6ZV90IGVuZExvY2F0aW9uID0gb3B0aW9u
cy5maW5kKGVuZFN0cmluZywgYmVnaW5Mb2NhdGlvbik7Ci0gICAgaWYgKGVuZExvY2F0aW9uID09
IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICAgIE5TTG9nKEAiQ291bGQgbm90IGZpbmQgZW5k
IG9mIHRlc3QgaGVhZGVyIGluICVzIiwgcGF0aC5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBzdGQ6OnN0cmluZyBwYWlyU3RyaW5nID0gb3B0aW9ucy5zdWJzdHIoYmVnaW5M
b2NhdGlvbiArIGJlZ2luU3RyaW5nLnNpemUoKSwgZW5kTG9jYXRpb24gLSAoYmVnaW5Mb2NhdGlv
biArIGJlZ2luU3RyaW5nLnNpemUoKSkpOwotICAgIHNpemVfdCBwYWlyU3RhcnQgPSAwOwotICAg
IHdoaWxlIChwYWlyU3RhcnQgPCBwYWlyU3RyaW5nLnNpemUoKSkgewotICAgICAgICBzaXplX3Qg
cGFpckVuZCA9IHBhaXJTdHJpbmcuZmluZCgiICIsIHBhaXJTdGFydCk7Ci0gICAgICAgIGlmIChw
YWlyRW5kID09IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgICAgICAgcGFpckVuZCA9IHBhaXJT
dHJpbmcuc2l6ZSgpOwotICAgICAgICBzaXplX3QgZXF1YWxzTG9jYXRpb24gPSBwYWlyU3RyaW5n
LmZpbmQoIj0iLCBwYWlyU3RhcnQpOwotICAgICAgICBpZiAoZXF1YWxzTG9jYXRpb24gPT0gc3Rk
OjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiTWFsZm9ybWVkIG9wdGlvbiBp
biB0ZXN0IGhlYWRlciAoY291bGQgbm90IGZpbmQgJz0nIGNoYXJhY3RlcikgaW4gJXMiLCBwYXRo
LmNfc3RyKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBr
ZXkgPSBwYWlyU3RyaW5nLnN1YnN0cihwYWlyU3RhcnQsIGVxdWFsc0xvY2F0aW9uIC0gcGFpclN0
YXJ0KTsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHBhaXJTdHJpbmcuc3Vic3RyKGVxdWFsc0xvY2F0
aW9uICsgMSwgcGFpckVuZCAtIChlcXVhbHNMb2NhdGlvbiArIDEpKTsKLSAgICAgICAgaWYgKGtl
eSA9PSAiZW5hYmxlQXR0YWNobWVudEVsZW1lbnQiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxl
QXR0YWNobWVudEVsZW1lbnQgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwot
ICAgICAgICBpZiAoa2V5ID09ICJ1c2VBY2NlbGVyYXRlZERyYXdpbmciKQotICAgICAgICAgICAg
dGhpcy0+dXNlQWNjZWxlcmF0ZWREcmF3aW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNl
cnZlciIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHBh
cnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9
PSAiZW5hYmxlTWVudUl0ZW1FbGVtZW50IikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZU1lbnVJ
dGVtRWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyIpCi0gICAgICAgICAg
ICB0aGlzLT5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQb2ludGVyTG9j
ayIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlV2Vi
QXV0aGVudGljYXRpb24iKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlV2ViQXV0aGVudGljYXRp
b24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBlbHNlIGlm
IChrZXkgPT0gImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiKQotICAgICAgICAgICAg
dGhpcy0+ZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IHBhcnNlQm9vbGVhblRlc3RI
ZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAibGF5ZXJCYWNrZWRX
ZWJWaWV3IikKLSAgICAgICAgICAgIHRoaXMtPmxheWVyQmFja2VkV2ViVmlldyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5h
YmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZUlz
U2VjdXJlQ29udGV4dEF0dHJpYnV0ZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zIikK
LSAgICAgICAgICAgIHRoaXMtPmVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyA9IHBhcnNlQm9vbGVh
blRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyIikKLSAgICAgICAgICAgIHRoaXMtPmR1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVyciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGtleSA9PSAiYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMiKQotICAgICAgICAgICAgdGhpcy0+YWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1Rv
QXNrRm9yQ3JlZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwot
ICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0
aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucyIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVDU1NB
bmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnMgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwotICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5k
ICsgMTsKLSAgICB9Ci19Ci0KLWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVX
aXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG90aGVyLmxheWVyQmFja2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXc7Ci19CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggODkzMmE2NDcxN2Zh
MmZmZTIzN2MxNGVkNjIwMmFkN2E5NTAwYTYxNy4uMjg1MzMxNTExYjM0OTNkMDMxZjdiN2U4MjIy
MmE0MmI4NTYyOWIxNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtMTkwNyw3ICsxOTA3LDggQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJp
bmcmIGlucHV0TGluZSkKICAgICBOU1N0cmluZyAqaW5mb3JtYXRpb25TdHJpbmcgPSBbQCJDUkFT
SElORyBURVNUOiAiIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOnRlc3RQYXRoXTsKICAgICBXZWJL
aXQ6OnNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChDRlN0cmlu
Z1JlZilpbmZvcm1hdGlvblN0cmluZyk7CiAKLSAgICBUZXN0T3B0aW9ucyBvcHRpb25zKHVybCwg
Y29tbWFuZCk7CisgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyB7IFt1cmwgaXNGaWxlVVJMXSA/IFt1
cmwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSA6IHBhdGhPclVSTCwgY29tbWFuZC5hYnNvbHV0
ZVBhdGggfTsKKwogICAgIGlmICghbWFpbkZyYW1lVGVzdE9wdGlvbnMgfHwgIW9wdGlvbnMud2Vi
Vmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKG1haW5GcmFtZVRlc3RPcHRpb25zLnZhbHVlKCkp
KSB7CiAgICAgICAgIGlmIChtYWluRnJhbWUpCiAgICAgICAgICAgICBkZXN0cm95V2ViVmlld0Fu
ZE9mZnNjcmVlbldpbmRvdyhbbWFpbkZyYW1lIHdlYlZpZXddKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDA2Y2Q5OTBiZWVhODlhODMxMzU0OWNj
ZjdkMTc3OGFkYmM5ZTRlZWUuLjkxNjhjNDI2ZTNhMTI0MGNhZGQ1OGExNTk3ZTBkOWE5OTQ1MjIz
ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKICNpbmNsdWRlICJQ
b2xpY3lEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCisjaW5j
bHVkZSAiVGVzdE9wdGlvbnMuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAi
VUlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgpAQCAtNzg3LDcg
Kzc4OCw2IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKElXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJBbmltYXRpb25z
RW5hYmxlZChUUlVFKTsKICAgICAvLyBGSVhNRTogV2ViR0wyCiAgICAgLy8gRklYTUU6IFdlYlJU
QwotICAgIHByZWZzUHJpdmF0ZS0+c2V0SXNTZWN1cmVDb250ZXh0QXR0cmlidXRlRW5hYmxlZChU
UlVFKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZh
bHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKQpAQCAtODgxLDE2ICs4ODEsMjMgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJl
ZmVyZW5jZXMqIHByZWZlcmVuY2VzKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0RmV0Y2hBUElFbmFi
bGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0U2hhZG93RE9NRW5hYmxlZChUUlVFKTsK
ICAgICBwcmVmc1ByaXZhdGUtPnNldEN1c3RvbUVsZW1lbnRzRW5hYmxlZChUUlVFKTsKLSAgICBw
cmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKEZBTFNFKTsKICAgICBw
cmVmc1ByaXZhdGUtPnNldFJlc291cmNlVGltaW5nRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1By
aXZhdGUtPnNldFVzZXJUaW1pbmdFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKFRSVUUpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0SW5z
cGVjdG9yQWRkaXRpb25zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPmNsZWFyTmV0
d29ya0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2Up
OwogfQogCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKElXZWJQ
cmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlNj4gcHJlZnNQcml2YXRlIHsgUXVlcnks
IHByZWZlcmVuY2VzIH07CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJv
bHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7CisgICAgcHJlZnNQ
cml2YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVkKG9wdGlvbnMuZW5hYmxl
SXNTZWN1cmVDb250ZXh0QXR0cmlidXRlKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3Rv
ckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMpOworfQor
CiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQogewogICAgIERXT1JEIHByb2Nlc3NJZCA9
IDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpOwpAQCAtOTM3LDcgKzk0NCw3IEBAIHN0YXRpYyB2b2lk
IHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAjZW5kaWYKIH0KIAot
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkK
K3N0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZp
ZXc7CiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKSAKQEAgLTk4Myw4
ICs5OTAsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZv
cmVUZXN0aW5nKCkKICAgICB9CiAKICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJl
bmNlczsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNl
cykpKQorICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2Vz
KSkpIHsKICAgICAgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVm
ZXJlbmNlcy5nZXQoKSk7CisgICAgICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMo
cHJlZmVyZW5jZXMuZ2V0KCksIG9wdGlvbnMpOworICAgIH0KIAogICAgIFRlc3RSdW5uZXI6OnNl
dFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CiAKQEAgLTExNTUsNyArMTE2NCw5IEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAKICAgICBDRlJlbGVhc2Uo
dXJsKTsKIAotICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygp
OworICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgeyBjb21tYW5kLnBhdGhPclVSTCwgY29tbWFuZC5h
YnNvbHV0ZVBhdGggfTsKKworICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZyhvcHRpb25zKTsKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpjcmVh
dGUodGVzdFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIDo6Z1Rl
c3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0KTsKQEAgLTEyNjEsNyAr
MTI3Miw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9y
ZVRlc3RpbmcoKTsKKyAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rp
bmcob3B0aW9ucyk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qgc3luY2hyb25v
dXNseSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hpY2ggaXMgbmVj
ZXNzYXJ5CiAgICAgLy8gdG8gc3RvcCB0aW1lcnMsIFdlYlNvY2tldHMgYW5kIG90aGVyIGFjdGl2
aXR5IHRoYXQgY291bGQgb3RoZXJ3aXNlIHNwaWxsIG91dHB1dCBpbnRvIG5leHQgdGVzdCdzIHJl
c3VsdHMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335625</attachid>
            <date>2018-03-12 12:35:41 -0700</date>
            <delta_ts>2018-03-12 13:54:01 -0700</delta_ts>
            <desc>Patch (manual)</desc>
            <filename>183487.diff</filename>
            <type>text/plain</type>
            <size>19768</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTE3
YTEwNWNlMS4uNTc4N2YxMzQzYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wMy0xMiAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0RSVF0gVGVzdE9wdGlvbnMg
c2hvdWxkIG5vdCBiZSBPYmpDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgzNDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICBNb3Zl
IFRlc3RPcHRpb25zIHRvIHBsYXRmb3JtLWFnbm9zdGljIHNvdXJjZXMuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRp
b25zLm1tLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToK
KyAgICAgICAgUmVtb3ZlIE5TVVJMIGRlcGVuZGVuY3kgYW5kIGFsaWduIHdpdGggV1RSIGFzIG11
Y2ggYXMgcG9zc2libGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICBDb25zdW1lIFRlc3RPcHRpb25zIChyZWNvZ25pemluZyBqdXN0
IHRoZSBvbmVzIHRoYXQgaGF2ZSBXZWJQcmVmZXJlbmNlcyBkZWZpbmVkIGZvciBub3cpLgorCiAy
MDE4LTAzLTEyICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAg
ICAgICBbd2Via2l0cHldIFJlbW92ZSBvcGVuc3NsIGNvbW1hbmQgZGVwZW5kZW5jeS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTM0YmEwYTQ0ZDEuLmJiNDZmMjRiNzQyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dApAQCAtMTMsNiArMTMsNyBAQCBzZXQoRHVt
cFJlbmRlclRyZWVfU09VUkNFUwogICAgIEdDQ29udHJvbGxlci5jcHAKICAgICBKYXZhU2NyaXB0
VGhyZWFkaW5nLmNwcAogICAgIFBpeGVsRHVtcFN1cHBvcnQuY3BwCisgICAgVGVzdE9wdGlvbnMu
Y3BwCiAgICAgVGVzdFJ1bm5lci5jcHAKICAgICBXb3JrUXVldWUuY3BwCiAgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YWU3YTNiNTI1YS4uZGM5YjlmYjhiODcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxLDcgKzEwMSw2IEBACiAJCTVEQjlBQzlFMEY3
MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQg
RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NC
NjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5
RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBG
b250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERB
QzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURC
OUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENv
cHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3
OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi87IH07Ci0J
CTdDQkJDMzIzMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkJDMzIxMURERkNGOUEwMDc4NkI5
RCAvKiBUZXN0T3B0aW9ucy5tbSAqLzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8q
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OwogCQk4NDY1RTJDNzBGRkE4
REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTk4MzBGMzFGMTVDODExODEwMDVBQjIwNiAvKiBE
dW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5ODMwRjMxRTE1QzgxMTgxMDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVD
b21tb24uY3BwICovOyB9OwpAQCAtMTA5LDYgKzEwOCw3IEBACiAJCUExMTU4RDU5MTg5Mjc0MzYw
MDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNThENTcxODkyNzNFQjAwODhDMTdCIC8qIFBpeGVs
RHVtcFN1cHBvcnRJT1MubW0gKi87IH07CiAJCUExMzRFNTMxMTg4RkMyNzAwMDkwMUQwNiAvKiBE
dW1wUmVuZGVyVHJlZU1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTM0RTUyRjE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWlu
Lm1tICovOyB9OwogCQlBMTM0RTUzNjE4OTA1RUZGMDA5MDFEMDYgLyogQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICov
OyB9OworCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwQTIxRjcyMDUxRDg5
NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLzsgfTsKIAkJQThCOTFBREEwQ0YzQjMyRjAw
OEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gKi87IH07CiAJCUE4QjkxQURDMENGM0IzMkYwMDhG
OTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ5MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVu
ZGVyVHJlZVdpbmRvdy5tbSAqLzsgfTsKIAkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1
bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJl
bmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAqLzsgfTsKQEAgLTMxNSw3ICszMTUsNiBAQAog
CQk1M0NCQjgzMDEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMxMTM0RTQyRjMwMDFD
RTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVERThBRTQzMTNBMkMxNTgwMEQ2QTM3RCAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
Yjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJN0NCQkMzMjExRERGQ0Y5
QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdE9wdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MDA0NUFFQjE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MDA0NUFFQzE0
NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNiw2ICszMzUsNyBAQAog
CQlBMTZDRDIwRDE4OTA3QTdEMDA5MjM2M0UgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IG5hbWUgPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBwYXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0Jh
c2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOTMxN0ZD
MTg5Mjg1NUYwMDFDNTJCMSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSBJbmZvLnBsaXN0
OyBwYXRoID0gaW9zL0luZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
OTMxN0ZEMTg5Mjg3MzgwMDFDNTJCMSAvKiBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1
cmF0aW9ucy9EdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTMwQTIxRjcyMDUxRDg5NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwM0ZGNzQwOUNBQUQwODAwOUIyQTM3IC8qIER1bXBS
ZW5kZXJUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEdW1wUmVuZGVy
VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE3MDkwMzA4QjE2NEQzMDBD
Q0I5RkIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUE4NEY2MDg5MDhCMTM2REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTQ3
Miw3ICs0NzIsNyBAQAogCQkJCUE4MDNGRjc0MDlDQUFEMDgwMDlCMkEzNyAvKiBEdW1wUmVuZGVy
VHJlZS5oICovLAogCQkJCUJDQTE4QzQ2MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZS5tbSAqLywKIAkJCQlBMTM0RTUyRjE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVN
YWluLm1tICovLAotCQkJCTdDQkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5t
bSAqLywKKwkJCQlBMzBBMjFGNzIwNTFEODk2MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwICov
LAogCQkJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovLAogCQkJ
CUJDNDc0MTI5MEQwMzhBNEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggKi8sCiAJ
CQkJQkNBMThDMEEwQzlCNTlFRjAwMTE0MzY5IC8qIER1bXBSZW5kZXJUcmVlTWFjLmggKi8sCkBA
IC0xMTA1LDcgKzExMDUsNyBAQAogCQkJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMzRSAvKiBQaXhl
bER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjYwQzlCMDhDMjAw
MTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjgw
QzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0NCQkMzMjMxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0
UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4Mjkw
IC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxZDAxYTQ4MzI2NS4uNWQ2YTM5OTQ0ZjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxp
c3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0NwcF9TT1VSQ0VTCiApCiAKIGxpc3QoQVBQRU5EIER1
bXBSZW5kZXJUcmVlX09iakNwcF9TT1VSQ0VTCi0gICAgVGVzdE9wdGlvbnMubW0KLQogICAgIG1h
Yy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcApzaW1pbGFyaXR5IGluZGV4IDY3JQpyZW5hbWUg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbQpyZW5hbWUgdG8gVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IGM3YTQ4MDIyZjk3Li45MzdmYmVj
YjQyMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBAIC0yNiw5ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKIAotI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVk
ZSA8c3RyaW5nPgogCiBzdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUoY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogewpAQCAtMzcsMjEgKzM1LDE4IEBAIHN0YXRpYyBib29s
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKHZhbHVlID09ICJmYWxzZSIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5T
TG9nKEAiRm91bmQgdW5leHBlY3RlZCB2YWx1ZSAnJXMnIGZvciBib29sZWFuIG9wdGlvbi4gRXhw
ZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScuIiwgdmFsdWUuY19zdHIoKSk7CisgICAgTE9HX0VSUk9S
KCJGb3VuZCB1bmV4cGVjdGVkIHZhbHVlICclcycgZm9yIGJvb2xlYW4gb3B0aW9uLiBFeHBlY3Rl
ZCAndHJ1ZScgb3IgJ2ZhbHNlJy4iLCB2YWx1ZS5jX3N0cigpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhOU1VSTCAqdGVzdFVSTCwgY29uc3QgVGVz
dENvbW1hbmQmIGNvbW1hbmQpCitUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCkKIHsKLSAg
ICBzdGQ6OnN0cmluZyBwYXRoID0gY29tbWFuZC5hYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKHBhdGgu
ZW1wdHkoKSkgewotICAgICAgICBwYXRoID0gW3Rlc3RVUkwgaXNGaWxlVVJMXSA/IFt0ZXN0VVJM
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBjb21tYW5kLnBhdGhPclVSTDsKLSAgICAgICAg
aWYgKHBhdGguZW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY29uc3Qg
YXV0byYgZmlsZW5hbWUgPSBhYnNvbHV0ZVBhdGguZW1wdHkoKSA/IHBhdGhPclVSTCA6IGFic29s
dXRlUGF0aDsKKyAgICBpZiAoZmlsZW5hbWUuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgc3RkOjpzdHJpbmcgb3B0aW9uczsKLSAgICBzdGQ6Omlmc3RyZWFtIHRlc3RGaWxlKHBhdGgu
ZGF0YSgpKTsKKyAgICBzdGQ6Omlmc3RyZWFtIHRlc3RGaWxlKGZpbGVuYW1lLmRhdGEoKSk7CiAg
ICAgaWYgKCF0ZXN0RmlsZS5nb29kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBnZXRsaW5lKHRl
c3RGaWxlLCBvcHRpb25zKTsKQEAgLTYyLDcgKzU3LDcgQEAgVGVzdE9wdGlvbnM6OlRlc3RPcHRp
b25zKE5TVVJMICp0ZXN0VVJMLCBjb25zdCBUZXN0Q29tbWFuZCYgY29tbWFuZCkKICAgICAgICAg
cmV0dXJuOwogICAgIHNpemVfdCBlbmRMb2NhdGlvbiA9IG9wdGlvbnMuZmluZChlbmRTdHJpbmcs
IGJlZ2luTG9jYXRpb24pOwogICAgIGlmIChlbmRMb2NhdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBv
cykgewotICAgICAgICBOU0xvZyhAIkNvdWxkIG5vdCBmaW5kIGVuZCBvZiB0ZXN0IGhlYWRlciBp
biAlcyIsIHBhdGguY19zdHIoKSk7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGZpbmQg
ZW5kIG9mIHRlc3QgaGVhZGVyIGluICVzIiwgZmlsZW5hbWUuY19zdHIoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgc3RkOjpzdHJpbmcgcGFpclN0cmluZyA9IG9wdGlvbnMuc3Vic3Ry
KGJlZ2luTG9jYXRpb24gKyBiZWdpblN0cmluZy5zaXplKCksIGVuZExvY2F0aW9uIC0gKGJlZ2lu
TG9jYXRpb24gKyBiZWdpblN0cmluZy5zaXplKCkpKTsKQEAgLTczLDM5ICs2OCwzOSBAQCBUZXN0
T3B0aW9uczo6VGVzdE9wdGlvbnMoTlNVUkwgKnRlc3RVUkwsIGNvbnN0IFRlc3RDb21tYW5kJiBj
b21tYW5kKQogICAgICAgICAgICAgcGFpckVuZCA9IHBhaXJTdHJpbmcuc2l6ZSgpOwogICAgICAg
ICBzaXplX3QgZXF1YWxzTG9jYXRpb24gPSBwYWlyU3RyaW5nLmZpbmQoIj0iLCBwYWlyU3RhcnQp
OwogICAgICAgICBpZiAoZXF1YWxzTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAg
ICAgICAgICAgIE5TTG9nKEAiTWFsZm9ybWVkIG9wdGlvbiBpbiB0ZXN0IGhlYWRlciAoY291bGQg
bm90IGZpbmQgJz0nIGNoYXJhY3RlcikgaW4gJXMiLCBwYXRoLmNfc3RyKCkpOworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJNYWxmb3JtZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3Qg
ZmluZCAnPScgY2hhcmFjdGVyKSBpbiAlcyIsIGZpbGVuYW1lLmNfc3RyKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBrZXkgPSBwYWlyU3RyaW5nLnN1YnN0
cihwYWlyU3RhcnQsIGVxdWFsc0xvY2F0aW9uIC0gcGFpclN0YXJ0KTsKICAgICAgICAgYXV0byB2
YWx1ZSA9IHBhaXJTdHJpbmcuc3Vic3RyKGVxdWFsc0xvY2F0aW9uICsgMSwgcGFpckVuZCAtIChl
cXVhbHNMb2NhdGlvbiArIDEpKTsKICAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlQXR0YWNobWVu
dEVsZW1lbnQiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgPSBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5hYmxlQXR0
YWNobWVudEVsZW1lbnQgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAg
ICAgICBpZiAoa2V5ID09ICJ1c2VBY2NlbGVyYXRlZERyYXdpbmciKQotICAgICAgICAgICAgdGhp
cy0+dXNlQWNjZWxlcmF0ZWREcmF3aW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKKyAgICAgICAgICAgIHVzZUFjY2VsZXJhdGVkRHJhd2luZyA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAg
ICAgZW5hYmxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFs
dWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZU1lbnVJdGVtRWxlbWVu
dCIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVNZW51SXRlbUVsZW1lbnQgPSBwYXJzZUJvb2xl
YW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5hYmxlTWVudUl0ZW1FbGVt
ZW50ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBp
ZiAoa2V5ID09ICJlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIikKLSAgICAgICAgICAgIHRoaXMt
PmVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUo
dmFsdWUpOworICAgICAgICAgICAgZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5h
YmxlUG9pbnRlckxvY2siKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlUG9pbnRlckxvY2sgPSBw
YXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5hYmxlUG9p
bnRlckxvY2sgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBl
bHNlIGlmIChrZXkgPT0gImVuYWJsZVdlYkF1dGhlbnRpY2F0aW9uIikKLSAgICAgICAgICAgIHRo
aXMtPmVuYWJsZVdlYkF1dGhlbnRpY2F0aW9uID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKKyAgICAgICAgICAgIGVuYWJsZVdlYkF1dGhlbnRpY2F0aW9uID0gcGFyc2VCb29s
ZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZURy
YWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOworICAgICAgICAgICAgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAi
bGF5ZXJCYWNrZWRXZWJWaWV3IikKLSAgICAgICAgICAgIHRoaXMtPmxheWVyQmFja2VkV2ViVmll
dyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBsYXll
ckJhY2tlZFdlYlZpZXcgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAg
ICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZUlzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZSIpCi0g
ICAgICAgICAgICB0aGlzLT5lbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5hYmxlSXNTZWN1cmVD
b250ZXh0QXR0cmlidXRlID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMiKQotICAgICAg
ICAgICAgdGhpcy0+ZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhl
YWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtl
eSA9PSAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIikKLSAgICAgICAgICAgIHRoaXMtPmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7
CisgICAgICAgICAgICBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgPSBwYXJzZUJvb2xlYW5UZXN0
SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImFsbG93Q3Jvc3NP
cmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIikKLSAgICAgICAgICAgIHRoaXMt
PmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzID0gcGFyc2VC
b29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGFsbG93Q3Jvc3NPcmln
aW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVDU1NBbmltYXRp
b25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnMiKQotICAgICAgICAgICAg
dGhpcy0+ZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmlt
YXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAg
IGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9u
cyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHBhaXJTdGFy
dCA9IHBhaXJFbmQgKyAxOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCmlu
ZGV4IGRmOTJkZWVlMmRhLi43ZTNmMGE4MzVmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9u
cy5oCkBAIC0yNCw5ICsyNCw4IEBACiAgKi8KIAogI3ByYWdtYSBvbmNlCi0jaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWUuaCIKIAotQGNsYXNzIE5TVVJMOworI2luY2x1ZGUgPHN0cmluZz4KIAogc3Ry
dWN0IFRlc3RPcHRpb25zIHsKICAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50IHsgZmFs
c2UgfTsKQEAgLTQ0LDYgKzQzLDYgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICBib29sIGR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07CiAKLSAgICBUZXN0
T3B0aW9ucyhOU1VSTCosIGNvbnN0IFRlc3RDb21tYW5kJik7Ci0gICAgYm9vbCB3ZWJWaWV3SXND
b21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKKyAgICBUZXN0
T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYg
YWJzb2x1dGVQYXRoKTsKKyAgICBib29sIHdlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhj
b25zdCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA4OTMyYTY0NzE3Zi4uMjg1MzMxNTExYjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5MDcsNyAr
MTkwNyw4IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAg
ICAgTlNTdHJpbmcgKmluZm9ybWF0aW9uU3RyaW5nID0gW0AiQ1JBU0hJTkcgVEVTVDogIiBzdHJp
bmdCeUFwcGVuZGluZ1N0cmluZzp0ZXN0UGF0aF07CiAgICAgV2ViS2l0OjpzZXRDcmFzaFJlcG9y
dEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoQ0ZTdHJpbmdSZWYpaW5mb3JtYXRpb25T
dHJpbmcpOwogCi0gICAgVGVzdE9wdGlvbnMgb3B0aW9ucyh1cmwsIGNvbW1hbmQpOworICAgIFRl
c3RPcHRpb25zIG9wdGlvbnMgeyBbdXJsIGlzRmlsZVVSTF0gPyBbdXJsIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbl0gOiBwYXRoT3JVUkwsIGNvbW1hbmQuYWJzb2x1dGVQYXRoIH07CisKICAgICBp
ZiAoIW1haW5GcmFtZVRlc3RPcHRpb25zIHx8ICFvcHRpb25zLndlYlZpZXdJc0NvbXBhdGlibGVX
aXRoT3B0aW9ucyhtYWluRnJhbWVUZXN0T3B0aW9ucy52YWx1ZSgpKSkgewogICAgICAgICBpZiAo
bWFpbkZyYW1lKQogICAgICAgICAgICAgZGVzdHJveVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3co
W21haW5GcmFtZSB3ZWJWaWV3XSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcAppbmRleCAwNmNkOTkwYmVlYS4uOTE2OGM0MjZlM2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKICNpbmNsdWRlICJQb2xpY3lEZWxlZ2F0ZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMu
aCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAiVUlEZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgpAQCAtNzg3LDcgKzc4OCw2IEBAIHN0YXRpYyB2
b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5j
ZXMpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJBbmltYXRpb25zRW5hYmxlZChUUlVFKTsKICAg
ICAvLyBGSVhNRTogV2ViR0wyCiAgICAgLy8gRklYTUU6IFdlYlJUQwotICAgIHByZWZzUHJpdmF0
ZS0+c2V0SXNTZWN1cmVDb250ZXh0QXR0cmlidXRlRW5hYmxlZChUUlVFKTsKIH0KIAogc3RhdGlj
IHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5j
ZXMqIHByZWZlcmVuY2VzKQpAQCAtODgxLDE2ICs4ODEsMjMgQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0RmV0Y2hBUElFbmFibGVkKFRSVUUpOwogICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0U2hhZG93RE9NRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUt
PnNldEN1c3RvbUVsZW1lbnRzRW5hYmxlZChUUlVFKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1v
ZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKEZBTFNFKTsKICAgICBwcmVmc1ByaXZhdGUtPnNldFJl
c291cmNlVGltaW5nRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPnNldFVzZXJUaW1p
bmdFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0RGF0YVRyYW5zZmVySXRlbXNF
bmFibGVkKFRSVUUpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0SW5zcGVjdG9yQWRkaXRpb25zRW5h
YmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPmNsZWFyTmV0d29ya0xvYWRlclNlc3Npb24o
KTsKIAogICAgIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOwogfQogCitzdGF0aWMgdm9p
ZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKElXZWJQcmVmZXJlbmNlcyogcHJlZmVy
ZW5jZXMsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIENPTVB0cjxJV2ViUHJl
ZmVyZW5jZXNQcml2YXRlNj4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CisK
KyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKG9wdGlvbnMu
ZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRJc1NlY3Vy
ZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVkKG9wdGlvbnMuZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0
cmlidXRlKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQo
b3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMpOworfQorCiBzdGF0aWMgU3RyaW5nIGFw
cGxpY2F0aW9uSWQoKQogewogICAgIERXT1JEIHByb2Nlc3NJZCA9IDo6R2V0Q3VycmVudFByb2Nl
c3NJZCgpOwpAQCAtOTM3LDcgKzk0NCw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25z
aXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgcmVzZXRX
ZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKK3N0YXRpYyB2b2lkIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhjb25zdCBUZXN0T3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CiAgICAgaWYgKEZBSUxF
RChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKSAKQEAgLTk4Myw4ICs5OTAsMTAgQEAgc3RhdGlj
IHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKICAgICB9
CiAKICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKLSAgICBpZiAoU1VD
Q0VFREVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQorICAgIGlmIChTVUND
RUVERUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpIHsKICAgICAgICAgcmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcy5nZXQoKSk7Cisg
ICAgICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMocHJlZmVyZW5jZXMuZ2V0KCks
IG9wdGlvbnMpOworICAgIH0KIAogICAgIFRlc3RSdW5uZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2Fk
cyhmYWxzZSk7CiAKQEAgLTExNTUsNyArMTE2NCw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29u
c3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAKICAgICBDRlJlbGVhc2UodXJsKTsKIAotICAgIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOworICAgIFRlc3RPcHRpb25z
IG9wdGlvbnMgeyBjb21tYW5kLnBhdGhPclVSTCwgY29tbWFuZC5hYnNvbHV0ZVBhdGggfTsKKwor
ICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhvcHRpb25zKTsK
IAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUodGVzdFVSTC5kYXRhKCks
IGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIDo6Z1Rlc3RSdW5uZXItPnNldEN1c3Rv
bVRpbWVvdXQoY29tbWFuZC50aW1lb3V0KTsKQEAgLTEyNjEsNyArMTI3Miw3IEBAIHN0YXRpYyB2
b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKKyAgICBy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmcob3B0aW9ucyk7CiAKICAg
ICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qgc3luY2hyb25vdXNseSByZXBsYWNlcyB0aGUg
ZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hpY2ggaXMgbmVjZXNzYXJ5CiAgICAgLy8gdG8g
c3RvcCB0aW1lcnMsIFdlYlNvY2tldHMgYW5kIG90aGVyIGFjdGl2aXR5IHRoYXQgY291bGQgb3Ro
ZXJ3aXNlIHNwaWxsIG91dHB1dCBpbnRvIG5leHQgdGVzdCdzIHJlc3VsdHMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335635</attachid>
            <date>2018-03-12 13:54:01 -0700</date>
            <delta_ts>2018-03-12 14:01:54 -0700</delta_ts>
            <desc>Patch (manual)</desc>
            <filename>183487.diff</filename>
            <type>text/plain</type>
            <size>19629</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTE3
YTEwNWNlMS4uNTc4N2YxMzQzYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wMy0xMiAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0RSVF0gVGVzdE9wdGlvbnMg
c2hvdWxkIG5vdCBiZSBPYmpDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgzNDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICBNb3Zl
IFRlc3RPcHRpb25zIHRvIHBsYXRmb3JtLWFnbm9zdGljIHNvdXJjZXMuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRp
b25zLm1tLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToK
KyAgICAgICAgUmVtb3ZlIE5TVVJMIGRlcGVuZGVuY3kgYW5kIGFsaWduIHdpdGggV1RSIGFzIG11
Y2ggYXMgcG9zc2libGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICBDb25zdW1lIFRlc3RPcHRpb25zIChyZWNvZ25pemluZyBqdXN0
IHRoZSBvbmVzIHRoYXQgaGF2ZSBXZWJQcmVmZXJlbmNlcyBkZWZpbmVkIGZvciBub3cpLgorCiAy
MDE4LTAzLTEyICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAg
ICAgICBbd2Via2l0cHldIFJlbW92ZSBvcGVuc3NsIGNvbW1hbmQgZGVwZW5kZW5jeS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTM0YmEwYTQ0ZDEuLmJiNDZmMjRiNzQyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dApAQCAtMTMsNiArMTMsNyBAQCBzZXQoRHVt
cFJlbmRlclRyZWVfU09VUkNFUwogICAgIEdDQ29udHJvbGxlci5jcHAKICAgICBKYXZhU2NyaXB0
VGhyZWFkaW5nLmNwcAogICAgIFBpeGVsRHVtcFN1cHBvcnQuY3BwCisgICAgVGVzdE9wdGlvbnMu
Y3BwCiAgICAgVGVzdFJ1bm5lci5jcHAKICAgICBXb3JrUXVldWUuY3BwCiAgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YWU3YTNiNTI1YS4uZGM5YjlmYjhiODcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxLDcgKzEwMSw2IEBACiAJCTVEQjlBQzlFMEY3
MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQg
RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NC
NjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5
RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBG
b250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERB
QzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURC
OUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENv
cHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3
OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi87IH07Ci0J
CTdDQkJDMzIzMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkJDMzIxMURERkNGOUEwMDc4NkI5
RCAvKiBUZXN0T3B0aW9ucy5tbSAqLzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8q
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OwogCQk4NDY1RTJDNzBGRkE4
REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTk4MzBGMzFGMTVDODExODEwMDVBQjIwNiAvKiBE
dW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5ODMwRjMxRTE1QzgxMTgxMDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVD
b21tb24uY3BwICovOyB9OwpAQCAtMTA5LDYgKzEwOCw3IEBACiAJCUExMTU4RDU5MTg5Mjc0MzYw
MDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNThENTcxODkyNzNFQjAwODhDMTdCIC8qIFBpeGVs
RHVtcFN1cHBvcnRJT1MubW0gKi87IH07CiAJCUExMzRFNTMxMTg4RkMyNzAwMDkwMUQwNiAvKiBE
dW1wUmVuZGVyVHJlZU1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTM0RTUyRjE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWlu
Lm1tICovOyB9OwogCQlBMTM0RTUzNjE4OTA1RUZGMDA5MDFEMDYgLyogQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICov
OyB9OworCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwQTIxRjcyMDUxRDg5
NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLzsgfTsKIAkJQThCOTFBREEwQ0YzQjMyRjAw
OEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gKi87IH07CiAJCUE4QjkxQURDMENGM0IzMkYwMDhG
OTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ5MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVu
ZGVyVHJlZVdpbmRvdy5tbSAqLzsgfTsKIAkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1
bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJl
bmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAqLzsgfTsKQEAgLTMxNSw3ICszMTUsNiBAQAog
CQk1M0NCQjgzMDEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMxMTM0RTQyRjMwMDFD
RTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVERThBRTQzMTNBMkMxNTgwMEQ2QTM3RCAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
Yjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJN0NCQkMzMjExRERGQ0Y5
QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdE9wdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MDA0NUFFQjE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MDA0NUFFQzE0
NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNiw2ICszMzUsNyBAQAog
CQlBMTZDRDIwRDE4OTA3QTdEMDA5MjM2M0UgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IG5hbWUgPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBwYXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0Jh
c2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOTMxN0ZD
MTg5Mjg1NUYwMDFDNTJCMSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSBJbmZvLnBsaXN0
OyBwYXRoID0gaW9zL0luZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
OTMxN0ZEMTg5Mjg3MzgwMDFDNTJCMSAvKiBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1
cmF0aW9ucy9EdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTMwQTIxRjcyMDUxRDg5NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwM0ZGNzQwOUNBQUQwODAwOUIyQTM3IC8qIER1bXBS
ZW5kZXJUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEdW1wUmVuZGVy
VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE3MDkwMzA4QjE2NEQzMDBD
Q0I5RkIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUE4NEY2MDg5MDhCMTM2REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTQ3
Miw3ICs0NzIsNyBAQAogCQkJCUE4MDNGRjc0MDlDQUFEMDgwMDlCMkEzNyAvKiBEdW1wUmVuZGVy
VHJlZS5oICovLAogCQkJCUJDQTE4QzQ2MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZS5tbSAqLywKIAkJCQlBMTM0RTUyRjE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVN
YWluLm1tICovLAotCQkJCTdDQkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5t
bSAqLywKKwkJCQlBMzBBMjFGNzIwNTFEODk2MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwICov
LAogCQkJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovLAogCQkJ
CUJDNDc0MTI5MEQwMzhBNEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggKi8sCiAJ
CQkJQkNBMThDMEEwQzlCNTlFRjAwMTE0MzY5IC8qIER1bXBSZW5kZXJUcmVlTWFjLmggKi8sCkBA
IC0xMTA1LDcgKzExMDUsNyBAQAogCQkJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMzRSAvKiBQaXhl
bER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjYwQzlCMDhDMjAw
MTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjgw
QzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0NCQkMzMjMxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0
UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4Mjkw
IC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxZDAxYTQ4MzI2NS4uNWQ2YTM5OTQ0ZjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxp
c3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0NwcF9TT1VSQ0VTCiApCiAKIGxpc3QoQVBQRU5EIER1
bXBSZW5kZXJUcmVlX09iakNwcF9TT1VSQ0VTCi0gICAgVGVzdE9wdGlvbnMubW0KLQogICAgIG1h
Yy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbQpyZW5hbWUgdG8gVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IGM3YTQ4MDIyZjk3Li5lYmZkN2E0
ZDI3NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBAIC0yNiw5ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKIAotI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVk
ZSA8c3RyaW5nPgogCiBzdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUoY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogewpAQCAtMzcsMTggKzM1LDE1IEBAIHN0YXRpYyBib29s
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKHZhbHVlID09ICJmYWxzZSIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5T
TG9nKEAiRm91bmQgdW5leHBlY3RlZCB2YWx1ZSAnJXMnIGZvciBib29sZWFuIG9wdGlvbi4gRXhw
ZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScuIiwgdmFsdWUuY19zdHIoKSk7CisgICAgTE9HX0VSUk9S
KCJGb3VuZCB1bmV4cGVjdGVkIHZhbHVlICclcycgZm9yIGJvb2xlYW4gb3B0aW9uLiBFeHBlY3Rl
ZCAndHJ1ZScgb3IgJ2ZhbHNlJy4iLCB2YWx1ZS5jX3N0cigpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhOU1VSTCAqdGVzdFVSTCwgY29uc3QgVGVz
dENvbW1hbmQmIGNvbW1hbmQpCitUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCkKIHsKLSAg
ICBzdGQ6OnN0cmluZyBwYXRoID0gY29tbWFuZC5hYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKHBhdGgu
ZW1wdHkoKSkgewotICAgICAgICBwYXRoID0gW3Rlc3RVUkwgaXNGaWxlVVJMXSA/IFt0ZXN0VVJM
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBjb21tYW5kLnBhdGhPclVSTDsKLSAgICAgICAg
aWYgKHBhdGguZW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY29uc3Qg
YXV0byYgcGF0aCA9IGFic29sdXRlUGF0aC5lbXB0eSgpID8gcGF0aE9yVVJMIDogYWJzb2x1dGVQ
YXRoOworICAgIGlmIChwYXRoLmVtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAogICAgIHN0ZDo6
c3RyaW5nIG9wdGlvbnM7CiAgICAgc3RkOjppZnN0cmVhbSB0ZXN0RmlsZShwYXRoLmRhdGEoKSk7
CkBAIC02Miw3ICs1Nyw3IEBAIFRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhOU1VSTCAqdGVzdFVS
TCwgY29uc3QgVGVzdENvbW1hbmQmIGNvbW1hbmQpCiAgICAgICAgIHJldHVybjsKICAgICBzaXpl
X3QgZW5kTG9jYXRpb24gPSBvcHRpb25zLmZpbmQoZW5kU3RyaW5nLCBiZWdpbkxvY2F0aW9uKTsK
ICAgICBpZiAoZW5kTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgTlNM
b2coQCJDb3VsZCBub3QgZmluZCBlbmQgb2YgdGVzdCBoZWFkZXIgaW4gJXMiLCBwYXRoLmNfc3Ry
KCkpOworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBmaW5kIGVuZCBvZiB0ZXN0IGhlYWRl
ciBpbiAlcyIsIHBhdGguY19zdHIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc3Rk
OjpzdHJpbmcgcGFpclN0cmluZyA9IG9wdGlvbnMuc3Vic3RyKGJlZ2luTG9jYXRpb24gKyBiZWdp
blN0cmluZy5zaXplKCksIGVuZExvY2F0aW9uIC0gKGJlZ2luTG9jYXRpb24gKyBiZWdpblN0cmlu
Zy5zaXplKCkpKTsKQEAgLTczLDM5ICs2OCwzOSBAQCBUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMo
TlNVUkwgKnRlc3RVUkwsIGNvbnN0IFRlc3RDb21tYW5kJiBjb21tYW5kKQogICAgICAgICAgICAg
cGFpckVuZCA9IHBhaXJTdHJpbmcuc2l6ZSgpOwogICAgICAgICBzaXplX3QgZXF1YWxzTG9jYXRp
b24gPSBwYWlyU3RyaW5nLmZpbmQoIj0iLCBwYWlyU3RhcnQpOwogICAgICAgICBpZiAoZXF1YWxz
TG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiTWFs
Zm9ybWVkIG9wdGlvbiBpbiB0ZXN0IGhlYWRlciAoY291bGQgbm90IGZpbmQgJz0nIGNoYXJhY3Rl
cikgaW4gJXMiLCBwYXRoLmNfc3RyKCkpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJNYWxmb3Jt
ZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3QgZmluZCAnPScgY2hhcmFjdGVyKSBp
biAlcyIsIHBhdGguY19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3RyKHBhaXJTdGFydCwgZXF1YWxzTG9jYXRp
b24gLSBwYWlyU3RhcnQpOwogICAgICAgICBhdXRvIHZhbHVlID0gcGFpclN0cmluZy5zdWJzdHIo
ZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVxdWFsc0xvY2F0aW9uICsgMSkpOwogICAg
ICAgICBpZiAoa2V5ID09ICJlbmFibGVBdHRhY2htZW50RWxlbWVudCIpCi0gICAgICAgICAgICB0
aGlzLT5lbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChrZXkgPT0gInVzZUFjY2Vs
ZXJhdGVkRHJhd2luZyIpCi0gICAgICAgICAgICB0aGlzLT51c2VBY2NlbGVyYXRlZERyYXdpbmcg
PSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgdXNlQWNj
ZWxlcmF0ZWREcmF3aW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciIpCi0gICAg
ICAgICAgICB0aGlzLT5lbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVJbnRlcnNlY3Rpb25PYnNl
cnZlciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGtleSA9PSAiZW5hYmxlTWVudUl0ZW1FbGVtZW50IikKLSAgICAgICAgICAgIHRoaXMtPmVu
YWJsZU1lbnVJdGVtRWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7
CisgICAgICAgICAgICBlbmFibGVNZW51SXRlbUVsZW1lbnQgPSBwYXJzZUJvb2xlYW5UZXN0SGVh
ZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZU1vZGVybk1l
ZGlhQ29udHJvbHMiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlTW9kZXJuTWVkaWFDb250cm9s
cyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFi
bGVNb2Rlcm5NZWRpYUNvbnRyb2xzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVl
KTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQb2ludGVyTG9jayIpCi0gICAgICAg
ICAgICB0aGlzLT5lbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlV2Vi
QXV0aGVudGljYXRpb24iKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlV2ViQXV0aGVudGljYXRp
b24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5h
YmxlV2ViQXV0aGVudGljYXRpb24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUp
OwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVE
cmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJsYXllckJhY2tlZFdlYlZpZXciKQotICAg
ICAgICAgICAgdGhpcy0+bGF5ZXJCYWNrZWRXZWJWaWV3ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGxheWVyQmFja2VkV2ViVmlldyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5h
YmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZUlz
U2VjdXJlQ29udGV4dEF0dHJpYnV0ZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7CisgICAgICAgICAgICBlbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVu
YWJsZUluc3BlY3RvckFkZGl0aW9ucyIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVJbnNwZWN0
b3JBZGRpdGlvbnMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAg
ICAgICAgZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZh
bHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5T
dGRFcnIiKQotICAgICAgICAgICAgdGhpcy0+ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGR1bXBKU0NvbnNv
bGVMb2dJblN0ZEVyciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9y
Q3JlZGVudGlhbHMiKQotICAgICAgICAgICAgdGhpcy0+YWxsb3dDcm9zc09yaWdpblN1YnJlc291
cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOworICAgICAgICAgICAgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3Jl
ZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBl
bHNlIGlmIChrZXkgPT0gImVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tl
ZEJ5V2ViQW5pbWF0aW9ucyIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVDU1NBbmltYXRpb25z
QW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnMgPSBwYXJzZUJvb2xlYW5UZXN0
SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENT
U1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKICAgICAgICAgcGFpclN0YXJ0ID0gcGFpckVuZCArIDE7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKaW5kZXggZGY5MmRlZWUyZGEuLjdlM2YwYTgz
NWY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKQEAgLTI0LDkgKzI0LDggQEAKICAq
LwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogCi1AY2xhc3Mg
TlNVUkw7CisjaW5jbHVkZSA8c3RyaW5nPgogCiBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJv
b2wgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgeyBmYWxzZSB9OwpAQCAtNDQsNiArNDMsNiBAQCBz
dHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsg
ZmFsc2UgfTsKICAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNy
ZWRlbnRpYWxzIHsgZmFsc2UgfTsKIAotICAgIFRlc3RPcHRpb25zKE5TVVJMKiwgY29uc3QgVGVz
dENvbW1hbmQmKTsKLSAgICBib29sIHdlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25z
dCBUZXN0T3B0aW9ucyYpIGNvbnN0OworICAgIFRlc3RPcHRpb25zKGNvbnN0IHN0ZDo6c3RyaW5n
JiBwYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNvbHV0ZVBhdGgpOworICAgIGJvb2wg
d2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikg
Y29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmlu
ZGV4IDg5MzJhNjQ3MTdmLi4yODUzMzE1MTFiMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTkwNyw3ICsxOTA3LDggQEAgc3RhdGljIHZvaWQgcnVu
VGVzdChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKICAgICBOU1N0cmluZyAqaW5mb3JtYXRpb25T
dHJpbmcgPSBbQCJDUkFTSElORyBURVNUOiAiIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOnRlc3RQ
YXRoXTsKICAgICBXZWJLaXQ6OnNldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9y
bWF0aW9uKChDRlN0cmluZ1JlZilpbmZvcm1hdGlvblN0cmluZyk7CiAKLSAgICBUZXN0T3B0aW9u
cyBvcHRpb25zKHVybCwgY29tbWFuZCk7CisgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyB7IFt1cmwg
aXNGaWxlVVJMXSA/IFt1cmwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSA6IHBhdGhPclVSTCwg
Y29tbWFuZC5hYnNvbHV0ZVBhdGggfTsKKwogICAgIGlmICghbWFpbkZyYW1lVGVzdE9wdGlvbnMg
fHwgIW9wdGlvbnMud2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKG1haW5GcmFtZVRlc3RP
cHRpb25zLnZhbHVlKCkpKSB7CiAgICAgICAgIGlmIChtYWluRnJhbWUpCiAgICAgICAgICAgICBk
ZXN0cm95V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyhbbWFpbkZyYW1lIHdlYlZpZXddKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDA2Y2Q5OTBi
ZWVhLi45MTY4YzQyNmUzYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5o
IgogI2luY2x1ZGUgIlBvbGljeURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIu
aCIKICNpbmNsdWRlICJVSURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0
LmgiCkBAIC03ODcsNyArNzg4LDYgQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVh
dHVyZXMoSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKICAgICBwcmVmc1ByaXZhdGUtPnNl
dFdlYkFuaW1hdGlvbnNFbmFibGVkKFRSVUUpOwogICAgIC8vIEZJWE1FOiBXZWJHTDIKICAgICAv
LyBGSVhNRTogV2ViUlRDCi0gICAgcHJlZnNQcml2YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRy
aWJ1dGVFbmFibGVkKFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCkBAIC04ODEs
MTYgKzg4MSwyMyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCiAgICAgcHJlZnNQcml2YXRlLT5z
ZXRGZXRjaEFQSUVuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRTaGFkb3dET01F
bmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0Q3VzdG9tRWxlbWVudHNFbmFibGVk
KFRSVUUpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQo
RkFMU0UpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVzb3VyY2VUaW1pbmdFbmFibGVkKFRSVUUp
OwogICAgIHByZWZzUHJpdmF0ZS0+c2V0VXNlclRpbWluZ0VuYWJsZWQoVFJVRSk7CiAgICAgcHJl
ZnNQcml2YXRlLT5zZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7Ci0gICAgcHJlZnNQ
cml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJp
dmF0ZS0+Y2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbigpOwogCiAgICAgc2V0QWx3YXlzQWNjZXB0
Q29va2llcyhmYWxzZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVz
dE9wdGlvbnMoSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcywgY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpCit7CisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU2PiBwcmVmc1By
aXZhdGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKKworICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xz
KTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldElzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZUVuYWJsZWQo
b3B0aW9ucy5lbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUpOworICAgIHByZWZzUHJpdmF0
ZS0+c2V0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZChvcHRpb25zLmVuYWJsZUluc3BlY3RvckFk
ZGl0aW9ucyk7Cit9CisKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25JZCgpCiB7CiAgICAgRFdP
UkQgcHJvY2Vzc0lkID0gOjpHZXRDdXJyZW50UHJvY2Vzc0lkKCk7CkBAIC05MzcsNyArOTQ0LDcg
QEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkK
ICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJl
Zm9yZVRlc3RpbmcoKQorc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJ
V2ViVmlldz4gd2ViVmlldzsKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3
KSkpIApAQCAtOTgzLDggKzk5MCwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogICAgIH0KIAogICAgIENPTVB0cjxJV2ViUHJlZmVy
ZW5jZXM+IHByZWZlcmVuY2VzOwotICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+cHJlZmVyZW5j
ZXMoJnByZWZlcmVuY2VzKSkpCisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5wcmVmZXJlbmNl
cygmcHJlZmVyZW5jZXMpKSkgewogICAgICAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKHByZWZlcmVuY2VzLmdldCgpKTsKKyAgICAgICAgc2V0V2ViUHJlZmVyZW5jZXNG
b3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcy5nZXQoKSwgb3B0aW9ucyk7CisgICAgfQogCiAgICAg
VGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGZhbHNlKTsKIApAQCAtMTE1NSw3ICsx
MTY0LDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKIAog
ICAgIENGUmVsZWFzZSh1cmwpOwogCi0gICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKCk7CisgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyB7IGNvbW1hbmQucGF0aE9y
VVJMLCBjb21tYW5kLmFic29sdXRlUGF0aCB9OworCisgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0
ZW50U3RhdGVCZWZvcmVUZXN0aW5nKG9wdGlvbnMpOwogCiAgICAgOjpnVGVzdFJ1bm5lciA9IFRl
c3RSdW5uZXI6OmNyZWF0ZSh0ZXN0VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFz
aCk7CiAgICAgOjpnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQp
OwpAQCAtMTI2MSw3ICsxMjcyLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcm
IGlucHV0TGluZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc2V0V2ViVmlld1RvQ29uc2lz
dGVudFN0YXRlQmVmb3JlVGVzdGluZygpOworICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0
YXRlQmVmb3JlVGVzdGluZyhvcHRpb25zKTsKIAogICAgIC8vIExvYWRpbmcgYW4gZW1wdHkgcmVx
dWVzdCBzeW5jaHJvbm91c2x5IHJlcGxhY2VzIHRoZSBkb2N1bWVudCB3aXRoIGEgYmxhbmsgb25l
LCB3aGljaCBpcyBuZWNlc3NhcnkKICAgICAvLyB0byBzdG9wIHRpbWVycywgV2ViU29ja2V0cyBh
bmQgb3RoZXIgYWN0aXZpdHkgdGhhdCBjb3VsZCBvdGhlcndpc2Ugc3BpbGwgb3V0cHV0IGludG8g
bmV4dCB0ZXN0J3MgcmVzdWx0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335637</attachid>
            <date>2018-03-12 14:01:54 -0700</date>
            <delta_ts>2018-03-12 18:29:50 -0700</delta_ts>
            <desc>Patch (manual)</desc>
            <filename>183487.diff</filename>
            <type>text/plain</type>
            <size>19555</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTE3
YTEwNWNlMS4uNTc4N2YxMzQzYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wMy0xMiAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0RSVF0gVGVzdE9wdGlvbnMg
c2hvdWxkIG5vdCBiZSBPYmpDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgzNDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICBNb3Zl
IFRlc3RPcHRpb25zIHRvIHBsYXRmb3JtLWFnbm9zdGljIHNvdXJjZXMuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRp
b25zLm1tLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToK
KyAgICAgICAgUmVtb3ZlIE5TVVJMIGRlcGVuZGVuY3kgYW5kIGFsaWduIHdpdGggV1RSIGFzIG11
Y2ggYXMgcG9zc2libGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICBDb25zdW1lIFRlc3RPcHRpb25zIChyZWNvZ25pemluZyBqdXN0
IHRoZSBvbmVzIHRoYXQgaGF2ZSBXZWJQcmVmZXJlbmNlcyBkZWZpbmVkIGZvciBub3cpLgorCiAy
MDE4LTAzLTEyICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAg
ICAgICBbd2Via2l0cHldIFJlbW92ZSBvcGVuc3NsIGNvbW1hbmQgZGVwZW5kZW5jeS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTM0YmEwYTQ0ZDEuLmJiNDZmMjRiNzQyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dApAQCAtMTMsNiArMTMsNyBAQCBzZXQoRHVt
cFJlbmRlclRyZWVfU09VUkNFUwogICAgIEdDQ29udHJvbGxlci5jcHAKICAgICBKYXZhU2NyaXB0
VGhyZWFkaW5nLmNwcAogICAgIFBpeGVsRHVtcFN1cHBvcnQuY3BwCisgICAgVGVzdE9wdGlvbnMu
Y3BwCiAgICAgVGVzdFJ1bm5lci5jcHAKICAgICBXb3JrUXVldWUuY3BwCiAgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9VSVNDUklQVENPTlRFWFRfRElSfS9VSVNjcmlwdENvbnRleHQuY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YWU3YTNiNTI1YS4uZGM5YjlmYjhiODcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxLDcgKzEwMSw2IEBACiAJCTVEQjlBQzlFMEY3
MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQg
RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NC
NjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5
RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBG
b250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERB
QzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURC
OUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENv
cHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3
OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi87IH07Ci0J
CTdDQkJDMzIzMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkJDMzIxMURERkNGOUEwMDc4NkI5
RCAvKiBUZXN0T3B0aW9ucy5tbSAqLzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8q
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OwogCQk4NDY1RTJDNzBGRkE4
REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTk4MzBGMzFGMTVDODExODEwMDVBQjIwNiAvKiBE
dW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5ODMwRjMxRTE1QzgxMTgxMDA1QUIyMDYgLyogRHVtcFJlbmRlclRyZWVD
b21tb24uY3BwICovOyB9OwpAQCAtMTA5LDYgKzEwOCw3IEBACiAJCUExMTU4RDU5MTg5Mjc0MzYw
MDg4QzE3QiAvKiBQaXhlbER1bXBTdXBwb3J0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNThENTcxODkyNzNFQjAwODhDMTdCIC8qIFBpeGVs
RHVtcFN1cHBvcnRJT1MubW0gKi87IH07CiAJCUExMzRFNTMxMTg4RkMyNzAwMDkwMUQwNiAvKiBE
dW1wUmVuZGVyVHJlZU1haW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTM0RTUyRjE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVNYWlu
Lm1tICovOyB9OwogCQlBMTM0RTUzNjE4OTA1RUZGMDA5MDFEMDYgLyogQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICov
OyB9OworCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMwQTIxRjcyMDUxRDg5
NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLzsgfTsKIAkJQThCOTFBREEwQ0YzQjMyRjAw
OEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ3MENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gKi87IH07CiAJCUE4QjkxQURDMENGM0IzMkYwMDhG
OTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QjkxQUQ5MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVu
ZGVyVHJlZVdpbmRvdy5tbSAqLzsgfTsKIAkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1
bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJl
bmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAqLzsgfTsKQEAgLTMxNSw3ICszMTUsNiBAQAog
CQk1M0NCQjgzMDEzNEU0MkYzMDAxQ0U2QTQgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMxMTM0RTQyRjMwMDFD
RTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVERThBRTQzMTNBMkMxNTgwMEQ2QTM3RCAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
Yjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJN0NCQkMzMjExRERGQ0Y5
QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdE9wdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MDA0NUFFQjE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MDA0NUFFQzE0
NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNiw2ICszMzUsNyBAQAog
CQlBMTZDRDIwRDE4OTA3QTdEMDA5MjM2M0UgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IG5hbWUgPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBwYXRoID0gbWFjL0NvbmZpZ3VyYXRpb25zL0Jh
c2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExOTMxN0ZD
MTg5Mjg1NUYwMDFDNTJCMSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSBJbmZvLnBsaXN0
OyBwYXRoID0gaW9zL0luZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
OTMxN0ZEMTg5Mjg3MzgwMDFDNTJCMSAvKiBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1
cmF0aW9ucy9EdW1wUmVuZGVyVHJlZUFwcC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTMwQTIxRjcyMDUxRDg5NjAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwM0ZGNzQwOUNBQUQwODAwOUIyQTM3IC8qIER1bXBS
ZW5kZXJUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBEdW1wUmVuZGVy
VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODE3MDkwMzA4QjE2NEQzMDBD
Q0I5RkIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUE4NEY2MDg5MDhCMTM2REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTQ3
Miw3ICs0NzIsNyBAQAogCQkJCUE4MDNGRjc0MDlDQUFEMDgwMDlCMkEzNyAvKiBEdW1wUmVuZGVy
VHJlZS5oICovLAogCQkJCUJDQTE4QzQ2MEM5QjVCOTQwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZS5tbSAqLywKIAkJCQlBMTM0RTUyRjE4OEZDMjcwMDA5MDFEMDYgLyogRHVtcFJlbmRlclRyZWVN
YWluLm1tICovLAotCQkJCTdDQkJDMzIxMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5t
bSAqLywKKwkJCQlBMzBBMjFGNzIwNTFEODk2MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwICov
LAogCQkJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovLAogCQkJ
CUJDNDc0MTI5MEQwMzhBNEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggKi8sCiAJ
CQkJQkNBMThDMEEwQzlCNTlFRjAwMTE0MzY5IC8qIER1bXBSZW5kZXJUcmVlTWFjLmggKi8sCkBA
IC0xMTA1LDcgKzExMDUsNyBAQAogCQkJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMzRSAvKiBQaXhl
bER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjYwQzlCMDhDMjAw
MTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjgw
QzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0NCQkMzMjMxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0
UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4Mjkw
IC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxZDAxYTQ4MzI2NS4uNWQ2YTM5OTQ0ZjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxp
c3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0NwcF9TT1VSQ0VTCiApCiAKIGxpc3QoQVBQRU5EIER1
bXBSZW5kZXJUcmVlX09iakNwcF9TT1VSQ0VTCi0gICAgVGVzdE9wdGlvbnMubW0KLQogICAgIG1h
Yy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tCiAgICAgbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5tbQpyZW5hbWUgdG8gVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IGM3YTQ4MDIyZjk3Li5lYmZkN2E0
ZDI3NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCkBAIC0yNiw5ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKIAotI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVk
ZSA8c3RyaW5nPgogCiBzdGF0aWMgYm9vbCBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUoY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQogewpAQCAtMzcsMTggKzM1LDE1IEBAIHN0YXRpYyBib29s
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCiAg
ICAgaWYgKHZhbHVlID09ICJmYWxzZSIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5T
TG9nKEAiRm91bmQgdW5leHBlY3RlZCB2YWx1ZSAnJXMnIGZvciBib29sZWFuIG9wdGlvbi4gRXhw
ZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScuIiwgdmFsdWUuY19zdHIoKSk7CisgICAgTE9HX0VSUk9S
KCJGb3VuZCB1bmV4cGVjdGVkIHZhbHVlICclcycgZm9yIGJvb2xlYW4gb3B0aW9uLiBFeHBlY3Rl
ZCAndHJ1ZScgb3IgJ2ZhbHNlJy4iLCB2YWx1ZS5jX3N0cigpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhOU1VSTCAqdGVzdFVSTCwgY29uc3QgVGVz
dENvbW1hbmQmIGNvbW1hbmQpCitUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdXRlUGF0aCkKIHsKLSAg
ICBzdGQ6OnN0cmluZyBwYXRoID0gY29tbWFuZC5hYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKHBhdGgu
ZW1wdHkoKSkgewotICAgICAgICBwYXRoID0gW3Rlc3RVUkwgaXNGaWxlVVJMXSA/IFt0ZXN0VVJM
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBjb21tYW5kLnBhdGhPclVSTDsKLSAgICAgICAg
aWYgKHBhdGguZW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY29uc3Qg
YXV0byYgcGF0aCA9IGFic29sdXRlUGF0aC5lbXB0eSgpID8gcGF0aE9yVVJMIDogYWJzb2x1dGVQ
YXRoOworICAgIGlmIChwYXRoLmVtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAogICAgIHN0ZDo6
c3RyaW5nIG9wdGlvbnM7CiAgICAgc3RkOjppZnN0cmVhbSB0ZXN0RmlsZShwYXRoLmRhdGEoKSk7
CkBAIC02Miw3ICs1Nyw3IEBAIFRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhOU1VSTCAqdGVzdFVS
TCwgY29uc3QgVGVzdENvbW1hbmQmIGNvbW1hbmQpCiAgICAgICAgIHJldHVybjsKICAgICBzaXpl
X3QgZW5kTG9jYXRpb24gPSBvcHRpb25zLmZpbmQoZW5kU3RyaW5nLCBiZWdpbkxvY2F0aW9uKTsK
ICAgICBpZiAoZW5kTG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgTlNM
b2coQCJDb3VsZCBub3QgZmluZCBlbmQgb2YgdGVzdCBoZWFkZXIgaW4gJXMiLCBwYXRoLmNfc3Ry
KCkpOworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBmaW5kIGVuZCBvZiB0ZXN0IGhlYWRl
ciBpbiAlcyIsIHBhdGguY19zdHIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc3Rk
OjpzdHJpbmcgcGFpclN0cmluZyA9IG9wdGlvbnMuc3Vic3RyKGJlZ2luTG9jYXRpb24gKyBiZWdp
blN0cmluZy5zaXplKCksIGVuZExvY2F0aW9uIC0gKGJlZ2luTG9jYXRpb24gKyBiZWdpblN0cmlu
Zy5zaXplKCkpKTsKQEAgLTczLDM5ICs2OCwzOSBAQCBUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMo
TlNVUkwgKnRlc3RVUkwsIGNvbnN0IFRlc3RDb21tYW5kJiBjb21tYW5kKQogICAgICAgICAgICAg
cGFpckVuZCA9IHBhaXJTdHJpbmcuc2l6ZSgpOwogICAgICAgICBzaXplX3QgZXF1YWxzTG9jYXRp
b24gPSBwYWlyU3RyaW5nLmZpbmQoIj0iLCBwYWlyU3RhcnQpOwogICAgICAgICBpZiAoZXF1YWxz
TG9jYXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiTWFs
Zm9ybWVkIG9wdGlvbiBpbiB0ZXN0IGhlYWRlciAoY291bGQgbm90IGZpbmQgJz0nIGNoYXJhY3Rl
cikgaW4gJXMiLCBwYXRoLmNfc3RyKCkpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJNYWxmb3Jt
ZWQgb3B0aW9uIGluIHRlc3QgaGVhZGVyIChjb3VsZCBub3QgZmluZCAnPScgY2hhcmFjdGVyKSBp
biAlcyIsIHBhdGguY19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3RyKHBhaXJTdGFydCwgZXF1YWxzTG9jYXRp
b24gLSBwYWlyU3RhcnQpOwogICAgICAgICBhdXRvIHZhbHVlID0gcGFpclN0cmluZy5zdWJzdHIo
ZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVxdWFsc0xvY2F0aW9uICsgMSkpOwogICAg
ICAgICBpZiAoa2V5ID09ICJlbmFibGVBdHRhY2htZW50RWxlbWVudCIpCi0gICAgICAgICAgICB0
aGlzLT5lbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChrZXkgPT0gInVzZUFjY2Vs
ZXJhdGVkRHJhd2luZyIpCi0gICAgICAgICAgICB0aGlzLT51c2VBY2NlbGVyYXRlZERyYXdpbmcg
PSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgdXNlQWNj
ZWxlcmF0ZWREcmF3aW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciIpCi0gICAg
ICAgICAgICB0aGlzLT5lbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVJbnRlcnNlY3Rpb25PYnNl
cnZlciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGtleSA9PSAiZW5hYmxlTWVudUl0ZW1FbGVtZW50IikKLSAgICAgICAgICAgIHRoaXMtPmVu
YWJsZU1lbnVJdGVtRWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7
CisgICAgICAgICAgICBlbmFibGVNZW51SXRlbUVsZW1lbnQgPSBwYXJzZUJvb2xlYW5UZXN0SGVh
ZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZU1vZGVybk1l
ZGlhQ29udHJvbHMiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlTW9kZXJuTWVkaWFDb250cm9s
cyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFi
bGVNb2Rlcm5NZWRpYUNvbnRyb2xzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVl
KTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQb2ludGVyTG9jayIpCi0gICAgICAg
ICAgICB0aGlzLT5lbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlV2Vi
QXV0aGVudGljYXRpb24iKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlV2ViQXV0aGVudGljYXRp
b24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5h
YmxlV2ViQXV0aGVudGljYXRpb24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUp
OwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQiKQotICAgICAgICAgICAgdGhpcy0+ZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBlbmFibGVE
cmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJsYXllckJhY2tlZFdlYlZpZXciKQotICAg
ICAgICAgICAgdGhpcy0+bGF5ZXJCYWNrZWRXZWJWaWV3ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGxheWVyQmFja2VkV2ViVmlldyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5h
YmxlSXNTZWN1cmVDb250ZXh0QXR0cmlidXRlIikKLSAgICAgICAgICAgIHRoaXMtPmVuYWJsZUlz
U2VjdXJlQ29udGV4dEF0dHJpYnV0ZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7CisgICAgICAgICAgICBlbmFibGVJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGUgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVu
YWJsZUluc3BlY3RvckFkZGl0aW9ucyIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVJbnNwZWN0
b3JBZGRpdGlvbnMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAg
ICAgICAgZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZh
bHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5T
dGRFcnIiKQotICAgICAgICAgICAgdGhpcy0+ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGR1bXBKU0NvbnNv
bGVMb2dJblN0ZEVyciA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9y
Q3JlZGVudGlhbHMiKQotICAgICAgICAgICAgdGhpcy0+YWxsb3dDcm9zc09yaWdpblN1YnJlc291
cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOworICAgICAgICAgICAgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3Jl
ZGVudGlhbHMgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBl
bHNlIGlmIChrZXkgPT0gImVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tl
ZEJ5V2ViQW5pbWF0aW9ucyIpCi0gICAgICAgICAgICB0aGlzLT5lbmFibGVDU1NBbmltYXRpb25z
QW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnMgPSBwYXJzZUJvb2xlYW5UZXN0
SGVhZGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENT
U1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKICAgICAgICAgcGFpclN0YXJ0ID0gcGFpckVuZCArIDE7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKaW5kZXggZGY5MmRlZWUyZGEuLjQzZjNmNDk4
ODg2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKQEAgLTI0LDkgKzI0LDggQEAKICAq
LwogCiAjcHJhZ21hIG9uY2UKLSNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogCi1AY2xhc3Mg
TlNVUkw7CisjaW5jbHVkZSA8c3RyaW5nPgogCiBzdHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJv
b2wgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgeyBmYWxzZSB9OwpAQCAtNDQsNiArNDMsNiBAQCBz
dHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsg
ZmFsc2UgfTsKICAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNy
ZWRlbnRpYWxzIHsgZmFsc2UgfTsKIAotICAgIFRlc3RPcHRpb25zKE5TVVJMKiwgY29uc3QgVGVz
dENvbW1hbmQmKTsKKyAgICBUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJM
LCBjb25zdCBzdGQ6OnN0cmluZyYgYWJzb2x1dGVQYXRoKTsKICAgICBib29sIHdlYlZpZXdJc0Nv
bXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwogfTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA4OTMyYTY0NzE3Zi4u
Mjg1MzMxNTExYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KQEAgLTE5MDcsNyArMTkwNyw4IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5n
JiBpbnB1dExpbmUpCiAgICAgTlNTdHJpbmcgKmluZm9ybWF0aW9uU3RyaW5nID0gW0AiQ1JBU0hJ
TkcgVEVTVDogIiBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzp0ZXN0UGF0aF07CiAgICAgV2ViS2l0
OjpzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoQ0ZTdHJpbmdS
ZWYpaW5mb3JtYXRpb25TdHJpbmcpOwogCi0gICAgVGVzdE9wdGlvbnMgb3B0aW9ucyh1cmwsIGNv
bW1hbmQpOworICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgeyBbdXJsIGlzRmlsZVVSTF0gPyBbdXJs
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0gOiBwYXRoT3JVUkwsIGNvbW1hbmQuYWJzb2x1dGVQ
YXRoIH07CisKICAgICBpZiAoIW1haW5GcmFtZVRlc3RPcHRpb25zIHx8ICFvcHRpb25zLndlYlZp
ZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhtYWluRnJhbWVUZXN0T3B0aW9ucy52YWx1ZSgpKSkg
ewogICAgICAgICBpZiAobWFpbkZyYW1lKQogICAgICAgICAgICAgZGVzdHJveVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3coW21haW5GcmFtZSB3ZWJWaWV3XSk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAwNmNkOTkwYmVlYS4uOTE2OGM0MjZlM2Eg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKICNpbmNsdWRlICJQb2xp
Y3lEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZERlbGVnYXRlLmgiCisjaW5jbHVk
ZSAiVGVzdE9wdGlvbnMuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAiVUlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgpAQCAtNzg3LDcgKzc4
OCw2IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKElXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMpCiAgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJBbmltYXRpb25zRW5h
YmxlZChUUlVFKTsKICAgICAvLyBGSVhNRTogV2ViR0wyCiAgICAgLy8gRklYTUU6IFdlYlJUQwot
ICAgIHByZWZzUHJpdmF0ZS0+c2V0SXNTZWN1cmVDb250ZXh0QXR0cmlidXRlRW5hYmxlZChUUlVF
KTsKIH0KIAogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKQpAQCAtODgxLDE2ICs4ODEsMjMgQEAgc3Rh
dGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVy
ZW5jZXMqIHByZWZlcmVuY2VzKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0RmV0Y2hBUElFbmFibGVk
KFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0U2hhZG93RE9NRW5hYmxlZChUUlVFKTsKICAg
ICBwcmVmc1ByaXZhdGUtPnNldEN1c3RvbUVsZW1lbnRzRW5hYmxlZChUUlVFKTsKLSAgICBwcmVm
c1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKEZBTFNFKTsKICAgICBwcmVm
c1ByaXZhdGUtPnNldFJlc291cmNlVGltaW5nRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZh
dGUtPnNldFVzZXJUaW1pbmdFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0RGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkKFRSVUUpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0SW5zcGVj
dG9yQWRkaXRpb25zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPmNsZWFyTmV0d29y
a0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOwog
fQogCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKElXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQoreworICAg
IENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlNj4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHBy
ZWZlcmVuY2VzIH07CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNF
bmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7CisgICAgcHJlZnNQcml2
YXRlLT5zZXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVkKG9wdGlvbnMuZW5hYmxlSXNT
ZWN1cmVDb250ZXh0QXR0cmlidXRlKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFk
ZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMpOworfQorCiBz
dGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQogewogICAgIERXT1JEIHByb2Nlc3NJZCA9IDo6
R2V0Q3VycmVudFByb2Nlc3NJZCgpOwpAQCAtOTM3LDcgKzk0NCw3IEBAIHN0YXRpYyB2b2lkIHNl
dERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAjZW5kaWYKIH0KIAotc3Rh
dGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKK3N0
YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhjb25z
dCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7
CiAgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKSAKQEAgLTk4Myw4ICs5
OTAsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVU
ZXN0aW5nKCkKICAgICB9CiAKICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNl
czsKLSAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykp
KQorICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkp
IHsKICAgICAgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJl
bmNlcy5nZXQoKSk7CisgICAgICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMocHJl
ZmVyZW5jZXMuZ2V0KCksIG9wdGlvbnMpOworICAgIH0KIAogICAgIFRlc3RSdW5uZXI6OnNldFNl
cmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CiAKQEAgLTExNTUsNyArMTE2NCw5IEBAIHN0YXRpYyB2
b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAKICAgICBDRlJlbGVhc2UodXJs
KTsKIAotICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwor
ICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgeyBjb21tYW5kLnBhdGhPclVSTCwgY29tbWFuZC5hYnNv
bHV0ZVBhdGggfTsKKworICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZyhvcHRpb25zKTsKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUo
dGVzdFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIDo6Z1Rlc3RS
dW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0KTsKQEAgLTEyNjEsNyArMTI3
Miw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRl
c3RpbmcoKTsKKyAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmco
b3B0aW9ucyk7CiAKICAgICAvLyBMb2FkaW5nIGFuIGVtcHR5IHJlcXVlc3Qgc3luY2hyb25vdXNs
eSByZXBsYWNlcyB0aGUgZG9jdW1lbnQgd2l0aCBhIGJsYW5rIG9uZSwgd2hpY2ggaXMgbmVjZXNz
YXJ5CiAgICAgLy8gdG8gc3RvcCB0aW1lcnMsIFdlYlNvY2tldHMgYW5kIG90aGVyIGFjdGl2aXR5
IHRoYXQgY291bGQgb3RoZXJ3aXNlIHNwaWxsIG91dHB1dCBpbnRvIG5leHQgdGVzdCdzIHJlc3Vs
dHMuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>