<?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>224410</bug_id>
          
          <creation_ts>2021-04-10 19:09:14 -0700</creation_ts>
          <short_desc>Simplify WebKitTestRunner preference reset to be more like DRT</short_desc>
          <delta_ts>2021-05-07 13:50:03 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>fujii</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1749051</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-10 19:09:14 -0700</bug_when>
    <thetext>Simplify WebKitTestRunner preference reset to be more like DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749052</commentid>
    <comment_count>1</comment_count>
      <attachid>425695</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-10 19:17:09 -0700</bug_when>
    <thetext>Created attachment 425695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749106</commentid>
    <comment_count>2</comment_count>
      <attachid>425711</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-11 09:47:05 -0700</bug_when>
    <thetext>Created attachment 425711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749116</commentid>
    <comment_count>3</comment_count>
      <attachid>425711</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-11 12:34:50 -0700</bug_when>
    <thetext>Comment on attachment 425711
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h:54
&gt; +WK_EXPORT void WKPreferencesStartBatchingUpdates(WKPreferencesRef);
&gt; +WK_EXPORT void WKPreferencesEndBatchingUpdates(WKPreferencesRef);

What’s the story on adding new C API (including private/SPI) vs. Objective-C/Swift API? Are there cross-platform reason to keep adding to the C API? I know that on Apple platforms we want the Objective-C/Swift to have parity or be a superset.

&gt; Tools/WebKitTestRunner/TestOptions.cpp:60
&gt;              { &quot;AcceleratedDrawingEnabled&quot;, false },

Is there some way to share this list with DumpRenderTree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749118</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-11 13:09:45 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 425711 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425711&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h:54
&gt; &gt; +WK_EXPORT void WKPreferencesStartBatchingUpdates(WKPreferencesRef);
&gt; &gt; +WK_EXPORT void WKPreferencesEndBatchingUpdates(WKPreferencesRef);
&gt; 
&gt; What’s the story on adding new C API (including private/SPI) vs.
&gt; Objective-C/Swift API? Are there cross-platform reason to keep adding to the
&gt; C API? I know that on Apple platforms we want the Objective-C/Swift to have
&gt; parity or be a superset.

Anything that WebKitTestRunner uses needs either needs to be in the C-SPI or duplicated in the port specific APIs. So, for things like this, that at the moment are mostly about the test runner, I am keeping them in C.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/TestOptions.cpp:60
&gt; &gt;              { &quot;AcceleratedDrawingEnabled&quot;, false },
&gt; 
&gt; Is there some way to share this list with DumpRenderTree?

I hope so. My goal is to converge DumpRenderTree and WebKitTestRunner TestOptions.h/cpp files (they are very similar now), and then share them via the TestRunnerShared directory. That allows us to maintain some differences via #ifdefs if we need it (since each project will still compile their own copy), and we will need it, as there are some preferences WebKitLegacy does not want enabled, as they don&apos;t work there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749119</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-11 13:11:43 -0700</bug_when>
    <thetext>Committed r275810 (236381@main): &lt;https://commits.webkit.org/236381@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425711.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749120</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-11 13:12:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/76514638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754482</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-26 21:08:24 -0700</bug_when>
    <thetext>Filed: Bug 225087 – REGRESSION(r275810): [WebKitTestRunner] fast/text/basic/004.html fails after running fast/layoutformattingcontext tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754484</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-26 21:29:16 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; That allows us to maintain some differences
&gt; via #ifdefs if we need it (since each project will still compile their own copy),

WinCairo is still supporting both WK1 and WK2. But, it doesn&apos;t compile TestRunnerShared twice. (Bug 216465)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757906</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-07 10:15:38 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #8)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; That allows us to maintain some differences
&gt; &gt; via #ifdefs if we need it (since each project will still compile their own copy),
&gt; 
&gt; WinCairo is still supporting both WK1 and WK2. But, it doesn&apos;t compile
&gt; TestRunnerShared twice. (Bug 216465)

It unfortunately will need to. While TestRunnerShared is for shared code between DRT and WKTR, it needs to be shared only at the source level to allow preferences to differ between the WK1 and WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757983</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-07 13:43:10 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; (In reply to Fujii Hironori from comment #8)
&gt; &gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; &gt; That allows us to maintain some differences
&gt; &gt; &gt; via #ifdefs if we need it (since each project will still compile their own copy),
&gt; &gt; 
&gt; &gt; WinCairo is still supporting both WK1 and WK2. But, it doesn&apos;t compile
&gt; &gt; TestRunnerShared twice. (Bug 216465)
&gt; 
&gt; It unfortunately will need to. While TestRunnerShared is for shared code
&gt; between DRT and WKTR, it needs to be shared only at the source level to
&gt; allow preferences to differ between the WK1 and WK2.

TestRunnerShared is a library shared between DRT and WKTR. It should be possible to change the behavior by using a runtime flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757985</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-07 13:50:03 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #10)
&gt; TestRunnerShared is a library shared between DRT and WKTR. It should be
&gt; possible to change the behavior by using a runtime flag.

It is shared code. It doesn’t have to be a shared library.

Let us build it separately for the two uses. It is our library, we get to decide how it&apos;s built.

I don’t agree that we need to change it so it can be a single shared library with a runtime flag. We *could* do that, or we could compile it twice on platforms that support both legacy WebKit and modern.

I prefer the &quot;compile it twice&quot; approach.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425695</attachid>
            <date>2021-04-10 19:17:09 -0700</date>
            <delta_ts>2021-04-11 09:47:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224410-20210410191708.patch</filename>
            <type>text/plain</type>
            <size>33206</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzU3OTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA0LTEwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBXZWJLaXRUZXN0UnVubmVy
IHByZWZlcmVuY2UgcmVzZXQgdG8gYmUgbW9yZSBsaWtlIERSVAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBSZW1vdmUgdGhlIHVudXNlZCAidGVzdCBy
dW5uZXIgb3ZlcnJpZGVzIiBjb25jZXB0IGFuZCB0aGUgcmVtYWluaW5nCisgICAgICAgICAgU1BJ
IGZvciBpdCwgV0tQcmVmZXJlbmNlc1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcywgd2hpY2ggd2Fz
IG9ubHkgdXNlZAorICAgICAgICAgIGJ5IFdlYktpdFRlc3RSdW5uZXIgYW5kIGlzIG5vdyByZW1v
dmVkLgorICAgICAgICAtIEFkZCBXS1ByZWZlcmVuY2VzU3RhcnRCYXRjaGluZ1VwZGF0ZXMvV0tQ
cmVmZXJlbmNlc0VuZEJhdGNoaW5nVXBkYXRlcworICAgICAgICAgIHRvIHN1cHBvcnQgYmF0Y2hp
bmcgcHJlZmVyZW5jZXMgdXBkYXRlcyBieSBjbGllbnRzLgorICAgICAgICAtIEFkZCBXS1ByZWZl
cmVuY2VzUmVzZXRGb3JUZXN0aW5nIHRvIHJlc2V0IHRoZSBwcmVmZXJlbmNlIG9iamVjdCB0bwor
ICAgICAgICAgIGl0cyBpbml0aWFsLCBjbGVhcmVkLCBzdGF0ZS4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6Z2V0Qm9vbFZhbHVlRm9yS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZTo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0Ojpib29sVGVzdFJ1bm5l
ck92ZXJyaWRlc01hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6Om92ZXJyaWRlQm9vbFZhbHVlRm9yS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6cmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRlcyk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2Vz
U3RhcnRCYXRjaGluZ1VwZGF0ZXMpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0VuZEJhdGNoaW5n
VXBkYXRlcyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzUmVzZXRGb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpmb3JjZVVwZGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6CisKIDIwMjEtMDQtMTAgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyNzU3OTQsIHIyNzU3ODQsIHIyNzU3NzkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCShyZXZpc2lvbiAyNzU3OTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMTQgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIGJvb2w+IEJvb2xPdmVycmlkZXNNYXA7Ci0KLXN0YXRpYyBCb29sT3ZlcnJpZGVzTWFw
JiBib29sVGVzdFJ1bm5lck92ZXJyaWRlc01hcCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEJvb2xPdmVycmlkZXNNYXA+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCiBXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpXZWJQcmVmZXJlbmNlc1N0b3JlKCkKIHsKIH0KQEAgLTY2LDE2ICs1OCw2
IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVjb2RlKElQQzo6RGUKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpvdmVycmlkZUJvb2xWYWx1ZUZv
cktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSkKLXsKLSAgICBib29sVGVzdFJ1bm5l
ck92ZXJyaWRlc01hcCgpLnNldChrZXksIHZhbHVlKTsKLX0KLQotdm9pZCBXZWJQcmVmZXJlbmNl
c1N0b3JlOjpyZW1vdmVUZXN0UnVubmVyT3ZlcnJpZGVzKCkKLXsKLSAgICBib29sVGVzdFJ1bm5l
ck92ZXJyaWRlc01hcCgpLmNsZWFyKCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIE1hcHBlZFR5
cGU+CiBzdGF0aWMgTWFwcGVkVHlwZSB2YWx1ZUZvcktleShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZU1hcCYgdmFsdWVzLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1h
cCYgb3ZlcnJpZGRlbkRlZmF1bHRzLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKQEAgLTEyMywxMSAr
MTA1LDYgQEAgYm9vbCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpzZXRCb29sVmFsdWVGbwogCiBib29s
IFdlYlByZWZlcmVuY2VzU3RvcmU6OmdldEJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogRXh0ZW5kIG92ZXJyaWRpbmcgdG8gb3RoZXIga2V5
IHR5cGVzIHVzZWQgZnJvbSBUZXN0UnVubmVyLgotICAgIGF1dG8gaXQgPSBib29sVGVzdFJ1bm5l
ck92ZXJyaWRlc01hcCgpLmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgIT0gYm9vbFRlc3RSdW5uZXJP
dmVycmlkZXNNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLQogICAgIHJl
dHVybiB2YWx1ZUZvcktleTxib29sPihtX3ZhbHVlcywgbV9vdmVycmlkZGVuRGVmYXVsdHMsIGtl
eSk7CiB9CiAKQEAgLTE3OSw0ICsxNTYsMTAgQEAgdm9pZCBXZWJQcmVmZXJlbmNlc1N0b3JlOjpk
ZWxldGVLZXkoY29ucwogICAgIG1fb3ZlcnJpZGRlbkRlZmF1bHRzLnJlbW92ZShrZXkpOwogfQog
Cit2b2lkIFdlYlByZWZlcmVuY2VzU3RvcmU6OnJlc2V0KCkKK3sKKyAgICBtX3ZhbHVlcy5jbGVh
cigpOworICAgIG1fb3ZlcnJpZGRlbkRlZmF1bHRzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaAkocmV2aXNpb24gMjc1Nzk5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2MCw3IEBAIHN0cnVjdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlIHsKIAogICAgIHZvaWQgZGVsZXRlS2V5KGNvbnN0IFN0cmluZyYga2V5
KTsKIAotICAgIC8vIEZvciBXZWJLaXRUZXN0UnVubmVyIHVzYWdlLgotICAgIHN0YXRpYyB2b2lk
IG92ZXJyaWRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKTsK
LSAgICBzdGF0aWMgdm9pZCByZW1vdmVUZXN0UnVubmVyT3ZlcnJpZGVzKCk7CisgICAgdm9pZCBy
ZXNldCgpOwogCiAgICAgdXNpbmcgVmFsdWUgPSBWYXJpYW50PFN0cmluZywgYm9vbCwgdWludDMy
X3QsIGRvdWJsZT47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVu
Y2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJl
bmNlcy5jcHAJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSwxMiBAQCB2b2lk
IFdlYlByZWZlcmVuY2VzOjpzZXRTdHJpbmdWYWx1ZUZvcktlCiAgICAgdXBkYXRlU3RyaW5nVmFs
dWVGb3JLZXkoa2V5LCB2YWx1ZSk7CiB9CiAKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkK
K3sKKyAgICBtX3N0b3JlLnJlc2V0KCk7CisgICAgdXBkYXRlKCk7Cit9CisKIHZvaWQgV2ViUHJl
ZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIHBsYXRmb3JtVXBkYXRlU3RyaW5nVmFsdWVGb3JLZXko
a2V5LCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmgJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldERvdWJsZVZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYsIGRvdWJsZSB2YWx1ZSk7CiAg
ICAgdm9pZCBzZXRVSW50MzJWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCB1aW50MzJfdCB2YWx1
ZSk7CiAgICAgdm9pZCBzZXRTdHJpbmdWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIGZvcmNlVXBkYXRlKCkgeyB1cGRhdGUoKTsgfQorICAg
IHZvaWQgcmVzZXQoKTsKKworICAgIHZvaWQgc3RhcnRCYXRjaGluZ1VwZGF0ZXMoKTsKKyAgICB2
b2lkIGVuZEJhdGNoaW5nVXBkYXRlcygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplU3RvcmUoKTsKQEAgLTEwNyw5ICsxMTAsNiBAQCBwcml2YXRlOgogICAgICAgICBX
ZWJQcmVmZXJlbmNlcyYgbV9wcmVmZXJlbmNlczsKICAgICB9OwogCi0gICAgdm9pZCBzdGFydEJh
dGNoaW5nVXBkYXRlcygpOwotICAgIHZvaWQgZW5kQmF0Y2hpbmdVcGRhdGVzKCk7Ci0KICAgICB2
b2lkIHVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKICAgICB2b2lkIHVwZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcm
IGtleSwgYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVCb29sVmFsdWVGb3JJbnRlcm5hbERl
YnVnRmVhdHVyZUtleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNp
b24gMjc1Nzk5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDE2IEBAIFdLUHJlZmVyZW5jZXNSZWYg
V0tQcmVmZXJlbmNlc0NyZWF0ZUNvcHkKICAgICByZXR1cm4gdG9BUEkoJnByZWZlcmVuY2VzLmxl
YWtSZWYoKSk7CiB9CiAKK3ZvaWQgV0tQcmVmZXJlbmNlc1N0YXJ0QmF0Y2hpbmdVcGRhdGVzKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+c3RhcnRCYXRjaGluZ1VwZGF0ZXMoKTsKK30KKwordm9pZCBXS1ByZWZlcmVuY2VzRW5k
QmF0Y2hpbmdVcGRhdGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+ZW5kQmF0Y2hpbmdVcGRhdGVzKCk7Cit9CisKIHZvaWQg
V0tQcmVmZXJlbmNlc0VuYWJsZUFsbEV4cGVyaW1lbnRhbEZlYXR1cmVzKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+ZW5hYmxl
QWxsRXhwZXJpbWVudGFsRmVhdHVyZXMoKTsKQEAgLTk4LDExICsxMDgsOSBAQCB2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdG9XVEZTdHJpbmcodmFs
dWUpKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVzKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEZv
clRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICAvLyBDdXJy
ZW50bHkgd2UgcmVzZXQgdGhlIG92ZXJyaWRlcyBvbiB0aGUgd2ViIHByb2Nlc3Mgd2hlbiBwcmVm
ZXJlbmNlc0RpZENoYW5nZSgpIGlzIGNhbGxlZC4gU2luY2UgV1RSIHByZWZlcmVuY2VzCi0gICAg
Ly8gYXJlIHVzdWFsbHkgYWx3YXlzIHRoZSBzYW1lIChpbiB0aGUgVUkgcHJvY2VzcyksIHRoZXkg
YXJlIG5vdCBzZW50IHRvIHdlYiBwcm9jZXNzLCBub3QgdHJpZ2dlcmluZyB0aGUgcmVzZXQuCi0g
ICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Zm9yY2VVcGRhdGUoKTsKKyAgICB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT5yZXNldCgpOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2Ny
aXB0RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGphdmFTY3Jp
cHRFbmFibGVkKQpAQCAtMzQ1LDcgKzM1Myw2IEBAIHVpbnQzMl90IFdLUHJlZmVyZW5jZXNHZXRN
aW5pbXVtRm9udFNpemUKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bWluaW11
bUZvbnRTaXplKCk7CiB9CiAKLQogdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29va2llRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCiB7CiAgICAgdG9J
bXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Q29va2llRW5hYmxlZChlbmFibGVkKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAkocmV2aXNpb24gMjc1Nzk5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOSBAQCB0eXBlZGVmIHVuc2lnbmVkIFdLSmF2YVNjcmlwdFJ1bnRpbWVGbGFnCiAvLyBDcmVh
dGVzIGEgY29weSB3aXRoIG5vIGlkZW50aWZpZXIuCiBXS19FWFBPUlQgV0tQcmVmZXJlbmNlc1Jl
ZiBXS1ByZWZlcmVuY2VzQ3JlYXRlQ29weShXS1ByZWZlcmVuY2VzUmVmKTsKIAorV0tfRVhQT1JU
IHZvaWQgV0tQcmVmZXJlbmNlc1N0YXJ0QmF0Y2hpbmdVcGRhdGVzKFdLUHJlZmVyZW5jZXNSZWYp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc0VuZEJhdGNoaW5nVXBkYXRlcyhXS1ByZWZl
cmVuY2VzUmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc0VuYWJsZUFsbEV4cGVy
aW1lbnRhbEZlYXR1cmVzKFdLUHJlZmVyZW5jZXNSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldEV4cGVyaW1lbnRhbEZlYXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9v
bCwgV0tTdHJpbmdSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0QWxsSW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVzKFdLUHJlZmVyZW5jZXNSZWYpOwpAQCAtNjEsOCArNjQsOCBAQCBX
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsCiBXS19FWFBPUlQgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogV0tf
RVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJp
bmdSZWYga2V5KTsKIAotLy8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgotV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmKTsKKy8vIFRoZSBmb2xsb3dpbmcgcmVzZXQgZnVuY3Rpb25zIGFyZSBv
bmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KK1dLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZik7CiAK
IC8vIERlZmF1bHRzIHRvIGZhbHNlLgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN1
YnBpeGVsQW50aWFsaWFzZWRMYXllclRleHRFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIxLDcgKzM4MjEsNiBAQCB2b2lkIFdlYlBh
Z2U6OmZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuCiAKIHZvaWQgV2ViUGFnZTo6cHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgV2Vi
UHJlZmVyZW5jZXNTdG9yZTo6cmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRlcygpOwogICAgIHVwZGF0
ZVByZWZlcmVuY2VzKHN0b3JlKTsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1ODA1KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjEtMDQtMTAgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IFdlYktpdFRlc3RSdW5u
ZXIgcHJlZmVyZW5jZSByZXNldCB0byBiZSBtb3JlIGxpa2UgRFJUCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0MTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIFVzZSBib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzIGNvbnNpc3RlbnRseSBmb3IgYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1vZGUKKyAg
ICAgICAgLSBBZG9wdCBuZXcgV0tQcmVmZXJlbmNlc1N0YXJ0QmF0Y2hpbmdVcGRhdGVzL1dLUHJl
ZmVyZW5jZXNFbmRCYXRjaGluZ1VwZGF0ZXMKKyAgICAgICAgICB0byBlbnN1cmUgYWxsIHByZWZl
cmVuY2VzIHVwZGF0ZXMgYXJlIGJhdGNoZWQuCisgICAgICAgIC0gQWRvcHQgbmV3IFdLUHJlZmVy
ZW5jZXNSZXNldEZvclRlc3RpbmcgdG8gZW5zdXJlIHRoZSBwcmVmZXJlbmNlIG9iamVjdCBpcyBm
dWxseQorICAgICAgICAgIHJlc2V0LiBUaGlzIG1hdGNoZXMgRFJUJ3MgdXNhZ2Ugb2YgW1dlYlBy
ZWZlcmVuY2VzIF9yZXNldEZvclRlc3RpbmddLgorICAgICAgICAtIE1vdmUgYWxsIHByZWZlcmVu
Y2Ugb3ZlcnJpZGVzIHRoYXQgY2FuIGJlIG1vdmVkICh0d28gc3RpbGwgcmVxdWlyZSBzb21lCisg
ICAgICAgICAgc3BlY2lhbGl6ZWQgaGFuZGxpbmcgZm9yIG5vdykgdG8gVGVzdE9wdGlvbnMgZGVm
YXVsdHMuCisgICAgICAgIC0gUmVtb3ZlIG5vdyB1bm5lY2Vzc2FyeSBwbGF0Zm9ybVJlc2V0UHJl
ZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorICAgICAgICAgIHBsYXRmb3JtIGNvbmZpZ3Vy
YXRpb24gcG9pbnQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL09wdGlvbnMuY3BwOgor
ICAgICAgICAoV1RSOjpoYW5kbGVPcHRpb25BY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6YmF0Y2hVcGRhdGVQcmVmZXJlbmNlcyk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmFjY2Vzc2liaWxpdHlJc29sYXRl
ZFRyZWVNb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RPcHRpb25zLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6CisgICAgICAgIChXVFI6OlRl
c3RPcHRpb25zOjphY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSBjb25zdCk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVz
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9UZXN0Q29udHJvbGxlcldQRS5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOiBEZWxldGVkLgorCiAyMDIxLTA0LTEwICBBbmdlbG9zIE9p
a29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIGRldGVj
dCBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlIGZvciByZW1vdGUgc3RyZXNzIHRlc3RzCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDI3NTc5OSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVPcHRpb25BbGxvd0FueUhUVFBTQ2VyCiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIHN0YXRpYyBib29sIGhhbmRsZU9wdGlvbkFj
Y2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNb2RlKE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKikKIHsKLSAgICBvcHRpb25zLmFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVN
b2RlID0gdHJ1ZTsKKyAgICBvcHRpb25zLmZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMuaW5zZXJ0X29yX2Fzc2lnbigiSXNBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlRW5hYmxlZCIs
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L09wdGlvbnMuaAkocmV2aXNpb24gMjc1Nzk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDYgQEAgc3RydWN0IE9wdGlvbnMg
ewogICAgIGJvb2wgZm9yY2VDb21wbGV4VGV4dCB7IGZhbHNlIH07CiAgICAgYm9vbCBjaGVja0Zv
cldvcmxkTGVha3MgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsb3dBbnlIVFRQU0NlcnRpZmljYXRl
Rm9yQWxsb3dlZEhvc3RzIHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09M
QVRFRF9UUkVFKQotICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1vZGUgeyBmYWxz
ZSB9OwotI2VuZGlmCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHBhdGhzOwogICAgIHN0
ZDo6c2V0PHN0ZDo6c3RyaW5nPiBhbGxvd2VkSG9zdHM7CiAgICAgVGVzdEZlYXR1cmVzIGZlYXR1
cmVzOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI3NTc5OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsOSArNTM1LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogICAgIG1fYWxsb3dBbnlIVFRQU0NlcnRpZmljYXRlRm9y
QWxsb3dlZEhvc3RzID0gb3B0aW9ucy5hbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JBbGxvd2Vk
SG9zdHM7CiAgICAgbV9nbG9iYWxGZWF0dXJlcyA9IHN0ZDo6bW92ZShvcHRpb25zLmZlYXR1cmVz
KTsKIAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgbV9hY2Nl
c3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSA9IG9wdGlvbnMuYWNjZXNzaWJpbGl0eUlzb2xhdGVk
VHJlZU1vZGU7Ci0jZW5kaWYKICAgICBtX3VzaW5nU2VydmVyTW9kZSA9IChtX3BhdGhzLnNpemUo
KSA9PSAxICYmIG1fcGF0aHNbMF0gPT0gIi0iKTsKICAgICBpZiAobV91c2luZ1NlcnZlck1vZGUp
CiAgICAgICAgIG1fcHJpbnRTZXBhcmF0b3JzID0gdHJ1ZTsKQEAgLTg3NSw4NSArODcyLDM1IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c08KICAgICAgICAgVGVzdElu
dm9jYXRpb246OmR1bXBXZWJQcm9jZXNzVW5yZXNwb25zaXZlbmVzcygiPHVua25vd24+IC0gVGVz
dENvbnRyb2xsZXI6OnJ1biAtIEZhaWxlZCB0byByZXNldCBzdGF0ZSB0byBjb25zaXN0ZW50IHZh
bHVlc1xuIik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEY+IHN0YXRpYyB2b2lkIGJhdGNoVXBk
YXRlUHJlZmVyZW5jZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcywgRiYmIGZ1bmN0b3Ip
Cit7CisgICAgV0tQcmVmZXJlbmNlc1N0YXJ0QmF0Y2hpbmdVcGRhdGVzKHByZWZlcmVuY2VzKTsK
KyAgICBmdW5jdG9yKHByZWZlcmVuY2VzKTsKKyAgICBXS1ByZWZlcmVuY2VzRW5kQmF0Y2hpbmdV
cGRhdGVzKHByZWZlcmVuY2VzKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICAvLyBSZXNldCBwcmVmZXJlbmNlcwotICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXMgPSBwbGF0Zm9ybVByZWZlcmVuY2VzKCk7Ci0gICAgV0tQcmVmZXJlbmNlc1Jlc2V0VGVzdFJ1
bm5lck92ZXJyaWRlcyhwcmVmZXJlbmNlcyk7Ci0KLSAgICBXS1ByZWZlcmVuY2VzRW5hYmxlQWxs
RXhwZXJpbWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwotICAgIFdLUHJlZmVyZW5jZXNSZXNl
dEFsbEludGVybmFsRGVidWdGZWF0dXJlcyhwcmVmZXJlbmNlcyk7Ci0KLSAgICAvLyBGSVhNRTog
Q29udmVydCB0aGVzZSB0byBkZWZhdWx0IHZhbHVlcyBmb3IgVGVzdE9wdGlvbnMuCi0gICAgV0tQ
cmVmZXJlbmNlc1NldFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uRW5hYmxlZChwcmVmZXJlbmNlcywg
b3B0aW9ucy5zaG91bGRFbmFibGVQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbigpKTsKLSAgICBXS1By
ZWZlcmVuY2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByZWZlcmVuY2Vz
LCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0U3VicGl4ZWxBbnRpYWxpYXNlZExheWVyVGV4
dEVuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0V2ViQXVk
aW9FbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFE
ZXZpY2VzRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFdl
YlJUQ01ETlNJQ0VDYW5kaWRhdGVzRW5hYmxlZChwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdL
UHJlZmVyZW5jZXNTZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsK
LSAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdFJ1bnRpbWVGbGFncyhwcmVmZXJlbmNlcywg
a1dLSmF2YVNjcmlwdFJ1bnRpbWVGbGFnc0FsbEVuYWJsZWQpOwotICAgIFdLUHJlZmVyZW5jZXNT
ZXRGdWxsU2NyZWVuRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNl
c1NldEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZChwcmVmZXJlbmNlcywg
ZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0gICAgV0tQcmVm
ZXJlbmNlc1NldEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChwcmVm
ZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRUYWJzVG9MaW5rcyhwcmVmZXJl
bmNlcywgZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0
aW9uRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldERhdGFU
cmFuc2Zlckl0ZW1zRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNl
c1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAg
V0tQcmVmZXJlbmNlc1NldERpYWxvZ0VsZW1lbnRFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsK
LSAgICBXS1ByZWZlcmVuY2VzU2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUocHJlZmVyZW5jZXMs
IHRvV0soIklTTy04ODU5LTEiKS5nZXQoKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1pbmltdW1G
b250U2l6ZShwcmVmZXJlbmNlcywgMCk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFN0YW5kYXJkRm9u
dEZhbWlseShwcmVmZXJlbmNlcywgdG9XSygiVGltZXMiKS5nZXQoKSk7Ci0gICAgV0tQcmVmZXJl
bmNlc1NldEN1cnNpdmVGb250RmFtaWx5KHByZWZlcmVuY2VzLCB0b1dLKCJBcHBsZSBDaGFuY2Vy
eSIpLmdldCgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0RmFudGFzeUZvbnRGYW1pbHkocHJlZmVy
ZW5jZXMsIHRvV0soIlBhcHlydXMiKS5nZXQoKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEZpeGVk
Rm9udEZhbWlseShwcmVmZXJlbmNlcywgdG9XSygiQ291cmllciIpLmdldCgpKTsKLSAgICBXS1By
ZWZlcmVuY2VzU2V0UGljdG9ncmFwaEZvbnRGYW1pbHkocHJlZmVyZW5jZXMsIHRvV0soIkFwcGxl
IENvbG9yIEVtb2ppIikuZ2V0KCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRTYW5zU2VyaWZGb250
RmFtaWx5KHByZWZlcmVuY2VzLCB0b1dLKCJIZWx2ZXRpY2EiKS5nZXQoKSk7Ci0gICAgV0tQcmVm
ZXJlbmNlc1NldFNlcmlmRm9udEZhbWlseShwcmVmZXJlbmNlcywgdG9XSygiVGltZXMiKS5nZXQo
KSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhU291cmNlRW5h
YmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFNvdXJjZUJ1ZmZl
ckNoYW5nZVR5cGVFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0SGlnaGxpZ2h0QVBJRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJl
bmNlc1NldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKHByZWZlcmVuY2VzLCBm
YWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5z
aW9uRW5hYmxlZChwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3kocHJlZmVyZW5jZXMsIGtXS0FsbG93QWxsU3RvcmFnZSk7IC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgdGVzdGluZyB0aGUgZGVmYXVsdC4KLSAgICBXS1ByZWZlcmVuY2Vz
U2V0RmV0Y2hBUElLZWVwQWxpdmVFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1By
ZWZlcmVuY2VzU2V0TWVkaWFQcmVsb2FkaW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0g
ICAgV0tQcmVmZXJlbmNlc1NldEV4cG9zZVNwZWFrZXJzRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1
ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUocHJlZmVy
ZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVx
dWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZShwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJl
ZmVyZW5jZXNTZXRSZW1vdGVQbGF5YmFja0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAg
IFdLUHJlZmVyZW5jZXNTZXRCZWFjb25BUElFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAg
ICBXS1ByZWZlcmVuY2VzU2V0RGlyZWN0b3J5VXBsb2FkRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1
ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQocHJlZmVy
ZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRMYXJnZUltYWdlQXN5bmNEZWNvZGlu
Z0VuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0U3RvcmFn
ZUFjY2Vzc0FQSUVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNT
ZXRBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAg
ICBXS1ByZWZlcmVuY2VzU2V0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZChwcmVmZXJlbmNl
cywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZChw
cmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFJlc3RyaWN0ZWRIVFRQUmVz
cG9uc2VBY2Nlc3MocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRTZXJ2
ZXJUaW1pbmdFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0
TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAg
ICBXS1ByZWZlcmVuY2VzU2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJlZmVy
ZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0QXVkaW9QbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmUocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQotICAgIFdLUHJlZmVyZW5jZXNTZXRJc0FjY2Vzc2liaWxpdHlJc29s
YXRlZFRyZWVFbmFibGVkKHByZWZlcmVuY2VzLCBhY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9k
ZSgpKTsKLSNlbmRpZgorICAgIGJhdGNoVXBkYXRlUHJlZmVyZW5jZXMocGxhdGZvcm1QcmVmZXJl
bmNlcygpLCBbb3B0aW9uc10gKGF1dG8gcHJlZmVyZW5jZXMpIHsKKyAgICAgICAgV0tQcmVmZXJl
bmNlc1Jlc2V0Rm9yVGVzdGluZyhwcmVmZXJlbmNlcyk7CiAKLSAgICBwbGF0Zm9ybVJlc2V0UHJl
ZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc0VuYWJs
ZUFsbEV4cGVyaW1lbnRhbEZlYXR1cmVzKHByZWZlcmVuY2VzKTsKIAotICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZl
cmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1Nl
dFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uRW5hYmxlZChwcmVmZXJlbmNlcywgb3B0aW9ucy5zaG91
bGRFbmFibGVQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbigpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwcmVmZXJlbmNlcywga1dLQWxsb3dBbGxTdG9yYWdl
KTsgLy8gRklYTUU6IFdlIHNob3VsZCBiZSB0ZXN0aW5nIHRoZSBkZWZhdWx0LgorICAgIAorICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcygpKQorICAgICAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCi0g
ICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZl
cmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZl
cmVuY2VGZWF0dXJlcygpKQorICAgICAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZv
cktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5
KS5nZXQoKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9u
cy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUp
LmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOworICAgIH0pOwogfQogCiBib29sIFRlc3RDb250cm9s
bGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zLCBSZXNldFN0YWdlIHJlc2V0U3RhZ2UpCkBAIC05NzgsNyArOTI1LDcgQEAgYm9vbCBUZXN0
Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdAogICAgIHNldFZhbHVlKHJlc2V0TWVzc2Fn
ZUJvZHksICJBbGxvd2VkSG9zdHMiLCBhbGxvd2VkSG9zdHNWYWx1ZSk7CiAKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIHNldFZhbHVlKHJlc2V0TWVzc2FnZUJv
ZHksICJBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlIiwgbV9hY2Nlc3NpYmlsaXR5SXNvbGF0ZWRU
cmVlTW9kZSk7CisgICAgc2V0VmFsdWUocmVzZXRNZXNzYWdlQm9keSwgIkFjY2Vzc2liaWxpdHlJ
c29sYXRlZFRyZWUiLCBvcHRpb25zLmFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNb2RlKCkpOwog
I2VuZGlmCiAKICAgICBhdXRvIGpzY09wdGlvbnMgPSBvcHRpb25zLmpzY09wdGlvbnMoKTsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDI3NTc5
OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI2LDEwICsxMjYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2sodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogCi0jaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBib29sIGFjY2Vzc2liaWxpdHlJc29s
YXRlZFRyZWVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVl
TW9kZTsgfQotI2VuZGlmCi0gICAgCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFj
eSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFj
Y3VyYWN5LCBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQs
IE9wdGlvbmFsPGRvdWJsZT4gZmxvb3JMZXZlbCk7CkBAIC0zODYsOSArMzgyLDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCk7CiAgICAgdm9pZCBwbGF0
Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlv
bnMmKTsKICAgICBzdGF0aWMgUGxhdGZvcm1XZWJWaWV3KiBwbGF0Zm9ybUNyZWF0ZU90aGVyUGFn
ZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNv
bnN0IFRlc3RPcHRpb25zJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0Nv
bnNpc3RlbnRWYWx1ZXMoKTsKKwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHJlc2V0IHRp
bWVkIG91dC4KICAgICBib29sIHBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhj
b25zdCBUZXN0T3B0aW9ucyYpOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBjb2Nv
YVBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgY29jb2FSZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJik7CkBAIC02MTQsMTAgKzYxMSw2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fYWxsb3dBbnlIVFRQU0NlcnRpZmljYXRlRm9yQWxsb3dlZEhvc3Rz
IHsgZmFsc2UgfTsKIAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0g
ICAgYm9vbCBtX2FjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNb2RlIHsgZmFsc2UgfTsKLSNlbmRp
ZgotICAgIAogICAgIGJvb2wgbV9zaG91bGREZWNpZGVOYXZpZ2F0aW9uUG9saWN5QWZ0ZXJEZWxh
eSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERlY2lkZVJlc3BvbnNlUG9saWN5QWZ0ZXJE
ZWxheSB7IGZhbHNlIH07CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNzU3OTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTIgQEAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGNhcHR1cmVBdWRpb0luR1BVUAogc3RhdGljIGNvbnN0ZXhwciBib29sIGNhcHR1cmVW
aWRlb0luR1BVUHJvY2Vzc0VuYWJsZWRWYWx1ZSA9IGZhbHNlOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBtZWRpYVNv
dXJjZUVuYWJsZWRWYWx1ZSA9IGZhbHNlOworI2Vsc2UKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBt
ZWRpYVNvdXJjZUVuYWJsZWRWYWx1ZSA9IHRydWU7CisjZW5kaWYKKwogY29uc3QgVGVzdEZlYXR1
cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQogewogICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMg
ZmVhdHVyZXM7CkBAIC00NiwxOSArNTIsMzYgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0
aW9uczo6ZGVmYXVsdAogICAgICAgICBmZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVz
ID0gewogICAgICAgICAgICAgLy8gVGhlc2UgYXJlIFdlYlByZWZlcmVuY2UgdmFsdWVzIHRoYXQg
bXVzdCBhbHdheXMgYmUgc2V0IGFzIHRoZXkgbWF5CiAgICAgICAgICAgICAvLyBkaWZmZXIgZnJv
bSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhlIFdlYlByZWZlcmVuY2VzKi55YW1sIGNvbmZpZ3VyYXRp
b24uCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFBsZWFzZSBkbyBub3QgYWRkIG5ldyBv
cHRpb25zIGhlcmUgaWYgdGhleSBhcmUgbm90IG5lY2Vzc2FyeSAoZS5nLgorICAgICAgICAgICAg
Ly8gYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgd2hpY2ggZ2V0cyBlbmFibGVkIGJ5IGRlZmF1bHQg
YXV0b21hdGljYWxseSkKKyAgICAgICAgICAgIC8vIGFzIGl0IGFkZHMgYSBzbWFsbCBhbW91bnQg
b2YgdW5uZWNlc3Nhcnkgd29yayBwZXItdGVzdC4KKwogICAgICAgICAgICAgeyAiQWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRp
b25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJBbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiQXN5bmNGcmFtZVNjcm9sbGluZ0Vu
YWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQXN5bmNPdmVyZmxvd1Njcm9sbGluZ0Vu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5h
YmxlZCIsIHRydWUgfSwKICAgICAgICAgICAgIHsgIkNhcHR1cmVBdWRpb0luR1BVUHJvY2Vzc0Vu
YWJsZWQiLCBjYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkVmFsdWUgfSwKICAgICAgICAg
ICAgIHsgIkNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCIsIGZhbHNlIH0sCiAgICAgICAg
ICAgICB7ICJDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NFbmFibGVkIiwgY2FwdHVyZVZpZGVvSW5H
UFVQcm9jZXNzRW5hYmxlZFZhbHVlIH0sCiAgICAgICAgICAgICB7ICJDYXB0dXJlVmlkZW9JblVJ
UHJvY2Vzc0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29udGVudENoYW5nZU9i
c2VydmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJDdXN0b21QYXN0ZWJvYXJk
RGF0YUVuYWJsZWQiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJET01QYXN0ZUFsbG93ZWQiLCB0
cnVlIH0sCisgICAgICAgICAgICB7ICJEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQiLCB0cnVlIH0s
CisgICAgICAgICAgICB7ICJEZXZlbG9wZXJFeHRyYXNFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAg
ICAgICAgeyAiRGlyZWN0b3J5VXBsb2FkRW5hYmxlZCIsIHRydWUgfSwKKyAgICAgICAgICAgIHsg
IkV4cG9zZVNwZWFrZXJzRW5hYmxlZCIsIHRydWUgfSwKICAgICAgICAgICAgIHsgIkZyYW1lRmxh
dHRlbmluZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiRnVsbFNjcmVlbkVuYWJs
ZWQiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJHZW5lcmljQ3VlQVBJRW5hYmxlZCIsIGZhbHNl
IH0sCisgICAgICAgICAgICB7ICJIaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJs
ZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGlu
Z0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW5saW5lTWVkaWFQbGF5YmFja1Jl
cXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiSW5w
dXRUeXBlRGF0ZUVuYWJsZWQiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJJbnB1dFR5cGVEYXRl
VGltZUxvY2FsRW5hYmxlZCIsIHRydWUgfSwKICAgICAgICAgICAgIHsgIklucHV0VHlwZU1vbnRo
RW5hYmxlZCIsIHRydWUgfSwKQEAgLTY2LDYgKzg5LDExIEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYg
VGVzdE9wdGlvbnM6OmRlZmF1bHQKICAgICAgICAgICAgIHsgIklucHV0VHlwZVdlZWtFbmFibGVk
IiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiSmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIs
IHRydWUgfSwKICAgICAgICAgICAgIHsgIkphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHkiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0Vu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiTWVkaWFEZXZpY2VzRW5hYmxlZCIsIHRy
dWUgfSwKKyAgICAgICAgICAgIHsgIk1lZGlhUHJlbG9hZGluZ0VuYWJsZWQiLCB0cnVlIH0sCisg
ICAgICAgICAgICB7ICJNZWRpYVNvdXJjZUVuYWJsZWQiLCBtZWRpYVNvdXJjZUVuYWJsZWRWYWx1
ZSB9LAorICAgICAgICAgICAgeyAiTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCIsIHRydWUgfSwK
ICAgICAgICAgICAgIHsgIk1vY2tTY3JvbGxiYXJzRW5hYmxlZCIsIHRydWUgfSwKICAgICAgICAg
ICAgIHsgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAogICAgICAgICAgICAg
eyAiTmVlZHNTaXRlU3BlY2lmaWNRdWlya3MiLCBmYWxzZSB9LApAQCAtNzMsMTAgKzEwMSwzMSBA
QCBjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0CiAgICAgICAgICAgICB7
ICJPZmZzY3JlZW5DYW52YXNFbmFibGVkIiwgdHJ1ZSB9LAogICAgICAgICAgICAgeyAiUGFnZVZp
c2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQiLCBmYWxzZSB9LAogICAgICAg
ICAgICAgeyAiUGx1Z2luc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJSZXF1aXJl
c1VzZXJHZXN0dXJlRm9yQXVkaW9QbGF5YmFjayIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJS
ZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFjayIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJSZXF1aXJlc1VzZXJHZXN0dXJlRm9yVmlkZW9QbGF5YmFjayIsIGZhbHNlIH0sCiAgICAg
ICAgICAgICB7ICJTcGVha2VyU2VsZWN0aW9uUmVxdWlyZXNVc2VyR2VzdHVyZSIsIGZhbHNlIH0s
CisgICAgICAgICAgICB7ICJTdWJwaXhlbEFudGlhbGlhc2VkTGF5ZXJUZXh0RW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJUYWJzVG9MaW5rcyIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJUZXh0QXV0b3NpemluZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiVGV4
dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGUiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAi
VXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiV2ViQXV0aGVu
dGljYXRpb25FbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiV2ViUlRDTUROU0lDRUNh
bmRpZGF0ZXNFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIlhTU0F1ZGl0b3JFbmFi
bGVkIiwgZmFsc2UgfSwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKKyAgICAg
ICAgICAgIHsgIlZQOURlY29kZXJFbmFibGVkIiwgZmFsc2UgfSwKKyNlbmRpZgorICAgICAgICB9
OworICAgICAgICBmZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7CisgICAg
ICAgICAgICB7ICJDdXJzaXZlRm9udEZhbWlseSIsICJBcHBsZSBDaGFuY2VyeSIgfSwKKyAgICAg
ICAgICAgIHsgIkRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgIklTTy04ODU5LTEiIH0sCisgICAg
ICAgICAgICB7ICJGYW50YXN5Rm9udEZhbWlseSIsICJQYXB5cnVzIiB9LAorICAgICAgICAgICAg
eyAiRml4ZWRGb250RmFtaWx5IiwgIkNvdXJpZXIiIH0sCisgICAgICAgICAgICB7ICJQaWN0b2dy
YXBoRm9udEZhbWlseSIsICJBcHBsZSBDb2xvciBFbW9qaSIgfSwKKyAgICAgICAgICAgIHsgIlNh
bnNTZXJpZkZvbnRGYW1pbHkiLCAiSGVsdmV0aWNhIiB9LAorICAgICAgICAgICAgeyAiU2VyaWZG
b250RmFtaWx5IiwgIlRpbWVzIiB9LAorICAgICAgICAgICAgeyAiU3RhbmRhcmRGb250RmFtaWx5
IiwgIlRpbWVzIiB9LAogICAgICAgICB9OwogICAgICAgICBmZWF0dXJlcy5ib29sVGVzdFJ1bm5l
ckZlYXR1cmVzID0gewogICAgICAgICAgICAgeyAiYWxsb3dzTGlua1ByZXZpZXciLCB0cnVlIH0s
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCShyZXZpc2lvbiAyNzU3OTkp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlQXR0YWNobWVudEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXR0YWNo
bWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UpOyB9CiAgICAgYm9vbCBwdW5jaE91dFdoaXRlQmFj
a2dyb3VuZHNJbkRhcmtNb2RlKCkgY29uc3QgeyByZXR1cm4gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIlB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUiLCBmYWxzZSk7IH0K
ICAgICBib29sIHVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBi
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiU2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0
VGltZW91dCIsIGZhbHNlKTsgfQorICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1v
ZGUoKSBjb25zdCB7IHJldHVybiBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiSXNBY2Nl
c3NpYmlsaXR5SXNvbGF0ZWRUcmVlRW5hYmxlZCIsIGZhbHNlKTsgfQogCiAgICAgYm9vbCBhbGxv
d3NMaW5rUHJldmlldygpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVl
KCJhbGxvd3NMaW5rUHJldmlldyIpOyB9CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiZHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIik7IH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rl
c3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDI3NTc5OSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDE1ICsxNDQsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1
cmVWaQogICAgIFdLUGFnZVNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChtYWluV2ViVmll
dygpLT5wYWdlKCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVu
bmVyR1RLIikpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQotewotICAgIGlmICghbV9tYWluV2ViVmlldykKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fbWFpbldlYlZpZXctPmRpc21pc3NBbGxQb3B1cE1lbnVzKCk7
Ci19Ci0KIGJvb2wgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYpCiB7CisgICAgaWYgKG1fbWFpbldlYlZpZXcpCisg
ICAgICAgIG1fbWFpbldlYlZpZXctPmRpc21pc3NBbGxQb3B1cE1lbnVzKCk7CisKICAgICBXS1Rl
eHRDaGVja2VyQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKHRydWUp
OwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDI3NTc5OSkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsMTggKzE0Miw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZUNvbnRlbnRF
eHQKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKCkKLXsKLSAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
ID0gcGxhdGZvcm1QcmVmZXJlbmNlcygpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRUZXh0QXV0b3Np
emluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0VGV4
dEF1dG9zaXppbmdVc2VzSWRlbXBvdGVudE1vZGUocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBX
S1ByZWZlcmVuY2VzU2V0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxlZChwcmVmZXJlbmNlcywg
ZmFsc2UpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotICAgIFdLUHJlZmVy
ZW5jZXNTZXRWUDlEZWNvZGVyRW5hYmxlZChwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJl
ZmVyZW5jZXNTZXRNZWRpYVNvdXJjZUVuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSNlbmRp
ZgotfQotCiBzdGF0aWMgX1dLRHJhZ0ludGVyYWN0aW9uUG9saWN5IGRyYWdJbnRlcmFjdGlvblBv
bGljeShjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHBvbGljeSA9IG9w
dGlvbnMuZHJhZ0ludGVyYWN0aW9uUG9saWN5KCk7CkBAIC0yNjYsNyArMjU0LDcgQEAgYm9vbCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoaGFzUHJlc2VudGVkVmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIFRl
c3RJbnZvY2F0aW9uOjpkdW1wV2ViUHJvY2Vzc1VucmVzcG9uc2l2ZW5lc3MoIlRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMgLSBGYWlsZWQg
dG8gcmVtb3ZlIHByZXNlbnRlZCB2aWV3IGNvbnRyb2xsZXJcbiIpOworICAgICAgICAgICAgVGVz
dEludm9jYXRpb246OmR1bXBXZWJQcm9jZXNzVW5yZXNwb25zaXZlbmVzcygiVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyAtIEZhaWxlZCB0byByZW1v
dmUgcHJlc2VudGVkIHZpZXcgY29udHJvbGxlclxuIik7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9U
ZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMjc1Nzk5KQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE1NSwxMCArMTU1LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVn
aQogICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0
cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVQ
YXRoXSkpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQotewotfQotCiBib29sIFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgW0xheW91dFRlc3RTcGVsbENoZWNrZXIgdW5pbnN0YWxsQW5kUmVzZXRdOwpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2lu
LmNwcAkocmV2aXNpb24gMjc1Nzk5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVz
dENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsMTEgKzIyMiw2IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmkKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNU
b0NvbnNpc3RlbnRWYWx1ZXMoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25z
dCBUZXN0T3B0aW9ucyYpCiB7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9UZXN0Q29udHJvbGxlcldQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci93cGUvVGVzdENvbnRyb2xsZXJXUEUuY3BwCShyZXZpc2lvbiAyNzU3
OTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9UZXN0Q29udHJvbGxlcldQRS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMCArMTMyLDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1Db25maWd1cmVWaQogewogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQotewotfQotCiBib29sIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVz
dE9wdGlvbnMmKQogewogICAgIHJldHVybiB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425711</attachid>
            <date>2021-04-11 09:47:05 -0700</date>
            <delta_ts>2021-04-11 13:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224410-20210411094704.patch</filename>
            <type>text/plain</type>
            <size>26856</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA0LTExICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBXZWJLaXRUZXN0UnVubmVy
IHByZWZlcmVuY2UgcmVzZXQgdG8gYmUgbW9yZSBsaWtlIERSVAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdLUHJlZmVyZW5jZXNTdGFydEJhdGNo
aW5nVXBkYXRlcy9XS1ByZWZlcmVuY2VzRW5kQmF0Y2hpbmdVcGRhdGVzCisgICAgICAgIHRvIHN1
cHBvcnQgYmF0Y2hpbmcgcHJlZmVyZW5jZXMgdXBkYXRlcyBieSBjbGllbnRzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJl
bmNlc1N0YXJ0QmF0Y2hpbmdVcGRhdGVzKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNFbmRCYXRj
aGluZ1VwZGF0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oOgorCiAyMDIx
LTA0LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVXNlIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gaW5zdGVhZCBvZiBIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eSo+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcmVm
ZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmgJKHJldmlzaW9uIDI3NTgwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAgICAgdm9pZCBmb3JjZVVwZGF0ZSgpIHsgdXBkYXRlKCk7IH0KIAorICAgIHZv
aWQgc3RhcnRCYXRjaGluZ1VwZGF0ZXMoKTsKKyAgICB2b2lkIGVuZEJhdGNoaW5nVXBkYXRlcygp
OworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKTsKIApAQCAt
MTA3LDkgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYlByZWZlcmVuY2VzJiBtX3ByZWZl
cmVuY2VzOwogICAgIH07CiAKLSAgICB2b2lkIHN0YXJ0QmF0Y2hpbmdVcGRhdGVzKCk7Ci0gICAg
dm9pZCBlbmRCYXRjaGluZ1VwZGF0ZXMoKTsKLQogICAgIHZvaWQgdXBkYXRlU3RyaW5nVmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQg
dXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKTsKICAg
ICB2b2lkIHVwZGF0ZUJvb2xWYWx1ZUZvckludGVybmFsRGVidWdGZWF0dXJlS2V5KGNvbnN0IFN0
cmluZyYga2V5LCBib29sIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsMTYgQEAgV0tQcmVmZXJlbmNlc1JlZiBXS1ByZWZlcmVuY2VzQ3JlYXRlQ29w
eQogICAgIHJldHVybiB0b0FQSSgmcHJlZmVyZW5jZXMubGVha1JlZigpKTsKIH0KIAordm9pZCBX
S1ByZWZlcmVuY2VzU3RhcnRCYXRjaGluZ1VwZGF0ZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZikKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zdGFydEJhdGNoaW5nVXBk
YXRlcygpOworfQorCit2b2lkIFdLUHJlZmVyZW5jZXNFbmRCYXRjaGluZ1VwZGF0ZXMoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYp
LT5lbmRCYXRjaGluZ1VwZGF0ZXMoKTsKK30KKwogdm9pZCBXS1ByZWZlcmVuY2VzRW5hYmxlQWxs
RXhwZXJpbWVudGFsRmVhdHVyZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5lbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJl
cygpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw5IEBAIHR5cGVkZWYgdW5zaWduZWQgV0tKYXZhU2NyaXB0UnVudGlt
ZUZsYWcKIC8vIENyZWF0ZXMgYSBjb3B5IHdpdGggbm8gaWRlbnRpZmllci4KIFdLX0VYUE9SVCBX
S1ByZWZlcmVuY2VzUmVmIFdLUHJlZmVyZW5jZXNDcmVhdGVDb3B5KFdLUHJlZmVyZW5jZXNSZWYp
OwogCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU3RhcnRCYXRjaGluZ1VwZGF0ZXMoV0tQ
cmVmZXJlbmNlc1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzRW5kQmF0Y2hpbmdV
cGRhdGVzKFdLUHJlZmVyZW5jZXNSZWYpOworCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2Vz
RW5hYmxlQWxsRXhwZXJpbWVudGFsRmVhdHVyZXMoV0tQcmVmZXJlbmNlc1JlZik7CiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RXhwZXJpbWVudGFsRmVhdHVyZUZvcktleShXS1ByZWZl
cmVuY2VzUmVmLCBib29sLCBXS1N0cmluZ1JlZik7CiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzUmVzZXRBbGxJbnRlcm5hbERlYnVnRmVhdHVyZXMoV0tQcmVmZXJlbmNlc1JlZik7CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNzU4MDcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
NSBAQAorMjAyMS0wNC0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgU2ltcGxpZnkgV2ViS2l0VGVzdFJ1bm5lciBwcmVmZXJlbmNlIHJlc2V0IHRvIGJlIG1vcmUg
bGlrZSBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNDQxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IC0gVXNlIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc2lzdGVudGx5IGZvciBhY2Nlc3Np
YmlsaXR5SXNvbGF0ZWRUcmVlTW9kZQorICAgICAgICAtIEFkb3B0IG5ldyBXS1ByZWZlcmVuY2Vz
U3RhcnRCYXRjaGluZ1VwZGF0ZXMvV0tQcmVmZXJlbmNlc0VuZEJhdGNoaW5nVXBkYXRlcworICAg
ICAgICAgIHRvIGVuc3VyZSBhbGwgcHJlZmVyZW5jZXMgdXBkYXRlcyBhcmUgYmF0Y2hlZC4KKyAg
ICAgICAgLSBNb3ZlIGFsbCBwcmVmZXJlbmNlIG92ZXJyaWRlcyB0aGF0IGNhbiBiZSBtb3ZlZCAo
dHdvIHN0aWxsIHJlcXVpcmUgc29tZQorICAgICAgICAgIHNwZWNpYWxpemVkIGhhbmRsaW5nIGZv
ciBub3cpIHRvIFRlc3RPcHRpb25zIGRlZmF1bHRzLgorICAgICAgICAtIFJlbW92ZSBub3cgdW5u
ZWNlc3NhcnkgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKKyAg
ICAgICAgICBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHBvaW50LgorCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9PcHRpb25zLmNwcDoKKyAgICAgICAgKFdUUjo6aGFuZGxlT3B0aW9uQWNjZXNz
aWJpbGl0eUlzb2xhdGVkVHJlZU1vZGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvT3B0
aW9ucy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6
OmJhdGNoVXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjphY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0
aW9ucy5oOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6YWNjZXNzaWJpbGl0eUlzb2xhdGVk
VHJlZU1vZGUgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250
cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVz
ZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci93cGUvVGVzdENvbnRyb2xsZXJXUEUuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKTogRGVsZXRlZC4K
KwogMjAyMS0wNC0xMCAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbSlNDXSBkZXRlY3QgaW5mcmFzdHJ1Y3R1cmUgZmFpbHVyZSBmb3IgcmVt
b3RlIHN0cmVzcyB0ZXN0cwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL09wdGlvbnMuY3BwCShyZXZp
c2lvbiAyNzU4MDcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL09wdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlT3B0aW9uQWxs
b3dBbnlIVFRQU0NlcgogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiBz
dGF0aWMgYm9vbCBoYW5kbGVPcHRpb25BY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZShPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiB7Ci0gICAgb3B0aW9ucy5h
Y2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSA9IHRydWU7CisgICAgb3B0aW9ucy5mZWF0dXJl
cy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmluc2VydF9vcl9hc3NpZ24oIklzQWNjZXNzaWJp
bGl0eUlzb2xhdGVkVHJlZUVuYWJsZWQiLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNl
bmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmgJKHJldmlzaW9uIDI3NTgwNykKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5
ICs0OSw2IEBAIHN0cnVjdCBPcHRpb25zIHsKICAgICBib29sIGZvcmNlQ29tcGxleFRleHQgeyBm
YWxzZSB9OwogICAgIGJvb2wgY2hlY2tGb3JXb3JsZExlYWtzIHsgZmFsc2UgfTsKICAgICBib29s
IGFsbG93QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckFsbG93ZWRIb3N0cyB7IGZhbHNlIH07Ci0jaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBib29sIGFjY2Vzc2liaWxp
dHlJc29sYXRlZFRyZWVNb2RlIHsgZmFsc2UgfTsKLSNlbmRpZgogICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBwYXRoczsKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gYWxsb3dlZEhvc3Rz
OwogICAgIFRlc3RGZWF0dXJlcyBmZWF0dXJlczsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNzU4MDcpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDkgKzUz
NSw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MKICAgICBtX2Fs
bG93QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckFsbG93ZWRIb3N0cyA9IG9wdGlvbnMuYWxsb3dBbnlI
VFRQU0NlcnRpZmljYXRlRm9yQWxsb3dlZEhvc3RzOwogICAgIG1fZ2xvYmFsRmVhdHVyZXMgPSBz
dGQ6Om1vdmUob3B0aW9ucy5mZWF0dXJlcyk7CiAKLSNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9J
U09MQVRFRF9UUkVFKQotICAgIG1fYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1vZGUgPSBvcHRp
b25zLmFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNb2RlOwotI2VuZGlmCiAgICAgbV91c2luZ1Nl
cnZlck1vZGUgPSAobV9wYXRocy5zaXplKCkgPT0gMSAmJiBtX3BhdGhzWzBdID09ICItIik7CiAg
ICAgaWYgKG1fdXNpbmdTZXJ2ZXJNb2RlKQogICAgICAgICBtX3ByaW50U2VwYXJhdG9ycyA9IHRy
dWU7CkBAIC04NzUsODUgKzg3MiwzNSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjplbnN1cmVWaWV3
U3VwcG9ydHNPCiAgICAgICAgIFRlc3RJbnZvY2F0aW9uOjpkdW1wV2ViUHJvY2Vzc1VucmVzcG9u
c2l2ZW5lc3MoIjx1bmtub3duPiAtIFRlc3RDb250cm9sbGVyOjpydW4gLSBGYWlsZWQgdG8gcmVz
ZXQgc3RhdGUgdG8gY29uc2lzdGVudCB2YWx1ZXNcbiIpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGPiBzdGF0aWMgdm9pZCBiYXRjaFVwZGF0ZVByZWZlcmVuY2VzKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXMsIEYmJiBmdW5jdG9yKQoreworICAgIFdLUHJlZmVyZW5jZXNTdGFydEJhdGNo
aW5nVXBkYXRlcyhwcmVmZXJlbmNlcyk7CisgICAgZnVuY3RvcihwcmVmZXJlbmNlcyk7CisgICAg
V0tQcmVmZXJlbmNlc0VuZEJhdGNoaW5nVXBkYXRlcyhwcmVmZXJlbmNlcyk7Cit9CisKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgLy8gUmVzZXQgcHJlZmVyZW5jZXMKLSAgICBX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gcGxhdGZvcm1QcmVmZXJlbmNlcygpOwotICAg
IFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMocHJlZmVyZW5jZXMpOwotCi0g
ICAgV0tQcmVmZXJlbmNlc0VuYWJsZUFsbEV4cGVyaW1lbnRhbEZlYXR1cmVzKHByZWZlcmVuY2Vz
KTsKLSAgICBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlcm5hbERlYnVnRmVhdHVyZXMocHJlZmVy
ZW5jZXMpOwotCi0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhlc2UgdG8gZGVmYXVsdCB2YWx1ZXMg
Zm9yIFRlc3RPcHRpb25zLgotICAgIFdLUHJlZmVyZW5jZXNTZXRQcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbkVuYWJsZWQocHJlZmVyZW5jZXMsIG9wdGlvbnMuc2hvdWxkRW5hYmxlUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24oKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFN1
YnBpeGVsQW50aWFsaWFzZWRMYXllclRleHRFbmFibGVkKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0g
ICAgV0tQcmVmZXJlbmNlc1NldFdlYkF1ZGlvRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0g
ICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhRGV2aWNlc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUp
OwotICAgIFdLUHJlZmVyZW5jZXNTZXRXZWJSVENNRE5TSUNFQ2FuZGlkYXRlc0VuYWJsZWQocHJl
ZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRS
dW50aW1lRmxhZ3MocHJlZmVyZW5jZXMsIGtXS0phdmFTY3JpcHRSdW50aW1lRmxhZ3NBbGxFbmFi
bGVkKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0RnVsbFNjcmVlbkVuYWJsZWQocHJlZmVyZW5jZXMs
IHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbkVuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0QXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyhwcmVmZXJl
bmNlcywgZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlh
bGl6YXRpb25EZWxheUVuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVu
Y2VzU2V0VGFic1RvTGlua3MocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwot
ICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQocHJlZmVyZW5jZXMs
IHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
cHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXREaWFsb2dFbGVtZW50RW5h
YmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldERlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lKHByZWZlcmVuY2VzLCB0b1dLKCJJU08tODg1OS0xIikuZ2V0KCkpOwotICAg
IFdLUHJlZmVyZW5jZXNTZXRNaW5pbXVtRm9udFNpemUocHJlZmVyZW5jZXMsIDApOwotICAgIFdL
UHJlZmVyZW5jZXNTZXRTdGFuZGFyZEZvbnRGYW1pbHkocHJlZmVyZW5jZXMsIHRvV0soIlRpbWVz
IikuZ2V0KCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRDdXJzaXZlRm9udEZhbWlseShwcmVmZXJl
bmNlcywgdG9XSygiQXBwbGUgQ2hhbmNlcnkiKS5nZXQoKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1Nl
dEZhbnRhc3lGb250RmFtaWx5KHByZWZlcmVuY2VzLCB0b1dLKCJQYXB5cnVzIikuZ2V0KCkpOwot
ICAgIFdLUHJlZmVyZW5jZXNTZXRGaXhlZEZvbnRGYW1pbHkocHJlZmVyZW5jZXMsIHRvV0soIkNv
dXJpZXIiKS5nZXQoKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFBpY3RvZ3JhcGhGb250RmFtaWx5
KHByZWZlcmVuY2VzLCB0b1dLKCJBcHBsZSBDb2xvciBFbW9qaSIpLmdldCgpKTsKLSAgICBXS1By
ZWZlcmVuY2VzU2V0U2Fuc1NlcmlmRm9udEZhbWlseShwcmVmZXJlbmNlcywgdG9XSygiSGVsdmV0
aWNhIikuZ2V0KCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRTZXJpZkZvbnRGYW1pbHkocHJlZmVy
ZW5jZXMsIHRvV0soIlRpbWVzIikuZ2V0KCkpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJl
ZmVyZW5jZXNTZXRNZWRpYVNvdXJjZUVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdL
UHJlZmVyZW5jZXNTZXRTb3VyY2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxlZChwcmVmZXJlbmNlcywg
dHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEhpZ2hsaWdodEFQSUVuYWJsZWQocHJlZmVyZW5j
ZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRIaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRs
aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRIaWRk
ZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsK
LSAgICBXS1ByZWZlcmVuY2VzU2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHByZWZlcmVuY2VzLCBr
V0tBbGxvd0FsbFN0b3JhZ2UpOyAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIHRlc3RpbmcgdGhlIGRl
ZmF1bHQuCi0gICAgV0tQcmVmZXJlbmNlc1NldEZldGNoQVBJS2VlcEFsaXZlRW5hYmxlZChwcmVm
ZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhUHJlbG9hZGluZ0VuYWJs
ZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRFeHBvc2VTcGVha2Vy
c0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRNZWRpYVBs
YXliYWNrQWxsb3dzSW5saW5lKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUocHJlZmVy
ZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0UmVtb3RlUGxheWJhY2tFbmFibGVk
KHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0QmVhY29uQVBJRW5hYmxl
ZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldERpcmVjdG9yeVVwbG9h
ZEVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRNb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0g
ICAgV0tQcmVmZXJlbmNlc1NldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKHByZWZlcmVuY2VzLCB0
cnVlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxl
ZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldENTU09NVmlld1Njcm9s
bGluZ0FQSUVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRN
ZWRpYUNhcGFiaWxpdGllc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdLUHJlZmVy
ZW5jZXNTZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKHByZWZlcmVuY2VzLCB0cnVlKTsK
LSAgICBXS1ByZWZlcmVuY2VzU2V0U2VydmVyVGltaW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1
ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFZpZGVvUGxheWJhY2tS
ZXF1aXJlc1VzZXJHZXN0dXJlKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNl
c1NldEF1ZGlvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHByZWZlcmVuY2VzLCBmYWxzZSk7
Ci0jaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBXS1ByZWZlcmVu
Y2VzU2V0SXNBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlRW5hYmxlZChwcmVmZXJlbmNlcywgYWNj
ZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1vZGUoKSk7Ci0jZW5kaWYKKyAgICBiYXRjaFVwZGF0ZVBy
ZWZlcmVuY2VzKHBsYXRmb3JtUHJlZmVyZW5jZXMoKSwgW29wdGlvbnNdIChhdXRvIHByZWZlcmVu
Y2VzKSB7CisgICAgICAgIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMocHJl
ZmVyZW5jZXMpOwogCi0gICAgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKCk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNFbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJl
cyhwcmVmZXJlbmNlcyk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9w
dGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5
KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRQcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bkVuYWJsZWQocHJlZmVyZW5jZXMsIG9wdGlvbnMuc2hvdWxkRW5hYmxlUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24oKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kocHJlZmVyZW5jZXMsIGtXS0FsbG93QWxsU3RvcmFnZSk7IC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgdGVzdGluZyB0aGUgZGVmYXVsdC4KKyAgICAKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVu
Y2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAg
ICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNl
cywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVy
ZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVu
Y2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAg
ICAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVm
ZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0g
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVy
ZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKCkpCisgICAgICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlG
b3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgp
KTsKKyAgICB9KTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSByZXNldFN0
YWdlKQpAQCAtOTc4LDcgKzkyNSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3QKICAgICBzZXRWYWx1ZShyZXNldE1lc3NhZ2VCb2R5LCAiQWxsb3dlZEhvc3RzIiwg
YWxsb3dlZEhvc3RzVmFsdWUpOwogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKLSAgICBzZXRWYWx1ZShyZXNldE1lc3NhZ2VCb2R5LCAiQWNjZXNzaWJpbGl0eUlzb2xh
dGVkVHJlZSIsIG1fYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1vZGUpOworICAgIHNldFZhbHVl
KHJlc2V0TWVzc2FnZUJvZHksICJBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlIiwgb3B0aW9ucy5h
Y2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSgpKTsKICNlbmRpZgogCiAgICAgYXV0byBqc2NP
cHRpb25zID0gb3B0aW9ucy5qc2NPcHRpb25zKCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyNzU4MDcpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiwxMCArMTI2LDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKTsKIAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCi0gICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1vZGU7IH0KLSNlbmRpZgotICAgIAog
ICAgIC8vIEdlb2xvY2F0aW9uLgogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2wpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIE9wdGlvbmFsPGRvdWJsZT4gYWx0
aXR1ZGUsIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSwgT3B0aW9uYWw8ZG91Ymxl
PiBoZWFkaW5nLCBPcHRpb25hbDxkb3VibGU+IHNwZWVkLCBPcHRpb25hbDxkb3VibGU+IGZsb29y
TGV2ZWwpOwpAQCAtMzg2LDkgKzM4MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpOwogICAgIHZvaWQgcGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgc3RhdGljIFBsYXRm
b3JtV2ViVmlldyogcGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJl
bnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYpOwotICAg
IHZvaWQgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CisKICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSByZXNldCB0aW1lZCBvdXQuCiAgICAgYm9vbCBwbGF0
Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmKTsKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgY29jb2FQbGF0Zm9ybUluaXRpYWxpemUoKTsK
ICAgICB2b2lkIGNvY29hUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0
aW9ucyYpOwpAQCAtNjE0LDEwICs2MTEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2FsbG93
QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckFsbG93ZWRIb3N0cyB7IGZhbHNlIH07CiAKLSNpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIGJvb2wgbV9hY2Nlc3NpYmlsaXR5
SXNvbGF0ZWRUcmVlTW9kZSB7IGZhbHNlIH07Ci0jZW5kaWYKLSAgICAKICAgICBib29sIG1fc2hv
dWxkRGVjaWRlTmF2aWdhdGlvblBvbGljeUFmdGVyRGVsYXkgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9zaG91bGREZWNpZGVSZXNwb25zZVBvbGljeUFmdGVyRGVsYXkgeyBmYWxzZSB9OwogCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjc1ODA3KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDEyIEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYXB0dXJlQXVkaW9JbkdQ
VVAKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3NFbmFibGVk
VmFsdWUgPSBmYWxzZTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFU
T1IpCitzdGF0aWMgY29uc3RleHByIGJvb2wgbWVkaWFTb3VyY2VFbmFibGVkVmFsdWUgPSBmYWxz
ZTsKKyNlbHNlCitzdGF0aWMgY29uc3RleHByIGJvb2wgbWVkaWFTb3VyY2VFbmFibGVkVmFsdWUg
PSB0cnVlOworI2VuZGlmCisKIGNvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1
bHRzKCkKIHsKICAgICBzdGF0aWMgVGVzdEZlYXR1cmVzIGZlYXR1cmVzOwpAQCAtNDYsMTkgKzUy
LDM2IEBAIGNvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1bHQKICAgICAgICAg
ZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKICAgICAgICAgICAgIC8vIFRo
ZXNlIGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0
aGV5IG1heQogICAgICAgICAgICAgLy8gZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRo
ZSBXZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBQbGVhc2UgZG8gbm90IGFkZCBuZXcgb3B0aW9ucyBoZXJlIGlmIHRoZXkgYXJl
IG5vdCBuZWNlc3NhcnkgKGUuZy4KKyAgICAgICAgICAgIC8vIGFuIGV4cGVyaW1lbnRhbCBmZWF0
dXJlIHdoaWNoIGdldHMgZW5hYmxlZCBieSBkZWZhdWx0IGF1dG9tYXRpY2FsbHkpCisgICAgICAg
ICAgICAvLyBhcyBpdCBhZGRzIGEgc21hbGwgYW1vdW50IG9mIHVubmVjZXNzYXJ5IHdvcmsgcGVy
LXRlc3QuCisKICAgICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCBmYWxz
ZSB9LAogICAgICAgICAgICAgeyAiQWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgdHJ1ZSB9
LAogICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwK
ICAgICAgICAgICAgIHsgIkFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgdHJ1ZSB9
LAorICAgICAgICAgICAgeyAiQWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayIsIHRydWUgfSwKICAg
ICAgICAgICAgIHsgIkFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UgfSwKICAgICAg
ICAgICAgIHsgIkFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAg
ICAgICAgIHsgIkNTU09NVmlld1Njcm9sbGluZ0FQSUVuYWJsZWQiLCB0cnVlIH0sCiAgICAgICAg
ICAgICB7ICJDYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkIiwgY2FwdHVyZUF1ZGlvSW5H
UFVQcm9jZXNzRW5hYmxlZFZhbHVlIH0sCiAgICAgICAgICAgICB7ICJDYXB0dXJlQXVkaW9JblVJ
UHJvY2Vzc0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiQ2FwdHVyZVZpZGVvSW5H
UFVQcm9jZXNzRW5hYmxlZCIsIGNhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWRWYWx1ZSB9
LAogICAgICAgICAgICAgeyAiQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3NFbmFibGVkIiwgZmFsc2Ug
fSwKKyAgICAgICAgICAgIHsgIkNvbnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkIiwgdHJ1ZSB9LAog
ICAgICAgICAgICAgeyAiRE9NUGFzdGVBbGxvd2VkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAi
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiRGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkRpcmVjdG9yeVVwbG9h
ZEVuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJFeHBvc2VTcGVha2Vyc0VuYWJsZWQi
LCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJGcmFtZUZsYXR0ZW5pbmdFbmFibGVkIiwgZmFsc2Ug
fSwKKyAgICAgICAgICAgIHsgIkZ1bGxTY3JlZW5FbmFibGVkIiwgdHJ1ZSB9LAogICAgICAgICAg
ICAgeyAiR2VuZXJpY0N1ZUFQSUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSGlk
ZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAg
ICAgIHsgIkhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIklubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmli
dXRlIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIklucHV0VHlwZURhdGVFbmFibGVkIiwgdHJ1
ZSB9LAogICAgICAgICAgICAgeyAiSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQiLCB0cnVl
IH0sCiAgICAgICAgICAgICB7ICJJbnB1dFR5cGVNb250aEVuYWJsZWQiLCB0cnVlIH0sCkBAIC02
Niw2ICs4OSwxMSBAQCBjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0CiAg
ICAgICAgICAgICB7ICJJbnB1dFR5cGVXZWVrRW5hYmxlZCIsIHRydWUgfSwKICAgICAgICAgICAg
IHsgIkphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQiLCB0cnVlIH0sCiAgICAgICAgICAgICB7
ICJKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IiwgdHJ1ZSB9LAorICAgICAg
ICAgICAgeyAiTGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAg
ICAgICAgIHsgIk1lZGlhRGV2aWNlc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJN
ZWRpYVByZWxvYWRpbmdFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiTWVkaWFTb3Vy
Y2VFbmFibGVkIiwgbWVkaWFTb3VyY2VFbmFibGVkVmFsdWUgfSwKKyAgICAgICAgICAgIHsgIk1v
Y2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJNb2NrU2Ny
b2xsYmFyc0VuYWJsZWQiLCB0cnVlIH0sCiAgICAgICAgICAgICB7ICJNb2Rlcm5NZWRpYUNvbnRy
b2xzRW5hYmxlZCIsIHRydWUgfSwKICAgICAgICAgICAgIHsgIk5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzIiwgZmFsc2UgfSwKQEAgLTczLDEwICsxMDEsMzEgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBU
ZXN0T3B0aW9uczo6ZGVmYXVsdAogICAgICAgICAgICAgeyAiT2Zmc2NyZWVuQ2FudmFzRW5hYmxl
ZCIsIHRydWUgfSwKICAgICAgICAgICAgIHsgIlBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIlBsdWdpbnNFbmFibGVk
IiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiUmVxdWlyZXNVc2VyR2VzdHVyZUZvckF1ZGlvUGxh
eWJhY2siLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVxdWlyZXNVc2VyR2VzdHVyZUZvck1l
ZGlhUGxheWJhY2siLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVxdWlyZXNVc2VyR2VzdHVy
ZUZvclZpZGVvUGxheWJhY2siLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiU3BlYWtlclNlbGVj
dGlvblJlcXVpcmVzVXNlckdlc3R1cmUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU3VicGl4
ZWxBbnRpYWxpYXNlZExheWVyVGV4dEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAi
VGFic1RvTGlua3MiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiVGV4dEF1dG9zaXppbmdFbmFi
bGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3Rl
bnRNb2RlIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwg
ZmFsc2UgfSwKICAgICAgICAgICAgIHsgIldlYkF1dGhlbnRpY2F0aW9uRW5hYmxlZCIsIHRydWUg
fSwKKyAgICAgICAgICAgIHsgIldlYlJUQ01ETlNJQ0VDYW5kaWRhdGVzRW5hYmxlZCIsIGZhbHNl
IH0sCiAgICAgICAgICAgICB7ICJYU1NBdWRpdG9yRW5hYmxlZCIsIGZhbHNlIH0sCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisgICAgICAgICAgICB7ICJWUDlEZWNvZGVyRW5h
YmxlZCIsIGZhbHNlIH0sCisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgZmVhdHVyZXMuc3Ry
aW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgeyAiQ3Vyc2l2ZUZvbnRG
YW1pbHkiLCAiQXBwbGUgQ2hhbmNlcnkiIH0sCisgICAgICAgICAgICB7ICJEZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZSIsICJJU08tODg1OS0xIiB9LAorICAgICAgICAgICAgeyAiRmFudGFzeUZvbnRG
YW1pbHkiLCAiUGFweXJ1cyIgfSwKKyAgICAgICAgICAgIHsgIkZpeGVkRm9udEZhbWlseSIsICJD
b3VyaWVyIiB9LAorICAgICAgICAgICAgeyAiUGljdG9ncmFwaEZvbnRGYW1pbHkiLCAiQXBwbGUg
Q29sb3IgRW1vamkiIH0sCisgICAgICAgICAgICB7ICJTYW5zU2VyaWZGb250RmFtaWx5IiwgIkhl
bHZldGljYSIgfSwKKyAgICAgICAgICAgIHsgIlNlcmlmRm9udEZhbWlseSIsICJUaW1lcyIgfSwK
KyAgICAgICAgICAgIHsgIlN0YW5kYXJkRm9udEZhbWlseSIsICJUaW1lcyIgfSwKICAgICAgICAg
fTsKICAgICAgICAgZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyA9IHsKICAgICAgICAg
ICAgIHsgImFsbG93c0xpbmtQcmV2aWV3IiwgdHJ1ZSB9LApJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuaAkocmV2aXNpb24gMjc1ODA3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCIsIGZh
bHNlKTsgfQogICAgIGJvb2wgcHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJQdW5jaE91dFdoaXRl
QmFja2dyb3VuZHNJbkRhcmtNb2RlIiwgZmFsc2UpOyB9CiAgICAgYm9vbCB1c2VTZXJ2aWNlV29y
a2VyU2hvcnRUaW1lb3V0KCkgY29uc3QgeyByZXR1cm4gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIlNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQiLCBmYWxzZSk7IH0KKyAg
ICBib29sIGFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNb2RlKCkgY29uc3QgeyByZXR1cm4gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIklzQWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZUVu
YWJsZWQiLCBmYWxzZSk7IH0KIAogICAgIGJvb2wgYWxsb3dzTGlua1ByZXZpZXcoKSBjb25zdCB7
IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiYWxsb3dzTGlua1ByZXZpZXciKTsg
fQogICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkgY29uc3QgeyByZXR1cm4gYm9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIpOyB9Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsu
Y3BwCShyZXZpc2lvbiAyNzU4MDcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0
Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxNSArMTQ0LDExIEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmkKICAgICBXS1BhZ2VTZXRBcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViS2l0VGVzdFJ1bm5lckdUSyIpKTsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVz
KCkKLXsKLSAgICBpZiAoIW1fbWFpbldlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX21h
aW5XZWJWaWV3LT5kaXNtaXNzQWxsUG9wdXBNZW51cygpOwotfQotCiBib29sIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlv
bnMmKQogeworICAgIGlmIChtX21haW5XZWJWaWV3KQorICAgICAgICBtX21haW5XZWJWaWV3LT5k
aXNtaXNzQWxsUG9wdXBNZW51cygpOworCiAgICAgV0tUZXh0Q2hlY2tlckNvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9T
Lm1tCShyZXZpc2lvbiAyNzU4MDcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE4ICsxNDIsNiBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVDb250ZW50RXh0CiB7CiB9CiAKLXZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCi17
Ci0gICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IHBsYXRmb3JtUHJlZmVyZW5jZXMo
KTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKHByZWZlcmVuY2Vz
LCBmYWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFRleHRBdXRvc2l6aW5nVXNlc0lkZW1wb3Rl
bnRNb2RlKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldENvbnRlbnRD
aGFuZ2VPYnNlcnZlckVuYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICBXS1ByZWZlcmVuY2VzU2V0VlA5RGVjb2RlckVuYWJs
ZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFTb3VyY2VF
bmFibGVkKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0jZW5kaWYKLX0KLQogc3RhdGljIF9XS0RyYWdJ
bnRlcmFjdGlvblBvbGljeSBkcmFnSW50ZXJhY3Rpb25Qb2xpY3koY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgYXV0byBwb2xpY3kgPSBvcHRpb25zLmRyYWdJbnRlcmFjdGlvblBv
bGljeSgpOwpAQCAtMjY2LDcgKzI1NCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
UmVzZXRTdGF0ZVQKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGhhc1ByZXNlbnRl
ZFZpZXdDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBUZXN0SW52b2NhdGlvbjo6ZHVtcFdlYlBy
b2Nlc3NVbnJlc3BvbnNpdmVuZXNzKCJUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZl
cmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzIC0gRmFpbGVkIHRvIHJlbW92ZSBwcmVzZW50ZWQgdmll
dyBjb250cm9sbGVyXG4iKTsKKyAgICAgICAgICAgIFRlc3RJbnZvY2F0aW9uOjpkdW1wV2ViUHJv
Y2Vzc1VucmVzcG9uc2l2ZW5lc3MoIlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMgLSBGYWlsZWQgdG8gcmVtb3ZlIHByZXNlbnRlZCB2aWV3IGNvbnRy
b2xsZXJcbiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMu
bW0JKHJldmlzaW9uIDI3NTgwNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RD
b250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTAgKzE1NSw2IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0UGx1Z2kKICAgICBtX3Rlc3RQbHVnaW5EaXJl
Y3RvcnkuYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5n
UmVmKVtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlUGF0aF0pKTsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkK
LXsKLX0KLQogYm9vbCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIFtMYXlvdXRUZXN0
U3BlbGxDaGVja2VyIHVuaW5zdGFsbEFuZFJlc2V0XTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDI3NTgwNykK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIyLDExICsyMjIsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybUNvbmZpZ3VyZVZpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBib29sIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmKQogewogICAg
IHJldHVybiB0cnVlOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvVGVzdENvbnRy
b2xsZXJXUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL1Rl
c3RDb250cm9sbGVyV1BFLmNwcAkocmV2aXNpb24gMjc1ODA3KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci93cGUvVGVzdENvbnRyb2xsZXJXUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIs
MTAgKzEzMiw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmkKIHsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25z
aXN0ZW50VmFsdWVzKCkKLXsKLX0KLQogYm9vbCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJikKIHsKICAgICByZXR1
cm4gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>